From: Steve L. <st...@us...> - 2004-07-15 22:12:36
|
Update of /cvsroot/smartfrog/core/components/cddlm/src/org/smartfrog/services/cddlm/cdl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4343/components/cddlm/src/org/smartfrog/services/cddlm/cdl Modified Files: CdlDocument.java CdlParser.java Added Files: Constants.java Log Message: Parsing CDL files and some basic validation. Todo: validate against XSD declaration. Index: CdlDocument.java =================================================================== RCS file: /cvsroot/smartfrog/core/components/cddlm/src/org/smartfrog/services/cddlm/cdl/CdlDocument.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CdlDocument.java 15 Jul 2004 16:49:50 -0000 1.1 --- CdlDocument.java 15 Jul 2004 22:12:26 -0000 1.2 *************** *** 22,25 **** --- 22,27 ---- import nu.xom.Document; import nu.xom.ParsingException; + import nu.xom.Element; + import nu.xom.Attribute; /** *************** *** 30,40 **** public class CdlDocument { ! private Document doc; private ParsingException exception; ! public CdlDocument(Document doc) { ! this.doc = doc; } --- 32,47 ---- public class CdlDocument { ! private Document document; private ParsingException exception; + public static final String ERROR_WRONG_NAMESPACE = "Document is not in CDL namespace"; + public static final String ERROR_WRONG_ROOT_ELEMENT = "Root element is not 'cdl'"; + public static final String ERROR_BAD_PATHLANGUAGE = "unsupported path language"; + public static final String ERROR_NO_PATHLANGUAGE = "pathlanguage attribute not found"; ! public CdlDocument(Document doc) throws CdlParsingException { ! this.document = doc; ! validate(); } *************** *** 43,46 **** --- 50,54 ---- } + /** * validity test *************** *** 49,57 **** public boolean isValid() { //TODO ! return doc!=null; } ! public Document getDoc() { ! return doc; } --- 57,65 ---- public boolean isValid() { //TODO ! return document!=null; } ! public Document getDocument() { ! return document; } *************** *** 73,75 **** --- 81,113 ---- } } + + + + public void assertTrue(String message,boolean test ) throws CdlParsingException { + if(test==false) { + throw new CdlParsingException(message); + } + } + + public void validateRootElement() throws CdlParsingException { + Element root = document.getRootElement(); + String uri = root.getNamespaceURI(); + assertTrue(ERROR_WRONG_NAMESPACE,Constants.CDL_NAMESPACE.equals(uri)); + assertTrue(ERROR_WRONG_ROOT_ELEMENT, Constants.CDL_ELT_CDL.equals(root.getLocalName())); + Attribute pathLangAttr = root.getAttribute("pathlanguage",Constants.CDL_NAMESPACE); + if(pathLangAttr!=null) { + assertTrue(ERROR_NO_PATHLANGUAGE, pathLangAttr != null); + String language=pathLangAttr.getValue(); + assertTrue(ERROR_BAD_PATHLANGUAGE,Constants.XPATH_URI.equals(language)); + } + } + + /** + * this routine encodes all the logic around the validity fo the scham + * + * @throws CdlParsingException + */ + public void validate() throws CdlParsingException { + validateRootElement(); + } } Index: CdlParser.java =================================================================== RCS file: /cvsroot/smartfrog/core/components/cddlm/src/org/smartfrog/services/cddlm/cdl/CdlParser.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** CdlParser.java 15 Jul 2004 17:00:47 -0000 1.6 --- CdlParser.java 15 Jul 2004 22:12:27 -0000 1.7 *************** *** 33,40 **** import org.xml.sax.helpers.XMLReaderFactory; import org.xml.sax.XMLReader; - import org.xml.sax.SAXNotSupportedException; - import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXException; - import org.apache.xml.resolver.tools.CatalogResolver; /** --- 33,37 ---- --- NEW FILE: Constants.java --- /** (C) Copyright 2004 Hewlett-Packard Development Company, LP This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA For more information: www.smartfrog.org */ package org.smartfrog.services.cddlm.cdl; /** * Date: 15-Jul-2004 * Time: 22:26:34 */ public class Constants { private Constants() { } public static final String CDL_NAMESPACE="urn:cddlm/xml/0.1"; public static final String CDL_ELT_CDL="cdl"; public static final String XPATH_URI="http://www.w3.org/TR/1999/REC-xpath-19991116"; } |