You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2001/11/21 19:33:55 UTC

cvs commit: xml-axis/java/src/org/apache/axis/wsdl SymTabEntry.java JavaWriterFactory.java JavaPortTypeWriter.java

butek       01/11/21 10:33:55

  Modified:    java/src/org/apache/axis/wsdl SymTabEntry.java
                        JavaWriterFactory.java JavaPortTypeWriter.java
  Log:
  Added the isInSoapBinding functionality.  This used to be in WsdlAttributes before
  I deleted WsdlAttributes.  I finally figured out where to put it.
  
  There is not test case for this function.  Tom, since you originally added the function,
  do you have a test case that we can add to CVS?
  
  Revision  Changes    Path
  1.2       +1 -1      xml-axis/java/src/org/apache/axis/wsdl/SymTabEntry.java
  
  Index: SymTabEntry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/SymTabEntry.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SymTabEntry.java	2001/11/21 16:25:56	1.1
  +++ SymTabEntry.java	2001/11/21 18:33:55	1.2
  @@ -121,7 +121,7 @@
       /**
        * Set the isReferenced variable, default value is true.
        */
  -    protected void setIsReferenced(boolean isReferenced) {
  +    public void setIsReferenced(boolean isReferenced) {
           this.isReferenced = isReferenced;
       } // setIsReferenced
   
  
  
  
  1.7       +53 -0     xml-axis/java/src/org/apache/axis/wsdl/JavaWriterFactory.java
  
  Index: JavaWriterFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/JavaWriterFactory.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JavaWriterFactory.java	2001/11/21 16:25:56	1.6
  +++ JavaWriterFactory.java	2001/11/21 18:33:55	1.7
  @@ -89,6 +89,7 @@
       public void writerPass(Definition def, SymbolTable symbolTable) {
           javifyNames(symbolTable);
           resolveNameClashes(symbolTable);
  +        ignoreNonSOAPBindingPortTypes(def, symbolTable);
           constructSignatures(def, symbolTable);
       } // writerPass
   
  @@ -193,6 +194,58 @@
               }
           }
       } // resolveNameClashes
  +
  +    /**
  +     * If a binding's type is not TYPE_SOAP, then we don't use that binding's portType.
  +     */
  +    private void ignoreNonSOAPBindingPortTypes(
  +            Definition def,
  +            SymbolTable symbolTable) {
  +
  +        // Look at all uses of the portTypes.  If none of the portType's bindings are of type
  +        // TYPE_SOAP, then turn off that portType's isReferenced flag.
  +
  +        Vector unusedPortTypes = new Vector();
  +        Vector usedPortTypes = new Vector();
  +        Map bindings = def.getBindings();
  +        Iterator it = bindings.values().iterator();
  +
  +        // loop through each binding
  +        while (it.hasNext()) {
  +            Binding binding = (Binding) it.next();
  +            BindingEntry bEntry =
  +                   symbolTable.getBindingEntry(binding.getQName());
  +            PortType portType = binding.getPortType();
  +            PortTypeEntry ptEntry =
  +                    symbolTable.getPortTypeEntry(portType.getQName());
  +
  +            if (bEntry.getBindingType() == BindingEntry.TYPE_SOAP) {
  +
  +                // If a binding is of type TYPE_SOAP, then mark its portType used (ie., add it
  +                // to the usedPortTypes list.  If the portType was previously marked as unused,
  +                // unmark it (in other words, remove it from the unusedPortTypes list).
  +                usedPortTypes.add(ptEntry);
  +                if (unusedPortTypes.contains(ptEntry)) {
  +                    unusedPortTypes.remove(ptEntry);
  +                }
  +            }
  +            else {
  +
  +                // If a binding is not of type TYPE_SOAP, then mark its portType as unused ONLY
  +                // if it hasn't already been marked as used.
  +                if (!usedPortTypes.contains(ptEntry)) {
  +                    unusedPortTypes.add(ptEntry);
  +                }
  +            }
  +        }
  +
  +        // Go through all the portTypes that are marked as unused and set their isReferenced flags
  +        // to false.
  +        for (int i = 0; i < unusedPortTypes.size(); ++i) {
  +            PortTypeEntry ptEntry = (PortTypeEntry) unusedPortTypes.get(i);
  +            ptEntry.setIsReferenced(false);
  +        }
  +    } // ignoreNonSOAPBindingPortTypes
   
       private void constructSignatures(Definition def, SymbolTable symbolTable) {
           Map portTypes = def.getPortTypes();
  
  
  
  1.5       +11 -5     xml-axis/java/src/org/apache/axis/wsdl/JavaPortTypeWriter.java
  
  Index: JavaPortTypeWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/JavaPortTypeWriter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JavaPortTypeWriter.java	2001/11/21 16:25:56	1.4
  +++ JavaPortTypeWriter.java	2001/11/21 18:33:55	1.5
  @@ -77,10 +77,14 @@
               Emitter emitter,
               PortType portType, SymbolTable symbolTable) {
           PortTypeEntry ptEntry = symbolTable.getPortTypeEntry(portType.getQName());
  -        interfaceWriter =
  -                new JavaInterfaceWriter(emitter, ptEntry, symbolTable);
  -        if (emitter.bEmitSkeleton && emitter.bMessageContext) {
  -            serviceInterfaceWriter = new JavaServiceInterfaceWriter(emitter, ptEntry, symbolTable);
  +
  +        // Only write the portType files if the portType is referenced.
  +        if (ptEntry.isReferenced()) {
  +            interfaceWriter =
  +              new JavaInterfaceWriter(emitter, ptEntry, symbolTable);
  +            if (emitter.bEmitSkeleton && emitter.bMessageContext) {
  +                serviceInterfaceWriter = new JavaServiceInterfaceWriter(emitter, ptEntry, symbolTable);
  +            }
           }
       } // ctor
   
  @@ -88,7 +92,9 @@
        * Write all the portType bindings:  <portTypeName>.java, <portTypeName>AXIS.java.
        */
       public void write() throws IOException {
  -        interfaceWriter.write();
  +        if (interfaceWriter != null) {
  +            interfaceWriter.write();
  +        }
           if (serviceInterfaceWriter != null) {
               serviceInterfaceWriter.write();
           }