Author: jochen
Date: Sat Aug 26 17:25:00 2006
New Revision: 437259
URL: http://svn.apache.org/viewvc?rev=437259&view=rev
Log:
Element references to schemas with other package names have been generating
invalid code.
Added:
webservices/jaxme/branches/MAVEN/projects/jm/src/test/resources/bindings/imported.xsi
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/util/LoggingContentHandler.java
webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/imported.xsi
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/util/LoggingContentHandler.java
Modified:
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JAXBObjectSG.java
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/JAXBContextImpl.java
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSElement.java
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSParser.java
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSElementImpl.java
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSLogicalParser.java
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/jaxb/impl/JAXBAppinfoImpl.java
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBObjectSG.java
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/impl/JAXBContextImpl.java
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/junit/BindingsTest.java
webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/bindings.jxb
webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/bindings.xsd
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/XSElement.java
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/XSParser.java
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/impl/XSElementImpl.java
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/impl/XSLogicalParser.java
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/jaxb/impl/JAXBAppinfoImpl.java
Modified:
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JAXBObjectSG.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JAXBObjectSG.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JAXBObjectSG.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JAXBObjectSG.java
Sat Aug 26 17:25:00 2006
@@ -102,7 +102,14 @@
if (useTypesContext) {
myClassContext = pClassContext;
} else {
- myClassContext = new GlobalContext(name, pObject, null, null, pSchema);
+ XSObject contextObject = pObject;
+ if (pObject instanceof XSElement) {
+ XSElement element = (XSElement) pObject;
+ if (element.isReference()) {
+ contextObject = pObject.getXSSchema().getElement(name);
+ }
+ }
+ myClassContext = new GlobalContext(name, contextObject, null, null,
pSchema);
}
if (isClassGlobal) {
Modified:
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java
Sat Aug 26 17:25:00 2006
@@ -205,9 +205,9 @@
ObjectSG oSG = pParticle.getObjectSG();
TypeSG tSG = oSG.getTypeSG();
if (tSG.isComplex()) {
- JavaQName elementInterfaceClass =
pParticle.getObjectSG().getClassContext().getXMLInterfaceName();
Object[] o, h;
if (oSG.getClassContext().isGlobal()) {
+ JavaQName elementInterfaceClass =
pParticle.getObjectSG().getClassContext().getXMLInterfaceName();
LocalJavaField manager =
pJm.newJavaField(JMManager.class);
manager.addLine("getHandler().getJMUnmarshaller().getJAXBContextImpl().getManagerS(",
elementInterfaceClass,
".class)");
Modified:
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/JAXBContextImpl.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/JAXBContextImpl.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/JAXBContextImpl.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/JAXBContextImpl.java
Sat Aug 26 17:25:00 2006
@@ -299,7 +299,6 @@
pm.init(manager);
return pm;
} catch (Exception e) {
- e.printStackTrace(System.err);
throw new PMException("Could not instantiate persistence manager class "
+
c.getName(), e);
}
Added:
webservices/jaxme/branches/MAVEN/projects/jm/src/test/resources/bindings/imported.xsi
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/jm/src/test/resources/bindings/imported.xsi?rev=437259&view=auto
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/jm/src/test/resources/bindings/imported.xsi
(added)
+++
webservices/jaxme/branches/MAVEN/projects/jm/src/test/resources/bindings/imported.xsi
Sat Aug 26 17:25:00 2006
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2003, 2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://ws.apache.org/jaxme/test/bindings/imported"
+ xmlns:imp="http://ws.apache.org/jaxme/test/bindings/imported"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xs:element name="blubb">
+ <xs:complexType>
+ <xs:attribute name="blabb" type="imp:YesNoType"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="YesNoType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="YES"/>
+ <xs:enumeration value="NO"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
Modified:
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSElement.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSElement.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSElement.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSElement.java
Sat Aug 26 17:25:00 2006
@@ -96,4 +96,9 @@
* Fetch all of the keyref's declared by this element.
*/
public XSKeyRef[] getKeyRefs();
+
+ /**
+ * Returns, whether the element is created by referencing another element.
+ */
+ public boolean isReference();
}
Modified:
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSParser.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSParser.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSParser.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSParser.java
Sat Aug 26 17:25:00 2006
@@ -16,8 +16,11 @@
*/
package org.apache.ws.jaxme.xs;
+import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
@@ -26,6 +29,7 @@
import org.apache.ws.jaxme.xs.parser.XSContext;
import org.apache.ws.jaxme.xs.parser.XsSAXParser;
import org.apache.ws.jaxme.xs.parser.impl.XSContextImpl;
+import org.apache.ws.jaxme.xs.util.LoggingContentHandler;
import org.apache.ws.jaxme.xs.xml.XsESchema;
import org.apache.ws.jaxme.xs.xml.XsObjectFactory;
import org.w3c.dom.Node;
@@ -116,18 +120,36 @@
* representation.</p>
* @see #parse(InputSource)
*/
- public XsESchema parseSyntax(InputSource pSource) throws
ParserConfigurationException, SAXException, IOException {
+ public XsESchema parseSyntax(final InputSource pSource) throws
ParserConfigurationException, SAXException, IOException {
XSContext context = getContext();
parser.set(this);
+ FileOutputStream fos = null;
try {
XsObjectFactory factory = context.getXsObjectFactory();
XsSAXParser xsSAXParser = factory.newXsSAXParser();
context.setCurrentContentHandler(xsSAXParser);
XMLReader xr = factory.newXMLReader(isValidating());
+ String logDir = System.getProperty("org.apache.ws.jaxme.xs.logDir");
+ if (logDir != null) {
+ File tmpFile = File.createTempFile("jaxmexs", ".xsd", new
File(logDir));
+ fos = new FileOutputStream(tmpFile);
+ LoggingContentHandler lch = new LoggingContentHandler(fos);
+ lch.setParent(xr);
+ xr = lch;
+ String msg = "Read from " + pSource.getPublicId() + ", " +
pSource.getSystemId() + " at " + new Date();
+ lch.comment(msg.toCharArray(), 0, msg.length());
+ }
xr.setContentHandler(xsSAXParser);
xr.parse(pSource);
+ if (fos != null) {
+ fos.close();
+ fos = null;
+ }
return (XsESchema) xsSAXParser.getBean();
- } finally {
+ } finally {
+ if (fos != null) {
+ try { fos.close(); } catch (Throwable ignore) {}
+ }
context.setCurrentContentHandler(null);
parser.set(null);
}
Modified:
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSElementImpl.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSElementImpl.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSElementImpl.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSElementImpl.java
Sat Aug 26 17:25:00 2006
@@ -67,7 +67,7 @@
return (XsTElement) getXsObject();
}
- protected boolean isReference() {
+ public boolean isReference() {
return getXsTElement().getRef() != null;
}
Modified:
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSLogicalParser.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSLogicalParser.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSLogicalParser.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSLogicalParser.java
Sat Aug 26 17:25:00 2006
@@ -17,10 +17,12 @@
package org.apache.ws.jaxme.xs.impl;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -39,6 +41,7 @@
import org.apache.ws.jaxme.xs.parser.XSContext;
import org.apache.ws.jaxme.xs.parser.XsSAXParser;
import org.apache.ws.jaxme.xs.parser.impl.LocSAXException;
+import org.apache.ws.jaxme.xs.util.LoggingContentHandler;
import org.apache.ws.jaxme.xs.xml.XsAnyURI;
import org.apache.ws.jaxme.xs.xml.XsEAnnotation;
import org.apache.ws.jaxme.xs.xml.XsEImport;
@@ -60,11 +63,13 @@
import org.apache.ws.jaxme.xs.xml.XsTSimpleExplicitGroup;
import org.apache.ws.jaxme.xs.xml.XsTTopLevelElement;
import org.w3c.dom.Node;
+import org.xml.sax.ContentHandler;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.LocatorImpl;
/** <p>Implementation of a logical parser.</p>
@@ -283,7 +288,45 @@
parseSyntax(pLocator, pSchemaLocation, result);
return result;
}
-
+
+ private void runContentHandler(XMLReader pReader, ContentHandler
pHandler, InputSource pSource)
+ throws SAXException, IOException {
+ String logDir =
System.getProperty("org.apache.ws.jaxme.xs.logDir");
+ FileOutputStream fos = null;
+ try {
+ if (logDir != null) {
+ File tmpFile = File.createTempFile("jaxmexs",
".xsd", new File(logDir));
+ fos = new FileOutputStream(tmpFile);
+ LoggingContentHandler lch = new
LoggingContentHandler(fos);
+ lch.setParent(pReader);
+ pReader = lch;
+ String msg = "Read from " +
pSource.getPublicId() + ", " + pSource.getSystemId() + " at " + new Date();
+ lch.comment(msg.toCharArray(), 0, msg.length());
+ }
+ SchemaTransformer transformer =
getData().getXSObjectFactory().getSchemaTransformer();
+ if (transformer != null) {
+ transformer.parse(pSource, pReader);
+ final InputSource newSource =
transformer.getTransformedInputSource();
+ newSource.setSystemId(pSource.getSystemId());
+ newSource.setPublicId(pSource.getPublicId());
+ pSource = newSource;
+ pReader = transformer.getTransformedXMLReader();
+ }
+ pReader.setContentHandler(pHandler);
+ pReader.parse(pSource);
+ if (fos != null) {
+ fos.close();
+ fos = null;
+ }
+ } catch (ParserConfigurationException e) {
+ throw new SAXException(e);
+ } finally {
+ if (fos != null) {
+ try { fos.close(); } catch (Throwable ignore) {}
+ }
+ }
+ }
+
protected void parseSyntax(Locator pLocator, String pSchemaLocation,
XsESchema pSchema)
throws SAXException, IOException, ParserConfigurationException {
@@ -305,8 +348,7 @@
addSyntaxSchema(pSchema);
try {
data.setCurrentContentHandler(xsSAXParser);
- xr.setContentHandler(xsSAXParser);
- xr.parse(schemaSource);
+ runContentHandler(xr, xsSAXParser,
schemaSource);
} finally {
removeSyntaxSchema();
}
@@ -493,7 +535,7 @@
XsESchema importedSchema = parseSyntax(pNode);
importSchema(pImportingSchema, pNamespace, importedSchema,
null, pSchemaLocation);
}
-
+
/** <p>Parses the given [EMAIL PROTECTED] InputSource} syntactically and
* converts the objects that it finds into logical objects.
* These logical objects are added to the given [EMAIL PROTECTED]
XSSchema}.</p>
@@ -533,7 +575,7 @@
XsAnyURI schemaLocation =
xsEImport.getSchemaLocation();
importSchema(pSyntaxSchema, namespace
== null ? null : namespace.toString(),
schemaLocation == null
? null : schemaLocation.toString(),
-
xsEImport.getLocator());
+
getImportLocator(xsEImport, pSchemaLocation));
} else {
add(pSyntaxSchema, childs[i]);
}
@@ -542,20 +584,30 @@
removeSyntaxSchema();
}
}
+
+ private Locator getImportLocator(XsObject pObject, String
pSchemaLocation) {
+ Locator result = pObject.getLocator();
+ if (result == null && pSchemaLocation != null) {
+ LocatorImpl loc = new LocatorImpl();
+ loc.setSystemId(pSchemaLocation);
+ result = loc;
+ }
+ return result;
+ }
private static class SubstitutionGroup {
private final List members = new ArrayList();
private final XSElement head;
- public SubstitutionGroup(XSElement pHead) {
+ SubstitutionGroup(XSElement pHead) {
head = pHead;
}
- public XSElement getHead() { return head; }
- public XSElement[] getMembers() {
+ XSElement getHead() { return head; }
+ XSElement[] getMembers() {
return (XSElement[]) members.toArray(new
XSElement[members.size()]);
}
- public void addMember(XSElement pElement) {
+ void addMember(XSElement pElement) {
members.add(pElement);
}
}
@@ -655,18 +707,11 @@
* @see #getXSContentHandler()
*/
public XSSchema parse(InputSource pSource)
- throws ParserConfigurationException, SAXException, IOException {
+ throws ParserConfigurationException, SAXException,
IOException {
XSContentHandler contentHandler =
getXSContentHandler(pSource.getSystemId());
XSContext data = getData();
XMLReader xr =
data.getXsObjectFactory().newXMLReader(isValidating());
- SchemaTransformer transformer =
data.getXSObjectFactory().getSchemaTransformer();
- if (transformer != null) {
- transformer.parse(pSource, xr);
- pSource = transformer.getTransformedInputSource();
- xr = transformer.getTransformedXMLReader();
- }
- xr.setContentHandler(contentHandler);
- xr.parse(pSource);
+ runContentHandler(xr, contentHandler, pSource);
return getSchema();
}
Modified:
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/jaxb/impl/JAXBAppinfoImpl.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/jaxb/impl/JAXBAppinfoImpl.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/jaxb/impl/JAXBAppinfoImpl.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/jaxb/impl/JAXBAppinfoImpl.java
Sat Aug 26 17:25:00 2006
@@ -98,9 +98,6 @@
return jaxbTypesafeEnumClass;
}
}
- System.err.println("this = " + this);
- System.err.println("AnnotationParent = " + annotationParent);
- System.err.println("annotationParent.parent = " +
annotationParent.getParentObject());
throw new LocSAXException("The declaration of a typesafeEnumClass is only
allowed in xs:simpleType/xs:annotation/xs:appinfo.", getLocator());
}
Added:
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/util/LoggingContentHandler.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/util/LoggingContentHandler.java?rev=437259&view=auto
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/util/LoggingContentHandler.java
(added)
+++
webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/util/LoggingContentHandler.java
Sat Aug 26 17:25:00 2006
@@ -0,0 +1,139 @@
+package org.apache.ws.jaxme.xs.util;
+
+import java.io.OutputStream;
+import java.io.Writer;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.sax.TransformerHandler;
+import javax.xml.transform.stream.StreamResult;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.ext.LexicalHandler;
+import org.xml.sax.helpers.XMLFilterImpl;
+
+
+
+/**
+ * A content handler, which may be used to log a stream of SAX events.
+ */
+public class LoggingContentHandler extends XMLFilterImpl implements
LexicalHandler {
+ private final TransformerHandler th;
+
+ /**
+ * Creates a new instance, which is logging to the given
+ * output stream.
+ */
+ public LoggingContentHandler(OutputStream pStream) throws SAXException {
+ this(new StreamResult(pStream));
+ }
+
+ /**
+ * Creates a new instance, which is logging to the given writer.
+ * @param pResult
+ * @throws SAXException
+ */
+ public LoggingContentHandler(Writer pWriter) throws SAXException {
+ this(new StreamResult(pWriter));
+ }
+
+ private LoggingContentHandler(Result pResult) throws SAXException {
+ try {
+ th = ((SAXTransformerFactory)
TransformerFactory.newInstance()).newTransformerHandler();
+ } catch (TransformerException e) {
+ throw new SAXException(e);
+ }
+ th.setResult(pResult);
+ }
+
+ public void characters(char[] arg0, int arg1, int arg2) throws
SAXException {
+ th.characters(arg0, arg1, arg2);
+ super.characters(arg0, arg1, arg2);
+ }
+
+ public void endDocument() throws SAXException {
+ th.endDocument();
+ super.endDocument();
+ }
+
+ public void endElement(String arg0, String arg1, String arg2) throws
SAXException {
+ th.endElement(arg0, arg1, arg2);
+ super.endElement(arg0, arg1, arg2);
+ }
+
+ public void endPrefixMapping(String arg0) throws SAXException {
+ th.endPrefixMapping(arg0);
+ super.endPrefixMapping(arg0);
+ }
+
+ public void ignorableWhitespace(char[] arg0, int arg1, int arg2) throws
SAXException {
+ th.ignorableWhitespace(arg0, arg1, arg2);
+ super.ignorableWhitespace(arg0, arg1, arg2);
+ }
+
+ public void notationDecl(String arg0, String arg1, String arg2) throws
SAXException {
+ th.notationDecl(arg0, arg1, arg2);
+ super.notationDecl(arg0, arg1, arg2);
+ }
+
+ public void processingInstruction(String arg0, String arg1) throws
SAXException {
+ th.processingInstruction(arg0, arg1);
+ super.processingInstruction(arg0, arg1);
+ }
+
+ public void skippedEntity(String arg0) throws SAXException {
+ th.skippedEntity(arg0);
+ super.skippedEntity(arg0);
+ }
+
+ public void startDocument() throws SAXException {
+ th.startDocument();
+ super.startDocument();
+ }
+
+ public void startElement(String arg0, String arg1, String arg2,
Attributes arg3) throws SAXException {
+ th.startElement(arg0, arg1, arg2, arg3);
+ super.startElement(arg0, arg1, arg2, arg3);
+ }
+
+ public void startPrefixMapping(String arg0, String arg1) throws
SAXException {
+ th.startPrefixMapping(arg0, arg1);
+ super.startPrefixMapping(arg0, arg1);
+ }
+
+ public void unparsedEntityDecl(String arg0, String arg1, String arg2,
String arg3) throws SAXException {
+ th.unparsedEntityDecl(arg0, arg1, arg2, arg3);
+ super.unparsedEntityDecl(arg0, arg1, arg2, arg3);
+ }
+
+ public void comment(char[] arg0, int arg1, int arg2) throws
SAXException {
+ th.comment(arg0, arg1, arg2);
+ }
+
+ public void endCDATA() throws SAXException {
+ th.endCDATA();
+ }
+
+ public void endDTD() throws SAXException {
+ th.endDTD();
+ }
+
+ public void endEntity(String arg0) throws SAXException {
+ th.endEntity(arg0);
+ }
+
+ public void startCDATA() throws SAXException {
+ th.startCDATA();
+ }
+
+ public void startDTD(String arg0, String arg1, String arg2) throws
SAXException {
+ th.startDTD(arg0, arg1, arg2);
+ }
+
+ public void startEntity(String arg0) throws SAXException {
+ th.startEntity(arg0);
+ }
+}
Modified:
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBObjectSG.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBObjectSG.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBObjectSG.java
(original)
+++
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBObjectSG.java
Sat Aug 26 17:25:00 2006
@@ -102,7 +102,14 @@
if (useTypesContext) {
myClassContext = pClassContext;
} else {
- myClassContext = new GlobalContext(name, pObject, null, null, pSchema);
+ XSObject contextObject = pObject;
+ if (pObject instanceof XSElement) {
+ XSElement element = (XSElement) pObject;
+ if (element.isReference()) {
+ contextObject = pObject.getXSSchema().getElement(name);
+ }
+ }
+ myClassContext = new GlobalContext(name, contextObject, null, null,
pSchema);
}
if (isClassGlobal) {
Modified:
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java
(original)
+++
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java
Sat Aug 26 17:25:00 2006
@@ -205,9 +205,9 @@
ObjectSG oSG = pParticle.getObjectSG();
TypeSG tSG = oSG.getTypeSG();
if (tSG.isComplex()) {
- JavaQName elementInterfaceClass =
pParticle.getObjectSG().getClassContext().getXMLInterfaceName();
Object[] o, h;
if (oSG.getClassContext().isGlobal()) {
+ JavaQName elementInterfaceClass =
pParticle.getObjectSG().getClassContext().getXMLInterfaceName();
LocalJavaField manager =
pJm.newJavaField(JMManager.class);
manager.addLine("getHandler().getJMUnmarshaller().getJAXBContextImpl().getManagerS(",
elementInterfaceClass,
".class)");
Modified:
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/impl/JAXBContextImpl.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/impl/JAXBContextImpl.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/impl/JAXBContextImpl.java
(original)
+++
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/impl/JAXBContextImpl.java
Sat Aug 26 17:25:00 2006
@@ -299,7 +299,6 @@
pm.init(manager);
return pm;
} catch (Exception e) {
- e.printStackTrace(System.err);
throw new PMException("Could not instantiate persistence manager class "
+
c.getName(), e);
}
Modified:
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/junit/BindingsTest.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/junit/BindingsTest.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/junit/BindingsTest.java
(original)
+++
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/junit/BindingsTest.java
Sat Aug 26 17:25:00 2006
@@ -15,11 +15,18 @@
*/
package org.apache.ws.jaxme.junit;
+import java.io.File;
+
import junit.framework.TestCase;
-import org.apache.ws.jaxme.test.bindings.vo.FooType;
-import org.apache.ws.jaxme.test.bindings.vo.ObjectFactory;
-import org.apache.ws.jaxme.test.bindings.vo.YesNoTypeClass;
+import org.apache.ws.jaxme.generator.Generator;
+import org.apache.ws.jaxme.generator.SchemaReader;
+import org.apache.ws.jaxme.generator.impl.GeneratorImpl;
+import org.apache.ws.jaxme.generator.sg.impl.JAXBSchemaReader;
+//import org.apache.ws.jaxme.test.bindings.vo.FooType;
+//import org.apache.ws.jaxme.test.bindings.vo.ObjectFactory;
+//import org.apache.ws.jaxme.test.bindings.vo.YesNoTypeClass;
+import org.xml.sax.InputSource;
/**
@@ -27,11 +34,25 @@
*/
public class BindingsTest extends TestCase {
/**
- * Tests, whether the binding has moved the schema to the proper
- * package and whether the string constants have been created.
+ * Tests running the generator with a binding file.
*/
- public void testBindings() throws Exception {
- FooType foo = new ObjectFactory().createFoo();
- foo.setBar(YesNoTypeClass.YES);
+ public void testBindingGenerator() throws Exception {
+ Generator g = new GeneratorImpl();
+ g.setTargetDirectory(new File("build/tests/binding/src"));
+ g.setResourceTargetDirectory(new
File("build/tests/binding/src"));
+ g.addBindings(new InputSource(new
File("src/test/jaxb/bindings/bindings.jxb").toURI().toURL().toExternalForm()));
+ SchemaReader sr = new JAXBSchemaReader();
+ sr.setGenerator(g);
+ g.setSchemaReader(sr);
+ g.generate(new File("src/test/jaxb/bindings/bindings.xsd"));
}
+
+// /**
+// * Tests, whether the binding has moved the schema to the proper
+// * package and whether the string constants have been created.
+// */
+// public void testBindings() throws Exception {
+// FooType foo = new ObjectFactory().createFoo();
+// foo.setBar(YesNoTypeClass.YES);
+// }
}
Modified: webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/bindings.jxb
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/bindings.jxb?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
--- webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/bindings.jxb
(original)
+++ webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/bindings.jxb Sat Aug
26 17:25:00 2006
@@ -1,3 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2003, 2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
<jxb:bindings
version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
@@ -5,6 +21,15 @@
<jxb:bindings schemaLocation="bindings.xsd" node="/xs:schema">
<jxb:schemaBindings>
<jxb:package name="org.apache.ws.jaxme.test.bindings.vo"/>
+ </jxb:schemaBindings>
+ <jxb:bindings node="xs:[EMAIL PROTECTED]'YesNoType']">
+ <jxb:typesafeEnumClass/>
+ </jxb:bindings>
+ </jxb:bindings>
+
+ <jxb:bindings schemaLocation="imported.xsi" node="/xs:schema">
+ <jxb:schemaBindings>
+ <jxb:package name="org.apache.ws.jaxme.test.bindings.imported.vo"/>
</jxb:schemaBindings>
<jxb:bindings node="xs:[EMAIL PROTECTED]'YesNoType']">
<jxb:typesafeEnumClass/>
Modified: webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/bindings.xsd
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/bindings.xsd?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
--- webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/bindings.xsd
(original)
+++ webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/bindings.xsd Sat Aug
26 17:25:00 2006
@@ -14,15 +14,22 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
- <xs:schema
+<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://ws.apache.org/jaxme/test/bindings"
xmlns:bnd="http://ws.apache.org/jaxme/test/bindings"
+ xmlns:imp="http://ws.apache.org/jaxme/test/bindings/imported"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
+ <xs:import namespace="http://ws.apache.org/jaxme/test/bindings/imported"
schemaLocation="imported.xsi"/>
+
<xs:element name="foo">
<xs:complexType>
+ <xs:sequence>
+ <xs:element ref="imp:blubb"/>
+ </xs:sequence>
<xs:attribute name="bar" type="bnd:YesNoType"/>
+ <xs:attribute name="blabb" type="imp:YesNoType"/>
</xs:complexType>
</xs:element>
Added: webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/imported.xsi
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/imported.xsi?rev=437259&view=auto
==============================================================================
--- webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/imported.xsi (added)
+++ webservices/jaxme/branches/b0_5/src/test/jaxb/bindings/imported.xsi Sat Aug
26 17:25:00 2006
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2003, 2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://ws.apache.org/jaxme/test/bindings/imported"
+ xmlns:imp="http://ws.apache.org/jaxme/test/bindings/imported"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xs:element name="blubb">
+ <xs:complexType>
+ <xs:attribute name="blabb" type="imp:YesNoType"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="YesNoType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="YES"/>
+ <xs:enumeration value="NO"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
Modified:
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/XSElement.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/XSElement.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/XSElement.java
(original)
+++
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/XSElement.java
Sat Aug 26 17:25:00 2006
@@ -96,4 +96,9 @@
* Fetch all of the keyref's declared by this element.
*/
public XSKeyRef[] getKeyRefs();
+
+ /**
+ * Returns, whether the element is created by referencing another element.
+ */
+ public boolean isReference();
}
Modified:
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/XSParser.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/XSParser.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
--- webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/XSParser.java
(original)
+++ webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/XSParser.java
Sat Aug 26 17:25:00 2006
@@ -16,8 +16,11 @@
*/
package org.apache.ws.jaxme.xs;
+import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
@@ -26,6 +29,7 @@
import org.apache.ws.jaxme.xs.parser.XSContext;
import org.apache.ws.jaxme.xs.parser.XsSAXParser;
import org.apache.ws.jaxme.xs.parser.impl.XSContextImpl;
+import org.apache.ws.jaxme.xs.util.LoggingContentHandler;
import org.apache.ws.jaxme.xs.xml.XsESchema;
import org.apache.ws.jaxme.xs.xml.XsObjectFactory;
import org.w3c.dom.Node;
@@ -116,18 +120,36 @@
* representation.</p>
* @see #parse(InputSource)
*/
- public XsESchema parseSyntax(InputSource pSource) throws
ParserConfigurationException, SAXException, IOException {
+ public XsESchema parseSyntax(final InputSource pSource) throws
ParserConfigurationException, SAXException, IOException {
XSContext context = getContext();
parser.set(this);
+ FileOutputStream fos = null;
try {
XsObjectFactory factory = context.getXsObjectFactory();
XsSAXParser xsSAXParser = factory.newXsSAXParser();
context.setCurrentContentHandler(xsSAXParser);
XMLReader xr = factory.newXMLReader(isValidating());
+ String logDir = System.getProperty("org.apache.ws.jaxme.xs.logDir");
+ if (logDir != null) {
+ File tmpFile = File.createTempFile("jaxmexs", ".xsd", new
File(logDir));
+ fos = new FileOutputStream(tmpFile);
+ LoggingContentHandler lch = new LoggingContentHandler(fos);
+ lch.setParent(xr);
+ xr = lch;
+ String msg = "Read from " + pSource.getPublicId() + ", " +
pSource.getSystemId() + " at " + new Date();
+ lch.comment(msg.toCharArray(), 0, msg.length());
+ }
xr.setContentHandler(xsSAXParser);
xr.parse(pSource);
+ if (fos != null) {
+ fos.close();
+ fos = null;
+ }
return (XsESchema) xsSAXParser.getBean();
- } finally {
+ } finally {
+ if (fos != null) {
+ try { fos.close(); } catch (Throwable ignore) {}
+ }
context.setCurrentContentHandler(null);
parser.set(null);
}
Modified:
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/impl/XSElementImpl.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/impl/XSElementImpl.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/impl/XSElementImpl.java
(original)
+++
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/impl/XSElementImpl.java
Sat Aug 26 17:25:00 2006
@@ -67,7 +67,7 @@
return (XsTElement) getXsObject();
}
- protected boolean isReference() {
+ public boolean isReference() {
return getXsTElement().getRef() != null;
}
Modified:
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/impl/XSLogicalParser.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/impl/XSLogicalParser.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/impl/XSLogicalParser.java
(original)
+++
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/impl/XSLogicalParser.java
Sat Aug 26 17:25:00 2006
@@ -17,10 +17,12 @@
package org.apache.ws.jaxme.xs.impl;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -39,6 +41,7 @@
import org.apache.ws.jaxme.xs.parser.XSContext;
import org.apache.ws.jaxme.xs.parser.XsSAXParser;
import org.apache.ws.jaxme.xs.parser.impl.LocSAXException;
+import org.apache.ws.jaxme.xs.util.LoggingContentHandler;
import org.apache.ws.jaxme.xs.xml.XsAnyURI;
import org.apache.ws.jaxme.xs.xml.XsEAnnotation;
import org.apache.ws.jaxme.xs.xml.XsEImport;
@@ -60,11 +63,13 @@
import org.apache.ws.jaxme.xs.xml.XsTSimpleExplicitGroup;
import org.apache.ws.jaxme.xs.xml.XsTTopLevelElement;
import org.w3c.dom.Node;
+import org.xml.sax.ContentHandler;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.LocatorImpl;
/** <p>Implementation of a logical parser.</p>
@@ -283,7 +288,45 @@
parseSyntax(pLocator, pSchemaLocation, result);
return result;
}
-
+
+ private void runContentHandler(XMLReader pReader, ContentHandler
pHandler, InputSource pSource)
+ throws SAXException, IOException {
+ String logDir =
System.getProperty("org.apache.ws.jaxme.xs.logDir");
+ FileOutputStream fos = null;
+ try {
+ if (logDir != null) {
+ File tmpFile = File.createTempFile("jaxmexs",
".xsd", new File(logDir));
+ fos = new FileOutputStream(tmpFile);
+ LoggingContentHandler lch = new
LoggingContentHandler(fos);
+ lch.setParent(pReader);
+ pReader = lch;
+ String msg = "Read from " +
pSource.getPublicId() + ", " + pSource.getSystemId() + " at " + new Date();
+ lch.comment(msg.toCharArray(), 0, msg.length());
+ }
+ SchemaTransformer transformer =
getData().getXSObjectFactory().getSchemaTransformer();
+ if (transformer != null) {
+ transformer.parse(pSource, pReader);
+ final InputSource newSource =
transformer.getTransformedInputSource();
+ newSource.setSystemId(pSource.getSystemId());
+ newSource.setPublicId(pSource.getPublicId());
+ pSource = newSource;
+ pReader = transformer.getTransformedXMLReader();
+ }
+ pReader.setContentHandler(pHandler);
+ pReader.parse(pSource);
+ if (fos != null) {
+ fos.close();
+ fos = null;
+ }
+ } catch (ParserConfigurationException e) {
+ throw new SAXException(e);
+ } finally {
+ if (fos != null) {
+ try { fos.close(); } catch (Throwable ignore) {}
+ }
+ }
+ }
+
protected void parseSyntax(Locator pLocator, String pSchemaLocation,
XsESchema pSchema)
throws SAXException, IOException, ParserConfigurationException {
@@ -305,8 +348,7 @@
addSyntaxSchema(pSchema);
try {
data.setCurrentContentHandler(xsSAXParser);
- xr.setContentHandler(xsSAXParser);
- xr.parse(schemaSource);
+ runContentHandler(xr, xsSAXParser,
schemaSource);
} finally {
removeSyntaxSchema();
}
@@ -493,7 +535,7 @@
XsESchema importedSchema = parseSyntax(pNode);
importSchema(pImportingSchema, pNamespace, importedSchema,
null, pSchemaLocation);
}
-
+
/** <p>Parses the given [EMAIL PROTECTED] InputSource} syntactically and
* converts the objects that it finds into logical objects.
* These logical objects are added to the given [EMAIL PROTECTED]
XSSchema}.</p>
@@ -533,7 +575,7 @@
XsAnyURI schemaLocation =
xsEImport.getSchemaLocation();
importSchema(pSyntaxSchema, namespace
== null ? null : namespace.toString(),
schemaLocation == null
? null : schemaLocation.toString(),
-
xsEImport.getLocator());
+
getImportLocator(xsEImport, pSchemaLocation));
} else {
add(pSyntaxSchema, childs[i]);
}
@@ -542,20 +584,30 @@
removeSyntaxSchema();
}
}
+
+ private Locator getImportLocator(XsObject pObject, String
pSchemaLocation) {
+ Locator result = pObject.getLocator();
+ if (result == null && pSchemaLocation != null) {
+ LocatorImpl loc = new LocatorImpl();
+ loc.setSystemId(pSchemaLocation);
+ result = loc;
+ }
+ return result;
+ }
private static class SubstitutionGroup {
private final List members = new ArrayList();
private final XSElement head;
- public SubstitutionGroup(XSElement pHead) {
+ SubstitutionGroup(XSElement pHead) {
head = pHead;
}
- public XSElement getHead() { return head; }
- public XSElement[] getMembers() {
+ XSElement getHead() { return head; }
+ XSElement[] getMembers() {
return (XSElement[]) members.toArray(new
XSElement[members.size()]);
}
- public void addMember(XSElement pElement) {
+ void addMember(XSElement pElement) {
members.add(pElement);
}
}
@@ -655,18 +707,11 @@
* @see #getXSContentHandler()
*/
public XSSchema parse(InputSource pSource)
- throws ParserConfigurationException, SAXException, IOException {
+ throws ParserConfigurationException, SAXException,
IOException {
XSContentHandler contentHandler =
getXSContentHandler(pSource.getSystemId());
XSContext data = getData();
XMLReader xr =
data.getXsObjectFactory().newXMLReader(isValidating());
- SchemaTransformer transformer =
data.getXSObjectFactory().getSchemaTransformer();
- if (transformer != null) {
- transformer.parse(pSource, xr);
- pSource = transformer.getTransformedInputSource();
- xr = transformer.getTransformedXMLReader();
- }
- xr.setContentHandler(contentHandler);
- xr.parse(pSource);
+ runContentHandler(xr, contentHandler, pSource);
return getSchema();
}
Modified:
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/jaxb/impl/JAXBAppinfoImpl.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/jaxb/impl/JAXBAppinfoImpl.java?rev=437259&r1=437258&r2=437259&view=diff
==============================================================================
---
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/jaxb/impl/JAXBAppinfoImpl.java
(original)
+++
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/jaxb/impl/JAXBAppinfoImpl.java
Sat Aug 26 17:25:00 2006
@@ -98,9 +98,6 @@
return jaxbTypesafeEnumClass;
}
}
- System.err.println("this = " + this);
- System.err.println("AnnotationParent = " + annotationParent);
- System.err.println("annotationParent.parent = " +
annotationParent.getParentObject());
throw new LocSAXException("The declaration of a typesafeEnumClass is only
allowed in xs:simpleType/xs:annotation/xs:appinfo.", getLocator());
}
Added:
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/util/LoggingContentHandler.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/util/LoggingContentHandler.java?rev=437259&view=auto
==============================================================================
---
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/util/LoggingContentHandler.java
(added)
+++
webservices/jaxme/branches/b0_5/src/xs/org/apache/ws/jaxme/xs/util/LoggingContentHandler.java
Sat Aug 26 17:25:00 2006
@@ -0,0 +1,139 @@
+package org.apache.ws.jaxme.xs.util;
+
+import java.io.OutputStream;
+import java.io.Writer;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.sax.TransformerHandler;
+import javax.xml.transform.stream.StreamResult;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.ext.LexicalHandler;
+import org.xml.sax.helpers.XMLFilterImpl;
+
+
+
+/**
+ * A content handler, which may be used to log a stream of SAX events.
+ */
+public class LoggingContentHandler extends XMLFilterImpl implements
LexicalHandler {
+ private final TransformerHandler th;
+
+ /**
+ * Creates a new instance, which is logging to the given
+ * output stream.
+ */
+ public LoggingContentHandler(OutputStream pStream) throws SAXException {
+ this(new StreamResult(pStream));
+ }
+
+ /**
+ * Creates a new instance, which is logging to the given writer.
+ * @param pResult
+ * @throws SAXException
+ */
+ public LoggingContentHandler(Writer pWriter) throws SAXException {
+ this(new StreamResult(pWriter));
+ }
+
+ private LoggingContentHandler(Result pResult) throws SAXException {
+ try {
+ th = ((SAXTransformerFactory)
TransformerFactory.newInstance()).newTransformerHandler();
+ } catch (TransformerException e) {
+ throw new SAXException(e);
+ }
+ th.setResult(pResult);
+ }
+
+ public void characters(char[] arg0, int arg1, int arg2) throws
SAXException {
+ th.characters(arg0, arg1, arg2);
+ super.characters(arg0, arg1, arg2);
+ }
+
+ public void endDocument() throws SAXException {
+ th.endDocument();
+ super.endDocument();
+ }
+
+ public void endElement(String arg0, String arg1, String arg2) throws
SAXException {
+ th.endElement(arg0, arg1, arg2);
+ super.endElement(arg0, arg1, arg2);
+ }
+
+ public void endPrefixMapping(String arg0) throws SAXException {
+ th.endPrefixMapping(arg0);
+ super.endPrefixMapping(arg0);
+ }
+
+ public void ignorableWhitespace(char[] arg0, int arg1, int arg2) throws
SAXException {
+ th.ignorableWhitespace(arg0, arg1, arg2);
+ super.ignorableWhitespace(arg0, arg1, arg2);
+ }
+
+ public void notationDecl(String arg0, String arg1, String arg2) throws
SAXException {
+ th.notationDecl(arg0, arg1, arg2);
+ super.notationDecl(arg0, arg1, arg2);
+ }
+
+ public void processingInstruction(String arg0, String arg1) throws
SAXException {
+ th.processingInstruction(arg0, arg1);
+ super.processingInstruction(arg0, arg1);
+ }
+
+ public void skippedEntity(String arg0) throws SAXException {
+ th.skippedEntity(arg0);
+ super.skippedEntity(arg0);
+ }
+
+ public void startDocument() throws SAXException {
+ th.startDocument();
+ super.startDocument();
+ }
+
+ public void startElement(String arg0, String arg1, String arg2,
Attributes arg3) throws SAXException {
+ th.startElement(arg0, arg1, arg2, arg3);
+ super.startElement(arg0, arg1, arg2, arg3);
+ }
+
+ public void startPrefixMapping(String arg0, String arg1) throws
SAXException {
+ th.startPrefixMapping(arg0, arg1);
+ super.startPrefixMapping(arg0, arg1);
+ }
+
+ public void unparsedEntityDecl(String arg0, String arg1, String arg2,
String arg3) throws SAXException {
+ th.unparsedEntityDecl(arg0, arg1, arg2, arg3);
+ super.unparsedEntityDecl(arg0, arg1, arg2, arg3);
+ }
+
+ public void comment(char[] arg0, int arg1, int arg2) throws
SAXException {
+ th.comment(arg0, arg1, arg2);
+ }
+
+ public void endCDATA() throws SAXException {
+ th.endCDATA();
+ }
+
+ public void endDTD() throws SAXException {
+ th.endDTD();
+ }
+
+ public void endEntity(String arg0) throws SAXException {
+ th.endEntity(arg0);
+ }
+
+ public void startCDATA() throws SAXException {
+ th.startCDATA();
+ }
+
+ public void startDTD(String arg0, String arg1, String arg2) throws
SAXException {
+ th.startDTD(arg0, arg1, arg2);
+ }
+
+ public void startEntity(String arg0) throws SAXException {
+ th.startEntity(arg0);
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]