scheu       02/03/18 14:37:34

  Modified:    java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java
                        JavaStubWriter.java JavaWriterFactory.java
                        SymbolTable.java Utils.java
  Log:
  Following changes are made ...and will soon be put into Beta1.
    1) Changed anon separator from . to >
    2) Changed deploy/stub writers to register the correct qname for an
       anonType of a root element.
    3) Code changes to make sure isOnlyLiteralReference is set properly in the
       anon type.
  
  Revision  Changes    Path
  1.27      +12 -2     
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java
  
  Index: JavaDeployWriter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- JavaDeployWriter.java     13 Mar 2002 15:19:26 -0000      1.26
  +++ JavaDeployWriter.java     18 Mar 2002 22:37:34 -0000      1.27
  @@ -169,10 +169,20 @@
                   process = false;
               }
   
  +            // If a root Element named Foo has an anon type, the 
  +            // anon type is named ">Foo".  The following hack
  +            // uses the name "Foo" so that the right qname gets 
  +            // registered.
  +            String localPart = type.getQName().getLocalPart();
  +            if (localPart.startsWith(SymbolTable.ANON_TOKEN)) {
  +                localPart = localPart.substring(1);
  +            }
  +            QName qName = new QName(type.getQName().getNamespaceURI(), localPart);
  +
               if (process) {
                   pw.println("      <typeMapping");
  -                pw.println("        xmlns:ns=\"" + 
type.getQName().getNamespaceURI() + "\"");
  -                pw.println("        qname=\"ns:" + type.getQName().getLocalPart() + 
'"');
  +                pw.println("        xmlns:ns=\"" + qName.getNamespaceURI() + "\"");
  +                pw.println("        qname=\"ns:" + qName.getLocalPart() + '"');
                   pw.println("        type=\"java:" + type.getName() + '"');
                   if (type.getName().endsWith("[]")) {
                       pw.println("        
serializer=\"org.apache.axis.encoding.ser.ArraySerializerFactory\"");
  
  
  
  1.46      +10 -1     
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java
  
  Index: JavaStubWriter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- JavaStubWriter.java       15 Mar 2002 15:35:07 -0000      1.45
  +++ JavaStubWriter.java       18 Mar 2002 22:37:34 -0000      1.46
  @@ -433,7 +433,16 @@
           }
           firstSer = false ;
   
  -        QName qname = type.getQName();
  +        // If a root Element named Foo has an anon type, the 
  +        // anon type is named ">Foo".  The following hack
  +        // uses the name "Foo" so that the right qname gets 
  +        // registered.
  +        String localPart = type.getQName().getLocalPart();
  +        if (localPart.startsWith(SymbolTable.ANON_TOKEN)) {
  +            localPart = localPart.substring(1);
  +        }
  +        QName qname = new QName(type.getQName().getNamespaceURI(), localPart);
  +
           pw.println("            qName = new javax.xml.rpc.namespace.QName(\""
                      + qname.getNamespaceURI() + "\", \"" + qname.getLocalPart()
                      + "\");");
  
  
  
  1.19      +5 -5      
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriterFactory.java
  
  Index: JavaWriterFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriterFactory.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- JavaWriterFactory.java    13 Mar 2002 15:43:34 -0000      1.18
  +++ JavaWriterFactory.java    18 Mar 2002 22:37:34 -0000      1.19
  @@ -182,14 +182,14 @@
                       }
                       // Get the QName to javify
                       QName typeQName = tEntry.getQName();
  -                    if (typeQName.getLocalPart().lastIndexOf('.') >= 0) {
  +                    if 
(typeQName.getLocalPart().lastIndexOf(SymbolTable.ANON_TOKEN) >= 0) {
                           // This is an anonymous type name.
  -                        // Axis uses '.' as a nesting token to generate
  +                        // Axis uses '>' as a nesting token to generate
                           // unique qnames for anonymous types.
  -                        // Only consider the localName after the last '.' when
  +                        // Only consider the localName after the last '>' when
                           // generating the java name
                           String localName = typeQName.getLocalPart();
  -                        localName = 
localName.substring(localName.lastIndexOf('.')+1);
  +                        localName = 
localName.substring(localName.lastIndexOf(SymbolTable.ANON_TOKEN)+1);
                           typeQName = new QName(typeQName.getNamespaceURI(), 
localName);
                           // If there is already an existing type, there will be a 
                           // collision.  If there is an existing anon type, there 
will be a 
  @@ -273,7 +273,7 @@
                               // an anonymous type, then need to change the
                               // java name of the anonymous type to match.
                               QName anonQName = new 
QName(entry.getQName().getNamespaceURI(),
  -                                                        "." + 
entry.getQName().getLocalPart());
  +                                                        SymbolTable.ANON_TOKEN + 
entry.getQName().getLocalPart());
                               TypeEntry anonType = symbolTable.getType(anonQName);
                               if (anonType != null) {
                                   anonType.setName(entry.getName());
  
  
  
  1.45      +15 -7     xml-axis/java/src/org/apache/axis/wsdl/toJava/SymbolTable.java
  
  Index: SymbolTable.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/SymbolTable.java,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- SymbolTable.java  13 Mar 2002 19:50:59 -0000      1.44
  +++ SymbolTable.java  18 Mar 2002 22:37:34 -0000      1.45
  @@ -141,7 +141,9 @@
   
       // should we attempt to treat document/literal WSDL as "rpc-style"
       private boolean wrapped = false;
  -    
  +
  +    public static final String ANON_TOKEN = ">";
  +
       /**
        * Construct a symbol table with the given Namespaces.
        */
  @@ -1355,6 +1357,7 @@
               }
           }
   
  +
           // If we don't want to emit stuff from imported files, only set the
           // isReferenced flag if this entry exists in the immediate WSDL file.
           Node node = entry.getNode();
  @@ -1369,6 +1372,16 @@
                           setTypeReferences(referent, doc, literal);
                       }
                   }
  +                // If the Defined Element has an anonymous type, 
  +                // process it with the current literal flag setting.
  +                QName anonQName = SchemaUtils.getElementAnonQName(entry.getNode());
  +                if (anonQName != null) {
  +                    TypeEntry anonType = getType(anonQName);
  +                    if (anonType != null) {
  +                        setTypeReferences(anonType, doc, literal);
  +                        return;
  +                    }
  +                }
               }
           }
   
  @@ -1580,15 +1593,10 @@
           if (get(name, entry.getClass()) == null) {
               // An entry of the given qname of the given type doesn't exist yet.
   
  -            if (debug) {
  -                System.out.println("Symbol Table add " + name + " as " + 
  -                      entry.getClass().getName().substring(
  -                            entry.getClass().getName().lastIndexOf(".") + 1));
  -            }
               if (entry instanceof Type && 
                   get(name, UndefinedType.class) != null) {
   
  -                // A undefined type  exists in the symbol table, which means
  +                // A undefined type exists in the symbol table, which means
                   // that the type is used, but we don't yet have a definition for
                   // the type.  Now we DO have a definition for the type, so
                   // replace the existing undefined type with the real type.
  
  
  
  1.20      +1 -1      xml-axis/java/src/org/apache/axis/wsdl/toJava/Utils.java
  
  Index: Utils.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/Utils.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Utils.java        13 Mar 2002 19:50:59 -0000      1.19
  +++ Utils.java        18 Mar 2002 22:37:34 -0000      1.20
  @@ -247,7 +247,7 @@
                   if (kind.getLocalPart().equals("schema")) {
                       search = null;
                   } else if (kind.getLocalPart().equals("element")) {
  -                    localName = "." + getNodeNameQName(search).getLocalPart();
  +                    localName = SymbolTable.ANON_TOKEN + 
getNodeNameQName(search).getLocalPart();
                       search = search.getParentNode();
                   } else if (kind.getLocalPart().equals("complexType") ||
                              kind.getLocalPart().equals("simpleType")) {
  
  
  


Reply via email to