gdaniels 02/03/08 12:04:46 Modified: java/src/org/apache/axis/description AttributeDesc.java TypeDesc.java java/src/org/apache/axis/encoding/ser BeanSerializer.java java/src/org/apache/axis/message RPCElement.java java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java java/test/wsdl/wrapped CityBBBBindingImpl.java CityBBBTestCase.java Log: Fix a couple of wrapped-style bugs. 1) RPCElement should treat "wrapped" as isRPC when serializing, so we write the wrapper element ("wrapped", get it? :)) 2) DeployWriter wasn't writing the "style='wrapped'" attribute into the deploy.wsdd Also a little more work on the AttributeDesc/TypeDesc stuff, and emit more reasonable schema from BeanSerializer Revision Changes Path 1.2 +12 -0 xml-axis/java/src/org/apache/axis/description/AttributeDesc.java Index: AttributeDesc.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/AttributeDesc.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AttributeDesc.java 8 Mar 2002 05:04:53 -0000 1.1 +++ AttributeDesc.java 8 Mar 2002 20:04:45 -0000 1.2 @@ -54,6 +54,8 @@ */ package org.apache.axis.description; +import javax.xml.rpc.namespace.QName; + /** * An AttributeDesc is a FieldDesc for an Java field mapping to an * XML attribute @@ -63,5 +65,15 @@ public class AttributeDesc extends FieldDesc { public AttributeDesc() { super(false); + } + + /** + * Set the XML attribute's name, without giving it a namespace. + * + * This is the most common usage for AttributeDescs. + */ + public void setAttributeName(String name) + { + setXmlName(new QName("", name)); } } 1.4 +5 -1 xml-axis/java/src/org/apache/axis/description/TypeDesc.java Index: TypeDesc.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/TypeDesc.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TypeDesc.java 8 Mar 2002 14:12:13 -0000 1.3 +++ TypeDesc.java 8 Mar 2002 20:04:45 -0000 1.4 @@ -177,7 +177,11 @@ FieldDesc desc = (FieldDesc)fieldNameMap.get(fieldName); if (desc == null || desc.isElement()) return null; - return desc.getXmlName(); + QName ret = desc.getXmlName(); + if (ret == null) { + ret = new QName("", fieldName); + } + return ret; } /** 1.16 +16 -9 xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java Index: BeanSerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- BeanSerializer.java 8 Mar 2002 14:12:13 -0000 1.15 +++ BeanSerializer.java 8 Mar 2002 20:04:45 -0000 1.16 @@ -380,27 +380,34 @@ Vector fields = clsRep.getFields(); for (int i=0; i < fields.size(); i++) { FieldRep field = (FieldRep) fields.elementAt(i); - + + String name = field.getName(); + if (typeDesc != null) { FieldDesc fieldDesc = typeDesc.getFieldByName(field.getName()); if (fieldDesc != null) { if (!fieldDesc.isElement()) { - // !!! Need to get the QName right, and can only - // pass strings??? - writeAttribute(types, field.getName(), + QName attrName = typeDesc.getAttributeNameForField( + field.getName()); + writeAttribute(types, attrName.getLocalPart(), field.getType(), complexType); } else { - // MEN WORKING!!!! + QName xmlName = typeDesc.getElementNameForField( + field.getName()); + if (xmlName != null) { + if (xmlName.getNamespaceURI() != "") { + // Throw an exception until we can emit + // schema for this correctly? + } + name = xmlName.getLocalPart(); + } } return true; } } - writeField(types, field.getName(), - field.getType(), - field.getIndexed(), - all); + writeField(types, name, field.getType(), field.getIndexed(), all); } // done return true; 1.42 +1 -1 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.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- RPCElement.java 8 Mar 2002 19:29:43 -0000 1.41 +++ RPCElement.java 8 Mar 2002 20:04:45 -0000 1.42 @@ -246,7 +246,7 @@ boolean isRPC = true; if (msgContext != null && (msgContext.getOperationStyle() != ServiceDesc.STYLE_RPC) && - ! msgContext.isPropertyTrue("wrapped")) { + (msgContext.getOperationStyle() != ServiceDesc.STYLE_WRAPPED)) { isRPC = false; } 1.25 +13 -3 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.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- JavaDeployWriter.java 6 Mar 2002 18:50:51 -0000 1.24 +++ JavaDeployWriter.java 8 Mar 2002 20:04:45 -0000 1.25 @@ -187,7 +187,7 @@ if (type.getName().endsWith("[]")) { pw.println(" serializer=\"org.apache.axis.encoding.ser.ArraySerializerFactory\""); pw.println(" deserializer=\"org.apache.axis.encoding.ser.ArrayDeserializerFactory\""); - } else if (type.getNode() != null && + } else if (type.getNode() != null && SchemaUtils.getEnumerationBaseAndValues( type.getNode(), emitter.getSymbolTable()) != null) { pw.println(" serializer=\"org.apache.axis.encoding.ser.EnumSerializerFactory\""); @@ -206,7 +206,7 @@ pw.println(" encodingStyle=\"\""); else pw.println(" encodingStyle=\"" + Constants.URI_CURRENT_SOAP_ENC + "\""); - + pw.println(" />"); } } @@ -223,9 +223,19 @@ boolean hasLiteral = bEntry.hasLiteral(); String prefix = Constants.NSPREFIX_WSDD_JAVA; + String styleStr = ""; + + if (hasLiteral) { + styleStr = " style=\"document\""; + } + + if (symbolTable.isWrapped()) { + styleStr = " style=\"wrapped\""; + } + pw.println(" <service name=\"" + serviceName + "\" provider=\"" + prefix +":RPC" - + "\"" + (hasLiteral ? " style=\"document\"" : "") + ">"); + + "\"" + styleStr + ">"); writeDeployBinding(binding); writeDeployTypes(hasLiteral); 1.2 +5 -5 xml-axis/java/test/wsdl/wrapped/CityBBBBindingImpl.java Index: CityBBBBindingImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/wrapped/CityBBBBindingImpl.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- CityBBBBindingImpl.java 8 Mar 2002 17:22:13 -0000 1.1 +++ CityBBBBindingImpl.java 8 Mar 2002 20:04:45 -0000 1.2 @@ -8,10 +8,11 @@ package test.wsdl.wrapped; public class CityBBBBindingImpl implements CityBBBBinding { - public GetAttractionResponse getAttraction(GetAttraction getAttraction) throws java.rmi.RemoteException { - GetAttractionResponse response = new GetAttractionResponse(); + public static final String OID_STRING = "Attraction@cityCF::1028:1028"; + + public Attraction getAttraction(String attname) throws java.rmi.RemoteException { Attraction attraction = new Attraction(); - attraction.setOID("Attraction@cityCF::1028:1028"); + attraction.setOID(OID_STRING); attraction.setFacts("New Orleans at Christmastime is a city with the best food in the world, the best music" + " in the world, international shopping, the French Quarter -- America's most " + " romantic neighborhood, and the friendliest, most big-hearted people you'd ever " + @@ -40,7 +41,6 @@ " a proof for the existence of heaven. And as every New Orleanian knows, Heaven is " + " presided over by a French-Italian-Creole chef with a gumbo-pot belly and a laugh " + " that fills that human heart with gladness. Merry Christmas to ya, New Orleans style."); - response.set_return(attraction); - return response; + return attraction; } } 1.2 +3 -5 xml-axis/java/test/wsdl/wrapped/CityBBBTestCase.java Index: CityBBBTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/wrapped/CityBBBTestCase.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- CityBBBTestCase.java 8 Mar 2002 17:22:13 -0000 1.1 +++ CityBBBTestCase.java 8 Mar 2002 20:04:45 -0000 1.2 @@ -22,11 +22,9 @@ assertTrue("binding is null", binding != null); try { - GetAttractionResponse value = null; - GetAttraction request = new GetAttraction(); - request.setAttname("Christmas"); - value = binding.getAttraction(request); - System.out.println("OID:" + value.get_return().getOID()); + Attraction value = binding.getAttraction("Christmas"); + assertEquals("OID value was wrong", value.getOID(), + CityBBBBindingImpl.OID_STRING); } catch (java.rmi.RemoteException re) { throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re);