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 de...@apache.org on 2007/02/28 05:56:34 UTC
svn commit: r512604 - in /webservices/axis2/trunk/java/modules:
java2wsdl/src/org/apache/ws/java2wsdl/ kernel/conf/
kernel/src/org/apache/axis2/deployment/
kernel/src/org/apache/axis2/deployment/util/
kernel/src/org/apache/axis2/description/ kernel/src...
Author: deepal
Date: Tue Feb 27 20:56:33 2007
New Revision: 512604
URL: http://svn.apache.org/viewvc?view=rev&rev=512604
Log:
fixing AXIS2-1981
- Now we generate wsdl for all the cases no matter what the MR is , but if the MR is not RPC then we generate schema with xs:Any
Modified:
webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java
webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java
Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java?view=diff&rev=512604&r1=512603&r2=512604
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java Tue Feb 27 20:56:33 2007
@@ -70,6 +70,9 @@
private NamespaceGenerator nsGen = null;
private String targetNamespace = null;
+ //to keep the list of operation which uses MR other than RPC MR
+ private ArrayList nonRpcMethods = new ArrayList();
+
public NamespaceGenerator getNsGen() throws Exception {
if ( nsGen == null ) {
@@ -220,7 +223,12 @@
parameterName = (parameterNames != null && parameterNames[j] != null) ? parameterNames[j] : getSimpleName(methodParameter);
}
JClass paraType = methodParameter.getType();
- generateSchemaForType(sequence, paraType,parameterName);
+ if(nonRpcMethods.contains(getSimpleName(jMethod))){
+ generateSchemaForType(sequence, null,getSimpleName(jMethod));
+ break;
+ } else {
+ generateSchemaForType(sequence, paraType,parameterName);
+ }
}
// for its return type
JClass returnType = jMethod.getReturnType();
@@ -230,16 +238,19 @@
sequence = new XmlSchemaSequence();
methodSchemaType.setParticle(sequence);
JAnnotation returnAnnon= jMethod.getAnnotation(AnnotationConstants.WEB_RESULT);
+ String returnName ="return";
if(returnAnnon!=null){
- String returnName= returnAnnon.getValue(AnnotationConstants.NAME).asString();
+ returnName= returnAnnon.getValue(AnnotationConstants.NAME).asString();
if(returnName!=null&&!"".equals(returnName)){
- generateSchemaForType(sequence, returnType, returnName);
- } else{
- generateSchemaForType(sequence, returnType, "return");
+ returnName ="return";
}
- } else{
- generateSchemaForType(sequence, returnType, "return");
}
+ if(nonRpcMethods.contains(getSimpleName(jMethod))){
+ generateSchemaForType(sequence, null, returnName);
+ } else {
+ generateSchemaForType(sequence, returnType, returnName);
+ }
+
}
}
} else {
@@ -366,12 +377,20 @@
}
private QName generateSchemaForType(XmlSchemaSequence sequence, JClass type, String partName) throws Exception {
- boolean isArrayType = type.isArrayType();
+
+ boolean isArrayType = false;
+ if(type!=null){
+ isArrayType = type.isArrayType();
+ }
if (isArrayType) {
type = type.getArrayComponentType();
}
-
- String classTypeName = getQualifiedName(type);
+ String classTypeName;
+ if(type==null){
+ classTypeName = "java.lang.Object";
+ } else {
+ classTypeName = getQualifiedName(type);
+ }
if (isArrayType && "byte".equals(classTypeName)) {
classTypeName = "base64Binary";
isArrayType = false;
@@ -608,7 +627,9 @@
protected String getQualifiedName(JPackage packagez){
return packagez.getQualifiedName();
}
-
-
-
+ public void setNonRpcMethods(ArrayList nonRpcMethods) {
+ if(nonRpcMethods!=null){
+ this.nonRpcMethods = nonRpcMethods;
+ }
+ }
}
Modified: webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml?view=diff&rev=512604&r1=512603&r2=512604
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml (original)
+++ webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml Tue Feb 27 20:56:33 2007
@@ -87,11 +87,15 @@
<!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
<!--any operation -->
<!--Note : You can ovride this for particular service by adding the same element with your requirement-->
- <messageReceivers>
+ <messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+ <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-only"
+ class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+ <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-out"
+ class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</messageReceivers>
<!-- ================================================= -->
@@ -221,17 +225,17 @@
<!--<moduleConfig name="addressing">-->
<!--<parameter name="addressingPara" locked="false">N/A</parameter>-->
<!--</moduleConfig>-->
-
- <!-- ================================================= -->
- <!-- Clustering -->
- <!-- ================================================= -->
- <!-- Configure and uncomment following for preparing Axis2 to a clustered environment -->
- <!--
- <cluster class="org.apache.axis2.cluster.tribes.TribesClusterManager">
- <parameter name="param1" locked="false">value1</parameter>
- </cluster>
- -->
-
+
+ <!-- ================================================= -->
+ <!-- Clustering -->
+ <!-- ================================================= -->
+ <!-- Configure and uncomment following for preparing Axis2 to a clustered environment -->
+ <!--
+ <cluster class="org.apache.axis2.cluster.tribes.TribesClusterManager">
+ <parameter name="param1" locked="false">value1</parameter>
+ </cluster>
+ -->
+
<!-- ================================================= -->
<!-- Phases -->
<!-- ================================================= -->
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java?view=diff&rev=512604&r1=512603&r2=512604
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java Tue Feb 27 20:56:33 2007
@@ -106,8 +106,7 @@
* @param service :
* This can be null <code>AxisService</code>
*/
- protected MessageReceiver loadDefaultMessageReceiver(String mepURL,
- AxisService service) {
+ protected MessageReceiver loadDefaultMessageReceiver(String mepURL, AxisService service) {
MessageReceiver messageReceiver;
if (mepURL == null) {
mepURL = WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT;
@@ -116,7 +115,7 @@
messageReceiver = service.getMessageReceiver(mepURL);
if (messageReceiver != null) {
return messageReceiver;
- }
+ }
}
return axisConfig.getMessageReceiver(mepURL);
}
@@ -248,7 +247,6 @@
/**
* Processes the message builders specified in axis2.xml or services.xml.
*
- * @param messageBuildersElement
*/
protected HashMap processMessageFormatters(OMElement messageFormattersElement)
throws DeploymentException {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java?view=diff&rev=512604&r1=512603&r2=512604
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java Tue Feb 27 20:56:33 2007
@@ -306,20 +306,19 @@
if (objectSupplierValue != null) {
loadObjectSupplierClass(objectSupplierValue);
}
+ // Set the default message receiver for the operations that were
+ // not listed in the services.xml
+ setDefaultMessageReceivers();
if (!service.isUseUserWSDL()) {
// Generating schema for the service if the impl class is Java
if (!service.isWsdlFound()) {
//trying to generate WSDL for the service using JAM and Java reflection
try {
if (generateWsdl(service)) {
- Utils.fillAxisService(service, axisConfig, excludeops);
+ Utils.fillAxisService(service, axisConfig, excludeops,null);
} else {
ArrayList nonRpcOperations = getNonPRCMethods(service);
- for (int i = 0; i < excludeops.size(); i++) {
- String opName = (String) excludeops.get(i);
- nonRpcOperations.add(opName);
- Utils.fillAxisService(service, axisConfig, nonRpcOperations);
- }
+ Utils.fillAxisService(service, axisConfig, excludeops, nonRpcOperations);
}
} catch (Exception e) {
throw new DeploymentException(
@@ -340,16 +339,8 @@
service.removeOperation(new QName(opName));
}
- // Set the default message receiver for the operations that were
- // not listed in the services.xml
- Iterator operations = service.getPublishedOperations().iterator();
- while (operations.hasNext()) {
- AxisOperation operation = (AxisOperation) operations.next();
- if (operation.getMessageReceiver() == null) {
- operation.setMessageReceiver(loadDefaultMessageReceiver(
- operation.getMessageExchangePattern(), service));
- }
- }
+ // Need to call the same logic towice
+ setDefaultMessageReceivers();
Iterator moduleConfigs = service_element.getChildrenWithName(new QName(TAG_MODULE_CONFIG));
processServiceModuleConfig(moduleConfigs, service, service);
@@ -368,6 +359,17 @@
DeploymentErrorMsgs.OPERATION_PROCESS_ERROR, axisFault.getMessage()), axisFault);
}
return service;
+ }
+
+ private void setDefaultMessageReceivers() {
+ Iterator operations = service.getPublishedOperations().iterator();
+ while (operations.hasNext()) {
+ AxisOperation operation = (AxisOperation) operations.next();
+ if (operation.getMessageReceiver() == null) {
+ operation.setMessageReceiver(loadDefaultMessageReceiver(
+ operation.getMessageExchangePattern(), service));
+ }
+ }
}
private void loadObjectSupplierClass(String objectSupplierValue) throws AxisFault {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml?view=diff&rev=512604&r1=512603&r2=512604
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml Tue Feb 27 20:56:33 2007
@@ -51,6 +51,10 @@
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+ <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-only"
+ class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+ <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-out"
+ class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</messageReceivers>
<!-- ================================================= -->
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java?view=diff&rev=512604&r1=512603&r2=512604
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java Tue Feb 27 20:56:33 2007
@@ -246,7 +246,8 @@
*/
public static void fillAxisService(AxisService axisService,
AxisConfiguration axisConfig,
- ArrayList excludeOperations) throws Exception {
+ ArrayList excludeOperations,
+ ArrayList nonRpcMethods) throws Exception {
String serviceClass;
Parameter implInfoParam = axisService.getParameter(Constants.SERVICE_CLASS);
ClassLoader serviceClassLoader = axisService.getClassLoader();
@@ -278,11 +279,7 @@
serviceClass = obj.getClass().getName();
} else {
return;
- //TODO : Need to fix this
-// throw new DeploymentException(
-// "ServiceClass or ServiceObjectSupplier implmentation Object could not be found");
}
-
}
// adding name spaces
NamespaceMap map = new NamespaceMap();
@@ -295,6 +292,7 @@
serviceClass.trim(), axisService.getSchematargetNamespace(),
axisService.getSchematargetNamespacePrefix());
schemaGenerator.setExcludeMethods(excludeOperations);
+ schemaGenerator.setNonRpcMethods(nonRpcMethods);
if (!axisService.isElementFormDefault()) {
schemaGenerator.setElementFormDefault(Java2WSDLConstants.FORM_DEFAULT_UNQUALIFIED);
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService.java?view=diff&rev=512604&r1=512603&r2=512604
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService.java Tue Feb 27 20:56:33 2007
@@ -911,34 +911,27 @@
private void getWSDL(OutputStream out, String[] serviceURL,
String servicePath) throws AxisFault {
- if (this.wsdlFound) {
-
- // Retrieve WSDL using the same data retrieval path for GetMetadata request.
- DataRetrievalRequest request = new DataRetrievalRequest();
- request.putDialect(DRConstants.SPEC.DIALECT_TYPE_WSDL);
- request.putOutputForm(OutputForm.INLINE_FORM);
+ // Retrieve WSDL using the same data retrieval path for GetMetadata request.
+ DataRetrievalRequest request = new DataRetrievalRequest();
+ request.putDialect(DRConstants.SPEC.DIALECT_TYPE_WSDL);
+ request.putOutputForm(OutputForm.INLINE_FORM);
- MessageContext context = new MessageContext();
- context.setAxisService(this);
- context.setTo(new EndpointReference(serviceURL[0]));
+ MessageContext context = new MessageContext();
+ context.setAxisService(this);
+ context.setTo(new EndpointReference(serviceURL[0]));
- Data[] result = getData(request, context);
- OMElement wsdlElement;
- if (result != null && result[0] != null) {
- wsdlElement = (OMElement) (result[0].getData());
- try {
- wsdlElement.serialize(out);
- out.flush();
- out.close();
- } catch (Exception e) {
- throw new AxisFault(e);
- }
+ Data[] result = getData(request, context);
+ OMElement wsdlElement;
+ if (result != null && result[0] != null) {
+ wsdlElement = (OMElement) (result[0].getData());
+ try {
+ wsdlElement.serialize(out);
+ out.flush();
+ out.close();
+ } catch (Exception e) {
+ throw new AxisFault(e);
}
-
- } else {
- printWSDLError(out);
}
-
}
private void printWSDLError(OutputStream out) throws AxisFault {
@@ -993,20 +986,15 @@
}
private void getWSDL2(OutputStream out, String[] serviceURL) throws AxisFault {
- if (this.wsdlFound) {
- AxisService2WSDL2 axisService2WSDL2 = new AxisService2WSDL2(this, serviceURL);
- try {
- OMElement wsdlElement = axisService2WSDL2.generateOM();
- wsdlElement.serialize(out);
- out.flush();
- out.close();
- } catch (Exception e) {
- throw new AxisFault(e);
- }
- } else {
- printWSDLError(out);
+ AxisService2WSDL2 axisService2WSDL2 = new AxisService2WSDL2(this, serviceURL);
+ try {
+ OMElement wsdlElement = axisService2WSDL2.generateOM();
+ wsdlElement.serialize(out);
+ out.flush();
+ out.close();
+ } catch (Exception e) {
+ throw new AxisFault(e);
}
-
}
/**
@@ -1519,7 +1507,7 @@
String targetNamespace,
String schemaNamespace,
ClassLoader loader) throws AxisFault {
- Parameter parameter = new Parameter(Constants.SERVICE_CLASS, implClass);
+ Parameter parameter = new Parameter(Constants.SERVICE_CLASS, implClass);
OMElement paraElement = Utils.getParameter(Constants.SERVICE_CLASS, implClass, false);
parameter.setParameterElement(paraElement);
AxisService axisService = new AxisService();
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java?view=diff&rev=512604&r1=512603&r2=512604
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java Tue Feb 27 20:56:33 2007
@@ -264,50 +264,6 @@
addServiceGroup(axisServiceGroup);
}
- /**
- * This method will check whethere for a given service , can we ganerate
- * valid wsdl or not. So if user drop a wsdl we print that out , else if
- * all the operation uses RPC message receivers we will generate wsdl
- *
- * @param axisService
- */
- private void isWSDLEnable(AxisService axisService) {
- if (!axisService.isWsdlFound()) {
- Iterator operatins = axisService.getOperations();
- if (operatins.hasNext()) {
- while (operatins.hasNext()) {
- AxisOperation axisOperation = (AxisOperation) operatins
- .next();
-
- if (axisOperation.isControlOperation()) {
- continue;
- }
-
- if (axisOperation.getMessageReceiver() == null) {
- axisService.setWsdlFound(false);
- return;
- }
- String messageReceiverClass = axisOperation
- .getMessageReceiver().getClass().getName();
- if (!("org.apache.axis2.rpc.receivers.RPCMessageReceiver"
- .equals(messageReceiverClass)
- || "org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"
- .equals(messageReceiverClass)
- || "org.apache.axis2.rpc.receivers.RPCInOutAsyncMessageReceiver"
- .equals(messageReceiverClass)
- || "org.apache.axis2.jaxws.server.JAXWSMessageReceiver"
- .equals(messageReceiverClass))) {
- axisService.setWsdlFound(false);
- return;
- }
- }
- axisService.setWsdlFound(true);
- } else {
- axisService.setWsdlFound(false);
- }
- }
- }
-
public synchronized void addServiceGroup(AxisServiceGroup axisServiceGroup)
throws AxisFault {
notifyObservers(AxisEvent.SERVICE_DEPLOY, axisServiceGroup);
@@ -326,7 +282,6 @@
axisService
.setSchematargetNamespace(Java2WSDLConstants.AXIS2_XSD);
}
- isWSDLEnable(axisService);
}
services = axisServiceGroup.getServices();
while (services.hasNext()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org