You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by ra...@apache.org on 2008/04/02 00:54:15 UTC
svn commit: r643633 - in /xmlbeans/trunk: src/configschema/schema/
src/typeimpl/org/apache/xmlbeans/impl/schema/
src/xmlconfig/org/apache/xmlbeans/impl/config/
src/xmlpublic/org/apache/xmlbeans/ test/src/compile/scomp/common/mockobj/
Author: radup
Date: Tue Apr 1 15:53:58 2008
New Revision: 643633
URL: http://svn.apache.org/viewvc?rev=643633&view=rev
Log:
Fix for XMLBEANS-253: added more fine-grained control over XML to Java name mapping.
Modified:
xmlbeans/trunk/src/configschema/schema/xmlconfig.xsd
xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java
xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java
xmlbeans/trunk/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/BindingConfig.java
xmlbeans/trunk/test/src/compile/scomp/common/mockobj/TestBindingConfig.java
Modified: xmlbeans/trunk/src/configschema/schema/xmlconfig.xsd
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/configschema/schema/xmlconfig.xsd?rev=643633&r1=643632&r2=643633&view=diff
==============================================================================
--- xmlbeans/trunk/src/configschema/schema/xmlconfig.xsd (original)
+++ xmlbeans/trunk/src/configschema/schema/xmlconfig.xsd Tue Apr 1 15:53:58 2008
@@ -120,6 +120,19 @@
<xs:sequence/>
<xs:attribute name="name" type="xs:QName"/>
<xs:attribute name="javaname" type="xs:string"/>
+ <xs:attribute name="target" type="xb:qnametargetlist" default="type document-type accessor-element accessor-attribute">
+ <xs:annotation>
+ <xs:documentation>
+ Specified on what type of Schema component does the qname mapping apply:
+ - type - on global types with that QName and "local" types contained within attributes/elements
+ with the specified name
+ - document-type - on "document" types generated from global elements/attributes with
+ the specified name
+ - accessor-element - on getters/setters generated from elements with the specified name
+ - accessor-attribute - on getters/setters generated from attributes with the specified name
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:complexType>
<xs:simpleType name="namespacePrefixList">
@@ -253,5 +266,18 @@
<xs:simpleType name="javaName">
<xs:restriction base="xs:token" />
+ </xs:simpleType>
+
+ <xs:simpleType name="qnametargetlist">
+ <xs:list itemType="xb:qnametargetenum"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="qnametargetenum">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="type"/>
+ <xs:enumeration value="document-type"/>
+ <xs:enumeration value="accessor-element"/>
+ <xs:enumeration value="accessor-attribute"/>
+ </xs:restriction>
</xs:simpleType>
</xs:schema>
Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java?rev=643633&r1=643632&r2=643633&view=diff
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java Tue Apr 1 15:53:58 2008
@@ -92,7 +92,8 @@
{
SchemaTypeImpl sImpl = (SchemaTypeImpl)i.next();
QName topName = findTopName(sImpl);
- String pickedName = state.getJavaname(topName);
+ String pickedName = state.getJavaname(topName, sImpl.isDocumentType() ?
+ BindingConfig.QNAME_DOCUMENT_TYPE : BindingConfig.QNAME_TYPE);
if (sImpl.isUnjavaized())
{
sImpl.setFullJavaName(pickFullJavaClassName(usedNames, findTopName(sImpl), pickedName, sImpl.isDocumentType(), sImpl.isAttributeType()));
@@ -390,7 +391,7 @@
{
QName qname = sImpl.getContainerField().getName();
localname = qname.getLocalPart();
- javaname = state.getJavaname(sImpl.getContainerField().getName());
+ javaname = state.getJavaname(sImpl.getContainerField().getName(), BindingConfig.QNAME_TYPE);
}
else
{
@@ -458,7 +459,9 @@
String theName;
if (baseProp == null)
- theName = pickJavaPropertyName(usedNames, propQName.getLocalPart(), state.getJavaname(propQName));
+ theName = pickJavaPropertyName(usedNames, propQName.getLocalPart(),
+ state.getJavaname(propQName, sImpl.isAttribute() ? BindingConfig.QNAME_ACCESSOR_ATTRIBUTE :
+ BindingConfig.QNAME_ACCESSOR_ELEMENT));
else
theName = baseProp.getJavaPropertyName();
Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java?rev=643633&r1=643632&r2=643633&view=diff
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscState.java Tue Apr 1 15:53:58 2008
@@ -660,11 +660,11 @@
/**
* Looks up configured java name for the given qname.
*/
- public String getJavaname(QName qname)
+ public String getJavaname(QName qname, int kind)
{
if (_config == null)
return null;
- return _config.lookupJavanameForQName(qname);
+ return _config.lookupJavanameForQName(qname, kind);
}
/* SPELLINGS ======================================================*/
Modified: xmlbeans/trunk/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java?rev=643633&r1=643632&r2=643633&view=diff
==============================================================================
--- xmlbeans/trunk/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java (original)
+++ xmlbeans/trunk/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java Tue Apr 1 15:53:58 2008
@@ -19,6 +19,7 @@
import org.apache.xmlbeans.impl.xb.xmlconfig.Extensionconfig;
import org.apache.xmlbeans.impl.xb.xmlconfig.Nsconfig;
import org.apache.xmlbeans.impl.xb.xmlconfig.Qnameconfig;
+import org.apache.xmlbeans.impl.xb.xmlconfig.Qnametargetenum;
import org.apache.xmlbeans.BindingConfig;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlError;
@@ -46,7 +47,10 @@
private Map _packageMapByUriPrefix; // uri prefix -> package
private Map _prefixMapByUriPrefix; // uri prefix -> name prefix
private Map _suffixMapByUriPrefix; // uri prefix -> name suffix
- private Map _qnameMap;
+ private Map _qnameTypeMap;
+ private Map _qnameDocTypeMap;
+ private Map _qnameElemMap;
+ private Map _qnameAttMap;
private List _interfaceExtensions;
private List _prePostExtensions;
@@ -59,7 +63,10 @@
_packageMapByUriPrefix = Collections.EMPTY_MAP;
_prefixMapByUriPrefix = Collections.EMPTY_MAP;
_suffixMapByUriPrefix = Collections.EMPTY_MAP;
- _qnameMap = Collections.EMPTY_MAP;
+ _qnameTypeMap = Collections.EMPTY_MAP;
+ _qnameDocTypeMap = Collections.EMPTY_MAP;
+ _qnameElemMap = Collections.EMPTY_MAP;
+ _qnameAttMap = Collections.EMPTY_MAP;
_interfaceExtensions = new ArrayList();
_prePostExtensions = new ArrayList();
}
@@ -77,7 +84,10 @@
_packageMapByUriPrefix = new LinkedHashMap();
_prefixMapByUriPrefix = new LinkedHashMap();
_suffixMapByUriPrefix = new LinkedHashMap();
- _qnameMap = new LinkedHashMap();
+ _qnameTypeMap = new LinkedHashMap();
+ _qnameDocTypeMap = new LinkedHashMap();
+ _qnameElemMap = new LinkedHashMap();
+ _qnameAttMap = new LinkedHashMap();
_interfaceExtensions = new ArrayList();
_prePostExtensions = new ArrayList();
@@ -98,7 +108,28 @@
Qnameconfig[] qnc = config.getQnameArray();
for (int j = 0; j < qnc.length; j++)
{
- _qnameMap.put(qnc[j].getName(), qnc[j].getJavaname());
+ List applyto = qnc[j].xgetTarget().xgetListValue();
+ QName name = qnc[j].getName();
+ String javaname = qnc[j].getJavaname();
+ for (int k = 0; k < applyto.size(); k++)
+ {
+ Qnametargetenum a = (Qnametargetenum) applyto.get(k);
+ switch (a.enumValue().intValue())
+ {
+ case Qnametargetenum.INT_TYPE:
+ _qnameTypeMap.put(name, javaname);
+ break;
+ case Qnametargetenum.INT_DOCUMENT_TYPE:
+ _qnameDocTypeMap.put(name, javaname);
+ break;
+ case Qnametargetenum.INT_ACCESSOR_ELEMENT:
+ _qnameElemMap.put(name, javaname);
+ break;
+ case Qnametargetenum.INT_ACCESSOR_ATTRIBUTE:
+ _qnameAttMap.put(name, javaname);
+ break;
+ }
+ }
}
Extensionconfig[] ext = config.getExtensionArray();
@@ -312,9 +343,29 @@
return lookup(_suffixMap, _suffixMapByUriPrefix, uri);
}
+ /** @deprecated replaced with {@link #lookupJavanameForQName(QName, int)} */
public String lookupJavanameForQName(QName qname)
{
- return (String)_qnameMap.get(qname);
+ String result = (String)_qnameTypeMap.get(qname);
+ if (result != null)
+ return result;
+ return (String)_qnameDocTypeMap.get(qname);
+ }
+
+ public String lookupJavanameForQName(QName qname, int kind)
+ {
+ switch (kind)
+ {
+ case QNAME_TYPE:
+ return (String)_qnameTypeMap.get(qname);
+ case QNAME_DOCUMENT_TYPE:
+ return (String)_qnameDocTypeMap.get(qname);
+ case QNAME_ACCESSOR_ELEMENT:
+ return (String)_qnameElemMap.get(qname);
+ case QNAME_ACCESSOR_ATTRIBUTE:
+ return (String)_qnameAttMap.get(qname);
+ }
+ return null;
}
public InterfaceExtension[] getInterfaceExtensions()
Modified: xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/BindingConfig.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/BindingConfig.java?rev=643633&r1=643632&r2=643633&view=diff
==============================================================================
--- xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/BindingConfig.java (original)
+++ xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/BindingConfig.java Tue Apr 1 15:53:58 2008
@@ -21,13 +21,18 @@
* The BindingConfig class is used during compilation to control the generation of java source files.
* The default BindingConfig does nothing, but sub-classes should provide more interesting behavior.
*
- * @see {@link XmlBeans#compileXmlBeans(String, SchemaTypeSystem, XmlObject[], BindingConfig, SchemaTypeLoader, Filer, XmlOptions) XmlBeans.compileXmlBeans()}
+ * @see XmlBeans#compileXmlBeans(String, SchemaTypeSystem, XmlObject[], BindingConfig, SchemaTypeLoader, Filer, XmlOptions) XmlBeans.compileXmlBeans()
*/
public class BindingConfig
{
private static final InterfaceExtension[] EMPTY_INTERFACE_EXT_ARRAY = new InterfaceExtension[0];
private static final PrePostExtension[] EMPTY_PREPOST_EXT_ARRAY = new PrePostExtension[0];
+ public static final int QNAME_TYPE = 1;
+ public static final int QNAME_DOCUMENT_TYPE = 2;
+ public static final int QNAME_ACCESSOR_ELEMENT = 3;
+ public static final int QNAME_ACCESSOR_ATTRIBUTE = 4;
+
/**
* Get the package name for a namespace or null.
*/
@@ -45,8 +50,18 @@
/**
* Get the java name for a QName or null.
+ * @deprecated replaced with {@link #lookupJavanameForQName(QName, int)}
*/
public String lookupJavanameForQName(QName qname) { return null; }
+
+ /**
+ * Get the java name for a QName of a specific component kind, or null.
+ * @see #QNAME_TYPE
+ * @see #QNAME_TYPE_DOCUMENT
+ * @see #QNAME_METHOD_ELEMENT
+ * @see #QNAME_METHOD_ATTRIBUTE
+ */
+ public String lookupJavanameForQName(QName qname, int kind) { return null; }
/**
* Returns all configured InterfaceExtensions or an empty array.
Modified: xmlbeans/trunk/test/src/compile/scomp/common/mockobj/TestBindingConfig.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/test/src/compile/scomp/common/mockobj/TestBindingConfig.java?rev=643633&r1=643632&r2=643633&view=diff
==============================================================================
--- xmlbeans/trunk/test/src/compile/scomp/common/mockobj/TestBindingConfig.java (original)
+++ xmlbeans/trunk/test/src/compile/scomp/common/mockobj/TestBindingConfig.java Tue Apr 1 15:53:58 2008
@@ -120,11 +120,19 @@
return bindingConfig.lookupSuffixForNamespace(s);
}
+ /** @deprecated */
public String lookupJavanameForQName(QName qName)
{
System.out.println("lookupJavanameForQName: "+qName);
islookupJavanameForQName = true;
return bindingConfig.lookupJavanameForQName(qName);
+ }
+
+ public String lookupJavanameForQName(QName qName, int kind)
+ {
+ System.out.println("lookupJavanameForQName: "+qName);
+ islookupJavanameForQName = true;
+ return bindingConfig.lookupJavanameForQName(qName, kind);
}
public InterfaceExtension[] getInterfaceExtensions()
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: commits-help@xmlbeans.apache.org