You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/08/19 18:02:57 UTC
svn commit: r233496 - in /beehive/trunk:
system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/
system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex3/
system-controls/test/src/webservice/tests...
Author: ekoneil
Date: Fri Aug 19 09:02:42 2005
New Revision: 233496
URL: http://svn.apache.org/viewcvs?rev=233496&view=rev
Log:
Two service control bug fixes:
BEEHIVE-703
BEEHIVE-705
Generally, this patch is focused on fixing awareness of the value of elementFormDefault and namespaces.
Contribution from Chad Schoettger.
BB: self
DRT: WSM / service control pass
Modified:
beehive/trunk/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ServiceControlImpl.jcs
beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex3/RpcLiteralSample.java
beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/RpcLitWebServiceTest.java
beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/SoapMarshallingRpcLitArrayTypesTest.java
beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/AxisHook.java
beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/registration/AxisTypeRegistrar.java
beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/util/encoding/XmlBeanDeserializer.java
beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/wsdl/XmlBeanWSDLProcessor.java
Modified: beehive/trunk/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ServiceControlImpl.jcs
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ServiceControlImpl.jcs?rev=233496&r1=233495&r2=233496&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ServiceControlImpl.jcs (original)
+++ beehive/trunk/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ServiceControlImpl.jcs Fri Aug 19 09:02:42 2005
@@ -90,6 +90,7 @@
private String _username;
private String _password;
private int _timeout = TIMOUT_DEFAULT;
+ private Map<String, Boolean> _elementFormQualifiedMap;
private transient TypeRegistrar _registrar;
private transient Service _service;
@@ -515,7 +516,8 @@
_beehiveTypeMetadata.getSoapBinding().getUse());
final QName headerParamQName;
- if(omStyle == SOAPBinding.Style.RPC) {
+ Boolean isElementFormQualified = _elementFormQualifiedMap.get(nxtArgMetaData.getWpTargetNamespace());
+ if (isElementFormQualified == null || !isElementFormQualified) {
headerParamQName = new QName(nxtArgMetaData.getWpName());
} else {
headerParamQName = new QName(nxtArgMetaData.getWpTargetNamespace(), nxtArgMetaData.getWpName());
@@ -542,7 +544,7 @@
// register the return type
final Class javaTypeFromClass = method.getReturnType();
if(!wmm.isOneWay() && javaTypeFromClass != void.class) {
- QName resultsRegisteredTypeQName = _registrar.registerType(
+ QName resultsRegisteredTypeQName = getRegistrar().registerType(
javaTypeFromClass,
wmm.getXmlReturnType(),
_beehiveTypeMetadata.getSoapBinding().getStyle(),
@@ -550,7 +552,7 @@
call.setReturnType(resultsRegisteredTypeQName, javaTypeFromClass);
} else {
- call.setReturnType(_registrar.getVoidType());
+ call.setReturnType(getRegistrar().getVoidType());
}
// AXIS dependecy... this is needed for the Handlers
@@ -610,6 +612,7 @@
try {
_beehiveTypeMetadata = wsdlProcessor.getObjectModel();
+ _elementFormQualifiedMap = wsdlProcessor.genElementFormQualifiedMap();
} catch(Exception e) {
throw new ControlException(e.getMessage(), e);
}
@@ -778,7 +781,7 @@
if (_registrar == null) {
BindingLookupService lookupService = new SystemTypeLookupService();
TypeMapping tm = getService(_serviceName).getTypeMappingRegistry().getDefaultTypeMapping();
- _registrar = new AxisTypeRegistrar((org.apache.axis.encoding.TypeMapping)tm, lookupService);
+ _registrar = new AxisTypeRegistrar(tm, lookupService);
}
return _registrar;
}
Modified: beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex3/RpcLiteralSample.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex3/RpcLiteralSample.java?rev=233496&r1=233495&r2=233496&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex3/RpcLiteralSample.java (original)
+++ beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex3/RpcLiteralSample.java Fri Aug 19 09:02:42 2005
@@ -75,7 +75,7 @@
Phone phoneNumber = new Phone(425, "555", "1234");
Address address = new Address(10230, "NE Points Drive", "Kirkland", state, 98008, phoneNumber);
addressHolder.value = address;
- return 0;
+ return 77;
}
/**
@@ -90,7 +90,7 @@
Phone phoneNumber = new Phone(714, "555", "1234");
Address address = new Address(1, "some street", "Los Angeles", state, 90210, phoneNumber);
addressHolder.value = address;
- return 0;
+ return -1;
}
/**
@@ -103,7 +103,7 @@
public int changeAddressInBody(@WebParam(name="inout_param_body", mode=WebParam.Mode.INOUT) AddressHolder addressHolder) {
Address address = addressHolder.value;
address.setZip(address.getZip() + 1);
- return 0;
+ return 3;
}
/**
@@ -116,7 +116,7 @@
public int changeAddressInHeader(@WebParam(name="inout_param_header", header=true, mode=WebParam.Mode.INOUT) AddressHolder addressHolder) {
Address address = addressHolder.value;
address.setZip(address.getZip() + 1);
- return 0;
+ return 4;
}
/**
Modified: beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/RpcLitWebServiceTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/RpcLitWebServiceTest.java?rev=233496&r1=233495&r2=233496&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/RpcLitWebServiceTest.java (original)
+++ beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/RpcLitWebServiceTest.java Fri Aug 19 09:02:42 2005
@@ -33,7 +33,7 @@
@Control
public RpcLiteralSampleService client;
- /*
+
public void testReturnAddressFromBody() throws Exception {
web.complex3.StateType state = web.complex3.StateType.Factory.newInstance();
@@ -65,8 +65,8 @@
assertEquals("bronco", phoneResult.getExchange());
assertTrue(phoneResult.isNilNumber());
}
- */
-/*
+
+
public void testReturnAddressFromHeader() throws Exception {
web.complex3.StateType state = web.complex3.StateType.Factory.newInstance();
state.setState("CA");
@@ -100,14 +100,14 @@
public void testCreateAddressInBody() throws Exception {
web.complex3.Address addr = web.complex3.Address.Factory.newInstance();
- GenericHolder gHolder = new GenericHolder(addr);
+ GenericHolder<web.complex3.Address> gHolder = new GenericHolder<web.complex3.Address>(addr);
IntHolder iHolder = new IntHolder();
client.createAddressInBody(gHolder, iHolder);
assertEquals(77, iHolder.value);
- addr = (web.complex3.Address) gHolder.value;
+ addr = gHolder.value;
assertEquals("PA", addr.getState().getState());
assertEquals(425, addr.getPhoneNumber().getAreaCode());
assertEquals("555", addr.getPhoneNumber().getExchange());
@@ -120,14 +120,14 @@
public void testCreateAddressInHeader() throws Exception {
web.complex3.Address addr = web.complex3.Address.Factory.newInstance();
- GenericHolder gHolder = new GenericHolder(addr);
+ GenericHolder<web.complex3.Address> gHolder = new GenericHolder<web.complex3.Address>(addr);
IntHolder iHolder = new IntHolder();
client.createAddressInHeader(gHolder, iHolder);
assertEquals(-1, iHolder.value);
- addr = (web.complex3.Address) gHolder.value;
+ addr = gHolder.value;
assertEquals("CA", addr.getState().getState());
assertEquals(714, addr.getPhoneNumber().getAreaCode());
assertEquals("555", addr.getPhoneNumber().getExchange());
@@ -143,11 +143,11 @@
addr.setCity("Boulder");
addr.setZip(66666);
- GenericHolder gHolder = new GenericHolder(addr);
+ GenericHolder<web.complex3.Address> gHolder = new GenericHolder<web.complex3.Address>(addr);
int result = client.changeAddressInBody(gHolder);
assertEquals(3, result);
- web.complex3.Address returnAddr = (web.complex3.Address) gHolder.value;
+ web.complex3.Address returnAddr = gHolder.value;
assertEquals(addr.getCity(), returnAddr.getCity());
assertEquals(addr.getZip() + 1, returnAddr.getZip());
}
@@ -157,15 +157,16 @@
addr.setCity("Louisville");
addr.setZip(99999);
- GenericHolder gHolder = new GenericHolder(addr);
+ GenericHolder<web.complex3.Address> gHolder = new GenericHolder<web.complex3.Address>(addr);
int result = client.changeAddressInHeader(gHolder);
assertEquals(4, result);
- web.complex3.Address returnAddr = (web.complex3.Address) gHolder.value;
+ web.complex3.Address returnAddr = gHolder.value;
assertEquals(addr.getCity(), returnAddr.getCity());
assertEquals(addr.getZip() + 1, returnAddr.getZip());
}
+/* Not working...
public void testThrowAddressException() throws Exception {
try {
@@ -177,10 +178,6 @@
fail("Expected AddressException to be thrown!");
}
*/
-
- public void testDummy() {
- /* note, all tests are disabled here until service control bugs are fixed to handle these use cases */
- }
public void setUp() throws Exception {
try {
Modified: beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/SoapMarshallingRpcLitArrayTypesTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/SoapMarshallingRpcLitArrayTypesTest.java?rev=233496&r1=233495&r2=233496&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/SoapMarshallingRpcLitArrayTypesTest.java (original)
+++ beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/SoapMarshallingRpcLitArrayTypesTest.java Fri Aug 19 09:02:42 2005
@@ -22,9 +22,12 @@
import org.apache.beehive.controls.system.webservice.units.utils.ControlTestCase;
import test.SoapMarshallingRpcLitArrayTypesService;
+import javax.xml.namespace.QName;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
public class SoapMarshallingRpcLitArrayTypesTest
extends ControlTestCase {
@@ -65,9 +68,9 @@
public void testEchoByteArray() throws Exception {
soapMarshalling.ArrayOfXsdByte ar = soapMarshalling.ArrayOfXsdByte.Factory.newInstance();
- ar.addItem(new Byte(Byte.MAX_VALUE));
- ar.addItem(new Byte(Byte.MIN_VALUE));
- ar.addItem(new Byte(Byte.MAX_VALUE));
+ ar.addItem(Byte.MAX_VALUE);
+ ar.addItem(Byte.MIN_VALUE);
+ ar.addItem(Byte.MAX_VALUE);
soapMarshalling.ArrayOfXsdByte result = client.echoByte(ar);
byte[] array = result.getItemArray();
@@ -274,21 +277,20 @@
// assertEquals(0, cal.compareTo(cResult[1]));
// }
-// public void testEchoCalendarArray() throws Exception {
-// Calendar cal = new GregorianCalendar();
-// cal.setTimeInMillis(123456789);
-//
-// soapMarshalling.ArrayOfXsdDateTime ar = soapMarshalling.ArrayOfXsdDateTime.Factory.newInstance();
-// ar.addItem(cal);
-// ar.addItem(cal);
-//
-// soapMarshalling.ArrayOfXsdDateTime result = client.echoCalendar(ar);
-// Calendar[] cResult = result.getItemArray();
-// assertEquals(2, cResult.length);
-// assertEquals(0, cal.compareTo(cResult[0]));
-// assertEquals(0, cal.compareTo(cResult[1]));
-// }
-
+ public void testEchoCalendarArray() throws Exception {
+ Calendar cal = new GregorianCalendar();
+ cal.setTimeInMillis(123456789);
+
+ soapMarshalling.ArrayOfXsdDateTime ar = soapMarshalling.ArrayOfXsdDateTime.Factory.newInstance();
+ ar.addItem(cal);
+ ar.addItem(cal);
+
+ soapMarshalling.ArrayOfXsdDateTime result = client.echoCalendar(ar);
+ Calendar[] cResult = result.getItemArray();
+ assertEquals(2, cResult.length);
+ assertEquals(0, cal.compareTo(cResult[0]));
+ assertEquals(0, cal.compareTo(cResult[1]));
+ }
// public void testEchoQNameArray() throws Exception {
// soapMarshalling.ArrayOfXsdQName ar = soapMarshalling.ArrayOfXsdQName.Factory.newInstance();
Modified: beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/AxisHook.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/AxisHook.java?rev=233496&r1=233495&r2=233496&view=diff
==============================================================================
--- beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/AxisHook.java (original)
+++ beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/AxisHook.java Fri Aug 19 09:02:42 2005
@@ -161,8 +161,7 @@
od.setReturnClass(returnType);
}
- if (wsm.getSoapBinding().getStyle() == SOAPBinding.Style.RPC
- && returnType.isArray() && JavaUtils.isBasic(returnType.getComponentType())) {
+ if (wsm.getSoapBinding().getStyle() == SOAPBinding.Style.RPC && returnType.isArray()) {
od.getReturnParamDesc().setItemQName(new QName("","item"));
}
}
Modified: beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/registration/AxisTypeRegistrar.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/registration/AxisTypeRegistrar.java?rev=233496&r1=233495&r2=233496&view=diff
==============================================================================
--- beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/registration/AxisTypeRegistrar.java (original)
+++ beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/registration/AxisTypeRegistrar.java Fri Aug 19 09:02:42 2005
@@ -25,13 +25,13 @@
import java.util.Map;
import javax.jws.soap.SOAPBinding;
import javax.xml.namespace.QName;
+import javax.xml.rpc.encoding.TypeMapping;
import org.apache.axis.description.ElementDesc;
import org.apache.axis.description.FieldDesc;
import org.apache.axis.description.TypeDesc;
import org.apache.axis.encoding.DeserializerFactory;
import org.apache.axis.encoding.SerializerFactory;
-import org.apache.axis.encoding.TypeMapping;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.encoding.ser.ArrayDeserializerFactory;
import org.apache.axis.encoding.ser.ArraySerializerFactory;
Modified: beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/util/encoding/XmlBeanDeserializer.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/util/encoding/XmlBeanDeserializer.java?rev=233496&r1=233495&r2=233496&view=diff
==============================================================================
--- beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/util/encoding/XmlBeanDeserializer.java (original)
+++ beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/util/encoding/XmlBeanDeserializer.java Fri Aug 19 09:02:42 2005
@@ -1,9 +1,9 @@
/*
* XmlBeanDeserializer.java
- *
+ *
* Copyright 2001-2004 The Apache Software Foundation.
- *
- *
+ *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
@@ -15,71 +15,104 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- *
- *
+ *
+ *
* Original author: Jonathan Colwell
*/
package org.apache.beehive.wsm.axis.util.encoding;
-import javax.xml.namespace.QName;
-
import org.apache.axis.encoding.DeserializationContext;
import org.apache.axis.encoding.DeserializerImpl;
import org.apache.axis.message.MessageElement;
-import org.apache.xmlbeans.QNameSet;
+import org.apache.xmlbeans.SchemaProperty;
import org.apache.xmlbeans.SchemaType;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
+import javax.xml.namespace.QName;
+import java.util.HashMap;
+
/**
- * ****************************************************************************
- *
- * @author Jonathan Colwell
+ * Custom deserializer for XMLBeans. AXIS specific, used by WSM module and the service control.
*/
-public class XmlBeanDeserializer
- extends DeserializerImpl {
-
+public class XmlBeanDeserializer extends DeserializerImpl
+{
private Class mJavaType;
private QName mXmlType;
- public XmlBeanDeserializer(Class javaType, QName xmlType) {
+ /**
+ * Construct a new XmlBeanDeserializer.
+ * @param javaType Class to map xml to.
+ * @param xmlType XML type to deserialize.
+ */
+ public XmlBeanDeserializer(Class javaType, QName xmlType)
+ {
mJavaType = javaType;
+ mXmlType = xmlType;
}
+ /**
+ * Overrides AXIS DeserializerImpl method.
+ *
+ * @param namespace
+ * @param localName
+ * @param prefix
+ * @param attributes
+ * @param context
+ * @throws SAXException
+ */
public void onStartElement(String namespace,
String localName,
String prefix,
Attributes attributes,
DeserializationContext context)
- throws SAXException {
+ throws SAXException
+ {
try {
+
MessageElement me = context.getCurElement();
+
+ SchemaType st = (SchemaType) mJavaType.getField("type").get(null);
XmlOptions opts = new XmlOptions().setLoadReplaceDocumentElement(null);
- XmlObject xObj = XmlObject.Factory.parse(me, opts);
- SchemaType st = xObj.schemaType();
- SchemaType jt = (SchemaType)mJavaType.getField("type").get(null);
- XmlObject converted = xObj.changeType(jt);
- if(converted != null) {
- setValue(converted);
- }
- else {
- XmlObject[] children = xObj.selectChildren(QNameSet.ALL);
+ opts.setDocumentType(st);
- /* review: what does this do? st is never used. */
- for(XmlObject kid : children) {
- st = kid.schemaType();
- converted = xObj.changeType(jt);
- if(converted != null) {
- setValue(converted);
- break;
- }
- }
+ // axis always returns element form qualified responses, this causes
+ // problems if the WSDL did not specify elementFormDefault="qualified"
+ // if this mis-match is detected, fix it with the following block of code
+ if (!isElementFormQualified(st)) {
+ HashMap<String, String> substituteNamespaces = new HashMap<String, String>();
+ substituteNamespaces.put(mXmlType.getNamespaceURI(), "");
+ opts.setLoadSubstituteNamespaces(substituteNamespaces);
}
- }
- catch(Exception xe) {
+
+ XmlObject xObj = XmlObject.Factory.parse(me, opts);
+ assert xObj.validate() : "XmlBeanDeserializer: Could not map to xml bean: " + me.toString();
+
+ setValue(xObj);
+
+ } catch (Exception xe) {
throw new SAXException(xe);
}
}
-}
\ No newline at end of file
+
+ /**
+ * Check if the elementFormDefault was set to 'qualified' for the schematype. If elementFormDefault
+ * has been set to qualified, each SchemaProperty of the SchemaType will have a namespace URI included
+ * as part of its name.
+ * @param schemaType SchemaType to check.
+ * @return true if elementFormDefault was set to qualified.
+ */
+ private boolean isElementFormQualified(SchemaType schemaType)
+ {
+ SchemaProperty[] props = schemaType.getElementProperties();
+ if (props != null && props.length > 0) {
+ String propNamespace = props[0].getName().getNamespaceURI();
+ if (propNamespace != null && !"".equals(propNamespace)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
Modified: beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/wsdl/XmlBeanWSDLProcessor.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/wsdl/XmlBeanWSDLProcessor.java?rev=233496&r1=233495&r2=233496&view=diff
==============================================================================
--- beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/wsdl/XmlBeanWSDLProcessor.java (original)
+++ beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/wsdl/XmlBeanWSDLProcessor.java Fri Aug 19 09:02:42 2005
@@ -88,6 +88,28 @@
return new QName(services[0].getName());
}
+ /**
+ * Create a map of schema namespaces -> is element form qualified. Each key is a schema
+ * namespace URI, the value for each key is true if the schema sets 'elementFormDefault=qualified',
+ * false if not set or set to 'unqualified'.
+ * @return Map of namespace -> is element form qualified.
+ */
+ public Map<String, Boolean> genElementFormQualifiedMap()
+ {
+ HashMap<String, Boolean> map = new HashMap<String, Boolean>();
+
+ TDefinitions defs = defDoc.getDefinitions();
+ TTypes types = defs.sizeOfTypesArray() > 0 ? defs.getTypesArray(0) : null;
+ if (types != null) {
+ Schema[] schemas = selectChildren(types, Schema.class);
+ for(int i = 0; i < schemas.length; i++) {
+ map.put(schemas[i].getTargetNamespace(),
+ "qualified".equalsIgnoreCase(schemas[i].getElementFormDefault().toString()));
+ }
+ }
+ return map;
+ }
+
public BeehiveWsTypeMetadata getObjectModel() throws Exception {
BeehiveWsTypeMetadata wsm = new DefaultTypeMetadataImpl();
@@ -517,12 +539,13 @@
else if(el.isSetMinOccurs()) {
String minOccur = el.getMinOccurs().toString();
// If minoccur is other than 0, or 1 then it is array also
- if("0" != minOccur && "1" != minOccur)
+ if(!"0".equals(minOccur) && !"1".equals(minOccur)) {
isArray = true;
+ }
}
- String name = null;
- QName xmlType = null;
+ String name;
+ QName xmlType;
if(el.isSetName() && el.isSetType()) {
name = el.getName();
xmlType = el.getType();
@@ -532,8 +555,8 @@
name = ref.getLocalPart();
xmlType = ref;
}
- else
- throw new RuntimeException("invalid element: " + el);
+ else throw new RuntimeException("invalid element: " + el);
+
Class javaType = findClassForQname(xmlType);
if(isArray) {
// create an array of the type, then get its type.
@@ -560,8 +583,7 @@
private void processTBindingOperation(TBinding tBind,
BeehiveWsTypeMetadata wsm,
- Map<String, BeehiveWsMethodMetadata> methodMap)
- throws IllegalAccessException, NoSuchFieldException {
+ Map<String, BeehiveWsMethodMetadata> methodMap) {
TBindingOperation[] tBops = tBind.getOperationArray();
for(TBindingOperation tBop : tBops) {
@@ -616,8 +638,7 @@
}
}
- public static org.xmlsoap.schemas.wsdl.soap.TOperation[] getSOAPOperations(TBindingOperation bo)
- throws IllegalAccessException, NoSuchFieldException {
+ public static org.xmlsoap.schemas.wsdl.soap.TOperation[] getSOAPOperations(TBindingOperation bo) {
return selectChildren(bo, org.xmlsoap.schemas.wsdl.soap.TOperation.class);
}
@@ -651,17 +672,24 @@
return res;
}
- public static org.xmlsoap.schemas.wsdl.soap.TAddress[] getSOAPAddress(TPort port)
- throws IllegalAccessException, NoSuchFieldException {
+ public static org.xmlsoap.schemas.wsdl.soap.TAddress[] getSOAPAddress(TPort port) {
return selectChildren(port, org.xmlsoap.schemas.wsdl.soap.TAddress.class);
}
- private static <T extends XmlObject> T[] selectChildren(XmlObject parent, Class<T> childClass)
- throws IllegalAccessException, NoSuchFieldException {
+ private static <T extends XmlObject> T[] selectChildren(XmlObject parent, Class<T> childClass) {
// retrieve the SchemaType from the static type field
if(parent == null)
return null;
- SchemaType st = (SchemaType)childClass.getField("type").get(null);
+
+ SchemaType st = null;
+ try {
+ st = (SchemaType)childClass.getField("type").get(null);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException(e);
+ } catch (NoSuchFieldException e) {
+ throw new RuntimeException(e);
+ }
+
SchemaType originalType = null;
QName element;
if(st.isAnonymousType()) {