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 2008/03/04 04:55:58 UTC
svn commit: r633356 - in
/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba:
deployer/ exceptions/ idl/parser/ idl/types/ receivers/
Author: deepal
Date: Mon Mar 3 19:55:57 2008
New Revision: 633356
URL: http://svn.apache.org/viewvc?rev=633356&view=rev
Log:
applying the patch in /AXIS2-3464
Eranga thank you very much for the patch
Added:
webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/exceptions/SchemaGeneratorException.java
Modified:
webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/CorbaDeployer.java
webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java
webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java
webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/types/CompositeDataType.java
webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java
Modified: webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/CorbaDeployer.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/CorbaDeployer.java?rev=633356&r1=633355&r2=633356&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/CorbaDeployer.java (original)
+++ webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/CorbaDeployer.java Mon Mar 3 19:55:57 2008
@@ -57,6 +57,11 @@
public void init(ConfigurationContext configCtx) {
this.configCtx = configCtx;
this.axisConfig = this.configCtx.getAxisConfiguration();
+ /*try {
+ System.in.read();
+ } catch (IOException e) {
+
+ }*/
}
public void deploy(DeploymentFileData deploymentFileData) throws DeploymentException {
Modified: webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java?rev=633356&r1=633355&r2=633356&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java (original)
+++ webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java Mon Mar 3 19:55:57 2008
@@ -31,6 +31,7 @@
import org.apache.axis2.corba.idl.types.*;
import org.apache.axis2.corba.receivers.CorbaUtil;
+import org.apache.axis2.corba.exceptions.SchemaGeneratorException;
public class SchemaGenerator implements CorbaConstants {
private static int prefixCount = 1;
@@ -52,7 +53,7 @@
private String targetNamespace = null;
private ArrayList nonRpcMethods = new ArrayList();
- public NamespaceGenerator getNsGen() throws Exception {
+ public NamespaceGenerator getNsGen() throws SchemaGeneratorException {
if ( nsGen == null ) {
nsGen = new DefaultNamespaceGenerator();
}
@@ -117,10 +118,17 @@
* parameter type and later refers to them.
*
* @return Returns XmlSchema.
- * @throws Exception if failed
+ * @throws SchemaGeneratorException if failed
*/
- public Collection generateSchema() throws Exception {
+ public Collection generateSchema() throws SchemaGeneratorException {
Map interfaces = idl.getInterfaces();
+
+ if (interfaces==null)
+ throw new SchemaGeneratorException("No interfaces defined");
+
+ if (interfaceName==null)
+ throw new SchemaGeneratorException("Interface name required");
+
Interface intf = (Interface) interfaces.get(interfaceName);
/**
* Schema genertaion done in two stage 1. Load all the methods and
@@ -146,7 +154,7 @@
}
if (uniqueMethods.get(operationName) != null) {
- throw new Exception(
+ throw new SchemaGeneratorException(
" Sorry we don't support methods overloading !!!! ");
}
@@ -260,10 +268,10 @@
*
* @param dataType object
* @return Qname
- * @throws Exception if fails
+ * @throws SchemaGeneratorException if fails
*/
//private QName generateSchema(JClass dataType) throws Exception {
- private QName generateSchema(CompositeDataType dataType) throws Exception {
+ private QName generateSchema(CompositeDataType dataType) throws SchemaGeneratorException {
String name = CorbaUtil.getQualifiedName(dataType);
QName schemaTypeName = typeTable.getComplexSchemaType(name);
if (schemaTypeName == null) {
@@ -373,7 +381,7 @@
// moved code common to Fields & properties out of above method
private XmlSchemaElement generateSchemaforFieldsandProperties(XmlSchema xmlSchema,
DataType type,
- String name, boolean forceNotNillable) throws Exception {
+ String name, boolean forceNotNillable) throws SchemaGeneratorException {
boolean isArryType = false;
long maxOccurs = 0;
long minOccurs = 0;
@@ -433,7 +441,7 @@
typeTable.getComplexSchemaType(propertyTypeName).getNamespaceURI());
}
} else {
- throw new Exception("Unsupported type:" + type);
+ throw new SchemaGeneratorException("Unsupported type:" + type);
}
return elt1;
}
@@ -451,7 +459,7 @@
private QName generateSchemaForType(XmlSchemaSequence sequence, DataType type, String partName)
- throws Exception {
+ throws SchemaGeneratorException {
boolean isArrayType = false;
if(type!=null){
@@ -630,7 +638,7 @@
this.extraClasses = extraClasses;
}
- private String resolveSchemaNamespace(String packageName) throws Exception {
+ private String resolveSchemaNamespace(String packageName) throws SchemaGeneratorException {
if (useWSDLTypesNamespace) {
return (String) pkg2nsmap.get("all");
} else {
Added: webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/exceptions/SchemaGeneratorException.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/exceptions/SchemaGeneratorException.java?rev=633356&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/exceptions/SchemaGeneratorException.java (added)
+++ webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/exceptions/SchemaGeneratorException.java Mon Mar 3 19:55:57 2008
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, 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.
+ */
+
+package org.apache.axis2.corba.exceptions;
+
+public class SchemaGeneratorException extends CorbaException {
+ public SchemaGeneratorException() {
+ super();
+ }
+
+ public SchemaGeneratorException(String message) {
+ super(message);
+ }
+
+ public SchemaGeneratorException(Throwable cause) {
+ super(cause);
+ }
+
+ public SchemaGeneratorException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
Modified: webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java?rev=633356&r1=633355&r2=633356&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java (original)
+++ webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java Mon Mar 3 19:55:57 2008
@@ -18,6 +18,8 @@
private static final Log log = LogFactory.getLog(IDLVisitor.class);
private IDL idl = null;
private String module = "";
+ private String moduleForInnerTypes = null;
+ private static final String INNERTYPE_SUFFIX = "Package";
public IDL getIDL() {
return idl;
@@ -68,7 +70,7 @@
}
case IDLTokenTypes.LITERAL_typedef: {
- visitAndAddTypedefs(node);
+ visitAndAddTypedefs(node, module);
break;
}
@@ -168,16 +170,40 @@
Interface intf = new Interface();
intf.setModule(module);
AST interfaceNode = node.getFirstChild();
- intf.setName(interfaceNode.toString());
+ String interfaceName = interfaceNode.toString();
+ intf.setName(interfaceName);
+ moduleForInnerTypes = module + interfaceName + INNERTYPE_SUFFIX + CompositeDataType.MODULE_SEPERATOR;
AST node2 = interfaceNode.getNextSibling();
while (node2 != null) {
switch (node2.getType()) {
case IDLTokenTypes.LITERAL_struct:
+ Struct innerStruct = visitStruct(node2);
+ innerStruct.setModule(moduleForInnerTypes);
+ idl.addType(innerStruct);
+ break;
+ case IDLTokenTypes.LITERAL_valuetype:
+ log.error("Unsupported IDL token " + node2);
+ // CORBA 3.O spec does not support this
+ break;
case IDLTokenTypes.LITERAL_exception:
- case IDLTokenTypes.LITERAL_const:
+ Struct innerEx = visitException(node2);
+ innerEx.setModule(moduleForInnerTypes);
+ idl.addType(innerEx);
+ break;
case IDLTokenTypes.LITERAL_enum:
+ EnumType innerEnum = visitEnum(node2);
+ innerEnum.setModule(moduleForInnerTypes);
+ idl.addType(innerEnum);
+ break;
case IDLTokenTypes.LITERAL_union:
+ UnionType innerUnion = visitUnion(node2);
+ innerUnion.setModule(moduleForInnerTypes);
+ idl.addType(innerUnion);
+ break;
case IDLTokenTypes.LITERAL_typedef:
+ visitAndAddTypedefs(node2, moduleForInnerTypes);
+ break;
+ case IDLTokenTypes.LITERAL_const:
log.error("Unsupported IDL token " + node2);
break;
case IDLTokenTypes.LITERAL_attribute:
@@ -199,6 +225,7 @@
}
node2 = node2.getNextSibling();
}
+ moduleForInnerTypes = null;
return intf;
}
@@ -289,6 +316,12 @@
}
}
+ if (dataType==null && moduleForInnerTypes!=null) {
+ if (!typeName.startsWith(module)) {
+ dataType = (DataType) idl.getCompositeDataTypes().get(moduleForInnerTypes + typeName);
+ }
+ }
+
if (dataType==null)
dataType = (DataType) idl.getCompositeDataTypes().get(typeName);
}
@@ -303,7 +336,7 @@
String typeName = node.getText();
AST memberTypeNodeChild = node.getFirstChild();
while(memberTypeNodeChild!=null) {
- typeName = typeName + "::" + memberTypeNodeChild.toString();
+ typeName = typeName + CompositeDataType.MODULE_SEPERATOR + memberTypeNodeChild.toString();
memberTypeNodeChild = memberTypeNodeChild.getNextSibling();
}
return typeName;
@@ -312,8 +345,8 @@
public void setModule(String module) {
if (module==null || module.length()<1)
module = "";
- else if (!module.endsWith("::"))
- module += "::";
+ else if (!module.endsWith(CompositeDataType.MODULE_SEPERATOR))
+ module += CompositeDataType.MODULE_SEPERATOR;
this.module = module;
}
@@ -364,7 +397,7 @@
return unionType;
}
- private void visitAndAddTypedefs(AST node) {
+ private void visitAndAddTypedefs(AST node, String moduleName) {
AST typedefNode = node.getFirstChild();
DataType dataType;
@@ -388,7 +421,7 @@
int i = 1;
while(dimensionNode!=null) {
ArrayType temp = new ArrayType();
- temp.setElementModule(module);
+ temp.setElementModule(moduleName);
temp.setElementName(typedefName);
temp.setDepth(i);
i++;
@@ -408,7 +441,7 @@
}
typedef = new Typedef();
typedef.setDataType(dataType);
- typedef.setModule(module);
+ typedef.setModule(moduleName);
typedef.setName(typedefName);
idl.addType(typedef);
typedefNameNode = typedefNameNode.getNextSibling();
Modified: webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/types/CompositeDataType.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/types/CompositeDataType.java?rev=633356&r1=633355&r2=633356&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/types/CompositeDataType.java (original)
+++ webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/types/CompositeDataType.java Mon Mar 3 19:55:57 2008
@@ -25,6 +25,7 @@
public abstract class CompositeDataType extends DataType {
public static final String IDL_REPO_STRING = "IDL:";
public static final String IDL_VERSION = ":1.0";
+ public static final String MODULE_SEPERATOR = "::";
protected String id;
protected String name;
@@ -33,7 +34,7 @@
public String getId() {
if (id==null)
- id = IDL_REPO_STRING + module.replaceAll("::", "/") + name + IDL_VERSION;
+ id = IDL_REPO_STRING + module.replaceAll(MODULE_SEPERATOR, "/") + name + IDL_VERSION;
return id;
}
Modified: webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java?rev=633356&r1=633355&r2=633356&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java (original)
+++ webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java Mon Mar 3 19:55:57 2008
@@ -33,6 +33,7 @@
import org.apache.axis2.namespace.Constants;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.*;
+import org.apache.axis2.description.java2wsdl.TypeTable;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.omg.CORBA_2_3.ORB;
@@ -45,6 +46,7 @@
import org.omg.CORBA.TCKind;
import org.omg.CORBA.TypeCode;
+import javax.xml.namespace.QName;
import java.util.*;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipEntry;
@@ -319,7 +321,7 @@
if (dataType!=null
&& !getQualifiedName(dataType).equals(VOID)
&& resObject!=null) {
- processResponse(child, bodyContent, resObject, dataType, fac, ns, qualified);
+ processResponse(child, bodyContent, resObject, dataType, fac, ns, qualified, service);
} else {
child.addAttribute("nil", "true", fac.createOMNamespace(Constants.URI_2001_SCHEMA_XSI,
Constants.NS_PREFIX_SCHEMA_XSI));
@@ -338,7 +340,7 @@
child = fac.createOMElement(param.getName(), null);
}
bodyContent.addChild(child);
- processResponse(child, bodyContent, paramsIter.next(), param.getDataType(), fac, ns, qualified);
+ processResponse(child, bodyContent, paramsIter.next(), param.getDataType(), fac, ns, qualified, service);
}
}
@@ -348,14 +350,15 @@
}
private static void processResponse(OMElement child, OMElement bodyContent, Object resObject, DataType dataType,
- SOAPFactory fac, OMNamespace ns, boolean qualified) {
+ SOAPFactory fac, OMNamespace defaultNS, boolean qualified, AxisService service) {
if (dataType instanceof PrimitiveDataType) {
child.addChild(fac.createOMText(child, resObject.toString()));
} else if (dataType instanceof Typedef) {
Typedef typedef = (Typedef) dataType;
AliasValue aliasValue = (AliasValue) resObject;
+ OMNamespace ns = getNameSpaceForType(fac, service, typedef);
OMElement item = fac.createOMElement(ARRAY_ITEM, ns, child);
- processResponse(item, child, aliasValue.getValue(), typedef.getDataType(), fac, ns, qualified);
+ processResponse(item, child, aliasValue.getValue(), typedef.getDataType(), fac, ns, qualified, service);
} else if (dataType instanceof AbstractCollectionType) {
AbstractCollectionType collectionType = (AbstractCollectionType) dataType;
AbstractCollectionValue collectionValue = (AbstractCollectionValue) resObject;
@@ -366,16 +369,16 @@
if (collectionType.getDataType() instanceof AbstractCollectionType) {
outer = child;
if (qualified) {
- child = fac.createOMElement(ARRAY_ITEM, ns);
+ child = fac.createOMElement(ARRAY_ITEM, defaultNS);
} else {
child = fac.createOMElement(ARRAY_ITEM, null);
}
outer.addChild(child);
}
- processResponse(child, outer, values[i], collectionType.getDataType(), fac, ns, qualified);
+ processResponse(child, outer, values[i], collectionType.getDataType(), fac, defaultNS, qualified, service);
if (i < (length -1)) {
if (qualified) {
- child = fac.createOMElement(ARRAY_ITEM, ns);
+ child = fac.createOMElement(ARRAY_ITEM, defaultNS);
} else {
child = fac.createOMElement(ARRAY_ITEM, null);
}
@@ -386,25 +389,37 @@
AbstractValue resValue = (AbstractValue) resObject;
Member[] members = resValue.getMembers();
Object[] memberValues = resValue.getMemberValues();
+ OMNamespace ns = getNameSpaceForType(fac, service, (CompositeDataType) dataType);
for (int i = 0; i < memberValues.length; i++) {
OMElement memberElement = fac.createOMElement(members[i].getName(), ns);
- processResponse(memberElement, bodyContent, memberValues[i], members[i].getDataType(), fac, ns, qualified);
+ processResponse(memberElement, bodyContent, memberValues[i], members[i].getDataType(), fac, ns, qualified, service);
child.addChild(memberElement);
}
} else if (dataType instanceof UnionType) {
UnionValue unionValue = (UnionValue) resObject;
OMElement unMember;
- if (qualified) {// ?
+ OMNamespace ns = getNameSpaceForType(fac, service, (CompositeDataType) dataType);
+ if (qualified) {
unMember = fac.createOMElement(unionValue.getMemberName(), ns);
} else {
unMember = fac.createOMElement(unionValue.getMemberName(), null);
}
- processResponse(unMember, child, unionValue.getMemberValue(), unionValue.getMemberType(), fac, ns, qualified);
+ processResponse(unMember, child, unionValue.getMemberValue(), unionValue.getMemberType(), fac, ns, qualified, service);
child.addChild(unMember);
} else if (dataType instanceof EnumType) {
EnumValue enumValue = (EnumValue) resObject;
child.addChild(fac.createOMText(child, enumValue.getValueAsString()));
}
+ }
+
+ private static OMNamespace getNameSpaceForType(SOAPFactory fac, AxisService service, CompositeDataType dataType) {
+ TypeTable typeTable = service.getTypeTable();
+ String fullname = (dataType.getModule()!=null) ? dataType.getModule() + dataType.getName() : dataType.getName();
+ fullname = fullname.replaceAll(CompositeDataType.MODULE_SEPERATOR, ".");
+ QName qname = typeTable.getQNamefortheType(fullname);
+ if (qname==null)
+ return null;
+ return fac.createOMNamespace(qname.getNamespaceURI(), qname.getPrefix());
}
public static String getQualifiedName(DataType type){
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org