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 sc...@apache.org on 2002/10/04 22:20:58 UTC
cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java JavaSkelWriter.java JavaStubWriter.java Utils.java
scheu 2002/10/04 13:20:58
Modified: java/samples/attachments Tag: explicitHeaderWork
TestRef.java
java/src/org/apache/axis Tag: explicitHeaderWork
MessageContext.java
java/src/org/apache/axis/client Tag: explicitHeaderWork
Call.java
java/src/org/apache/axis/deployment/wsdd Tag:
explicitHeaderWork WSDDConstants.java
WSDDService.java
java/src/org/apache/axis/description Tag: explicitHeaderWork
OperationDesc.java ServiceDesc.java
java/src/org/apache/axis/encoding Tag: explicitHeaderWork
SerializationContextImpl.java
java/src/org/apache/axis/enum Tag: explicitHeaderWork
Style.java
java/src/org/apache/axis/handlers/soap Tag:
explicitHeaderWork SOAPService.java
java/src/org/apache/axis/message Tag: explicitHeaderWork
BodyBuilder.java RPCElement.java
RPCHeaderParam.java
java/src/org/apache/axis/providers/java Tag:
explicitHeaderWork JavaProvider.java
RPCProvider.java
java/src/org/apache/axis/wsdl/symbolTable Tag:
explicitHeaderWork BindingEntry.java
SymbolTable.java
java/src/org/apache/axis/wsdl/toJava Tag: explicitHeaderWork
JavaDeployWriter.java JavaSkelWriter.java
JavaStubWriter.java Utils.java
Added: java/src/org/apache/axis/enum Tag: explicitHeaderWork
Use.java
Log:
As part of the SOAP Header support, we needed support for rpc/literal.
So I created a Use enum to go along with the existing Style enum.
I also changed the description/wsdd/etc. to set and get the Use
enum information in a way similar to Syle. Note that the wsdd
service now has an additional attribute (use) that can be set
to "literal" or "encoded". The default setting is use="literal"
if style="document" and use="encoded" if style="rpc".
Also fixed the operation QName issue with style=document that
was raised in the formum.
------------------------------------------------------------------------
Detailed Changes:
MessageContext: added getOperationUse() and setOperationUse() methods.
changed the implementation of getPossibleOperationsByQName
to correctly get the operations for sytle="document".
Previously this code relied on incorrect information in
the wsdd.
Call : added getOperationUse() and getOperationUse() methods
added calls ot set Use on the operationDesc and msgContext
just like Style
WSDDConstants : added "use" attribute
WSDDService : added "use" attribute support
OperationDesc : added getUse() and setUse() methods similar to
getStyle() and setStyle()
ServiceDesc : added getUse() and setUse() methods similar to
getStyle() and setStyle()
SerializationContextImpl: uses service.getUse() to determine if literal service
Style.java : added comments, moved encoding to Use.java
Use.java : new file
SOAPService: : added getUse() and setUse() similar to getStyle()/setStyle()
RPCElement : Code cleanup and usage of operation.getUse() information
RPCHeaderParam: Removed unnecessary code
BindingEntry : Use Style/Use instead of int constants
Changed HeaderParameters to HeaderParts
BindingEntry : Use Style/Use instead of int constants
Changed HeaderParameters to HeaderParts
JavaDeployWriter: set style=/use= in the wsdd
changed signature for getOperationQName
JavaSkeletonWriter: changed signature for getOperationQName
JavaStubWriter: Use Style/Use instead of int constants
Generate code to call new Call.setOperationUse(..)
toJava.Utils : Changed getOperationQName to really get the operation
qname instead of fudging.
Revision Changes Path
No revision
No revision
1.1.8.1 +2 -1 xml-axis/java/samples/attachments/TestRef.java
Index: TestRef.java
===================================================================
RCS file: /home/cvs/xml-axis/java/samples/attachments/TestRef.java,v
retrieving revision 1.1
retrieving revision 1.1.8.1
diff -u -r1.1 -r1.1.8.1
--- TestRef.java 3 Aug 2002 21:52:05 -0000 1.1
+++ TestRef.java 4 Oct 2002 20:20:55 -0000 1.1.8.1
@@ -210,7 +210,8 @@
call.setPassword( opts.getPassword() );
- call.setOperationStyle(org.apache.axis.enum.Style.DOCUMENT_STR);
+ call.setOperationStyle("document");
+ call.setOperationUse("literal");
//Now do the call....
Object ret = call.invoke(new Object[]{
No revision
No revision
1.123.6.1 +59 -5 xml-axis/java/src/org/apache/axis/MessageContext.java
Index: MessageContext.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/MessageContext.java,v
retrieving revision 1.123
retrieving revision 1.123.6.1
diff -u -r1.123 -r1.123.6.1
--- MessageContext.java 24 Sep 2002 20:45:19 -0000 1.123
+++ MessageContext.java 4 Oct 2002 20:20:55 -0000 1.123.6.1
@@ -62,6 +62,7 @@
import org.apache.axis.encoding.TypeMapping;
import org.apache.axis.encoding.TypeMappingRegistry;
import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.handlers.soap.SOAPService;
import org.apache.axis.session.Session;
import org.apache.axis.soap.SOAPConstants;
@@ -78,6 +79,7 @@
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import java.io.File;
import java.util.Hashtable;
+import java.util.ArrayList;
/**
* Some more general docs will go here.
@@ -185,7 +187,8 @@
private String username = null;
private String password = null;
private Style operationStyle = Style.RPC;
- private String encodingStyle = operationStyle.getEncoding();
+ private Use operationUse = Use.ENCODED;
+ private String encodingStyle = operationUse.getEncoding();
private boolean useSOAPAction = false;
private String SOAPActionURI = null;
@@ -207,6 +210,16 @@
currentOperation = operation;
}
+ /**
+ * getPossibleOperationsByQName
+ * Returns a list of operation descriptors that could may
+ * possibly match a body containing an element of the given QName.
+ * For non-DOCUMENT, the list of operation descriptors that match
+ * the name is returned. For DOCUMENT, all the operations that have
+ * qname as a parameter are returned
+ * @param qname of the first element in the body
+ * @return list of operation descriptions
+ */
public OperationDesc [] getPossibleOperationsByQName(QName qname) throws AxisFault
{
if (currentOperation != null) {
@@ -235,11 +248,31 @@
ServiceDesc desc = serviceHandler.getInitializedServiceDesc(this);
if (desc != null) {
- possibleOperations = desc.getOperationsByQName(qname);
setOperationStyle(desc.getStyle());
+ setOperationUse(desc.getUse());
+ if (desc.getStyle() != Style.DOCUMENT) {
+ possibleOperations = desc.getOperationsByQName(qname);
+ } else {
+ // DOCUMENT Style
+ // Get all of the operations that have qname as
+ // a possible parameter QName
+ ArrayList allOperations = desc.getOperations();
+ ArrayList foundOperations = new ArrayList();
+ for (int i=0; i < allOperations.size(); i++ ) {
+ OperationDesc tryOp =
+ (OperationDesc) allOperations.get(i);
+ if (tryOp.getParamByQName(qname) != null) {
+ foundOperations.add(tryOp);
+ }
+ }
+ if (foundOperations.size() > 0) {
+ possibleOperations = (OperationDesc[])
+ JavaUtils.convert(foundOperations,
+ OperationDesc[].class);
+ }
+ }
}
}
-
return possibleOperations;
}
@@ -401,7 +434,8 @@
* Encoding
*/
public boolean isEncoded() {
- return soapConstants.getEncodingURI().equals(encodingStyle);
+ return (operationUse == Use.ENCODED);
+ //return soapConstants.getEncodingURI().equals(encodingStyle);
}
/**
@@ -614,9 +648,10 @@
TypeMappingRegistry tmr = service.getTypeMappingRegistry();
setTypeMappingRegistry(tmr);
setOperationStyle(service.getStyle());
+ setOperationUse(service.getUse());
// styles are not "soap version aware" so compensate...
- setEncodingStyle(service.getStyle().getEncoding());
+ setEncodingStyle(service.getUse().getEncoding());
// This MessageContext should now defer properties it can't find
// to the Service's options.
@@ -770,6 +805,11 @@
name, "java.lang.String", value.getClass().getName()}));
}
setOperationStyle(Style.getStyle((String)value, Style.DEFAULT));
+ if (getOperationStyle() == Style.RPC) {
+ setOperationUse(Use.ENCODED);
+ } else if (getOperationStyle() == Style.DOCUMENT) {
+ setOperationUse(Use.LITERAL);
+ }
}
else if (name.equals(Call.SOAPACTION_USE_PROPERTY)) {
if (!(value instanceof Boolean)) {
@@ -912,6 +952,20 @@
public Style getOperationStyle() {
return operationStyle;
} // getOperationStyle
+
+ /**
+ * Set the operation use.
+ */
+ public void setOperationUse(Use operationUse) {
+ this.operationUse = operationUse;
+ } // setOperationUse
+
+ /**
+ * Get the operation use.
+ */
+ public Use getOperationUse() {
+ return operationUse;
+ } // getOperationUse
/**
* Should soapAction be used?
No revision
No revision
1.180.4.3 +32 -14 xml-axis/java/src/org/apache/axis/client/Call.java
Index: Call.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Call.java,v
retrieving revision 1.180.4.2
retrieving revision 1.180.4.3
diff -u -r1.180.4.2 -r1.180.4.3
--- Call.java 2 Oct 2002 20:39:05 -0000 1.180.4.2
+++ Call.java 4 Oct 2002 20:20:55 -0000 1.180.4.3
@@ -66,6 +66,7 @@
import org.apache.axis.description.OperationDesc;
import org.apache.axis.description.ParameterDesc;
import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.encoding.DeserializerFactory;
import org.apache.axis.encoding.SerializationContext;
import org.apache.axis.encoding.SerializationContextImpl;
@@ -170,7 +171,8 @@
private String username = null;
private String password = null;
private boolean maintainSession = false;
- private Style operationStyle = Style.DEFAULT;
+ private Style operationStyle = Style.RPC;
+ private Use operationUse = Use.ENCODED;
private boolean useSOAPAction = false;
private String SOAPActionURI = null;
private Integer timeout = null;
@@ -332,6 +334,12 @@
name, "java.lang.String", value.getClass().getName()}));
}
setOperationStyle((String) value);
+ if (getOperationStyle() == Style.DOCUMENT ||
+ getOperationStyle() == Style.WRAPPED) {
+ setOperationUse(Use.LITERAL_STR);
+ } else if (getOperationStyle() == Style.RPC) {
+ setOperationUse(Use.ENCODED_STR);
+ }
}
else if (name.equals(SOAPACTION_USE_PROPERTY)) {
if (!(value instanceof Boolean)) {
@@ -527,22 +535,14 @@
}
/**
- * Set the operation style. IllegalArgumentException is thrown if operationStyle
- * is not "rpc" or "document".
- *
- * @exception IllegalArgumentException if operationStyle is not "rpc" or "document".
+ * Set the operation style: "document", "rpc"
+ * @param operationStyle string designating style
*/
public void setOperationStyle(String operationStyle) {
- this.operationStyle = Style.getStyle(operationStyle, Style.DEFAULT);
-
-/* Not being used for now... --GD
- throw new IllegalArgumentException(Messages.getMessage(
- "badProp01",
- new String[] {OPERATION_STYLE_PROPERTY,
- "\"rpc\", \"document\"", operationStyle}));
-*/
+ this.operationStyle =
+ Style.getStyle(operationStyle, Style.DEFAULT);
} // setOperationStyle
-
+
/**
* Get the operation style.
*/
@@ -551,6 +551,22 @@
} // getOperationStyle
/**
+ * Set the operation use: "literal", "encoded"
+ * @param operationUse string designating use
+ */
+ public void setOperationUse(String operationUse) {
+ this.operationUse =
+ Use.getUse(operationUse, Use.DEFAULT);
+ } // setOperationUse
+
+ /**
+ * Get the operation use.
+ */
+ public Use getOperationUse() {
+ return operationUse;
+ } // getOperationStyle
+
+ /**
* Should soapAction be used?
*/
public void setUseSOAPAction(boolean useSOAPAction) {
@@ -2057,7 +2073,9 @@
msgContext.setOperation(operation);
operation.setStyle(getOperationStyle());
+ operation.setUse(getOperationUse());
msgContext.setOperationStyle(getOperationStyle());
+ msgContext.setOperationUse(getOperationUse());
if (useSOAPAction) {
msgContext.setUseSOAPAction(true);
No revision
No revision
1.23.6.2 +1 -0 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDConstants.java
Index: WSDDConstants.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDConstants.java,v
retrieving revision 1.23.6.1
retrieving revision 1.23.6.2
diff -u -r1.23.6.1 -r1.23.6.2
--- WSDDConstants.java 2 Oct 2002 20:39:06 -0000 1.23.6.1
+++ WSDDConstants.java 4 Oct 2002 20:20:55 -0000 1.23.6.2
@@ -170,6 +170,7 @@
public static final String ATTR_OUTHEADER = "outHeader";
public static final String ATTR_RETHEADER = "returnHeader";
public static final String ATTR_STYLE = "style";
+ public static final String ATTR_USE = "use";
public static final String ATTR_STREAMING = "streaming";
public static final String ATTR_ATTACHMENT_FORMAT = "attachment";
public static final String ATTR_PROVIDER = "provider";
1.95.4.1 +45 -10 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java
Index: WSDDService.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java,v
retrieving revision 1.95
retrieving revision 1.95.4.1
diff -u -r1.95 -r1.95.4.1
--- WSDDService.java 25 Sep 2002 20:41:31 -0000 1.95
+++ WSDDService.java 4 Oct 2002 20:20:55 -0000 1.95.4.1
@@ -73,6 +73,7 @@
import org.apache.axis.encoding.ser.BaseDeserializerFactory;
import org.apache.axis.encoding.ser.BaseSerializerFactory;
import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.handlers.soap.SOAPService;
import org.apache.axis.providers.java.JavaProvider;
import org.apache.axis.utils.Messages;
@@ -108,8 +109,10 @@
private String descriptionURL;
- /** Style - document or RPC (the default) */
+ /** Style - document, wrapped, message, or RPC (the default) */
private Style style = Style.DEFAULT;
+ /** Use - encoded (the default) or literal */
+ private Use use = Use.DEFAULT;
private SOAPService cachedService = null;
@@ -161,6 +164,18 @@
providerQName = style.getProvider();
}
+ String useStr = e.getAttribute(ATTR_USE);
+ if (useStr != null && !useStr.equals("")) {
+ use = Use.getUse(useStr, Use.DEFAULT);
+ desc.setUse(use);
+ } else {
+ if (style != Style.RPC) {
+ // Default to use=literal if not style=RPC
+ use = Use.LITERAL;
+ desc.setUse(use);
+ }
+ }
+
String streamStr = e.getAttribute(ATTR_STREAMING);
if (streamStr != null && streamStr.equals("on")) {
streaming = true;
@@ -267,7 +282,7 @@
initTMR();
}
desc.setTypeMappingRegistry(tmr);
- desc.setTypeMapping(getTypeMapping(desc.getStyle().getEncoding()));
+ desc.setTypeMapping(getTypeMapping(desc.getUse().getEncoding()));
String allowedMethods = getParameter(JavaProvider.OPTION_ALLOWEDMETHODS);
if (allowedMethods != null && !"*".equals(allowedMethods)) {
@@ -331,6 +346,10 @@
this.providerQName = providerQName;
}
+ public ServiceDesc getServiceDesc() {
+ return desc;
+ }
+
/**
* Get the service style - document or RPC
*/
@@ -338,10 +357,6 @@
return style;
}
- public ServiceDesc getServiceDesc() {
- return desc;
- }
-
/**
* Set the service style - document or RPC
*/
@@ -350,6 +365,19 @@
}
/**
+ * Get the service use - literal or encoded
+ */
+ public Use getUse() {
+ return use;
+ }
+
+ /**
+ * Set the service use - literal or encoded
+ */
+ public void setUse(Use use) {
+ this.use = use;
+ }
+ /**
*
* @return XXX
*/
@@ -436,6 +464,7 @@
SOAPService service = new SOAPService(reqHandler, providerHandler,
respHandler);
service.setStyle(style);
+ service.setUse(use);
service.setHighFidelityRecording(!streaming);
service.setSendType(sendType);
@@ -445,8 +474,9 @@
service.setEngine(((WSDDDeployment)registry).getEngine());
- if (style != Style.RPC) {
- // No Multirefs/xsi:types
+ if (use != Use.ENCODED) {
+ // If not encoded, turn off multi-refs and prefer
+ // not to sent xsi:type and xsi:nil
service.setOption(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
service.setOption(AxisEngine.PROP_SEND_XSI, Boolean.FALSE);
}
@@ -494,10 +524,10 @@
}
try {
// Get the encoding style from the mapping, if it isn't set
- // use the style of the service to map doc/lit or rpc/enc
+ // use the use of the service to map doc/lit or rpc/enc
String encodingStyle = mapping.getEncodingStyle();
if (encodingStyle == null) {
- encodingStyle = style.getEncoding();
+ encodingStyle = use.getEncoding();
}
TypeMapping tm = (TypeMapping) tmr.getTypeMapping(encodingStyle);
TypeMapping df = (TypeMapping) tmr.getDefaultTypeMapping();
@@ -560,6 +590,11 @@
if (style != Style.DEFAULT) {
attrs.addAttribute("", ATTR_STYLE, ATTR_STYLE,
"CDATA", style.getName());
+ }
+
+ if (use != Use.DEFAULT) {
+ attrs.addAttribute("", ATTR_USE, ATTR_USE,
+ "CDATA", use.getName());
}
if (streaming) {
No revision
No revision
1.23.4.2 +25 -1 xml-axis/java/src/org/apache/axis/description/OperationDesc.java
Index: OperationDesc.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/OperationDesc.java,v
retrieving revision 1.23.4.1
retrieving revision 1.23.4.2
diff -u -r1.23.4.1 -r1.23.4.2
--- OperationDesc.java 2 Oct 2002 19:32:48 -0000 1.23.4.1
+++ OperationDesc.java 4 Oct 2002 20:20:56 -0000 1.23.4.2
@@ -63,6 +63,7 @@
import org.apache.commons.logging.Log;
import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
/**
@@ -105,8 +106,9 @@
/** The actual Java method associated with this operation, if known */
private Method method;
- /** This operation's style. If null, we default to our parent's */
+ /** This operation's style/use. If null, we default to our parent's */
private Style style = null;
+ private Use use = null;
/** The number of "in" params (i.e. IN or INOUT) for this operation */
private int numInParams = 0;
@@ -227,6 +229,27 @@
return style;
}
+ public void setUse(Use use)
+ {
+ this.use = use;
+ }
+
+ /**
+ * Return the use of the operation, defaulting to the parent
+ * ServiceDesc's use if we don't have one explicitly set.
+ */
+ public Use getUse()
+ {
+ if (use == null) {
+ if (parent != null) {
+ return parent.getUse();
+ }
+ return Use.DEFAULT; // Default
+ }
+
+ return use;
+ }
+
public void addParameter(ParameterDesc param)
{
// Should we enforce adding INs then INOUTs then OUTs?
@@ -380,6 +403,7 @@
text+=indent+"elementQName:" + getElementQName() + "\n";
text+=indent+"soapAction: " + getSoapAction() + "\n";
text+=indent+"style: " + getStyle().getName() + "\n";
+ text+=indent+"use: " + getUse().getName() + "\n";
text+=indent+"numInParams: " + getNumInParams() + "\n";
text+=indent+"method:" + getMethod() + "\n";
for (int i=0; i<parameters.size(); i++) {
1.64.4.1 +21 -5 xml-axis/java/src/org/apache/axis/description/ServiceDesc.java
Index: ServiceDesc.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/ServiceDesc.java,v
retrieving revision 1.64
retrieving revision 1.64.4.1
diff -u -r1.64 -r1.64.4.1
--- ServiceDesc.java 29 Sep 2002 19:35:52 -0000 1.64
+++ ServiceDesc.java 4 Oct 2002 20:20:56 -0000 1.64.4.1
@@ -65,6 +65,7 @@
import org.apache.axis.encoding.TypeMappingRegistry;
import org.apache.axis.encoding.TypeMappingRegistryImpl;
import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.utils.JavaUtils;
import org.apache.axis.utils.Messages;
import org.apache.axis.utils.bytecode.ParamNameExtractor;
@@ -111,8 +112,9 @@
/** List if disallowed methods */
private List disallowedMethods = null;
- /** Style */
+ /** Style/Use */
private Style style = Style.RPC;
+ private Use use = Use.ENCODED;
/** Implementation class */
private Class implClass = null;
@@ -192,6 +194,18 @@
}
/**
+ * What kind of use is this?
+ * @return
+ */
+ public Use getUse() {
+ return use;
+ }
+
+ public void setUse(Use use) {
+ this.use = use;
+ }
+
+ /**
* Determine whether or not this is a "wrapped" invocation, i.e. whether
* the outermost XML element of the "main" body element represents a
* method call, with the immediate children of that element representing
@@ -202,7 +216,8 @@
*/
public boolean isWrapped()
{
- return ((style == Style.RPC) || (style == Style.WRAPPED));
+ return ((style == Style.RPC) ||
+ (style == Style.WRAPPED));
}
/**
@@ -432,9 +447,10 @@
if (overloads == null) {
// Nothing specifically matching this QName.
- if (((style == Style.RPC) || ((style==Style.MESSAGE) &&
- (getDefaultNamespace() == null))) &&
- (name2OperationsMap != null)) {
+ if ((isWrapped() ||
+ ((style==Style.MESSAGE) &&
+ (getDefaultNamespace() == null))) &&
+ (name2OperationsMap != null)) {
// Try ignoring the namespace....?
overloads = (ArrayList)name2OperationsMap.get(qname.getLocalPart());
}
No revision
No revision
1.77.4.1 +3 -2 xml-axis/java/src/org/apache/axis/encoding/SerializationContextImpl.java
Index: SerializationContextImpl.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializationContextImpl.java,v
retrieving revision 1.77
retrieving revision 1.77.4.1
diff -u -r1.77 -r1.77.4.1
--- SerializationContextImpl.java 30 Sep 2002 20:05:23 -0000 1.77
+++ SerializationContextImpl.java 4 Oct 2002 20:20:56 -0000 1.77.4.1
@@ -67,6 +67,7 @@
import org.apache.axis.wsdl.symbolTable.SchemaUtils;
import org.apache.axis.encoding.ser.BaseSerializerFactory;
import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.handlers.soap.SOAPService;
import org.apache.axis.attachments.Attachments;
import org.apache.axis.client.Call;
@@ -270,11 +271,11 @@
sendXSIType = false ;
}
- // A Document-style service overrides the above settings. Don't
+ // A Literal use service overrides the above settings. Don't
// send xsi:type, and don't do multiref in that case.
SOAPService service = msgContext.getService();
if (service != null) {
- if (service.getStyle() != Style.RPC) {
+ if (service.getUse() != Use.ENCODED) {
sendXSIType = false;
doMultiRefs = false;
}
No revision
No revision
1.5.8.1 +59 -27 xml-axis/java/src/org/apache/axis/enum/Style.java
Index: Style.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/enum/Style.java,v
retrieving revision 1.5
retrieving revision 1.5.8.1
diff -u -r1.5 -r1.5.8.1
--- Style.java 2 Jul 2002 18:07:31 -0000 1.5
+++ Style.java 4 Oct 2002 20:20:56 -0000 1.5.8.1
@@ -65,13 +65,66 @@
* @author rsitze
*/
public class Style extends Enum {
+
+ /**
+ * Description of the different styles
+ *
+ * style=rpc use=encoded
+ * First element of the SOAP body is the
+ * operation. The operation contains
+ * elements describing the parameters, which
+ * are serialized as encoded (possibly multi-ref)
+ * <soap:body>
+ * <operation>
+ * <arg1>...</arg1>
+ * <arg2>...</arg2>
+ * </operation>
+ *
+ * style=RPC use=literal
+ * First element of the SOAP body is the
+ * operation. The operation contains elements
+ * describing the parameters, which are serialized
+ * as encoded (no multi-ref)
+ * <soap:body>
+ * <operation>
+ * <arg1>...</arg1>
+ * <arg2>...</arg2>
+ * </operation>
+ *
+ * style=document use=literal
+ * Elements of the SOAP body are the names of the parameters
+ * (there is no wrapper operation...no multi-ref)
+ *
+ * <soap:body>
+ * <arg1>...</arg1>
+ * <arg2>...</arg2>
+ *
+ *
+ * style=wrapped
+ * Special case of DOCLIT where there is only one parameter
+ * and it has the same qname as the operation. In
+ * such cases, there is no actual type with the name...the
+ * elements are treated as parameters to the operation
+ *
+ * <soap:body>
+ * <one-arg-same-name-as-operation>
+ * <elemofarg1>...</elemofarg1>
+ * <elemofarg2>...</elemofarg2>
+ *
+ * style=document use=encoded
+ * This mode doesn't seem to make any sense...
+ * Like DOCLIT but the parms are encoded?
+ *
+ */
+
private static final Type type = new Type();
public static final String RPC_STR = "rpc";
public static final String DOCUMENT_STR = "document";
public static final String WRAPPED_STR = "wrapped";
public static final String MESSAGE_STR = "message";
-
+
+
public static final Style RPC = type.getStyle(RPC_STR);
public static final Style DOCUMENT = type.getStyle(DOCUMENT_STR);
public static final Style WRAPPED = type.getStyle(WRAPPED_STR);
@@ -83,18 +136,10 @@
private QName provider;
- private String encoding;
-
-
- // public int getValue();
- // public String getName();
- // public Type getType();
-
public static Style getDefault() { return (Style)type.getDefault(); }
public final QName getProvider() { return provider; }
- public final String getEncoding() { return encoding; }
public static final Style getStyle(int style) {
return type.getStyle(style);
@@ -124,17 +169,13 @@
private Type() {
super("style", new Enum[] {
new Style(0, RPC_STR,
- WSDDConstants.QNAME_JAVARPC_PROVIDER,
- Constants.URI_DEFAULT_SOAP_ENC),
+ WSDDConstants.QNAME_JAVARPC_PROVIDER),
new Style(1, DOCUMENT_STR,
- WSDDConstants.QNAME_JAVARPC_PROVIDER,
- Constants.URI_LITERAL_ENC),
+ WSDDConstants.QNAME_JAVARPC_PROVIDER),
new Style(2, WRAPPED_STR,
- WSDDConstants.QNAME_JAVARPC_PROVIDER,
- Constants.URI_LITERAL_ENC),
+ WSDDConstants.QNAME_JAVARPC_PROVIDER),
new Style(3, MESSAGE_STR,
- WSDDConstants.QNAME_JAVAMSG_PROVIDER,
- Constants.URI_LITERAL_ENC)
+ WSDDConstants.QNAME_JAVAMSG_PROVIDER),
});
}
@@ -149,19 +190,10 @@
public final Style getStyle(String style, Style dephault) {
return (Style)this.getEnum(style, dephault);
}
-
- // public final String getName();
- // public boolean isValid(String enumName);
- // public final int size();
- // public final String[] getEnumNames();
- // public final Enum getEnum(int enum);
- // public final Enum getEnum(String enumName);
- // public final Enum getEnum(String enumName, Enum dephault);
}
- private Style(int value, String name, QName provider, String encoding) {
+ private Style(int value, String name, QName provider) {
super(type, value, name);
this.provider = provider;
- this.encoding = encoding;
}
};
No revision
No revision
1.1.2.1 +144 -0 xml-axis/java/src/org/apache/axis/enum/Attic/Use.java
No revision
No revision
1.85.2.1 +9 -0 xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java
Index: SOAPService.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java,v
retrieving revision 1.85
retrieving revision 1.85.2.1
diff -u -r1.85 -r1.85.2.1
--- SOAPService.java 2 Oct 2002 15:27:11 -0000 1.85
+++ SOAPService.java 4 Oct 2002 20:20:56 -0000 1.85.2.1
@@ -65,6 +65,7 @@
import org.apache.axis.description.ServiceDesc;
import org.apache.axis.encoding.TypeMappingRegistry;
import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.handlers.BasicHandler;
import org.apache.axis.handlers.HandlerChainImpl;
import org.apache.axis.handlers.HandlerInfoChainFactory;
@@ -298,6 +299,14 @@
public void setStyle(Style style) {
serviceDescription.setStyle(style);
+ }
+
+ public Use getUse() {
+ return serviceDescription.getUse();
+ }
+
+ public void setUse(Use style) {
+ serviceDescription.setUse(style);
}
public ServiceDesc getServiceDescription() {
No revision
No revision
1.52.6.1 +4 -3 xml-axis/java/src/org/apache/axis/message/BodyBuilder.java
Index: BodyBuilder.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/BodyBuilder.java,v
retrieving revision 1.52
retrieving revision 1.52.6.1
diff -u -r1.52 -r1.52.6.1
--- BodyBuilder.java 24 Sep 2002 20:45:20 -0000 1.52
+++ BodyBuilder.java 4 Oct 2002 20:20:56 -0000 1.52.6.1
@@ -146,8 +146,9 @@
MessageContext msgContext = context.getMessageContext();
OperationDesc [] operations = null;
try {
- if(msgContext != null)
- operations = msgContext.getPossibleOperationsByQName(qname);
+ if(msgContext != null) {
+ operations = msgContext.getPossibleOperationsByQName(qname);
+ }
// If there's only one match, set it in the MC now
if ((operations != null) && (operations.length == 1))
@@ -206,7 +207,7 @@
SOAPConstants.SOAP11_CONSTANTS :
context.getMessageContext().getSOAPConstants();
if (element == null) {
- if (style == Style.RPC &&
+ if ((style == Style.RPC) &&
soapConstants == SOAPConstants.SOAP12_CONSTANTS) {
throw new SAXException(Messages.getMessage("onlyOneBodyFor12"));
}
1.76.4.3 +36 -29 xml-axis/java/src/org/apache/axis/message/RPCElement.java
Index: RPCElement.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCElement.java,v
retrieving revision 1.76.4.2
retrieving revision 1.76.4.3
diff -u -r1.76.4.2 -r1.76.4.3
--- RPCElement.java 2 Oct 2002 23:37:37 -0000 1.76.4.2
+++ RPCElement.java 4 Oct 2002 20:20:56 -0000 1.76.4.3
@@ -64,6 +64,7 @@
import org.apache.axis.encoding.DeserializationContext;
import org.apache.axis.encoding.SerializationContext;
import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.handlers.soap.SOAPService;
import org.apache.axis.utils.Messages;
import org.apache.axis.wsdl.toJava.Utils;
@@ -81,7 +82,6 @@
{
protected Vector params = new Vector();
protected boolean needDeser = false;
- protected boolean elementIsFirstParam = false;
OperationDesc [] operations = null;
public RPCElement(String namespace,
@@ -116,12 +116,6 @@
operations = serviceDesc.getOperationsByName(lc);
}
}
-
- if (operations != null && operations.length > 0) {
- // if we're document style, the top level element is important
- elementIsFirstParam = (operations[0].getStyle() == Style.DOCUMENT);
- }
-
this.operations = operations;
}
@@ -158,7 +152,7 @@
public void deserialize() throws SAXException
{
needDeser = false;
-
+
MessageContext msgContext = context.getMessageContext();
// Figure out if we should be looking for out params or in params
@@ -187,24 +181,34 @@
boolean needHeaderProcessing =
needHeaderProcessing(operation, isResponse);
- if (operation.getNumInParams() >= numParams ||
- elementIsFirstParam ||
- operation.getStyle() == Style.WRAPPED) {
- // If the Style is WRAPPED, the numParams may be inflated
- // as in the following case:
- // <getAttractions xmlns="urn:CityBBB">
- // <attname>Christmas</attname>
- // <attname>Xmas</attname>
- // </getAttractions>
- //
- // for getAttractions(String[] attName)
- //
- // numParams will be 2 and and operation.getNumInParams=1
+ // Make a quick check to determine if the operation
+ // could be a match.
+ // 1) The element is the first param, DOCUMENT, (i.e.
+ // don't know the operation name or the number
+ // of params, so try all operations).
+ // or (2) Style is literal
+ // If the Style is LITERAL, the numParams may be inflated
+ // as in the following case:
+ // <getAttractions xmlns="urn:CityBBB">
+ // <attname>Christmas</attname>
+ // <attname>Xmas</attname>
+ // </getAttractions>
+ // for getAttractions(String[] attName)
+ // numParams will be 2 and and operation.getNumInParams=1
+ // or (3) Number of expected params is
+ // >= num params in message
+ if (operation.getStyle() == Style.DOCUMENT ||
+ operation.getStyle() == Style.WRAPPED ||
+ operation.getUse() == Use.LITERAL ||
+ operation.getNumInParams() >= numParams) {
- // Set the operation so the RPCHandler can get at it
rpcHandler.setOperation(operation);
try {
- if (elementIsFirstParam && operation.getNumInParams() > 0) {
+ // If no operation name and more than one
+ // parameter is expected, don't
+ // wrap the rpcHandler in an EnvelopeHandler.
+ if ((operation.getStyle() == Style.DOCUMENT) &&
+ operation.getNumInParams() > 0) {
context.pushElementHandler(rpcHandler);
context.setCurElement(null);
} else {
@@ -254,7 +258,10 @@
rpcHandler.setOperation(operations[0]);
}
- if (elementIsFirstParam) {
+ // Same logic as above. Don't wrap rpcHandler
+ // if there is no operation wrapper in the message
+ if (operations != null && operations.length > 0 &&
+ (operations[0].getStyle() == Style.DOCUMENT)) {
context.pushElementHandler(rpcHandler);
context.setCurElement(null);
} else {
@@ -301,9 +308,9 @@
protected void outputImpl(SerializationContext context) throws Exception
{
MessageContext msgContext = context.getMessageContext();
- boolean isRPC =
+ boolean hasOperationElement =
(msgContext == null ||
- msgContext.getOperationStyle() == Style.RPC ||
+ msgContext.getOperationStyle() == Style.RPC ||
msgContext.getOperationStyle() == Style.WRAPPED);
// When I have MIME and a no-param document WSDL, if I don't check
@@ -312,7 +319,7 @@
// found in an RPC-style (and wrapped) request
boolean noParams = params.size() == 0;
- if (isRPC || noParams) {
+ if (hasOperationElement || noParams) {
// Set default namespace if appropriate (to avoid prefix mappings
// in literal style). Do this only if there is no encodingStyle.
if (encodingStyle != null && encodingStyle.equals("")) {
@@ -323,13 +330,13 @@
for (int i = 0; i < params.size(); i++) {
RPCParam param = (RPCParam)params.elementAt(i);
- if (!isRPC && encodingStyle.equals("")) {
+ if (!hasOperationElement && encodingStyle.equals("")) {
context.registerPrefixForURI("", param.getQName().getNamespaceURI());
}
param.serialize(context);
}
- if (isRPC || noParams) {
+ if (hasOperationElement || noParams) {
context.endElement();
}
}
1.1.2.2 +1 -6 xml-axis/java/src/org/apache/axis/message/Attic/RPCHeaderParam.java
Index: RPCHeaderParam.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/Attic/RPCHeaderParam.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- RPCHeaderParam.java 2 Oct 2002 20:39:06 -0000 1.1.2.1
+++ RPCHeaderParam.java 4 Oct 2002 20:20:57 -0000 1.1.2.2
@@ -57,7 +57,6 @@
import org.apache.axis.MessageContext;
import org.apache.axis.encoding.SerializationContext;
-import org.apache.axis.enum.Style;
public class RPCHeaderParam extends SOAPHeaderElement
{
@@ -76,14 +75,10 @@
protected void outputImpl(SerializationContext context) throws Exception
{
MessageContext msgContext = context.getMessageContext();
- boolean isRPC =
- (msgContext == null ||
- msgContext.getOperationStyle() == Style.RPC ||
- msgContext.getOperationStyle() == Style.WRAPPED);
// Get the RPCParam and serialize it
RPCParam rpcParam = (RPCParam) getObjectValue();
- if (!isRPC && encodingStyle.equals("")) {
+ if (encodingStyle != null && encodingStyle.equals("")) {
context.registerPrefixForURI("", rpcParam.getQName().getNamespaceURI());
}
rpcParam.serialize(context);
No revision
No revision
1.85.4.1 +4 -2 xml-axis/java/src/org/apache/axis/providers/java/JavaProvider.java
Index: JavaProvider.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/providers/java/JavaProvider.java,v
retrieving revision 1.85
retrieving revision 1.85.4.1
diff -u -r1.85 -r1.85.4.1
--- JavaProvider.java 26 Sep 2002 20:59:58 -0000 1.85
+++ JavaProvider.java 4 Oct 2002 20:20:57 -0000 1.85.4.1
@@ -66,6 +66,7 @@
import org.apache.axis.encoding.TypeMapping;
import org.apache.axis.enum.Scope;
import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.handlers.soap.SOAPService;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.providers.BasicProvider;
@@ -75,8 +76,6 @@
import org.apache.axis.utils.cache.JavaClass;
import org.apache.axis.wsdl.fromJava.Emitter;
import org.apache.axis.encoding.TypeMapping;
-import org.apache.axis.enum.Style;
-import org.apache.axis.enum.Scope;
import org.apache.axis.Constants;
import org.apache.axis.session.Session;
import org.apache.axis.description.ServiceDesc;
@@ -375,6 +374,9 @@
if(alias != null) emitter.setServiceElementName(alias);
Style style = serviceDesc.getStyle();
+
+ // The emitter should be fixed to support all
+ // the Style/Use flavors.
if (style == Style.RPC) {
emitter.setMode(Emitter.MODE_RPC);
} else if (style == Style.DOCUMENT) {
1.96.6.3 +1 -1 xml-axis/java/src/org/apache/axis/providers/java/RPCProvider.java
Index: RPCProvider.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/providers/java/RPCProvider.java,v
retrieving revision 1.96.6.2
retrieving revision 1.96.6.3
diff -u -r1.96.6.2 -r1.96.6.3
--- RPCProvider.java 4 Oct 2002 15:02:22 -0000 1.96.6.2
+++ RPCProvider.java 4 Oct 2002 20:20:57 -0000 1.96.6.3
@@ -162,7 +162,7 @@
// arguments (which is a strange thing to have, but whatever)
if (body == null) {
// throw an error if this isn't a document style service
- if (!serviceDesc.getStyle().equals(Style.DOCUMENT)) {
+ if (!(serviceDesc.getStyle().equals(Style.DOCUMENT))) {
throw new Exception(Messages.getMessage("noBody00"));
}
No revision
No revision
1.3.8.3 +76 -73 xml-axis/java/src/org/apache/axis/wsdl/symbolTable/BindingEntry.java
Index: BindingEntry.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/BindingEntry.java,v
retrieving revision 1.3.8.2
retrieving revision 1.3.8.3
diff -u -r1.3.8.2 -r1.3.8.3
--- BindingEntry.java 3 Oct 2002 20:11:20 -0000 1.3.8.2
+++ BindingEntry.java 4 Oct 2002 20:20:57 -0000 1.3.8.3
@@ -57,6 +57,8 @@
import java.util.HashMap;
import java.util.Map;
+import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import javax.wsdl.Binding;
import javax.wsdl.Operation;
@@ -67,9 +69,6 @@
* from the WSDL4J Binding object: binding type, binding style, input/output/fault body types.
*/
public class BindingEntry extends SymTabEntry {
- // Binding styles
- public static final int STYLE_RPC = 0;
- public static final int STYLE_DOCUMENT = 1;
// Binding types
public static final int TYPE_SOAP = 0;
@@ -83,7 +82,7 @@
private Binding binding;
private int bindingType;
- private int bindingStyle;
+ private Style bindingStyle;
private boolean hasLiteral;
private HashMap attributes;
private HashMap parameters = new HashMap();
@@ -93,18 +92,18 @@
private Map mimeTypes;
// This is a map of a map. It's a map keyed on operation name whose values
- // are maps keyed on parameter name. The ultimate values are simple
+ // are maps keyed on part name. The ultimate values are simple
// Booleans.
- private Map headerParameters;
+ private Map headerParts;
/**
* Construct a BindingEntry from a WSDL4J Binding object and the additional binding info:
* binding type, binding style, whether there is any literal binding, and the attributes which
* contain the input/output/fault body type information.
*/
- public BindingEntry(Binding binding, int bindingType, int bindingStyle,
+ public BindingEntry(Binding binding, int bindingType, Style bindingStyle,
boolean hasLiteral, HashMap attributes, Map mimeTypes,
- Map headerParameters) {
+ Map headerParts) {
super(binding.getQName());
this.binding = binding;
this.bindingType = bindingType;
@@ -122,11 +121,11 @@
else {
this.mimeTypes = mimeTypes;
}
- if (headerParameters == null) {
- this.headerParameters = new HashMap();
+ if (headerParts == null) {
+ this.headerParts = new HashMap();
}
else {
- this.headerParameters = headerParameters;
+ this.headerParts = headerParts;
}
} // ctor
@@ -135,7 +134,7 @@
* defaults. If the defaults aren't desired, then the appropriate
* setter method should be called. The defaults are:
* bindingType = TYPE_UNKNOWN
- * bindingStyle = STYLE_DOCUMENT
+ * bindingStyle = DOCUMENT
* hasLiteral = false
* operation inputBodyTypes = USE_ENCODED
* operation outputBodyTypes = USE_ENCODED
@@ -151,11 +150,11 @@
super(binding.getQName());
this.binding = binding;
this.bindingType = TYPE_UNKNOWN;
- this.bindingStyle = STYLE_DOCUMENT;
+ this.bindingStyle = Style.DOCUMENT;
this.hasLiteral = false;
this.attributes = new HashMap();
this.mimeTypes = new HashMap();
- this.headerParameters = new HashMap();
+ this.headerParts = new HashMap();
} // ctor
/**
@@ -213,58 +212,66 @@
} // setMIMEType
/**
- * Is this parameter an input header parameter?.
+ * Is this part an input header part?.
*/
- public boolean isInHeaderParameter(String operationName,
- String parameterName) {
- return (headerParameter(operationName, parameterName) & IN_HEADER) > 0;
- } // isInHeaderParameter
+ public boolean isInHeaderPart(String operationName,
+ String partName) {
+ return (headerPart(operationName, partName) & IN_HEADER) > 0;
+ } // isInHeaderPart
/**
- * Is this parameter an output header parameter?.
+ * Is this part an output header part?.
*/
- public boolean isOutHeaderParameter(String operationName,
- String parameterName) {
- return (headerParameter(operationName, parameterName) & OUT_HEADER) > 0;
- } // isInHeaderParameter
+ public boolean isOutHeaderPart(String operationName,
+ String partName) {
+ return (headerPart(operationName, partName) & OUT_HEADER) > 0;
+ } // isInHeaderPart
/**
- * Get the flag indicating what sort of header this parameter is.
+ * Get the flag indicating what sort of header this part is.
*/
public static final int NO_HEADER = 0;
public static final int IN_HEADER = 1;
public static final int OUT_HEADER = 2;
- private int headerParameter(String operationName, String parameterName) {
- Map opMap = (Map) headerParameters.get(operationName);
+ /**
+ * Get the mime mapping for the given part name.
+ * If there is none, this returns null.
+ * @param operationName
+ * @param partName
+ * @return flag indicating kind of header
+ */
+ private int headerPart(String operationName,
+ String partName) {
+ Map opMap = (Map) headerParts.get(operationName);
if (opMap == null) {
return NO_HEADER;
}
else {
- Integer I = (Integer) opMap.get(parameterName);
+ Integer I = (Integer) opMap.get(partName);
return I == null ? NO_HEADER : I.intValue();
}
- } // headerParameter
+ } // headerPart
/**
* Get the header parameter map.
*/
- public Map getHeaderParameters() {
- return headerParameters;
- } // getHeaderParameters
+ public Map getHeaderParts() {
+ return headerParts;
+ } // getHeaderParts
/**
- * Set the header parameter mapping for the given parameter name.
+ * Set the header part mapping for the given part name.
*/
- public void setHeaderParameter(String operationName, String parameterName, int headerFlags) {
- Map opMap = (Map) headerParameters.get(operationName);
+ public void setHeaderPart(String operationName, String partName, int headerFlags) {
+ Map opMap = (Map) headerParts.get(operationName);
if (opMap == null) {
opMap = new HashMap();
- headerParameters.put(operationName, opMap);
+ headerParts.put(operationName, opMap);
}
- Integer I = (Integer) opMap.get(parameterName);
+ Integer I = (Integer) opMap.get(partName);
int i = I == null ? headerFlags : (I.intValue() | headerFlags);
- opMap.put(parameterName, new Integer(i));
- } // setHeaderParameter
+ opMap.put(partName, new Integer(i));
+ } // setHeaderPart
/**
* Get this entry's WSDL4J Binding object.
@@ -291,19 +298,17 @@
} // setBindingType
/**
- * Get this entry's binding style. One of BindingEntry.STYLE_RPC, BindingEntry.STYLE_DOCUMENT.
+ * Get this entry's binding style.
*/
- public int getBindingStyle() {
+ public Style getBindingStyle() {
return bindingStyle;
} // getBindingStyle
/**
* Set this entry's binding style.
*/
- protected void setBindingStyle(int bindingStyle) {
- if (bindingStyle == STYLE_RPC || bindingStyle == STYLE_DOCUMENT) {
- this.bindingStyle = bindingStyle;
- }
+ protected void setBindingStyle(Style bindingStyle) {
+ this.bindingStyle = bindingStyle;
} // setBindingStyle
/**
@@ -321,13 +326,12 @@
} // setHashLiteral
/**
- * Get the input body type for the given operation. One of BindingEntry.USE_ENCODED,
- * BindingEntry.USE_LITERAL.
+ * Get the input body type for the given operation.
*/
- public int getInputBodyType(Operation operation) {
+ public Use getInputBodyType(Operation operation) {
OperationAttr attr = (OperationAttr) attributes.get(operation);
if (attr == null) {
- return USE_ENCODED; // should really create an exception for this.
+ return Use.ENCODED; // should really create an exception for this.
}
else {
return attr.getInputBodyType();
@@ -337,26 +341,25 @@
/**
* Set the input body type for the given operation.
*/
- protected void setInputBodyType(Operation operation, int inputBodyType) {
+ protected void setInputBodyType(Operation operation, Use inputBodyType) {
OperationAttr attr = (OperationAttr) attributes.get(operation);
if (attr == null) {
attr = new OperationAttr();
attributes.put(operation, attr);
}
attr.setInputBodyType(inputBodyType);
- if (inputBodyType == USE_LITERAL) {
+ if (inputBodyType == Use.LITERAL) {
setHasLiteral(true);
}
} // setInputBodyType
/**
- * Get the output body type for the given operation. One of BindingEntry.USE_ENCODED,
- * BindingEntry.USE_LITERAL.
+ * Get the output body type for the given operation.
*/
- public int getOutputBodyType(Operation operation) {
+ public Use getOutputBodyType(Operation operation) {
OperationAttr attr = (OperationAttr) attributes.get(operation);
if (attr == null) {
- return USE_ENCODED; // should really create an exception for this.
+ return Use.ENCODED; // should really create an exception for this.
}
else {
return attr.getOutputBodyType();
@@ -366,14 +369,14 @@
/**
* Set the output body type for the given operation.
*/
- protected void setOutputBodyType(Operation operation, int outputBodyType) {
+ protected void setOutputBodyType(Operation operation, Use outputBodyType) {
OperationAttr attr = (OperationAttr) attributes.get(operation);
if (attr == null) {
attr = new OperationAttr();
attributes.put(operation, attr);
}
attr.setOutputBodyType(outputBodyType);
- if (outputBodyType == USE_LITERAL) {
+ if (outputBodyType == Use.LITERAL) {
setHasLiteral(true);
}
} // setOutputBodyType
@@ -383,7 +386,7 @@
* then this is the inputBodyType, otherwise it's the outputBodyType.
* (NOTE: this method exists to enable reusing some SymbolTable code.
*/
- protected void setBodyType(Operation operation, int bodyType, boolean input) {
+ protected void setBodyType(Operation operation, Use bodyType, boolean input) {
if (input) {
setInputBodyType(operation, bodyType);
}
@@ -393,23 +396,23 @@
} // setBodyType
/**
- * Get the fault body type for the given fault of the given operation. One of
- * BindingEntry.USE_ENCODED, BindingEntry.USE_LITERAL.
+ * Get the fault body type for the given fault of the given operation.
+ * @return Use.ENCODED or Use.LITERAL
*/
- public int getFaultBodyType(Operation operation, String faultName) {
+ public Use getFaultBodyType(Operation operation, String faultName) {
OperationAttr attr = (OperationAttr) attributes.get(operation);
if (attr == null) {
- return 0; // should really create an exception for this.
+ return Use.ENCODED; // should really create an exception for this.
}
else {
HashMap m = attr.getFaultBodyTypeMap();
// Default to encoded if we didn't have a soap:body for the fault
if ( ! m.containsKey(faultName) ) {
- return USE_ENCODED;
+ return Use.ENCODED;
}
- return ((Integer) m.get(faultName)).intValue();
+ return ((Use) m.get(faultName));
}
}
@@ -430,35 +433,35 @@
* - Body type: encoded or literal
*/
protected static class OperationAttr {
- private int inputBodyType;
- private int outputBodyType;
+ private Use inputBodyType;
+ private Use outputBodyType;
private HashMap faultBodyTypeMap;
- public OperationAttr(int inputBodyType, int outputBodyType, HashMap faultBodyTypeMap) {
+ public OperationAttr(Use inputBodyType, Use outputBodyType, HashMap faultBodyTypeMap) {
this.inputBodyType = inputBodyType;
this.outputBodyType = outputBodyType;
this.faultBodyTypeMap = faultBodyTypeMap;
}
public OperationAttr() {
- this.inputBodyType = USE_ENCODED;
- this.outputBodyType = USE_ENCODED;
+ this.inputBodyType = Use.ENCODED;
+ this.outputBodyType = Use.ENCODED;
this.faultBodyTypeMap = null;
}
- public int getInputBodyType() {
+ public Use getInputBodyType() {
return inputBodyType;
}
- protected void setInputBodyType(int inputBodyType) {
+ protected void setInputBodyType(Use inputBodyType) {
this.inputBodyType = inputBodyType;
}
- public int getOutputBodyType() {
+ public Use getOutputBodyType() {
return outputBodyType;
}
- protected void setOutputBodyType(int outputBodyType) {
+ protected void setOutputBodyType(Use outputBodyType) {
this.outputBodyType = outputBodyType;
}
1.41.6.3 +21 -19 xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java
Index: SymbolTable.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java,v
retrieving revision 1.41.6.2
retrieving revision 1.41.6.3
diff -u -r1.41.6.2 -r1.41.6.3
--- SymbolTable.java 3 Oct 2002 20:11:20 -0000 1.41.6.2
+++ SymbolTable.java 4 Oct 2002 20:20:57 -0000 1.41.6.3
@@ -107,6 +107,8 @@
import org.apache.axis.Constants;
+import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.utils.Messages;
import org.apache.axis.utils.XMLUtils;
import org.apache.axis.utils.URLHashSet;
@@ -1034,8 +1036,8 @@
boolean literalInput = false;
boolean literalOutput = false;
if (bindingEntry != null) {
- literalInput = (bindingEntry.getInputBodyType(operation) == BindingEntry.USE_LITERAL);
- literalOutput = (bindingEntry.getOutputBodyType(operation) == BindingEntry.USE_LITERAL);
+ literalInput = (bindingEntry.getInputBodyType(operation) == Use.LITERAL);
+ literalOutput = (bindingEntry.getOutputBodyType(operation) == Use.LITERAL);
}
// Collect all the input parameters
@@ -1332,11 +1334,11 @@
setMIMEType(param, bindingEntry == null ? null :
bindingEntry.getMIMEType(opName, partName));
if (bindingEntry != null &&
- bindingEntry.isInHeaderParameter(opName, partName)) {
+ bindingEntry.isInHeaderPart(opName, partName)) {
param.setInHeader(true);
}
if (bindingEntry != null &&
- bindingEntry.isOutHeaderParameter(opName, partName)) {
+ bindingEntry.isOutHeaderPart(opName, partName)) {
param.setOutHeader(true);
}
@@ -1419,10 +1421,10 @@
p.setType(elem.getType());
setMIMEType(p, bindingEntry == null ? null :
bindingEntry.getMIMEType(opName, partName));
- if (bindingEntry.isInHeaderParameter(opName, partName)) {
+ if (bindingEntry.isInHeaderPart(opName, partName)) {
p.setInHeader(true);
}
- if (bindingEntry.isOutHeaderParameter(opName, partName)) {
+ if (bindingEntry.isOutHeaderPart(opName, partName)) {
p.setOutHeader(true);
}
v.add(p);
@@ -1440,10 +1442,10 @@
}
setMIMEType(param, bindingEntry == null ? null :
bindingEntry.getMIMEType(opName, partName));
- if (bindingEntry.isInHeaderParameter(opName, partName)) {
+ if (bindingEntry.isInHeaderPart(opName, partName)) {
param.setInHeader(true);
}
- if (bindingEntry.isOutHeaderParameter(opName, partName)) {
+ if (bindingEntry.isOutHeaderPart(opName, partName)) {
param.setOutHeader(true);
}
@@ -1500,7 +1502,7 @@
SOAPBinding sb = (SOAPBinding) obj;
String style = sb.getStyle();
if ("rpc".equalsIgnoreCase(style)) {
- bEntry.setBindingStyle(BindingEntry.STYLE_RPC);
+ bEntry.setBindingStyle(Style.RPC);
}
}
else if (obj instanceof HTTPBinding) {
@@ -1563,7 +1565,7 @@
// Set default entry for this fault
String faultName = bFault.getName();
- int faultBodyType = BindingEntry.USE_ENCODED;
+ Use faultBodyType = Use.ENCODED;
Iterator faultIter =
bFault.getExtensibilityElements().iterator();
@@ -1576,13 +1578,13 @@
"noUse", opName));
}
if (use.equalsIgnoreCase("literal")) {
- faultBodyType = BindingEntry.USE_LITERAL;
+ faultBodyType = Use.LITERAL;
}
break;
}
}
// Add this fault name and bodyType to the map
- faultMap.put(faultName, new Integer(faultBodyType));
+ faultMap.put(faultName, faultBodyType);
}
bEntry.setFaultBodyTypeMap(operation, faultMap);
} // binding operations
@@ -1610,7 +1612,7 @@
// headers - those whose parts come from messages not used in
// the portType's operation's input/output clauses. I don't
// know what we're supposed to emit for implicit headers.
- bEntry.setHeaderParameter(operation.getName(), header.getPart(),
+ bEntry.setHeaderPart(operation.getName(), header.getPart(),
input ? BindingEntry.IN_HEADER : BindingEntry.OUT_HEADER);
}
else if (obj instanceof MIMEMultipartRelated) {
@@ -1631,7 +1633,7 @@
"noUse", operation.getName()));
}
if (use.equalsIgnoreCase("literal")) {
- bEntry.setBodyType(operation, BindingEntry.USE_LITERAL,
+ bEntry.setBodyType(operation, Use.LITERAL,
input);
}
} // setBodyType
@@ -1641,9 +1643,9 @@
* A side effect is to return the body Type of the given
* MIMEMultipartRelated object.
*/
- private int addMIMETypes(BindingEntry bEntry, MIMEMultipartRelated mpr,
+ private Use addMIMETypes(BindingEntry bEntry, MIMEMultipartRelated mpr,
Operation op) throws IOException {
- int bodyType = BindingEntry.USE_ENCODED;
+ Use bodyType = Use.ENCODED;
List parts = mpr.getMIMEParts();
Iterator i = parts.iterator();
while (i.hasNext()) {
@@ -1663,7 +1665,7 @@
"noUse", op.getName()));
}
if (use.equalsIgnoreCase("literal")) {
- bodyType = BindingEntry.USE_LITERAL;
+ bodyType = Use.LITERAL;
}
}
}
@@ -1896,9 +1898,9 @@
boolean literalOutput = false;
if (bEntry != null) {
literalInput = bEntry.getInputBodyType(operation) ==
- BindingEntry.USE_LITERAL;
+ Use.LITERAL;
literalOutput = bEntry.getOutputBodyType(operation) ==
- BindingEntry.USE_LITERAL;
+ Use.LITERAL;
}
// Query the input message
No revision
No revision
1.65.4.3 +16 -7 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.65.4.2
retrieving revision 1.65.4.3
diff -u -r1.65.4.2 -r1.65.4.3
--- JavaDeployWriter.java 3 Oct 2002 20:11:20 -0000 1.65.4.2
+++ JavaDeployWriter.java 4 Oct 2002 20:20:57 -0000 1.65.4.3
@@ -71,6 +71,8 @@
import javax.wsdl.Service;
import org.apache.axis.Constants;
+import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.deployment.wsdd.WSDDConstants;
import org.apache.axis.enum.Scope;
@@ -285,18 +287,24 @@
String prefix = WSDDConstants.NS_PREFIX_WSDD_JAVA;
String styleStr = "";
-
- if (hasLiteral) {
- styleStr = " style=\"document\"";
- }
+ String useStr = "";
if (symbolTable.isWrapped()) {
- styleStr = " style=\"wrapped\"";
+ styleStr = " style=\"" + Style.WRAPPED + "\"";
+ useStr = " use=\"" + Use.LITERAL + "\"";
+ } else {
+ styleStr = " style=\"" +
+ bEntry.getBindingStyle().getName() + "\"";
+ if (hasLiteral) {
+ useStr = " use=\"" + Use.LITERAL + "\"";
+ } else {
+ useStr = " use=\"" + Use.ENCODED + "\"";
+ }
}
pw.println(" <service name=\"" + serviceName
+ "\" provider=\"" + prefix +":RPC"
- + "\"" + styleStr + ">");
+ + "\"" + styleStr + useStr + ">");
pw.println(" <parameter name=\"wsdlTargetNamespace\" value=\""
+ service.getQName().getNamespaceURI() + "\"/>");
@@ -359,7 +367,8 @@
if (params != null) {
// Get the operation QName
- QName elementQName = Utils.getOperationQName(bindingOper);
+ QName elementQName =
+ Utils.getOperationQName(bindingOper, bEntry, symbolTable);
// Get the operation's return QName and type
QName returnQName = null;
1.49.6.3 +2 -1 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java
Index: JavaSkelWriter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java,v
retrieving revision 1.49.6.2
retrieving revision 1.49.6.3
diff -u -r1.49.6.2 -r1.49.6.3
--- JavaSkelWriter.java 3 Oct 2002 20:11:20 -0000 1.49.6.2
+++ JavaSkelWriter.java 4 Oct 2002 20:20:57 -0000 1.49.6.3
@@ -226,7 +226,8 @@
// If we need to know the QName (if we have a namespace or
// the actual method name doesn't match the XML we expect),
// record it in the OperationDesc
- QName elementQName = Utils.getOperationQName(bindingOper);
+ QName elementQName =
+ Utils.getOperationQName(bindingOper, bEntry, symbolTable);
if (elementQName != null) {
pw.println(" _oper.setElementQName(" +
Utils.getNewQName(elementQName) + ");");
1.98.4.3 +15 -21 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.98.4.2
retrieving revision 1.98.4.3
diff -u -r1.98.4.2 -r1.98.4.3
--- JavaStubWriter.java 3 Oct 2002 20:11:20 -0000 1.98.4.2
+++ JavaStubWriter.java 4 Oct 2002 20:20:58 -0000 1.98.4.3
@@ -56,6 +56,8 @@
import org.apache.axis.utils.JavaUtils;
import org.apache.axis.utils.Messages;
+import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
import org.apache.axis.wsdl.symbolTable.BindingEntry;
import org.apache.axis.wsdl.symbolTable.CollectionTE;
import org.apache.axis.wsdl.symbolTable.Element;
@@ -363,7 +365,8 @@
Fault f = (Fault) i.next();
partTypes(v,
f.getMessage().getOrderedParts(null),
- (bEntry.getFaultBodyType(operation, f.getName()) == BindingEntry.USE_LITERAL));
+ (bEntry.getFaultBodyType(operation,
+ f.getName()) == Use.LITERAL));
}
}
// Put all these types into a set. This operation eliminates all duplicates.
@@ -574,14 +577,14 @@
boolean hasMIME = Utils.hasMIME(bEntry, operation);
// Encoding: literal or encoded use.
- int use = bEntry.getInputBodyType(operation.getOperation());
- if (use == BindingEntry.USE_LITERAL) {
+ Use use = bEntry.getInputBodyType(operation.getOperation());
+ if (use == Use.LITERAL) {
// Turn off encoding
pw.println(" _call.setEncodingStyle(null);");
// turn off XSI types
pw.println(" _call.setScopedProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);");
}
- if (hasMIME || use == BindingEntry.USE_LITERAL) {
+ if (hasMIME || use == Use.LITERAL) {
// If it is literal, turn off multirefs.
//
// If there are any MIME types, turn off multirefs.
@@ -590,28 +593,18 @@
pw.println(" _call.setScopedProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);");
}
- // Style: document, RPC, or wrapped
- String styleStr = opStyle; // operation style override binding
- if (styleStr == null) { // get default from binding
- styleStr = "rpc";
- int style = bEntry.getBindingStyle();
- if (style == BindingEntry.STYLE_DOCUMENT) {
- styleStr = "document";
- }
- }
-
- // FIXME: this only checks for wrapped in a global way, which
- // is not really right as some ops can be wrapped and some not
- if (styleStr.equals("document") && symbolTable.isWrapped()) {
- styleStr = "wrapped";
+ Style style = Style.getStyle(opStyle, bEntry.getBindingStyle());
+ if (style == Style.DOCUMENT && symbolTable.isWrapped()) {
+ style = Style.WRAPPED;
}
if (!hasMIME) {
- pw.println(" _call.setOperationStyle(\"" + styleStr + "\");");
+ pw.println(" _call.setOperationStyle(\"" + style.getName() + "\");");
+ pw.println(" _call.setOperationUse(\"" + use.getName() + "\");");
}
// Operation name
- if (styleStr.equals("wrapped")) {
+ if (style == Style.WRAPPED) {
// We need to make sure the operation name, which is what we
// wrap the elements in, matches the Qname of the parameter
// element.
@@ -629,7 +622,8 @@
}
}
} else {
- QName elementQName = Utils.getOperationQName(operation);
+ QName elementQName =
+ Utils.getOperationQName(operation, bEntry, symbolTable);
if (elementQName != null) {
pw.println(" _call.setOperationName(" +
Utils.getNewQName(elementQName) + ");" );
1.58.6.1 +26 -27 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.58
retrieving revision 1.58.6.1
diff -u -r1.58 -r1.58.6.1
--- Utils.java 24 Sep 2002 17:30:29 -0000 1.58
+++ Utils.java 4 Oct 2002 20:20:58 -0000 1.58.6.1
@@ -57,6 +57,7 @@
import org.apache.axis.Constants;
import org.apache.axis.utils.JavaUtils;
+import org.apache.axis.enum.Style;
import org.apache.axis.wsdl.symbolTable.BindingEntry;
import org.apache.axis.wsdl.symbolTable.CollectionTE;
@@ -527,12 +528,34 @@
* the soap:body namespace, if it exists, otherwise it is "".
*
* @param bindingOper the operation
+ * @param bEntry the symbol table binding entry
+ * @param symbolTable SymbolTable
* @return the operation QName
*/
- public static QName getOperationQName(BindingOperation bindingOper) {
+ public static QName getOperationQName(BindingOperation bindingOper,
+ BindingEntry bEntry,
+ SymbolTable symbolTable) {
+
Operation operation = bindingOper.getOperation();
String operationName = operation.getName();
- QName elementQName = null;
+
+ // For the wrapped case, use the part element's name...which is
+ // is the same as the operation name, but may have a different
+ // namespace ?
+ // example:
+ // <part name="paramters" element="ns:myelem">
+ if (bEntry.getBindingStyle() == Style.DOCUMENT &&
+ symbolTable.isWrapped()) {
+ Input input = operation.getInput();
+ if (input != null) {
+ Map parts = input.getMessage().getParts();
+ if (parts != null && !parts.isEmpty()) {
+ Iterator i = parts.values().iterator();
+ Part p = (Part) i.next();
+ return p.getElementName();
+ }
+ }
+ }
String ns = null;
@@ -559,32 +582,8 @@
if (ns == null) {
ns = "";
}
-
- // Get the qname from the first message part, if it is an element
- // example:
- // <part name="paramters" element="ns:myelem">
- Input input = operation.getInput();
- if (input != null) {
- Map parts = input.getMessage().getParts();
- if (parts != null && !parts.isEmpty()) {
- Iterator i = parts.values().iterator();
- Part p = (Part) i.next();
- elementQName = p.getElementName();
- }
- }
- // NOTE: it is possible for someone to define a part as an element
- // while using rpc/encoded, which is wrong and we might want to catch it
- // here.
-
- // If we didn't find an element declared in the part (assume it's a
- // type), so the QName will be the operation name with the
- // namespace (if any) from the binding soap:body tag.
- if (elementQName == null) {
- elementQName = new QName(ns, operationName);
- }
-
- return elementQName;
+ return new QName(ns, operationName);
}
/**