You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlbeans-cvs@xml.apache.org by da...@apache.org on 2003/12/11 20:32:54 UTC
cvs commit: xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema BuiltinSchemaTypeSystem.java SchemaTypeImpl.java
davidbau 2003/12/11 11:32:54
Modified: v2/src/binding/org/apache/xmlbeans/impl/binding/bts
PathBindingLoader.java
v2/src/binding/org/apache/xmlbeans/impl/binding/compile
Both2Bind.java Both2BindTask.java
SimpleTypeMatcher.java TypeMatcher.java
v2/src/typeimpl/org/apache/xmlbeans/impl/schema
BuiltinSchemaTypeSystem.java SchemaTypeImpl.java
Log:
(1) Adding a "typeMatcher" to the Both2Bind task, to make it more configurable
(2) Fix a bad break introduced in a recent checkin with XmlName->XmlTypeName
(3) Added the ability for a Both2Bind typeMatcher to be able to substitute an actual class-to-instantiate for a declared-class-of-a-property.
review: pcal (needed)
DRT: passed
Revision Changes Path
1.6 +2 -0 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/PathBindingLoader.java
Index: PathBindingLoader.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/PathBindingLoader.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- PathBindingLoader.java 4 Dec 2003 21:14:55 -0000 1.5
+++ PathBindingLoader.java 11 Dec 2003 19:32:54 -0000 1.6
@@ -225,6 +225,8 @@
{
for (int i = 0; i < jarsOrDirs.length; i++)
{
+ if (!jarsOrDirs[i].exists())
+ continue; // skip parts of the claspath which do not exist
FileResourceLoader rl = new FileResourceLoader(jarsOrDirs[i]);
InputStream resource = rl.getResourceAsStream(STANDARD_PATH);
files.add(BindingFile.forDoc(BindingConfigDocument.Factory.parse(resource)));
1.2 +4 -2 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Both2Bind.java
Index: Both2Bind.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Both2Bind.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Both2Bind.java 9 Dec 2003 17:25:16 -0000 1.1
+++ Both2Bind.java 11 Dec 2003 19:32:54 -0000 1.2
@@ -84,8 +84,6 @@
import java.util.Set;
import java.util.HashSet;
import java.math.BigInteger;
-import java.io.OutputStream;
-import java.io.IOException;
public class Both2Bind implements BindingFileResult
{
@@ -658,6 +656,10 @@
jPropType = jPropType.getArrayComponentType();
}
}
+
+ // A matcher can say that a declared type is "really" another type.
+ // The normal matcher just returns the same thing back.
+ jPropType = matcher.substituteClass(jPropType);
// Queues the binding type for this property for processing if needed
BindingType bType = bindingTypeForMatchedTypes(jPropType, sPropType, matchedProperties[i]);
1.2 +19 -1 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Both2BindTask.java
Index: Both2BindTask.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Both2BindTask.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Both2BindTask.java 9 Dec 2003 17:25:16 -0000 1.1
+++ Both2BindTask.java 11 Dec 2003 19:32:54 -0000 1.2
@@ -62,6 +62,7 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlOptions;
import java.io.File;
import java.io.IOException;
@@ -79,6 +80,7 @@
private Path mClasspath = null;
private List mXsdFiles = null;
private List mJavaFiles = null;
+ private String mTypeMatcherClass = null;
// =========================================================================
// Task attributes
@@ -100,6 +102,15 @@
mSrc.append(srcDir);
}
}
+
+ /**
+ * Sets the typematcher class name. Must be a fully-qualified
+ * class name for a class that implements the TypeMatcher interface.
+ */
+ public void setTypeMatcher(String typeMatcher)
+ {
+ mTypeMatcherClass = typeMatcher;
+ }
/**
* Adds a path for source compilation.
@@ -219,7 +230,14 @@
}
TylarBuilder tb = new ExplodedTylarBuilder(mDestDir);
- BindingFileResult result = Both2Bind.bind(input, null);
+ XmlOptions opts = null;
+ if (mTypeMatcherClass != null)
+ {
+ opts = new XmlOptions();
+ opts.put(Both2Bind.TYPE_MATCHER, mTypeMatcherClass);
+ System.out.println("Got matcher class " + mTypeMatcherClass);
+ }
+ BindingFileResult result = Both2Bind.bind(input, opts);
try {
tb.buildTylar(result);
1.2 +5 -1 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/SimpleTypeMatcher.java
Index: SimpleTypeMatcher.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/SimpleTypeMatcher.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SimpleTypeMatcher.java 4 Dec 2003 21:14:55 -0000 1.1
+++ SimpleTypeMatcher.java 11 Dec 2003 19:32:54 -0000 1.2
@@ -135,7 +135,11 @@
return (MatchedProperties[])result.toArray(new MatchedProperties[result.size()]);
}
-
+
+ public JClass substituteClass(JClass declaredClass) {
+ return declaredClass;
+ }
+
public void startMatch()
{
mapByShortName.clear();
1.2 +30 -19 xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/TypeMatcher.java
Index: TypeMatcher.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/TypeMatcher.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TypeMatcher.java 4 Dec 2003 21:14:55 -0000 1.1
+++ TypeMatcher.java 11 Dec 2003 19:32:54 -0000 1.2
@@ -64,6 +64,36 @@
public interface TypeMatcher
{
+ /**
+ * Returns a collection of MatchedTypes, advising which
+ * Java classes and which Schema types should be matched
+ * with each other. Not every class or type needs to be
+ * matched by the matcher. Any remaining ones will be
+ * dealt with automatically if possible, and warnings
+ * will be produced for any types that are not covered.
+ */
+ MatchedType[] matchTypes(BothSourceSet bss);
+
+ /**
+ * Returns a collection of MatchedProperties, advising which
+ * Java properties and Schema properties (elements or
+ * attributes) should be matched with each other.
+ * Any properties not returned here will not be bound.
+ * It is acceptable to rebind properties that were already
+ * bound in a base class. Conflicts will result in an error.
+ */
+ MatchedProperties[] matchProperties(JClass jClass, SchemaType sType);
+
+ /**
+ * Substitutes a class-to-bind for a declared-class seen.
+ * This is used when, for example, an interface is used to
+ * always stand in for a specific implementation class. In
+ * reality, it is the implementation class which is being
+ * bound, but all the declared properties have types corresponding
+ * to the interface.
+ */
+ JClass substituteClass(JClass declaredClass);
+
public static class MatchedType
{
private JClass jClass;
@@ -106,25 +136,6 @@
return result;
}
}
- /**
- * Returns a collection of MatchedTypes, advising which
- * Java classes and which Schema types should be matched
- * with each other. Not every class or type needs to be
- * matched by the matcher. Any remaining ones will be
- * dealt with automatically if possible, and warnings
- * will be produced for any types that are not covered.
- */
- MatchedType[] matchTypes(BothSourceSet bss);
-
- /**
- * Returns a collection of MatchedProperties, advising which
- * Java properties and Schema properties (elements or
- * attributes) should be matched with each other.
- * Any properties not returned here will not be bound.
- * It is acceptable to rebind properties that were already
- * bound in a base class. Conflicts will result in an error.
- */
- MatchedProperties[] matchProperties(JClass jClass, SchemaType sType);
public static class MatchedProperties
{
1.4 +1 -1 xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema/BuiltinSchemaTypeSystem.java
Index: BuiltinSchemaTypeSystem.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema/BuiltinSchemaTypeSystem.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BuiltinSchemaTypeSystem.java 4 Dec 2003 21:14:56 -0000 1.3
+++ BuiltinSchemaTypeSystem.java 11 Dec 2003 19:32:54 -0000 1.4
@@ -321,7 +321,7 @@
// derived strings
setupBuiltin(SchemaType.BTC_NORMALIZED_STRING, "normalizedString", "org.apache.xmlbeans.XmlNormalizedString");
setupBuiltin(SchemaType.BTC_TOKEN, "token", "org.apache.xmlbeans.XmlToken");
- setupBuiltin(SchemaType.BTC_NAME, "Name", "org.apache.xmlbeans.XmlTypeName");
+ setupBuiltin(SchemaType.BTC_NAME, "Name", "org.apache.xmlbeans.XmlName");
setupBuiltin(SchemaType.BTC_NCNAME, "NCName", "org.apache.xmlbeans.XmlNCName");
setupBuiltin(SchemaType.BTC_LANGUAGE, "language", "org.apache.xmlbeans.XmlLanguage");
setupBuiltin(SchemaType.BTC_ID, "ID", "org.apache.xmlbeans.XmlID");
1.4 +5 -1 xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeImpl.java
Index: SchemaTypeImpl.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SchemaTypeImpl.java 13 Nov 2003 01:03:00 -0000 1.3
+++ SchemaTypeImpl.java 11 Dec 2003 19:32:54 -0000 1.4
@@ -834,6 +834,8 @@
SchemaGlobalElement elt = wildcardTypeLoader.findElement(eltName);
if (elt == null)
return BuiltinSchemaTypeSystem.ST_NO_TYPE;
+ // According to http://www.w3.org/TR/xmlschema-1/#key-lva,
+ // the line above should return ST_ANY_TYPE.
type = elt.getType();
}
@@ -865,7 +867,9 @@
if (!_typedWildcardAttributes.contains(attrName) || wildcardTypeLoader == null)
return BuiltinSchemaTypeSystem.ST_NO_TYPE;
-
+ // For symmetry with the element case (as well as with URType), perhaps
+ // the above line should be returning ST_ANY_SIMPLE
+
SchemaGlobalAttribute attr = wildcardTypeLoader.findAttribute(attrName);
if (attr == null)
return BuiltinSchemaTypeSystem.ST_NO_TYPE;
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org