Thanks Chad I'll take a look at it.

--Keith

[EMAIL PROTECTED] wrote:
> 
> Keith,
> 
> Thanks for the quick response.
> 
> Because I am behind a firewall I grabbed the daily snapshot from 04-30 so I
> don't have the pserver connection to get the diff.  I have attached the
> SourceGenerator file that contains my changes along with the xsd file.
> 
> When you drop this java file into your source and run the SourceGenerator
> you should be able to see where I got stuck.    At line 109 in
> QuoteInquiry_TypeDescriptor.java you will find the validate code that I am
> questioning.
> 
> Thanks!
> 
> Also, I am using this task to invoke the SourceGenerator:
> <target name="quote-xsd2java" depends="quote-wsdl2java">
>         <echo>org.exolab.castor.builder.SourceGenerator</echo>
>         <java classname="org.exolab.castor.builder.SourceGenerator"
> fork="true" dir="${xml.home}">
>         <classpath refid="axis-lib"/>
>         <arg  value="-i"/>
>         <arg  value="${xml.home}/StockQuote.xsd"/>
>         <arg value="-dest"/>
>         <arg value="${src.home}"/>
>         <arg value="-package"/>
>         <arg value="${package.name}"/>
>         <arg value="-nomarshall"/>
>         <arg value="-f"/>
>         </java>
> </target>
> 
> -----Original Message-----
> From: Keith Visco [mailto:[EMAIL PROTECTED]
> Sent: Monday, May 03, 2004 9:35 PM
> To: [EMAIL PROTECTED]
> Subject: Re: [castor-dev] changing SourceGenerator - classes for
> simpleTypes?
> 
> Hi Chad,
> 
> Can you attach a diff file (using diff -u) so that I can better see the
> changes that you made. Also if you have a small example which
> demonstrates the problem, that would be great.
> 
> Thanks,
> 
> --Keith
> 
> [EMAIL PROTECTED] wrote:
> >
> > Hi,
> >
> > I have been working with Castor with Axis for about 1 month.
> > I am very satisfied with how Castor provides XML Schema validation.
> >
> > Please forgive the long message but it is important that I explain my
> > situation so that it is clear what I am trying to do.
> >
> > At first I ran into the Descriptor not found for .. errors.
> > When I read that global simpleTypes do not create classes I changed all
> > of the project schemas to anonymously define all simpleTypes.
> >
> > After completing this everything was running and validating smoothly.
> > My co-worker was not satisfied with this change because across multiple
> > schemas we have many complexTypes that include a simpleType dollarsimple.
> > This type is a simple int but it has a MinInclusive.  Anytime this
> > constraint
> > changes we will need to change this in multiple XML schema files, plus we
> > cannot ensure that this constraint is applied, or applied consistently
> > across all schemas.  Well, I convinced this co-worker that the luxury of
> > declarative validation using Castor outweighed this drawback.
> >
> > Then along came Enterprise XML schemas.  As we tried to import enterprise
> > schemas into our project we found the practice of using global simpleTypes
> > is a common practice for creating reusable constrained simpleTypes.
> >
> > We are required to import and use these enterprise schemas for certain
> parts
> >
> > of the SOAP messages.  We cannot modify these to work with Castor like we
> > did for our original application schemas.  So, my option using Castor is
> > now only to use the validate method selectively rather than using the
> > runtime validation for all objects.
> >
> > I love Castor but I would like to use validation for all objects created
> > from all schemas, but I have not been able to determine how much extra
> work
> > it would be to change the SourceGenerator for the validation to work on
> > these types.  It looks like it is all almost there, but I am obviously
> > missing something here.
> >
> > So, I dug into the Castor source and made some hacks:
> > createClasses(ElementDecl elementDecl, SGStateInfo sInfo)
> > private void processSimpleType(SimpleType simpleType, SGStateInfo sInfo)
> >
> > also added this method
> > private void processSimpleType(SimpleType simpleType, SGStateInfo sInfo,
> > String elementName)
> >
> > As you will see below, without disrupting the Enum generation I was able
> > to create a "skeleton" class for all elements of derived simpleType.  The
> > class descriptor was also properly created.  The class descriptor for the
> > complexTypes that have member elements of derived simpleType actually add
> > the
> > constraints properly:
> > //-- validation code for: _dollarsimple_element
> >         fieldValidator = new org.exolab.castor.xml.FieldValidator();
> >         fieldValidator.setMinOccurs(1);
> >         { //-- local scope
> >             FloatValidator typeValidator = new FloatValidator();
> >             typeValidator.setMinInclusive(5.0f);
> >             fieldValidator.setValidator(typeValidator);
> >         }
> >         desc.setValidator(fieldValidator);
> >
> > Now, Castor seems to have problem finding the descriptor:
> > //-- _dollarsimple_element
> > desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(float.class,
> > "_dollarsimple_element", "dollarsimple_element",
> > org.exolab.castor.xml.NodeType.Element);
> >
> > When I manually change the float.class to Dollarsimple_elementDescriptor
> > Castor gives me errors with the text content of the field.  At this point
> > I am not sure if I need to get the generator to create a "real" type or if
> > I can somehow get Castor to find the float.class field descriptor.  I am
> > willing to take suggestions and contribute my changes if anyone is
> > interested.
> >
> > I just need Bruce or Keith or somebody with SourceGenerator experience to
> > point me in the right direction.
> >
> > Thanks in advance,
> > Chad
> >
> >         private void createClasses(ElementDecl elementDecl, SGStateInfo
> > sInfo) {
> >
> >         if (sInfo.getStatusCode() == SGStateInfo.STOP_STATUS) return;
> >
> >             if (elementDecl == null) return;
> >         //-- when mapping schema types, only interested in producing
> classes
> >             //-- for elements with anonymous complex types
> >             //-- or elements with simple derived types --CI
> >             XMLType xmlType = elementDecl.getType();
> >             boolean isDerivedByRestrictionType =
> > ((xmlType.getDerivationMethod() != null) &&
> > (xmlType.getDerivationMethod().equals("restriction"))) ? true : false;
> >
> >             String debugDescription = elementDecl.getName() + " xmlType: "
> +
> > xmlType.getName() + " ";
> >
> >         if (mappingSchemaType2Java()) {
> >                 if (elementDecl.isReference() ||
> >                         ((xmlType != null) &&
> >                          (xmlType.getName() != null) &&
> >                          (!isDerivedByRestrictionType)
> >                         )
> >                    )
> >                 {
> >                     return;
> >                 }
> >         }
> >
> >         //--create component
> >         ...
> >         //-- No type definition
> >         ...
> >         //-- ComplexType
> >         ...
> >
> >         //-- SimpleType
> >         else if (xmlType.isSimpleType()) {
> >                 SimpleType simpleType = (SimpleType)xmlType;
> >                 System.out.println("create simpleType: " +
> > debugDescription);
> >                 processSimpleType((SimpleType)xmlType, sInfo,
> > elementDecl.getName());
> >         }
> >         //-- AnyType
> >         ...
> >     }  //-- createClasses
> >
> >         private void processSimpleType(SimpleType simpleType, SGStateInfo
> > sInfo, String elementName) {
> >
> >              String debugDescription = elementName + " xmlType: " +
> > simpleType.getName() + " ";
> >
> >              if (sInfo.getStatusCode() == SGStateInfo.STOP_STATUS) return;
> >
> >              if (simpleType == null)
> >                      return;
> >
> >              if (simpleType.getSchema() != sInfo.getSchema())
> >                      return;
> >
> >              boolean isDerivedByRestrictionType =
> > ((simpleType.getDerivationMethod() != null) &&
> > (simpleType.getDerivationMethod().equals("restriction"))) ? true : false;
> >
> >              if (simpleType.hasFacet(Facet.ENUMERATION)){
> >                      System.out.println("--create simpleType.ENUMERATION:
> "
> > + debugDescription);
> >                      processSimpleType(simpleType, sInfo);
> >              }
> >              else if (isDerivedByRestrictionType){
> >                      System.out.println("--create
> > simpleType.isDerivedByRestrictionType: " + debugDescription);
> >                      simpleType.setName(elementName);
> >                      processSimpleType(simpleType, sInfo);
> >              }
> >
> >      }
> >
> >     private void processSimpleType(SimpleType simpleType, SGStateInfo
> sInfo)
> > {
> >
> >         if (sInfo.getStatusCode() == SGStateInfo.STOP_STATUS) return;
> >
> >         if (simpleType == null)
> >             return;
> >
> >         if (simpleType.getSchema() != sInfo.getSchema())
> >             return;
> >
> >         //-- Right now the only time we actually
> >         //-- generate source for a simpletype is
> >         //-- when it's an enumeration
> >         //if (! (simpleType instanceof BuiltInType) ) {
> >         // if (simpleType.hasFacet(Facet.ENUMERATION)) {
> >
> >             ClassInfo classInfo = sInfo.resolve(simpleType);
> >             if (classInfo == null) {
> >                 JClass jClass =
> _sourceFactory.createSourceCode(simpleType,
> > sInfo);
> >                 processJClass(jClass, sInfo);
> >             } else {
> >                 JClass jClass = classInfo.getJClass();
> >                 processJClass(jClass, sInfo);
> >             }
> >          //}
> >     } //-- processSimpleType
> >
> > -----------------------------------------------------------
> > If you wish to unsubscribe from this mailing, send mail to
> > [EMAIL PROTECTED] with a subject of:
> >         unsubscribe castor-dev
> 
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
>         unsubscribe castor-dev
> 
>   ------------------------------------------------------------------------
>                      Name: StockQuote.xsd
>    StockQuote.xsd    Type: MEW32 File (application/x-unknown-content-type-ft000003)
>                  Encoding: quoted-printable
> 
>                            Name: SourceGenerator.java
>    SourceGenerator.java    Type: VisualCafe File 
> (application/x-unknown-content-type-VisualCafeFile.Document)
>                        Encoding: quoted-printable
> 
>                                        Name: QuoteInquiry_TypeDescriptor.java
>    QuoteInquiry_TypeDescriptor.java    Type: VisualCafe File 
> (application/x-unknown-content-type-VisualCafeFile.Document)
>                                    Encoding: quoted-printable
> 
>   ------------------------------------------------------------------------
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
>         unsubscribe castor-dev



----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to