You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2006/07/18 22:06:15 UTC
svn commit: r423228 - in
/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws: ./ c/
c/literal/ cpp/ cpp/literal/ info/
Author: nadiramra
Date: Tue Jul 18 13:06:13 2006
New Revision: 423228
URL: http://svn.apache.org/viewvc?rev=423228&view=rev
Log:
AXISCPP-985 - Add methods to determine anonymous types and whether Type should be externalized.
Modified:
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamHeaderWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java Tue Jul 18 13:06:13 2006
@@ -117,8 +117,12 @@
String wsdlfile = cmdLineArgs.getArgument(0);
wsdlParser.run(wsdlfile);
- //get the target namespace
+ //get the symbol table
symbolTable = wsdlParser.getSymbolTable();
+ if (WSDL2Ws.verbose)
+ symbolTable.dump(System.out);
+
+ //get the target namespace
targetNameSpaceOfWSDL = symbolTable.getDefinition().getTargetNamespace();
}
catch (Exception e)
@@ -353,7 +357,6 @@
{
// for non-wrapped style wsdl's
String elementName = (String) element.getQName().getLocalPart();
- symbolTable.dump(System.out);
pinfo = new ParameterInfo(type, elementName);
pinfo.setElementName(type.getName());
if (type.getName().equals(CUtils.anyTypeQname))
@@ -600,7 +603,14 @@
type = (TypeEntry) it.next();
Node node = type.getNode();
if (node != null)
+ {
+ if (WSDL2Ws.verbose)
+ {
+ System.out.println( "==>getTypeInfo: Processing type...." + type.getQName());
+ }
+
createTypeInfo(type, targetLanguage);
+ }
}
return typeMap;
}
@@ -669,9 +679,8 @@
{
System.out.println(it.next());
}
-
- symbolTable.dump(System.out);
}
+
wsg.generate();
}
@@ -714,7 +723,6 @@
+ "]unexpected condition occurred "
+ ".. please inform the axis-dev@apache.org mailing list ASAP");
}
- type.getRefType();
}
return createTypeInfo(type, targetLanguage);
}
@@ -728,10 +736,15 @@
public Type createTypeInfo(TypeEntry type, String targetLanguage) throws WrapperFault
{
+ Type typedata;
+
// Do not add types which are not used in the wsdl
if (!type.isReferenced())
return null;
+ if (WSDL2Ws.verbose && !typeMap.isSimpleType(type.getQName()))
+ System.out.println("Attempting to create type: " + type.getQName());
+
if (type instanceof CollectionElement)
{ //an array
}
@@ -739,16 +752,16 @@
{
// if element references another type, process the referenced type
if (type.getRefType() != null)
+ {
+ if (WSDL2Ws.verbose)
+ System.out.println("Attempting to creat new type from element-ref: " + type.getRefType().getQName());
+
return createTypeInfo(type.getRefType(), targetLanguage);
+ }
return null;
}
- // type is a inbuilt type or a already created type?
- Type typedata = typeMap.getType(type.getQName());
- if (typedata != null)
- return typedata;
-
if (-1 != type.getQName().getLocalPart().indexOf('['))
{
/* it seems that this is an array */
@@ -763,7 +776,20 @@
return null;
QName newqn = new QName(type.getQName().getNamespaceURI(), qn.getLocalPart() + "_Array");
+ // type is a inbuilt type or a already created type?
+ typedata = typeMap.getType(newqn);
+ if (typedata != null)
+ {
+ if (WSDL2Ws.verbose && !typeMap.isSimpleType(type.getQName()))
+ System.out.println("Type not created, already exists: " + type.getQName());
+
+ return typedata;
+ }
+
typedata = new Type(newqn, newqn.getLocalPart(), true, targetLanguage);
+
+ if (WSDL2Ws.verbose)
+ System.out.println("Created new array type from array ref: " + newqn);
if (type.getRefType().getRefType() != null)
typedata.setElementType(type.getRefType().getRefType().getQName().getLocalPart());
@@ -774,15 +800,29 @@
}
else
{
+ // type is a inbuilt type or a already created type?
+ typedata = typeMap.getType(type.getQName());
+ if (typedata != null)
+ {
+ if (WSDL2Ws.verbose && !typeMap.isSimpleType(type.getQName()))
+ System.out.println("Type not created, already exists: " + type.getQName());
+
+ return typedata;
+ }
+
typedata = new Type(type.getQName(),
type.getQName().getLocalPart(),
true,
targetLanguage);
+
+ if (WSDL2Ws.verbose)
+ System.out.println("Created new type: " + type.getQName());
+
typeMap.addType(type.getQName(), typedata);
}
// work out whether this type will be generated or not
- typedata.setGenerated(isTypeGenerated(type));
+ typedata.externalize(isTypeGenerated(type, typedata));
Node node = type.getNode();
@@ -881,6 +921,9 @@
//}
// Process the attributes
+ if (WSDL2Ws.verbose)
+ System.out.println("Processing attributes for type: " + type.getQName());
+
Vector attributes = CSchemaUtils.getContainedAttributeTypes(te.getNode(),
symbolTable);
if (attributes != null)
@@ -893,21 +936,25 @@
}
// Process the elements
+ if (WSDL2Ws.verbose)
+ System.out.println("Processing elements for type: " + type.getQName());
+
Vector elements = CSchemaUtils.getContainedElementDeclarations(te.getNode(),
symbolTable);
if (elements != null)
for (int j = 0; j < elements.size(); j++)
{
+ Type newType = null;
ElementInfo eleinfo = null;
+
CElementDecl elem = (CElementDecl) elements.get(j);
+
if (elem.getAnyElement())
{
- Type anyType =
- new Type(CUtils.anyTypeQname,
- CUtils.anyTypeQname.getLocalPart(),
- true,
- targetLanguage);
- eleinfo = new ElementInfo(elem.getName(), anyType);
+ newType = new Type(CUtils.anyTypeQname,
+ CUtils.anyTypeQname.getLocalPart(),
+ true,
+ targetLanguage);
}
else
{
@@ -917,31 +964,20 @@
String localpart =
typeName.getLocalPart().substring(
0, typeName.getLocalPart().indexOf('['));
- typeName =
- new QName(typeName.getNamespaceURI(), localpart);
+
+ typeName = new QName(typeName.getNamespaceURI(), localpart);
+
if (CUtils.isBasicType(typeName))
- {
- eleinfo =
- new ElementInfo(
- elem.getName(),
- createTypeInfo(typeName, targetLanguage));
- }
+ newType = createTypeInfo(typeName, targetLanguage);
else
- {
- eleinfo =
- new ElementInfo(
- elem.getName(),
- createTypeInfo(elem.getType(), targetLanguage));
- }
+ newType = createTypeInfo(elem.getType(), targetLanguage);
}
else
- {
- eleinfo =
- new ElementInfo(
- elem.getName(),
- createTypeInfo(typeName, targetLanguage));
- }
+ newType = createTypeInfo(typeName, targetLanguage);
}
+
+ eleinfo = new ElementInfo(elem.getName(), newType);
+
eleinfo.setMinOccurs(elem.getMinOccurs());
eleinfo.setMaxOccurs(elem.getMaxOccurs());
eleinfo.setNillable( elem.isNillable());
@@ -1060,20 +1096,21 @@
if(WSDL2Ws.verbose)
System.out.println( "EXPOSE1: Checking whether to expose ref-types for "+defType.getQName().getLocalPart());
- // If ref type is not currently exposed because it's an "inner" type (marked by ">")
- // then expose as a class by simply changing the name !
+ // If ref type is anonymous and thus currently not exposed because
+ // it's an "inner" type, expose it and any nested types (latter is TODO).
if(referencedType.getQName().getLocalPart().startsWith(">")
&& referencedType.getQName().getLocalPart().lastIndexOf(">") == 0)
{
if(WSDL2Ws.verbose)
- System.out.println( "EXPOSE1: Exposing ref-type "+defType.getRefType().getQName());
+ System.out.println( "EXPOSE1: Exposing ref-type "+referencedType.getQName());
- Type innerClassType = wsContext.getTypemap().getType(defType.getRefType().getQName());
+ Type innerClassType = wsContext.getTypemap().getType(referencedType.getQName());
innerClassType.setLanguageSpecificName(new QName(defType.getQName().getLocalPart()).toString());
// also have to set the QName becuase this is used in generating the header info.
innerClassType.setName(new QName(innerClassType.getName().getNamespaceURI(), innerClassType.getLanguageSpecificName()));
+ innerClassType.externalize(true);
}
}
}
@@ -1126,7 +1163,7 @@
if(parameterType.getName().equals(type.getQName()))
{
if(WSDL2Ws.verbose)
- System.out.println( "EXPOSE2: Matches input parm, exposing anon type "+type.getQName().getLocalPart());
+ System.out.println( "EXPOSE2: Matches input parm, exposing anon type "+parameterType.getName());
QName oldName = parameterType.getName();
QName newTypeName =
@@ -1140,6 +1177,7 @@
// also have to set the QName becuase this is used in generating the header info.
innerClassType.setName(newTypeName);
+ innerClassType.externalize(true);
// The typemap we get back is a copy of the actual typemap so we have to set the new value explicitly
// firstly remove the old version
@@ -1158,7 +1196,7 @@
if(parameterType.getName().equals(type.getQName()))
{
if(WSDL2Ws.verbose)
- System.out.println( "EXPOSE2: Matches output parm, exposing anon type "+type.getQName().getLocalPart());
+ System.out.println( "EXPOSE2: Matches output parm, exposing anon type "+parameterType.getName());
QName oldName = parameterType.getName();
QName newTypeName = new QName(parameterType.getName().getNamespaceURI(), parameterType.getName().getLocalPart().substring(1));
@@ -1170,6 +1208,7 @@
// also have to set the QName becuase this is used in generating the header info.
innerClassType.setName(newTypeName);
+ innerClassType.externalize(true);
// remove the old version and add new one
wsContext.getTypemap().removeType(oldName);
@@ -1223,11 +1262,11 @@
QName oldName = nestedType.getQName();
if(WSDL2Ws.verbose)
- System.out.println( "EXPOSE3: Exposing nestedType "+oldName);
+ System.out.println( "EXPOSE3: Exposing nestedType "+nestedType.getQName());
QName newTypeName =new QName(oldName.getNamespaceURI(), CUtils.sanitiseClassName(oldName.getLocalPart().toString()));
- Type innerClassType = wsContext.getTypemap().getType(oldName);
+ Type innerClassType = wsContext.getTypemap().getType(nestedType.getQName());
if(innerClassType!=null)
{
// First thing to do is to expose the type so it gets created.
@@ -1235,6 +1274,7 @@
// also have to set the QName because this is used in generating the header info.
innerClassType.setName(newTypeName);
+ innerClassType.externalize(true);
// remove the old version and add new one
wsContext.getTypemap().removeType(oldName);
@@ -1319,15 +1359,13 @@
/**
* Work out the various conditions that dictate whether this type will be generated into a new
* file or not.
- * This method is only very partically implemented and will usually default to true. This is becuase we have
- * this kind of logic already dispersed around the code (it usually just looks for a ">" in the name).
- * But it's much better to encapsulate here.
+ * This method is only very partially implemented.
*
* @param type
* @return true if the type will not be generated. False otherwise
*
*/
- private boolean isTypeGenerated(TypeEntry type)
+ private boolean isTypeGenerated(TypeEntry type, Type typedata)
{
// If the referenced type is actually a type that will not get generated because it's
// a base type array then tell other people of this case. Do this to two levels of indirection
@@ -1336,6 +1374,9 @@
if(type.getRefType().getRefType()!=null && type.getRefType().getRefType().isBaseType())
return false;
- return true;
+ if (typedata.isAnonymous())
+ return false;
+ else
+ return true;
}
}
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java Tue Jul 18 13:06:13 2006
@@ -64,21 +64,25 @@
type = (Type) types.next();
if (type.isArray())
{
- if (WSDL2Ws.verbose)
- System.out.println("Array writer called ......");
-
QName qname = type.getName();
String elementType = type.getElementType();
if (elementType != null)
{
+ if (WSDL2Ws.verbose)
+ System.out.println("Array element type: " + elementType);
elementType = elementType.replace('>', '_');
QName elementQname = new QName(qname.getNamespaceURI(), elementType);
Type currentType = wscontext.getTypemap().getType(elementQname);
if (currentType != null)
if ( currentType.isSimpleType())
+ {
+ if (WSDL2Ws.verbose)
+ System.out.println("Array writer not called - element type is simple");
+
continue;
+ }
}
if (CUtils.isSimpleType(qname) && !CUtils.isDefinedSimpleType(qname))
@@ -91,16 +95,15 @@
ArrayParamHeaderWriter writer = (new ArrayParamHeaderWriter(wscontext, type));
if (!writer.isSimpleTypeArray())
{
+ if (WSDL2Ws.verbose)
+ System.out.println("Array writer called ......");
+
writer.writeSource();
(new ArrayParamWriter(wscontext, type)).writeSource();
}
}
- /* TODO check whether this type is referenced or not. Synthesize only if reference
- * But of course that depends on the commandline option too */
- else if (type.getLanguageSpecificName().startsWith(">"))
+ else if (type.isAnonymous() && !type.isExternalized())
{
- /* TODO do some processing to this type before synthesizing to remove ">" charactors.
- * And then it should also be synthesized if commandline option says to */
if(WSDL2Ws.verbose)
{
System.out.println(
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -232,7 +232,7 @@
while (types.hasNext())
{
atype = (Type) types.next();
- if (atype.getLanguageSpecificName().startsWith(">"))
+ if (atype.isAnonymous() && !atype.isExternalized())
continue;
typeName = WrapperUtils.getLanguageTypeName4Type(atype);
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java Tue Jul 18 13:06:13 2006
@@ -385,7 +385,8 @@
continue;
typeName = type.getLanguageSpecificName();
- if (typeName.startsWith(">") || !typeName.equals(classname))
+ if ((type.isAnonymous() && !type.isExternalized())
+ || !typeName.equals(classname))
continue;
typeSet.add(typeName);
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -204,7 +204,7 @@
while (types.hasNext())
{
atype = (Type) types.next();
- if (atype.getLanguageSpecificName().startsWith(">"))
+ if (atype.isAnonymous() && !atype.isExternalized())
continue;
if (!atype.isArray())
typeSet.insertElementAt(atype.getLanguageSpecificName(), 0);
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java Tue Jul 18 13:06:13 2006
@@ -56,7 +56,7 @@
while (types.hasNext())
{
atype = (Type) types.next();
- if (atype.getLanguageSpecificName().startsWith(">"))
+ if (atype.isAnonymous() && !atype.isExternalized())
continue;
typeSet.add(atype.getLanguageSpecificName());
}
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java Tue Jul 18 13:06:13 2006
@@ -64,7 +64,7 @@
while (types.hasNext())
{
atype = (Type) types.next();
- if (atype.getLanguageSpecificName().startsWith(">"))
+ if (atype.isAnonymous() && !atype.isExternalized())
continue;
writer.write(
"#include \"" + atype.getLanguageSpecificName() + CUtils.C_HEADER_SUFFIX + "\"\n");
@@ -538,11 +538,10 @@
if (type.isArray())
continue;
- typeName = type.getLanguageSpecificName();
- if (typeName.startsWith(">"))
+ if (type.isAnonymous() && !type.isExternalized())
continue;
- typeSet.add(typeName);
+ typeSet.add(type.getLanguageSpecificName());
}
Iterator itr = typeSet.iterator();
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java Tue Jul 18 13:06:13 2006
@@ -58,23 +58,27 @@
type = (Type) types.next();
if (type.isArray())
{
- if (WSDL2Ws.verbose)
- System.out.println("Array writer called ......");
-
QName qname = type.getName();
String elementType = type.getElementType();
if (elementType != null)
{
+ if (WSDL2Ws.verbose)
+ System.out.println("Array element type: " + elementType);
elementType = elementType.replace('>', '_');
QName elementQname = new QName(qname.getNamespaceURI(), elementType);
Type currentType = wscontext.getTypemap().getType(elementQname);
if (currentType != null)
if ( currentType.isSimpleType())
+ {
+ if (WSDL2Ws.verbose)
+ System.out.println("Array writer not called - element type is simple");
+
continue;
+ }
}
-
+
if (CUtils.isSimpleType(qname) && !CUtils.isDefinedSimpleType(qname))
{
throw new WrapperFault(
@@ -85,29 +89,25 @@
ArrayParamHeaderWriter writer = (new ArrayParamHeaderWriter(wscontext, type));
if (!writer.isSimpleTypeArray())
{
+ if (WSDL2Ws.verbose)
+ System.out.println("Array writer called for......" + type.getName());
+
writer.writeSource();
(new ArrayParamWriter(wscontext, type)).writeSource();
}
}
+ else if (type.isAnonymous() && !type.isExternalized())
+ {
+ if(WSDL2Ws.verbose)
+ System.out.println("ignoring anonymous type " + type.getLanguageSpecificName() + "\n");
+ }
else
{
- /* TODO check whether this type is referenced or not. Synthesize only if reference
- * But of cause that depends on the command line option too */
- if (type.getLanguageSpecificName().startsWith(">"))
- {
- /* TODO do some processing to this type before synthesizing to remove ">" charactors.
- * And then it should also be synthesized if command line option says to */
- if(WSDL2Ws.verbose)
- System.out.println("ignoring anonymous type " + type.getLanguageSpecificName() + "\n");
- }
- else
- {
- if (WSDL2Ws.verbose)
- System.out.println("struct writer called ......");
+ if (WSDL2Ws.verbose)
+ System.out.println("struct writer called for......" + type.getName());
- (new BeanParamWriter(wscontext, type)).writeSource();
- (new ParmHeaderFileWriter(wscontext, type)).writeSource();
- }
+ (new BeanParamWriter(wscontext, type)).writeSource();
+ (new ParmHeaderFileWriter(wscontext, type)).writeSource();
}
}
catch (Exception e)
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -125,27 +125,6 @@
{
try
{
- Iterator itForTypes = wscontext.getTypemap().getTypes().iterator();
- boolean nillable = false;
-
- while( itForTypes.hasNext())
- {
- Type aType = (Type) itForTypes.next();
-
- if( aType.getLanguageSpecificName().indexOf( ">") > -1)
- {
- Iterator itForElemName = aType.getElementnames();
-
- while( itForElemName.hasNext() && !nillable)
- {
- String key = (String) itForElemName.next();
-
- if( aType.getElementForElementName( key).getNillable())
- nillable = true;
- }
- }
- }
-
writer.write("class STORAGE_CLASS_INFO " + classname + " : public Axis_Array\n");
writer.write("{\n");
writer.write("\tpublic:\n");
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -256,7 +256,7 @@
while (types.hasNext())
{
atype = (Type) types.next();
- if (atype.getLanguageSpecificName().startsWith(">"))
+ if (atype.isAnonymous() && !atype.isExternalized())
continue;
typeName = WrapperUtils.getLanguageTypeName4Type(atype);
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java Tue Jul 18 13:06:13 2006
@@ -870,10 +870,10 @@
type = (Type) types.next();
if (type.isArray())
continue;
- typeName = type.getLanguageSpecificName();
- if (typeName.startsWith(">"))
+
+ if (type.isAnonymous() && !type.isExternalized())
continue;
- typeSet.add(typeName);
+ typeSet.add(type.getLanguageSpecificName());
}
Iterator itr = typeSet.iterator();
while (itr.hasNext())
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -291,17 +291,14 @@
while (types.hasNext())
{
atype = (Type) types.next();
- if (atype.getLanguageSpecificName().startsWith(">"))
- {
+ if (atype.isAnonymous() && !atype.isExternalized())
continue;
- }
+
typeName = WrapperUtils.getLanguageTypeName4Type(atype);
if (null != typeName)
- {
typeSet.add(typeName);
- }
-
}
+
Iterator itr = typeSet.iterator();
while (itr.hasNext())
{
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java Tue Jul 18 13:06:13 2006
@@ -881,12 +881,10 @@
while (types.hasNext())
{
type = (Type) types.next();
- if (type.isArray())
+ if (type.isArray()
+ || (type.isAnonymous() && !type.isExternalized()))
continue;
- typeName = type.getLanguageSpecificName();
- if (typeName.startsWith(">"))
- continue;
- typeSet.add(typeName);
+ typeSet.add(type.getLanguageSpecificName());
}
Iterator itr = typeSet.iterator();
while (itr.hasNext())
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -190,7 +190,7 @@
while (types.hasNext())
{
atype = (Type) types.next();
- if(atype.isGenerated())
+ if(atype.isExternalized())
{
if (atype.isArray())
if (atype.getElementType().equals("string"))
@@ -199,9 +199,6 @@
if (atype.getBaseType() != null)
if (atype.getBaseType().getLocalPart().equals("string"))
removeSet.add(atype.getLanguageSpecificName() + "_Array");
-
- if (atype.getLanguageSpecificName().startsWith(">"))
- continue;
typeSet.add(atype.getLanguageSpecificName());
}
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java Tue Jul 18 13:06:13 2006
@@ -1146,11 +1146,10 @@
if (type.isArray())
continue;
- typeName = type.getLanguageSpecificName();
- if (typeName.startsWith(">"))
+ if (type.isAnonymous() && !type.isExternalized())
continue;
- typeSet.add(typeName);
+ typeSet.add(type.getLanguageSpecificName());
}
Iterator itr = typeSet.iterator();
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -94,7 +94,7 @@
while (types.hasNext())
{
atype = (Type) types.next();
- if (atype.getLanguageSpecificName().startsWith(">"))
+ if (atype.isAnonymous() && !atype.isExternalized())
continue;
typeSet.add(atype.getLanguageSpecificName());
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java Tue Jul 18 13:06:13 2006
@@ -681,11 +681,10 @@
if (type.isArray())
continue;
- typeName = type.getLanguageSpecificName();
- if (typeName.startsWith(">"))
+ if (type.isAnonymous() && !type.isExternalized())
continue;
- typeSet.add(typeName);
+ typeSet.add(type.getLanguageSpecificName());
}
Iterator itr = typeSet.iterator();
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java Tue Jul 18 13:06:13 2006
@@ -45,14 +45,17 @@
* with simpleContent
*/
private ElementInfo extensionBaseType = null;
+
/**
* Indicate whether this is a schema defined simpleType
*/
private boolean isSimpleType = false;
+
/**
* In case this is schema defined simpleType, this is the base type.
*/
private QName baseType;
+
/**
* If the specified node represents a supported JAX-RPC restriction,
* a Vector is returned which contains the base type and the values.
@@ -63,28 +66,34 @@
/* This can be null */
private String languageSpecificName;
+
/* element names and the type of the elements (QName,ElementInfo)*/
private Hashtable elements;
+
/* This vector was added to preserve the order of types parsed from the wsdl.
* This may be a hack. Should be improved if necessary
*/
private Vector vElements;
+
/* attribute names and the type of the attributes (QName,QName)*/
private Hashtable attributes;
+
/* This vector was added to preserve the order of types parsed from the wsdl.
* This may be a hack. Should be improved if necessary
*/
private Vector vAttributes;
+
/* has the attributes are specified with order <sequence> in the schema */
private boolean hasOrder;
+
/*if order presents the order is set in the vector */
private Vector attribOrder;
+
/* weather the type is Array */
private boolean isArray;
- private boolean isreferenced = false;
-
private String language;
+
//Samisa: element type
private String elementType;
@@ -94,33 +103,11 @@
/* Is this type an attachment under the http://xml.apache.org/xml-soap namespace? */
private boolean isAttachment = false;
- /* Should this type be generated or not */
- /* this value is currently only used in limited places. usually we use the ">" symbol */
- private boolean generated;
+ /* Should this type be generated or not - by default, set to true except for anonymous types */
+ private boolean externalize = true;
/* Is anonymous type? qname.localname is checked, and if starts with '>', then true */
private boolean isAnonymous = false;
-
- /* Has type been exposed - only valid for anonymous types */
- private boolean anonymousTypeExposed = false;
-
- public boolean isAnonymous()
- {
- return isAnonymous;
- }
-
- public void exposeAnonymousType()
- {
- // Exposing anonymous type means removing starting '>' characters.
- if (isAnonymous && !anonymousTypeExposed)
- {
- languageSpecificName = CUtils.getUniqueName(languageSpecificName);
-
- name = new QName(name.getNamespaceURI(), languageSpecificName);
- anonymousTypeExposed = true;
- }
- }
-
public Type(QName name, String languageSpecificName, boolean hasOrder, String language)
{
@@ -148,6 +135,14 @@
this.languageSpecificName = TypeMap.getBasicTypeClass4qname(name);
}
+ // Indicate whether type is anonymous. Anonymous type start with '>' and are not
+ // externalized by default.
+ if (this.name.getLocalPart().charAt(0) == '>')
+ {
+ isAnonymous = true;
+ externalize = false;
+ }
+
//if it is not a simple type try name using usual QName -> language specific name mapping
if (this.languageSpecificName == null)
this.languageSpecificName = qname2LSN();
@@ -156,27 +151,8 @@
//remove any funny Charactors
this.languageSpecificName = this.languageSpecificName.replaceAll("/", "_");
this.languageSpecificName = this.languageSpecificName.replaceAll(":", "_");
-
- // This arrived in case of inner type declaration. And for compilation
- // we replace all '>' by '_' (not the first one). Quick and durty fix.
- if (this.languageSpecificName.length() > 1)
- {
- if (this.languageSpecificName.charAt(0) == '>')
- {
- this.languageSpecificName =
- ">" + this.languageSpecificName.substring(1).replaceAll(">","_");
- }
- else
- {
- this.languageSpecificName =
- this.languageSpecificName.replaceAll(">", "_");
- }
- }
+ this.languageSpecificName = this.languageSpecificName.replaceAll(">", "_");
}
-
- // Indicate whether type is anonymous. Anonymous type start with '>'.
- if (this.languageSpecificName.charAt(0) == '>')
- isAnonymous = true;
this.attribOrder = new Vector();
@@ -190,9 +166,6 @@
{
isAttachment = true;
}
-
- // generated is always true by default so as not to break any other logic prior to this value being put in
- generated=true;
}
/**
@@ -204,24 +177,6 @@
}
/**
- * @return String
- */
- public String getLocalPartOfName()
- {
- String attribName = name.getLocalPart();
- if (attribName.lastIndexOf(SymbolTable.ANON_TOKEN) > 1)
- {
- attribName =
- attribName.substring(
- attribName.lastIndexOf(SymbolTable.ANON_TOKEN) + 1,
- attribName.length());
- }
- attribName = TypeMap.resolveWSDL2LanguageNameClashes(attribName, this.language);
-
- return attribName;
- }
-
- /**
* Sets the name.
* @param name The name to set
*/
@@ -241,23 +196,6 @@
*/
public void setTypeForAttributeName(String attribName, Type type)
{
- //Samisa:
- // Check to see if this is an anonymous type,
- // if it is, replace Axis' ANON_TOKEN with
- // an underscore to make sure we don't run
- // into name collisions with similarly named
- // non-anonymous types
- // StringBuffer sb = new StringBuffer(attribName);
- // int aidx = -1;
-
- // while ((aidx = sb.toString().indexOf(SymbolTable.ANON_TOKEN)) > -1) {
- // sb.replace(aidx, aidx + SymbolTable.ANON_TOKEN.length(), "_");
- // }
-
- // attribName = sb.toString();
- // Nithya:
- // To resolve fault soap message issue
-
if (attribName.lastIndexOf(SymbolTable.ANON_TOKEN) > 1)
{
attribName =
@@ -295,23 +233,6 @@
TypeMap.resolveWSDL2LanguageNameClashes(
element.getName().getLocalPart(),this.language);
- //Samisa:
- // Check to see if this is an anonymous type,
- // if it is, replace Axis' ANON_TOKEN with
- // an underscore to make sure we don't run
- // into name collisions with similarly named
- // non-anonymous types
- //StringBuffer sb = new StringBuffer(attribName);
- //int aidx = -1;
-
- //while ((aidx = sb.toString().indexOf(SymbolTable.ANON_TOKEN)) > -1) {
- // sb.replace(aidx, aidx + SymbolTable.ANON_TOKEN.length(), "_");
- // }
-
- //attribName = sb.toString();
- //Nithya:
- //to resolve fault soap message
-
if (attribName.lastIndexOf(SymbolTable.ANON_TOKEN) > 1)
{
attribName =
@@ -475,6 +396,7 @@
else
{
str = str + "isAnonymous =" + isAnonymous + "\n";
+ str = str + "externalize =" + externalize + "\n";
str = str + "isArray =" + isArray + "\n";
str = str + "Elements[\n";
Iterator c = elements.values().iterator();
@@ -504,24 +426,6 @@
/**
* @return boolean
*/
- public boolean isIsreferenced()
- {
- return isreferenced;
- }
-
- /**
- * Sets the isreferenced.
- * @param isreferenced The isreferenced to set
- */
- public void setIsreferenced(boolean isreferenced)
- {
- this.isreferenced = isreferenced;
- /* TODO also make the inner type of this be referenced*/
-
- }
- /**
- * @return boolean
- */
public boolean isSimpleType()
{
return isSimpleType;
@@ -594,21 +498,45 @@
{
return isAttachment;
}
-
+
/**
- * @param b
+ * Whether the type represents an anonymous type.
*/
- public void setGenerated(boolean b)
+ public boolean isAnonymous()
{
- generated=b;
+ return isAnonymous;
}
/**
- * Whether this type will be generated or not. NOT This is not always valid. Be sure that this is being set properly for your instance
- * @return
+ * Whether this type will be generated or not.
*/
- public boolean isGenerated()
+ public boolean isExternalized()
{
- return generated;
+ return externalize;
}
+
+ /**
+ * Ensure type is generated (i.e. externalized).
+ */
+ public void externalize(boolean flag)
+ {
+ // if false, simply set the flag and return.
+ if (!flag)
+ {
+ externalize = false;
+ return;
+ }
+
+ // Exposing anonymous type also means cleaning up the name. A TODO for now.
+ if (isAnonymous && !externalize)
+ {
+ // Remove leading '_' from language specific name
+// int i=0;
+// while (languageSpecificName.charAt(i) == '_') ++i;
+// languageSpecificName = languageSpecificName.substring(i);
+ }
+
+ externalize = true;
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org