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/05 22:48:18 UTC
cvs commit: xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile Java2SchemaResult.java ExplodedTylarBuilder.java Java2Schema.java Java2SchemaTask.java TylarBuilder.java JavaToSchemaResult.java JavaToSchemaResultImpl.java
pcal 2003/12/05 13:48:18
Modified: v2/src/binding/org/apache/xmlbeans/impl/binding/compile
ExplodedTylarBuilder.java Java2Schema.java
Java2SchemaTask.java TylarBuilder.java
Added: v2/src/binding/org/apache/xmlbeans/impl/binding/compile
Java2SchemaResult.java
Removed: v2/src/binding/org/apache/xmlbeans/impl/binding/compile
JavaToSchemaResult.java JavaToSchemaResultImpl.java
Log:
java2schema: refactor result interface
Revision Changes Path
1.5 +140 -130 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/ExplodedTylarBuilder.java
Index: ExplodedTylarBuilder.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/ExplodedTylarBuilder.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ExplodedTylarBuilder.java 4 Dec 2003 21:14:55 -0000 1.4
+++ ExplodedTylarBuilder.java 5 Dec 2003 21:48:18 -0000 1.5
@@ -64,6 +64,7 @@
import java.io.IOException;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
@@ -75,139 +76,148 @@
*
* @author Patrick Calahan <pc...@bea.com>
*/
-public class ExplodedTylarBuilder implements TylarBuilder
-{
+public class ExplodedTylarBuilder implements TylarBuilder {
- // =========================================================================
- // Constants
+ // =========================================================================
+ // Constants
- private static final int XML_INDENT = 2;
+ private static final int XML_INDENT = 2;
- // =========================================================================
- // Variables
-
- private File mDir;
- private List mSchemas = new ArrayList();
- private List mBindings = new ArrayList();
-
- // =========================================================================
- // Constructors
-
- public ExplodedTylarBuilder(File dir)
- {
- if (dir == null) throw new IllegalArgumentException("null dir");
- mDir = dir;
- }
-
- // =========================================================================
- // TylarBuilder implementation
-
- public void buildTylar(JavaToSchemaResult result) throws IOException
- {
- createTargetDir();
-
- // write schemas
- writeXsdFiles(result.getSchemaCodeResult());
-
- // print the binding file
- writeBindingFile(result.getBindingFileResult());
- }
-
- protected void writeBindingFile(BindingFileResult bfg) throws IOException
- {
- File file = new File(mDir, "binding-file.xml"); //FIXME naming
- FileOutputStream out = null;
+ // =========================================================================
+ // Variables
+
+ private File mDir;
+ private List mSchemas = new ArrayList();
+ private List mBindings = new ArrayList();
+
+ // =========================================================================
+ // Constructors
+
+ public ExplodedTylarBuilder(File dir) {
+ if (dir == null) throw new IllegalArgumentException("null dir");
+ mDir = dir;
+ }
+
+ // =========================================================================
+ // TylarBuilder implementation
+
+ public void buildTylar(Java2SchemaResult result) throws IOException {
+ createTargetDir();
+ // write schemas
+ writeXsdFiles(result.getSchemas());
+ // print the binding file
+ writeBindingFile(result.getBindingFile());
+ }
+
+ protected void writeBindingFile(BindingFile bf) throws IOException {
+ File file = new File(mDir, "binding-file.xml"); //FIXME naming
+ FileOutputStream out = null;
+ try {
+ out = new FileOutputStream(file);
+ BindingConfigDocument doc = bf.write();
+ doc.save(out,
+ new XmlOptions().setSavePrettyPrint().
+ setSavePrettyPrintIndent(XML_INDENT));
+ } catch (IOException ioe) {
+ throw ioe;
+ } finally {
+ try {
+ out.close();
+ } catch (IOException ohwell) {
+ ohwell.printStackTrace();
+ }
+ }
+ }
+
+ protected void writeXsdFiles(SchemaDocument[] xsds) throws IOException {
+ // print the schemas
+ for (int i = 0; i < xsds.length; i++) {
+ File file = new File(mDir, "schema-" + i + ".xsd");//FIXME naming
+ FileOutputStream out = null;
+ try {
+ out = new FileOutputStream(file);
+ xsds[i].save(out,
+ new XmlOptions().setSavePrettyPrint().
+ setSavePrettyPrintIndent(XML_INDENT));
+ } catch (IOException ioe) {
+ throw ioe;
+ } finally {
try {
- out = new FileOutputStream(file);
- bfg.printBindingFile(out);
- }
- catch (IOException ioe) {
- throw ioe;
- }
- finally {
- try {
- out.close();
- }
- catch (IOException ohwell) {
- ohwell.printStackTrace();
- }
- }
- }
-
-
- protected void writeXsdFiles(SchemaCodeResult scg) throws IOException
- {
- // print the schemas
- String[] tns = scg.getTargetNamespaces();
- for (int i = 0; i < tns.length; i++) {
- File file = new File(mDir, "schema-" + i + ".xsd");//FIXME naming
- FileOutputStream out = null;
- try {
- out = new FileOutputStream(file);
- scg.printSchema(tns[i], out);
- }
- catch (IOException ioe) {
- throw ioe;
- }
- finally {
- try {
- out.close();
- }
- catch (Exception ohwell) {
- ohwell.printStackTrace();
- }
- }
- }
- }
-
- protected void writeJavaFiles(JavaCodeResult jcg) throws IOException
- {
- Collection classnames = jcg.getToplevelClasses();
- for (Iterator i = classnames.iterator(); i.hasNext(); )
- {
- String className = (String)i.next();
- File javaFile = new File(mDir, className.replace('.','/') + ".java");
- FileOutputStream out = null;
- try {
- out = new FileOutputStream(javaFile);
- jcg.printSourceCode(className, out);
- }
- catch (IOException e) {
- throw e;
- }
- finally
- {
- try {
- out.close();
- }
- catch (Exception ohwell) {
- ohwell.printStackTrace();
- }
- }
- }
- }
-
- protected void createTargetDir()
- {
- if (!mDir.exists()) {
- if (!mDir.mkdirs()) {
- throw new IllegalArgumentException("failed to create dir " + mDir);
- }
- }
- else {
- if (!mDir.isDirectory())
- throw new IllegalArgumentException("not a directory: " + mDir);
- }
- }
-
- public void buildTylar(SchemaToJavaResult result) throws IOException
- {
- createTargetDir();
-
- // print the java files
- writeJavaFiles(result.getJavaCodeResult());
-
- // print the binding file
- writeBindingFile(result.getBindingFileResult());
+ out.close();
+ } catch (Exception ohwell) {
+ ohwell.printStackTrace();
+ }
+ }
+ }
+ }
+
+ protected void writeJavaFiles(JavaCodeResult jcg) throws IOException {
+ Collection classnames = jcg.getToplevelClasses();
+ for (Iterator i = classnames.iterator(); i.hasNext();) {
+ String className = (String) i.next();
+ File javaFile = new File(mDir, className.replace('.', '/') + ".java");
+ FileOutputStream out = null;
+ try {
+ out = new FileOutputStream(javaFile);
+ jcg.printSourceCode(className, out);
+ } catch (IOException e) {
+ throw e;
+ } finally {
+ try {
+ out.close();
+ } catch (Exception ohwell) {
+ ohwell.printStackTrace();
+ }
+ }
+ }
+ }
+
+ protected void createTargetDir() {
+ if (!mDir.exists()) {
+ if (!mDir.mkdirs()) {
+ throw new IllegalArgumentException("failed to create dir " + mDir);
+ }
+ } else {
+ if (!mDir.isDirectory())
+ throw new IllegalArgumentException("not a directory: " + mDir);
+ }
+ }
+
+ public void buildTylar(SchemaToJavaResult result) throws IOException {
+ createTargetDir();
+
+ // print the java files
+ writeJavaFiles(result.getJavaCodeResult());
+
+ // print the binding file
+ writeBindingFile(result.getBindingFileResult());
+ }
+
+ /**
+ * @deprecated I really think it is a bad idea for SchemaToJavaResult
+ * to have the responsibility for printing out the binding file and java
+ * code. It should just return handles to things that get printed out
+ * by the tylar builder. I have already made this change on the
+ * java->schema side.
+ */
+ private void writeBindingFile(BindingFileResult bfg) throws IOException
+ {
+ File file = new File(mDir, "binding-file.xml"); //FIXME naming
+ FileOutputStream out = null;
+ try {
+ out = new FileOutputStream(file);
+ bfg.printBindingFile(out);
+ }
+ catch (IOException ioe) {
+ throw ioe;
+ }
+ finally {
+ try {
+ out.close();
+ }
+ catch (IOException ohwell) {
+ ohwell.printStackTrace();
+ }
}
+ }
}
1.16 +20 -19 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Java2Schema.java
Index: Java2Schema.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Java2Schema.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- Java2Schema.java 4 Dec 2003 21:14:55 -0000 1.15
+++ Java2Schema.java 5 Dec 2003 21:48:18 -0000 1.16
@@ -128,22 +128,8 @@
* Does the binding work on the inputs passed to the constructor and returns
* the result.
*/
- public JavaToSchemaResult bind() {
- final JavaToSchemaResultImpl out = new JavaToSchemaResultImpl(mInput);
- bind(mInput.getJClasses(),out);
- final Throwable[] errors;
- if (mErrors == null) {
- errors = new Throwable[0];
- } else {
- errors = new Throwable[mErrors.size()];
- mErrors.toArray(errors);
- }
- return new JavaToSchemaResult() {
- public Throwable[] getErrors() { return errors; }
- public BindingFileResult getBindingFileResult() { return out; }
- public SchemaCodeResult getSchemaCodeResult() { return out; }
- public JavaSourceSet getJavaSourceSet() { return out.getJavaSourceSet(); }
- };
+ public Java2SchemaResult bind() {
+ return bind(mInput.getJClasses());
}
// ========================================================================
@@ -153,8 +139,8 @@
* Runs through all of the given classes and creates both schema types
* and bts bindings for them in the given result object.
*/
- private void bind(JClass[] classes, JavaToSchemaResultImpl jtsr) {
- jtsr.addBindingFile(mBindingFile = new BindingFile());
+ private Java2SchemaResult bind(JClass[] classes) {
+ mBindingFile = new BindingFile();
mLoader = PathBindingLoader.forPath
(new BindingLoader[] {mBindingFile,
BuiltinBindingLoader.getInstance()});
@@ -166,7 +152,22 @@
mSchema.setTargetNamespace(getTargetNamespace(classes[0]));
}
for(int i=0; i<classes.length; i++) getBindingTypeFor(classes[i]);
- jtsr.addSchema(mSchemaDocument);
+ //collect the errors
+ final Throwable[] errors;
+ if (mErrors == null) {
+ errors = new Throwable[0];
+ } else {
+ errors = new Throwable[mErrors.size()];
+ mErrors.toArray(errors);
+ }
+ //build the result object
+ final BindingFile bf = mBindingFile;
+ final SchemaDocument[] schemas = {mSchemaDocument};
+ return new Java2SchemaResult() {
+ public Throwable[] getErrors() { return errors; }
+ public BindingFile getBindingFile() { return bf; }
+ public SchemaDocument[] getSchemas() { return schemas; }
+ };
}
/**
1.9 +1 -4 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Java2SchemaTask.java
Index: Java2SchemaTask.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Java2SchemaTask.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Java2SchemaTask.java 4 Dec 2003 21:14:55 -0000 1.8
+++ Java2SchemaTask.java 5 Dec 2003 21:48:18 -0000 1.9
@@ -59,12 +59,9 @@
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
-import org.apache.xmlbeans.XmlOptions;
import org.apache.xmlbeans.impl.jam.JClass;
import org.apache.xmlbeans.impl.jam.JFactory;
import org.apache.xmlbeans.impl.jam.JFileSet;
-import org.apache.xmlbeans.impl.binding.bts.BindingFile;
-import org.apache.xml.xmlbeans.bindingConfig.BindingConfigDocument;
import java.io.File;
import java.io.IOException;
@@ -179,7 +176,7 @@
};
Java2Schema j2b = new Java2Schema(input);
TylarBuilder tb = new ExplodedTylarBuilder(mDestDir);
- JavaToSchemaResult result = j2b.bind();
+ Java2SchemaResult result = j2b.bind();
try {
tb.buildTylar(result);
} catch(IOException ioe) {
1.4 +1 -1 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/TylarBuilder.java
Index: TylarBuilder.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/TylarBuilder.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TylarBuilder.java 4 Dec 2003 21:14:55 -0000 1.3
+++ TylarBuilder.java 5 Dec 2003 21:48:18 -0000 1.4
@@ -75,7 +75,7 @@
*/
public interface TylarBuilder {
- public void buildTylar(JavaToSchemaResult result) throws IOException;
+ public void buildTylar(Java2SchemaResult result) throws IOException;
public void buildTylar(SchemaToJavaResult result) throws IOException;
}
1.1 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Java2SchemaResult.java
Index: Java2SchemaResult.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache
* XMLBeans", nor may "Apache" appear in their name, without prior
* written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation and was
* originally based on software copyright (c) 2003 BEA Systems
* Inc., <http://www.bea.com/>. For more information on the Apache Software
* Foundation, please see <http://www.apache.org/>.
*/
package org.apache.xmlbeans.impl.binding.compile;
import org.apache.xmlbeans.impl.binding.bts.BindingFile;
import org.w3.x2001.xmlSchema.SchemaDocument;
/**
* Encapsulates results returned by Java2Schema.
*
* @author Patrick Calahan <pc...@bea.com>
*/
public interface Java2SchemaResult
{
/**
* Returns an array containing the set of fatal errors that were encountered
* during the binding process. Returns an empty array if no fatal errors
* were encounted.
*/
public Throwable[] getErrors();
/**
* Returns the BindingFile object that was produced by Java2Schema. May
* return null if catastrophic errors were encountered.
*/
public BindingFile getBindingFile();
/**
* Returns an array containing the schema documents which were produced
* by Java2Schema.
*/
public SchemaDocument[] getSchemas();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org