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();
}