Keith Visco wrote:
>
> Hi Glenn,
>
> Thanks for the patches. I think the best place to post patches (in the
> future) is bugzilla so that they don't get lost.
These patches based on the castor source at the time
had been submitted to bugzilla months ago. These were
updated patches from the current CVS snapshot.
>
> I took a quick look, can you explain a couple of things...
>
> 1. Why does Group#getSchema always return null?
>
It is an abstract method that only applies when overridden by
ModelGroup#getSchema.
> 2. Why do you want to prevent namespaces from being declared?
>
When you create XML Schemas which use namespaces to import other
XML Schemas the XML marhsalled for those elements from classes generated
by castor will include a namespace declaration. And elements will be
qualified by a namespace.
If your application doesn't need to use those namespace declarations
in the XML marshalled it just bloats the XML. Which then reduces
performance of your application.
Regards,
Glenn
> Thanks,
>
> --Keith
>
> Glenn Nielsen wrote:
> >
> > I have attached a patch for two things:
> >
> > 1. It fixes a bug when generating source for a <group> when the group
> > is mapped to a different XML Schema namespace and java package.
> > The source generated would not compile due to the group not being
> > assigned to the correct java package.
> >
> > 2. A set method was added to the Marshaller to disable generation of
> > namespace declarations within an element.
> >
> > Regards,
> >
> > Glenn
> >
> > ----------------------------------------------------------------------
> > Glenn Nielsen [EMAIL PROTECTED] | /* Spelin donut madder |
> > MOREnet System Programming | * if iz ina coment. |
> > Missouri Research and Education Network | */ |
> > ----------------------------------------------------------------------
> >
> > ------------------------------------------------------------------------
> > Index: src/main/org/exolab/castor/builder/MemberFactory.java
> > ===================================================================
> > RCS file:
>/cvs/castor/castor/src/main/org/exolab/castor/builder/MemberFactory.java,v
> > retrieving revision 1.67
> > diff -u -r1.67 MemberFactory.java
> > --- src/main/org/exolab/castor/builder/MemberFactory.java 19 Apr 2002
>18:40:36 -0000 1.67
> > +++ src/main/org/exolab/castor/builder/MemberFactory.java 27 Apr 2002
>17:35:00 -0000
> > @@ -552,13 +552,17 @@
> > if (groupClass == null) {
> > // Java class name is group name or.
> > className = JavaNaming.toJavaClassName(groupName);
> > + if( group.getSchema() != null ) {
> > + className = SourceGenerator.getQualifiedClassName(
> > + group.getSchema().getTargetNamespace(),className);
> > + }
> > xsType = new XSClass(new JClass(className));
> > }
> > else {
> > className = groupClass.getName();
> > }
> >
> > - String fieldName = JavaNaming.toJavaMemberName(className);
> > + String fieldName = JavaNaming.toJavaMemberName(groupName);
> > if (fieldName.charAt(0) != '_')
> > fieldName = "_"+fieldName;
> >
> > Index: src/main/org/exolab/castor/builder/SourceFactory.java
> > ===================================================================
> > RCS file:
>/cvs/castor/castor/src/main/org/exolab/castor/builder/SourceFactory.java,v
> > retrieving revision 1.91
> > diff -u -r1.91 SourceFactory.java
> > --- src/main/org/exolab/castor/builder/SourceFactory.java 8 Apr 2002
>22:28:51 -0000 1.91
> > +++ src/main/org/exolab/castor/builder/SourceFactory.java 27 Apr 2002
>17:35:01 -0000
> > @@ -1586,6 +1586,7 @@
> > if (tmp.getContentModelGroup() != null) {
> > if (tmp.getName() != null) {
> > modelgroup.setName(tmp.getName());
> > + modelgroup.setSchema(tmp.getSchema());
> > //create the field info for the element
> > //that is referring to a model group in order
> > //not to loose the Particle information
> > Index: src/main/org/exolab/castor/xml/Marshaller.java
> > ===================================================================
> > RCS file: /cvs/castor/castor/src/main/org/exolab/castor/xml/Marshaller.java,v
> > retrieving revision 1.105
> > diff -u -r1.105 Marshaller.java
> > --- src/main/org/exolab/castor/xml/Marshaller.java 23 Apr 2002 20:25:43 -0000
> 1.105
> > +++ src/main/org/exolab/castor/xml/Marshaller.java 27 Apr 2002 17:35:01 -0000
> > @@ -81,8 +81,10 @@
> > //import java.io.Serializable;
> > import java.io.Writer;
> > import java.lang.reflect.Array;
> > import java.util.Enumeration;
> > import java.util.Hashtable;
> > import java.util.Vector;
> >
> > /**
> > @@ -214,6 +216,11 @@
> > private MarshalListener _marshalListener = null;
> >
> > /**
> > + * Flag whether to marshall namespace declarations.
> > + **/
> > + private boolean _marshalNamespace = true;
> > +
> > + /**
> > * The namespace stack
> > **/
> > private Namespaces _namespaces = null;
> > @@ -1090,27 +1102,31 @@
> > //------------------/
> >
> > //-- namespace management
> > + String nsPrefix = null;
> > + String nsURI = null;
> >
> > - String nsPrefix = descriptor.getNameSpacePrefix();
> > - if (nsPrefix == null) nsPrefix = classDesc.getNameSpacePrefix();
> > -
> > - String nsURI = descriptor.getNameSpaceURI();
> > - if (nsURI == null) nsURI = classDesc.getNameSpaceURI();
> > -
> > - if ((nsURI == null) && (nsPrefix != null)) {
> > - nsURI = _namespaces.getNamespaceURI(nsPrefix);
> > + if (_marshalNamespace) {
> > + nsPrefix = descriptor.getNameSpacePrefix();
> > + if (nsPrefix == null) nsPrefix = classDesc.getNameSpacePrefix();
> > +
> > + nsURI = descriptor.getNameSpaceURI();
> > + if (nsURI == null) nsURI = classDesc.getNameSpaceURI();
> > +
> > + if ((nsURI == null) && (nsPrefix != null)) {
> > + nsURI = _namespaces.getNamespaceURI(nsPrefix);
> > + }
> > + else if ((nsPrefix == null) && (nsURI != null)) {
> > + nsPrefix = (String) _namespaces.getNamespacePrefix(nsURI);
> > + }
> > + //-- declare namespace at this element scope?
> > + if (nsURI != null) {
> > + if ((nsPrefix == null) && (!nsURI.equals(_defaultNamespace)))
> > + {
> > + nsPrefix = DEFAULT_PREFIX + (++NAMESPACE_COUNTER);
> > + }
> > + declareNamespace(nsPrefix, nsURI);
> > + }
> > }
> > - else if ((nsPrefix == null) && (nsURI != null)) {
> > - nsPrefix = (String) _namespaces.getNamespacePrefix(nsURI);
> > - }
> > - //-- declare namespace at this element scope?
> > - if (nsURI != null) {
> > - if ((nsPrefix == null) && (!nsURI.equals(_defaultNamespace)))
> > - {
> > - nsPrefix = DEFAULT_PREFIX + (++NAMESPACE_COUNTER);
> > - }
> > - declareNamespace(nsPrefix, nsURI);
> > - }
> >
> > //check if the value is a QName that needs to
> > //be resolved ({URI}value -> ns:value)
> > @@ -1122,7 +1138,7 @@
> >
> >
> > //-- declare all necesssary namespaces
> > - _namespaces.declareAsAttributes(atts, true);
> > + _namespaces.declareAsAttributes(atts, true);
> > String qName = null;
> > if (nsPrefix != null) {
> > int len = nsPrefix.length();
> > @@ -1235,6 +1251,15 @@
> > marshal(item, elemDescriptor, handler);
> > }
> > }
> >
> > else marshal(obj, elemDescriptor, handler);
> > }
> > @@ -1339,6 +1364,16 @@
> > public void setDebug(boolean debug) {
> > this._debug = debug;
> > } //-- setDebug
> > +
> > + /**
> > + * Sets the flag to turn on and off marshalling of namespace declarations
> > + * @param declarations the flag indicating whether or not to marshal
> > + * declarations
> > + **/
> > + public void setMarshalNamespace(boolean declarations) {
> > + this._marshalNamespace = declarations;
> > + } //-- setDebug
> > +
> >
> > /**
> > * Sets the PrintWriter used for logging
> > Index: src/main/org/exolab/castor/xml/schema/Group.java
> > ===================================================================
> > RCS file: /cvs/castor/castor/src/main/org/exolab/castor/xml/schema/Group.java,v
> > retrieving revision 1.18
> > diff -u -r1.18 Group.java
> > --- src/main/org/exolab/castor/xml/schema/Group.java 3 Apr 2002 07:19:51 -0000
> 1.18
> > +++ src/main/org/exolab/castor/xml/schema/Group.java 27 Apr 2002 17:35:01 -0000
> > @@ -474,4 +474,12 @@
> > _parent = parent;
> > } //-- setParent
> >
> > -} //-- Group
> > \ No newline at end of file
> > + /**
> > + * Returns the schema that contains this modelGroup definition
> > + */
> > + public Schema getSchema() {
> > + return null;
> > + }
> > +
> > +} //-- Group
> > +
> > Index: src/main/org/exolab/castor/xml/schema/ModelGroup.java
> > ===================================================================
> > RCS file:
>/cvs/castor/castor/src/main/org/exolab/castor/xml/schema/ModelGroup.java,v
> > retrieving revision 1.10
> > diff -u -r1.10 ModelGroup.java
> > --- src/main/org/exolab/castor/xml/schema/ModelGroup.java 17 Oct 2001
>19:06:28 -0000 1.10
> > +++ src/main/org/exolab/castor/xml/schema/ModelGroup.java 27 Apr 2002
>17:35:01 -0000
> > @@ -201,4 +201,12 @@
> > return _schema;
> > }
> >
> > -} //-- Group
> > \ No newline at end of file
> > + /**
> > + * Sets the schema that contains this modelGroup definition
> > + */
> > + public void setSchema(Schema schema) {
> > + _schema = schema;
> > + }
> > +
> > +} //-- Group
> > +
>
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
> unsubscribe castor-dev
--
----------------------------------------------------------------------
Glenn Nielsen [EMAIL PROTECTED] | /* Spelin donut madder |
MOREnet System Programming | * if iz ina coment. |
Missouri Research and Education Network | */ |
----------------------------------------------------------------------
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev