axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Davanum Srinivas <dava...@gmail.com>
Subject Re: bug: Axis 1.2 and 1.2.1 is missing xbeans package
Date Tue, 19 Jul 2005 15:37:49 GMT
please try now.

On 7/19/05, Mark Swanson <mark@scheduleworld.com> wrote:
> 
> Hello,
> 
> I'm able to spend some time on this again.
> I don't have permission to download the wsm-schema.jar.
> 
> Thanks.
> 
> Davanum Srinivas wrote:
> > Mark,
> >
> > I've got the changes into CVS and got everything building with JDK1.4.
> > Please pull the latest code. You will need wsm-schema.jar from here
> > (http://ws.zones.apache.org/~dims/libs/wsm-schema.jar) in addition to
> > all the jars from xmlbeans 2.0.0. wsm-schema.jar is basically xmlbeans
> > output of various xsd's needed (build xml is in beehive wsm project).
> >
> > Please try it and let me know. I will try to see if i can integrate
> > the sample into axis as well when i get a chance.
> >
> > thanks,
> > dims
> >
> > On 7/6/05, Mark Swanson <mark@scheduleworld.com> wrote:
> >
> >>Davanum Srinivas wrote:
> >>
> >>>sorry!!! - http://issues.apache.org/jira/browse/AXIS-1812
> >>
> >>[mswanson@sfd111 xbeans]$ patch -p0 </tmp/axis.patch
> >>(Stripping trailing CRs from patch.)
> >>patching file XmlBeanSerializer.java
> >>Hunk #1 FAILED at 21.
> >>Hunk #2 FAILED at 50.
> >>Hunk #3 FAILED at 99.
> >>3 out of 3 hunks FAILED -- saving rejects to file XmlBeanSerializer.java.rej
> >>
> >>I patched it by hand, and then found enum is being incorrectly used in
> >>the Axis-1_2_1 sources:
> >>
> >>compile:
> >>    [depend] Deleted 0 out of date files in 0 seconds
> >>     [javac] Compiling 708 source files to
> >>/home/mswanson/downloads/java/axis-1_2_1/build/classes
> >>     [javac]
> >>/home/mswanson/downloads/java/axis-1_2_1/src/org/apache/axis/enum/Scope.java:17:
> >>as of release 1.5, 'enum' is a keyword, and may not be used as an identifier
> >>     [javac] (use -source 1.4 or lower to use 'enum' as an identifier)
> >>     [javac] package org.apache.axis.enum;
> >>     [javac]                         ^
> >>     [javac]
> >>/home/mswanson/downloads/java/axis-1_2_1/src/org/apache/axis/enum/Style.java:17:
> >>as of release 1.5, 'enum' is a keyword, and may not be used as an identifier
> >>     [javac] (use -source 1.4 or lower to use 'enum' as an identifier)
> >>     [javac] package org.apache.axis.enum;
> >>     [javac]                         ^
> >>     [javac]
> >>/home/mswanson/downloads/java/axis-1_2_1/src/org/apache/axis/enum/Use.java:17:
> >>as of release 1.5, 'enum' is a keyword, and may not be used as an identifier
> >>     [javac] (use -source 1.4 or lower to use 'enum' as an identifier)
> >>     [javac] package org.apache.axis.enum;
> >>     [javac]                         ^
> >>     [javac]
> >>/home/mswanson/downloads/java/axis-1_2_1/src/org/apache/axis/transport/http/QSMethodHandler.java:70:
> >>as of release 1.5, 'enum' is a keyword, and may not be used as an identifier
> >>     [javac] (use -source 1.4 or lower to use 'enum' as an identifier)
> >>     [javac]         Enumeration enum = request.getParameterNames();
> >>     [javac]                     ^
> >>     [javac]
> >>/home/mswanson/downloads/java/axis-1_2_1/src/org/apache/axis/transport/http/QSMethodHandler.java:72:
> >>as of release 1.5, 'enum' is a keyword, and may not be used as an identifier
> >>     [javac] (use -source 1.4 or lower to use 'enum' as an identifier)
> >>     [javac]         while (enum.hasMoreElements()) {
> >>     [javac]                ^
> >>     [javac]
> >>/home/mswanson/downloads/java/axis-1_2_1/src/org/apache/axis/transport/http/QSMethodHandler.java:73:
> >>as of release 1.5, 'enum' is a keyword, and may not be used as an identifier
> >>     [javac] (use -source 1.4 or lower to use 'enum' as an identifier)
> >>     [javac]             String param = (String) enum.nextElement();
> >>     [javac]                                     ^
> >>     [javac] 6 errors
> >>
> >>BUILD FAILED
> >>
> >>Arg. I can't even do a test with Java 6 to see if the patch works or
> >>not. I'm quite surprised to see this.
> >>I don't have enough time left today and will have to pick this up next
> >>Tuesday.
> >>
> >>I'm pasting my hand-patched file in case someone wants to grab this ball
> >>and roll with it before I get back.
> >>
> >>Cheers.
> >>
> >>/*
> >>  * XmlBeanSerializer.java
> >>  *
> >>  * Copyright 2001-2004 The Apache Software Foundation.
> >>  *
> >>  *
> >>  * Licensed under the Apache License, Version 2.0 (the "License");
> >>  * you may not use this file except in compliance with the License.
> >>  * You may obtain a copy of the License at
> >>  *
> >>  *      http://www.apache.org/licenses/LICENSE-2.0
> >>  *
> >>  * Unless required by applicable law or agreed to in writing, software
> >>  * distributed under the License is distributed on an "AS IS" BASIS,
> >>  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> >>  * See the License for the specific language governing permissions and
> >>  * limitations under the License.
> >>  *
> >>  * Original author: Jonathan Colwell
> >>  */
> >>
> >>package org.apache.axis.encoding.ser.xbeans;
> >>
> >>import org.apache.axis.AxisFault;
> >>import org.apache.axis.Constants;
> >>import org.apache.axis.encoding.SerializationContext;
> >>import org.apache.axis.encoding.Serializer;
> >>import org.apache.axis.wsdl.fromJava.Types;
> >>import org.apache.beehive.wsm.wsdl.Schema;
> >>import org.apache.beehive.wsm.wsdl.Utilities;
> >>import org.apache.xmlbeans.SchemaField;
> >>import org.apache.xmlbeans.SchemaType;
> >>import org.apache.xmlbeans.SchemaTypeLoader;
> >>import org.apache.xmlbeans.XmlBeans;
> >>import org.apache.xmlbeans.XmlCursor;
> >>import org.apache.xmlbeans.XmlObject;
> >>import org.apache.xmlbeans.XmlOptions;
> >>import org.w3.x2001.xmlSchema.LocalElement;
> >>import org.w3.x2001.xmlSchema.SchemaDocument;
> >>import org.w3.x2001.xmlSchema.TopLevelComplexType;
> >>import org.w3.x2001.xmlSchema.TopLevelElement;
> >>import org.w3c.dom.Document;
> >>import org.w3c.dom.Element;
> >>import org.w3c.dom.Node;
> >>import org.xml.sax.Attributes;
> >>import org.xmlsoap.schemas.wsdl.DefinitionsDocument;
> >>import org.xmlsoap.schemas.wsdl.TDefinitions;
> >>import org.xmlsoap.schemas.wsdl.TTypes;
> >>
> >>import javax.xml.namespace.QName;
> >>import java.io.IOException;
> >>import java.io.InputStream;
> >>import java.lang.reflect.Array;
> >>import java.util.HashSet;
> >>import java.util.Set;
> >>
> >>/**
> >>  * Class XmlBeanSerializer
> >>  * @author Jonathan Colwell
> >>  */
> >>public class XmlBeanSerializer implements Serializer {
> >>
> >>     /**
> >>      * Serialize an element named name, with the indicated attributes
> >>      * and value.
> >>      *
> >>      * @param name       is the element name
> >>      * @param attributes are the attributes...serialize is free to add
> >>more.
> >>      * @param value      is the value
> >>      * @param context    is the SerializationContext
> >>      */
> >>     public void serialize(QName name, Attributes attributes,
> >>                           Object value, SerializationContext context)
> >>             throws IOException {
> >>         List<String> testL = new ArrayList<String>();
> >>         if (!(value instanceof XmlObject)) {
> >>             throw new IOException(((value != null) ?
> >>                     value.getClass().getName()
> >>                     : "null")
> >>                     + " is not an "
> >>                     + XmlObject.class.getName());
> >>         } else {
> >>             context.setWriteXMLType(null);
> >>             context.startElement(name, attributes);
> >>             XmlCursor xCur = ((XmlObject) value).newCursor();
> >>             if (xCur.toFirstContentToken() == XmlCursor.TokenType.START) {
> >>                 do {
> >>                     Node n = xCur.getDomNode();
> >>                     if (n.getNodeType() == Node.ELEMENT_NODE) {
> >>                         context.writeDOMElement((Element) n);
> >>                     }
> >>                 } while (xCur.toNextSibling());
> >>             }
> >>             context.endElement();
> >>         }
> >>     }
> >>
> >>     public String getMechanismType() {
> >>         return Constants.AXIS_SAX;
> >>     }
> >>
> >>     /**
> >>      * Return XML schema for the specified type, suitable for insertion
> >>into the
> >>      * &lt;types&gt; element of a WSDL document, or underneath an
> >>      * &lt;element&gt; or &lt;attribute&gt; declaration.
> >>      *
> >>      * @param javaType
> >>      *            the Java Class we're writing out schema for
> >>      * @param types
> >>      *            the Java2WSDL Types object which holds the context
> >>for the
> >>      *            WSDL being generated.
> >>      * @return a type element containing a schema simpleType/complexType
> >>      * @see org.apache.axis.wsdl.fromJava.Types
> >>      */
> >>     public Element writeSchema(Class javaType, Types types) throws
> >>Exception {
> >>         //if (XmlObject.class.isAssignableFrom(javaType)) {
> >>         try {
> >>             if (!XmlObject.class.isAssignableFrom(javaType)) {
> >>                 throw new RuntimeException(
> >>                         "Invalid Object type is assigned to the
> >>XMLBeanSerialization Type: "
> >>                                 + javaType.getCanonicalName());
> >>             }
> >>             SchemaType docType = XmlBeans.typeForClass(javaType);
> >>             writeSchemaForDocType(docType, types);
> >>             // assume that the writeSchemaForDocType wrote the schema
> >>             // for the type and all the dependent types.
> >>             return null;
> >>         } catch (Exception e) {
> >>             e.printStackTrace();
> >>             throw e;
> >>         }
> >>     }
> >>
> >>     /**
> >>      * @param types
> >>      * @param docType
> >>      * @return
> >>      * @throws Exception
> >>      */
> >>     private void writeSchemaForDocType(SchemaType docType, Types types)
> >>             throws Exception {
> >>         Schema mySchema = Utilities.findtSchemaDocument(docType);
> >>
> >>         QName q = docType.getName();
> >>
> >>         XmlObject typeNodeInWSDL = mySchema.getTypeNode(q);
> >>
> >>         if (null == typeNodeInWSDL)
> >>             throw new RuntimeException(
> >>                     "Type for object not found in the assigned WSDL file. "
> >>                             + docType.getName() + " schema in: "
> >>                             + docType.getSourceName());
> >>         //        insertDependentTypes(typeNodeInWSDL, types);
> >>         Node n = typeNodeInWSDL.getDomNode();
> >>         Document doc = types.createElement(
> >>
> >>"element_to_get_document_useless_otherwise").getOwnerDocument();
> >>         Element e = (Element) doc.importNode(n, true);
> >>         try {
> >>             types.writeSchemaElementDecl(q, e);
> >>         } catch (AxisFault e1) {
> >>             // this means the types was already in... fine!
> >>             // TBD: make sure there are other types of exceptions are
> >>at least
> >>             // reported
> >>         }
> >>         Set<QName> dependentTypes = new HashSet<QName>();
> >>         getAllDependentTypes(typeNodeInWSDL, dependentTypes);
> >>         for (QName nxtType : dependentTypes) {
> >>             Class nxtJavaType = null;
> >>             // add the class if it is an xml bean
> >>             if (null != (nxtJavaType = q2UserClass(nxtType))
> >>                     && XmlObject.class.isAssignableFrom(nxtJavaType))
{
> >>                 writeSchema(nxtJavaType, types);
> >>             }
> >>         }
> >>         return;
> >>     }
> >>
> >>
> >>     /**
> >>      * @param nxtType
> >>      * @return null for classes that are not found, or if they are
> >>primitive types
> >>      *     *
> >>      */
> >>     private Class q2UserClass(QName qname) {
> >>         SchemaTypeLoader stl = XmlBeans.getContextTypeLoader();
> >>         SchemaType st = stl.findType(qname);
> >>         if (st == null) {
> >>             SchemaField sf = stl.findElement(qname);
> >>             if (sf != null)
> >>                 st = sf.getType();
> >>         }
> >>
> >>         if (st != null && !st.isBuiltinType())
> >>             return st.getJavaClass();
> >>         else
> >>             return null; // for classes that are not found, or are build in
> >>
> >>     }
> >>
> >>     /**
> >>      * @param nodeInWSDL
> >>      * @param dependentTypes
> >>      * @return
> >>      *
> >>      * Walk all the nodes under the nodeInWSDL if there is an 'element'
> >>type the
> >>      * add its types or references to the dependent type.
> >>      */
> >>     private void getAllDependentTypes(XmlObject nodeInWSDL,
> >>             Set<QName> dependentTypes) {
> >>         // scan for any node under the type that has "type" or "ref"
> >>attribute
> >>         XmlCursor cursor = nodeInWSDL.newCursor();
> >>         if (cursor.toFirstChild()) { // has child
> >>             while (true) {
> >>                 getAllDependentTypes(cursor.getObject(), dependentTypes);
> >>                 if (!cursor.toNextSibling())
> >>                     break;
> >>             }
> >>         }
> >>         if (nodeInWSDL.schemaType().getName().getLocalPart().equals(
> >>                 "localElement")) {
> >>             LocalElement e = (LocalElement) nodeInWSDL;
> >>
> >>             if (e.isSetType())
> >>                 dependentTypes.add(e.getType());
> >>             else if (e.isSetRef())
> >>                 dependentTypes.add(e.getRef());
> >>         }
> >>         return;
> >>     }
> >>
> >>     // NOTE jcolwell@bea.com 2004-Nov-15 --
> >>     // once the WSDLProcessor is changed to an interface, remove this
> >>function
> >>     // and use the one in the upcoming XmlBeanWSDLProcessor.
> >>     private static <T extends XmlObject> T[] selectChildren(XmlObject
> >>parent,
> >>             Class<T> childClass) throws IllegalAccessException,
> >>             NoSuchFieldException {
> >>         // retrieve the SchemaType from the static type field
> >>         SchemaType st = (SchemaType) childClass.getField("type").get(null);
> >>         XmlObject[] kids =
> >>parent.selectChildren(st.getDocumentElementName());
> >>         T[] castKids = (T[]) Array.newInstance(childClass, kids.length);
> >>         for (int j = 0; j < castKids.length; j++) {
> >>             castKids[j] = childClass.cast(kids[j]);
> >>         }
> >>        return castKids;
> >>     }
> >>}
> >>
> >>
> >>
> >>
> >>--
> >>Free replacement for Exchange and Outlook (Contacts and Calendar)
> >>http://www.ScheduleWorld.com/
> >>WAP: http://www.ScheduleWorld.com/sw/WAPToday?id=4000&tz=EST
> >>WebDAV: http://www.ScheduleWorld.com/sw/webDAVDir/4000.ics
> >>VFREEBUSY: http://www.ScheduleWorld.com/sw/freebusy/4000.ifb
> >>
> >
> >
> >
> 
> 
> --
> Free replacement for Exchange and Outlook (Contacts and Calendar)
> http://www.ScheduleWorld.com/
> WAP: http://www.ScheduleWorld.com/sw/WAPToday?id=4000&tz=EST
> WebDAV: http://www.ScheduleWorld.com/sw/webDAVDir/4000.ics
> VFREEBUSY: http://www.ScheduleWorld.com/sw/freebusy/4000.ifb
> 


-- 
Davanum Srinivas -http://blogs.cocoondev.org/dims/

Mime
View raw message