You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by pc...@apache.org on 2003/12/16 20:17:08 UTC
cvs commit: xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/tylar JarredTylar.java
pcal 2003/12/16 11:17:08
Modified: v2/src/binding/org/apache/xmlbeans/impl/binding/tylar
JarredTylar.java
Log:
fix unexpected end-of-file problem in JarredTylar
Revision Changes Path
1.3 +9 -27 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/tylar/JarredTylar.java
Index: JarredTylar.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/tylar/JarredTylar.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JarredTylar.java 16 Dec 2003 09:55:05 -0000 1.2
+++ JarredTylar.java 16 Dec 2003 19:17:08 -0000 1.3
@@ -90,6 +90,8 @@
private static final String SCHEMA_DIR =
normalizeEntryName(TylarConstants.SCHEMA_DIR);
+ private static final String SCHEMA_EXT = ".xsd";
+
// ========================================================================
// Variables
@@ -120,19 +122,12 @@
String name = normalizeEntryName(entry.getName());
if (name.equals(BINDING_FILE)) {
if (VERBOSE) System.out.println("parsing binding file "+name);
- //FIXME this doesn't always work
- // bf = BindingFile.forDoc(BindingConfigDocument.Factory.parse(in));
- // so we do this instead
- bf = BindingFile.forDoc(BindingConfigDocument.Factory.parse
- (getEntryContents(in)));
- } else if (name.startsWith(SCHEMA_DIR)) {
+ bf = BindingFile.forDoc(BindingConfigDocument.Factory.parse(in));
+ } else if (name.startsWith(SCHEMA_DIR) && name.endsWith(SCHEMA_EXT)) {
if (schemas == null) schemas = new ArrayList();
if (VERBOSE) System.out.println("parsing schema "+name);
//FIXME this doesn't work
- // schemas.add(SchemaDocument.Factory.parse(in));
- // so we do this instead
- schemas.add(SchemaDocument.Factory.parse
- (new StringReader(getEntryContents(in))));
+ schemas.add(SchemaDocument.Factory.parse(in));
} else {
if (VERBOSE) {
System.out.println("ignoring unknown jar entry: "+name);
@@ -206,21 +201,8 @@
}
/**
- * This is a temporary hack around a problem I don't fully understand yet.
- * For some reason, the SchemaDocument.Factory and BindingDocument.Factory
- * parse methods don't deal very well with being handed the raw
- * JavaInputStream. Instead, we spoonfeed them by building up the contents
- * into a buffer here and then handing it off to them. Probably some
- * encoding thing, not sure what is going wrong, but at least this works
- * for now.
- *
- * The trace I get when thing go awry looks something like this:
- *
- * org.apache.xmlbeans.XmlException: error: Premature end of file.
- * at org.apache.xmlbeans.impl.store.Root$SaxLoader.load(Root.java:802)
- * at org.apache.xmlbeans.impl.store.Root.loadXml(Root.java:1075)
- * at org.apache.xmlbeans.impl.store.Root.loadXml(Root.java:1061)
- * ...
+ * Grab the contents of the current entry and stuffs them into a string -
+ * sometimes useful for debugging.
*/
private static String getEntryContents(JarInputStream in) throws IOException {
StringWriter writer = new StringWriter();
@@ -230,9 +212,9 @@
writer.write(new String(buffer, 0, count));
}
if (VERBOSE) {
- System.out.println("=== SCHEMA CONTENTS ===");
+ System.out.println("=== ENTRY CONTENTS ===");
System.out.println(writer.toString());
- System.out.println("=== END SCHEMA CONTENTS ===");
+ System.out.println("=== ENTRY CONTENTS ===");
}
return writer.toString();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org