Author: dain
Date: Mon Jun 20 00:16:38 2005
New Revision: 191412
URL: http://svn.apache.org/viewcvs?rev=191412&view=rev
Log:
Added handling for all of the special name mangling rules
Added all tests for name mangling
Added:
geronimo/trunk/modules/interop/src/test-data/specialNameMangler.properties
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/BooException.java
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/Foo.java
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/PortableStubCompilerTest.java
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/Special.java
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/BlahEx.java
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/CheeseIDLEntity.java
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/Donkey.java
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/DonkeyEx.java
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/Generic$Interface.java
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/_Something.java
geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/inout.java
Modified:
geronimo/trunk/modules/interop/src/java/org/apache/geronimo/interop/generator/JType.java
geronimo/trunk/modules/interop/src/java/org/apache/geronimo/interop/rmi/iiop/portable/PortableStubCompiler.java
geronimo/trunk/modules/interop/src/test-data/nameMangler.properties
Modified: geronimo/trunk/modules/interop/src/java/org/apache/geronimo/interop/generator/JType.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/java/org/apache/geronimo/interop/generator/JType.java?rev=191412&r1=191411&r2=191412&view=diff
==============================================================================
--- geronimo/trunk/modules/interop/src/java/org/apache/geronimo/interop/generator/JType.java (original)
+++ geronimo/trunk/modules/interop/src/java/org/apache/geronimo/interop/generator/JType.java Mon Jun 20 00:16:38 2005
@@ -21,7 +21,7 @@
public class JType extends JEntity {
- private static HashMap typeMap = new HashMap(60);
+ private static HashMap typeCache = new HashMap(60);
private Class type;
private String typeDecl;
@@ -32,7 +32,7 @@
public void setType(Class type) {
this.type = type;
- calculateTypeDecl();
+ this.typeDecl = calculateTypeDecl(type);
}
public Class getType() {
@@ -61,64 +61,32 @@
return rc;
}
- protected void calculateTypeDecl() {
- if (type == null) {
- return;
- }
-
- typeDecl = (String) typeMap.get(type);
-
- if (typeDecl == null) {
- synchronized (typeMap) {
- typeDecl = type.getName();
+ private static String calculateTypeDecl(Class type) {
+ String typeName = type.getName();
+ synchronized (typeCache) {
+ String typeDecl= (String) typeCache.get(typeName);
+ if (typeDecl != null) {
+ return typeDecl;
+ }
- if (type.isArray()) {
- typeDecl = convertToTypeDecl(typeDecl);
- }
+ StringBuffer typeString = new StringBuffer();
- typeMap.put(type, typeDecl);
+ while (type.isArray()) {
+ typeString.append("[]");
+ type = type.getComponentType();
}
- }
- }
- protected String convertToTypeDecl(String typeName) {
- String rc = "";
- char charAt = 0;
- int i;
-
- if (typeName != null && typeName.length() > 0) {
- for (i = 0; i < typeName.length(); i++) {
- charAt = typeName.charAt(i);
-
- if (charAt == '[') {
- rc = rc + "[]";
- } else if (charAt == 'Z') {
- rc = "boolean" + rc;
- } else if (charAt == 'B') {
- rc = "byte" + rc;
- } else if (charAt == 'C') {
- rc = "char" + rc;
- } else if (charAt == 'L') {
- int semiIndex = typeName.indexOf(";");
- rc = typeName.substring(i + 1, semiIndex) + rc;
- i = semiIndex;
- } else if (charAt == 'D') {
- rc = "double" + rc;
- } else if (charAt == 'F') {
- rc = "float" + rc;
- } else if (charAt == 'I') {
- rc = "int" + rc;
- } else if (charAt == 'J') {
- rc = "long" + rc;
- } else if (charAt == 'S') {
- rc = "short" + rc;
- } else {
- System.out.println("Error: Invalid signature. typeName = " + typeName + ", charAt = " + charAt + ", i = " + i);
- }
+ typeString.insert(0, type.getName());
+ if (type.getDeclaringClass() != null) {
+ String declaringClassName = calculateTypeDecl(type.getDeclaringClass());
+ assert type.getName().startsWith(declaringClassName + "$");
+ typeString.setCharAt(declaringClassName.length(), '.');
}
- }
- return rc;
+ typeDecl = typeString.toString();
+ typeCache.put(typeName, typeDecl);
+ return typeDecl;
+ }
}
protected void showTypeInfo() {
Modified: geronimo/trunk/modules/interop/src/java/org/apache/geronimo/interop/rmi/iiop/portable/PortableStubCompiler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/java/org/apache/geronimo/interop/rmi/iiop/portable/PortableStubCompiler.java?rev=191412&r1=191411&r2=191412&view=diff
==============================================================================
--- geronimo/trunk/modules/interop/src/java/org/apache/geronimo/interop/rmi/iiop/portable/PortableStubCompiler.java (original)
+++ geronimo/trunk/modules/interop/src/java/org/apache/geronimo/interop/rmi/iiop/portable/PortableStubCompiler.java Mon Jun 20 00:16:38 2005
@@ -90,7 +90,7 @@
// build the basic class object
- String className = "_" + getClassName(interfaceName) + "_Stub_DAIN";
+ String className = "_" + getClassName(interfaceClass) + "_Stub";
JClass jclass = jpackage.newClass(className);
jclass.addImport("javax.rmi.CORBA", "Stub");
jclass.setExtends("Stub");
@@ -114,12 +114,18 @@
}
}
- private static String getClassName(String interfaceName) {
- int endIndex = interfaceName.lastIndexOf('.');
+ private static String getClassName(Class type) {
+ if (type.isArray()) {
+ throw new IllegalArgumentException("type is an array: " + type);
+ }
+
+ // get the classname
+ String typeName = type.getName();
+ int endIndex = typeName.lastIndexOf('.');
if (endIndex < 0) {
- return interfaceName;
+ return typeName;
}
- return interfaceName.substring(endIndex + 1);
+ return typeName.substring(endIndex + 1);
}
private static String getPackageName(String interfaceName) {
@@ -157,46 +163,109 @@
public static IiopOperation[] createIiopOperations(Class intfClass) {
Method[] methods = getAllMethods(intfClass);
- // index the methods by name
- HashMap methodsByName = new HashMap(methods.length);
+ // index the methods by name... used to determine which methods are overloaded
+ HashMap overloadedMethods = new HashMap(methods.length);
for (int i = 0; i < methods.length; i++) {
- List methodList = (ArrayList) methodsByName.get(methods[i].getName());
+ String methodName = methods[i].getName();
+ List methodList = (List) overloadedMethods.get(methodName);
if (methodList == null) {
- methodList = new ArrayList(methods.length);
- methodsByName.put(methods[i].getName(), methodList);
+ methodList = new LinkedList();
+ overloadedMethods.put(methodName, methodList);
}
methodList.add(methods[i]);
}
- List overloadList = new ArrayList(methodsByName.size());
+ // index the methods by lower case name... used to determine which methods differ only by case
+ HashMap caseCollisionMethods = new HashMap(methods.length);
+ for (int i = 0; i < methods.length; i++) {
+ String lowerCaseMethodName = methods[i].getName().toLowerCase();
+ Set methodSet = (Set) caseCollisionMethods.get(lowerCaseMethodName);
+ if (methodSet == null) {
+ methodSet = new HashSet();
+ caseCollisionMethods.put(lowerCaseMethodName, methodSet);
+ }
+ methodSet.add(methods[i].getName());
+ }
+
+ String className = getClassName(intfClass);
+ List overloadList = new ArrayList(methods.length);
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
+
String iiopName = method.getName();
- if (((List) methodsByName.get(method.getName())).size() > 1) {
- iiopName = buildOverloadMethodName(method);
+
+ if (((Set) caseCollisionMethods.get(method.getName().toLowerCase())).size() > 1) {
+ iiopName += upperCaseIndexString(iiopName);
+ }
+
+ // if we have a leading underscore prepend with J
+ if (iiopName.charAt(0) == '_') {
+ iiopName = "J" + iiopName;
}
+
+ // if this is an overloaded method append the parameter string
+ if (((List) overloadedMethods.get(method.getName())).size() > 1) {
+ iiopName += buildOverloadParameterString(method.getParameterTypes());
+ }
+
+ // if we have a leading underscore prepend with J
+ iiopName = replace(iiopName, '$', "U0024");
+
+ // if we have matched a keyword prepend with an underscore
+ if (keywords.contains(iiopName.toLowerCase())) {
+ iiopName = "_" + iiopName;
+ }
+
+ // if the name is the same as the class name, append an underscore
+ if (iiopName.equalsIgnoreCase(className)) {
+ iiopName += "_";
+ }
+
overloadList.add(new IiopOperation(iiopName, method));
}
return (IiopOperation[]) overloadList.toArray(new IiopOperation[overloadList.size()]);
}
- public static String buildOverloadMethodName(Method method) {
- Class parameterTypes[] = method.getParameterTypes();
- String name = method.getName() + "_";
+ private static String upperCaseIndexString(String iiopName) {
+ StringBuffer stringBuffer = new StringBuffer();
+ for (int i = 0; i < iiopName.length(); i++) {
+ char c = iiopName.charAt(i);
+ if (Character.isUpperCase(c)) {
+ stringBuffer.append('_').append(i);
+ }
+ }
+ return stringBuffer.toString();
+ }
+
+ public static String replace(String source, char oldChar, String newString) {
+ StringBuffer stringBuffer = new StringBuffer(source.length());
+ for (int i = 0; i < source.length(); i++) {
+ char c = source.charAt(i);
+ if (c == oldChar) {
+ stringBuffer.append(newString);
+ } else {
+ stringBuffer.append(c);
+ }
+ }
+ return stringBuffer.toString();
+ }
+
+ public static String buildOverloadParameterString(Class[] parameterTypes) {
+ String name = "";
if (parameterTypes.length ==0) {
- name += "_";
+ name += "__";
} else {
for (int i = 0; i < parameterTypes.length; i++) {
Class parameterType = parameterTypes[i];
- name += buildOverloadParameterName(parameterType);
+ name += buildOverloadParameterString(parameterType);
}
}
return name.replace('.', '_');
}
- public static String buildOverloadParameterName(Class parameterType) {
- String name = "";
+ public static String buildOverloadParameterString(Class parameterType) {
+ String name = "_";
int arrayDimensions = 0;
while (parameterType.isArray()) {
@@ -214,14 +283,11 @@
name += "_org_omg_boxedIDL";
}
- // determine the parameterType name... this is overriden for special corba types
- String parameterTypeName = (String) overloadTypes.get(parameterType.getName());
- if (parameterTypeName == null) {
- parameterTypeName = parameterType.getName();
+ // add package... some types have special mappings in corba
+ String packageName = (String) specialTypePackages.get(parameterType.getName());
+ if (packageName == null) {
+ packageName = getPackageName(parameterType.getName());
}
-
- // add package
- String packageName = getPackageName(parameterTypeName);
if (packageName.length() > 0) {
name += "_" + packageName;
}
@@ -232,11 +298,43 @@
}
// add the class name
- name += "_" + getClassName(parameterTypeName);
+ String className = (String) specialTypeNames.get(parameterType.getName());
+ if (className == null) {
+ className = buildClassName(parameterType);
+ }
+ name += "_" + className;
return name;
}
+ private static String buildClassName(Class type) {
+ if (type.isArray()) {
+ throw new IllegalArgumentException("type is an array: " + type);
+ }
+
+ // get the classname
+ String typeName = type.getName();
+ int endIndex = typeName.lastIndexOf('.');
+ if (endIndex < 0) {
+ return typeName;
+ }
+ StringBuffer className = new StringBuffer(typeName.substring(endIndex + 1));
+
+ // for innerclasses replace the $ separator with two underscores
+ // we can't just blindly replace all $ characters since class names can contain the $ character
+ if (type.getDeclaringClass() != null) {
+ String declaringClassName = getClassName(type.getDeclaringClass());
+ assert className.toString().startsWith(declaringClassName + "$");
+ className.replace(declaringClassName.length(), declaringClassName.length() + 1, "__");
+ }
+
+ // if we have a leading underscore prepend with J
+ if (className.charAt(0) == '_') {
+ className.insert(0, "J");
+ }
+ return className.toString();
+ }
+
private void addMethod(JClass jclass, String iiopMethodName, JReturnType jreturnType, String name, JParameter[] jparameters, Class[] exceptions) {
//
// Method Template:
@@ -478,9 +576,11 @@
// }
// }
- private static HashMap readMethods;
- private static HashMap writeMethods;
- private static HashMap overloadTypes;
+ private static final Map readMethods;
+ private static final Map writeMethods;
+ private static final Map specialTypeNames;
+ private static final Map specialTypePackages;
+ private static final Set keywords;
static {
readMethods = new HashMap();
@@ -505,18 +605,80 @@
writeMethods.put("double", "write_double");
writeMethods.put("org.omg.CORBA.Object", "write_Object");
- overloadTypes = new HashMap();
- overloadTypes.put("boolean", "boolean");
- overloadTypes.put("char", "wchar");
- overloadTypes.put("byte", "octet");
- overloadTypes.put("short", "short");
- overloadTypes.put("int", "long");
- overloadTypes.put("long", "long_long");
- overloadTypes.put("float", "float");
- overloadTypes.put("double", "double");
- overloadTypes.put("java.lang.Class", "javax.rmi.CORBA.ClassDesc");
- overloadTypes.put("java.lang.String", "CORBA.WStringValue");
- overloadTypes.put("org.omg.CORBA.Object", "Object");
+ specialTypeNames = new HashMap();
+ specialTypeNames.put("boolean", "boolean");
+ specialTypeNames.put("char", "wchar");
+ specialTypeNames.put("byte", "octet");
+ specialTypeNames.put("short", "short");
+ specialTypeNames.put("int", "long");
+ specialTypeNames.put("long", "long_long");
+ specialTypeNames.put("float", "float");
+ specialTypeNames.put("double", "double");
+ specialTypeNames.put("java.lang.Class", "ClassDesc");
+ specialTypeNames.put("java.lang.String", "WStringValue");
+ specialTypeNames.put("org.omg.CORBA.Object", "Object");
+
+ specialTypePackages = new HashMap();
+ specialTypePackages.put("boolean", "");
+ specialTypePackages.put("char", "");
+ specialTypePackages.put("byte", "");
+ specialTypePackages.put("short", "");
+ specialTypePackages.put("int", "");
+ specialTypePackages.put("long", "");
+ specialTypePackages.put("float", "");
+ specialTypePackages.put("double", "");
+ specialTypePackages.put("java.lang.Class", "javax.rmi.CORBA");
+ specialTypePackages.put("java.lang.String", "CORBA");
+ specialTypePackages.put("org.omg.CORBA.Object", "");
+
+ keywords = new HashSet();
+ keywords.add("abstract");
+ keywords.add("any");
+ keywords.add("attribute");
+ keywords.add("boolean");
+ keywords.add("case");
+ keywords.add("char");
+ keywords.add("const");
+ keywords.add("context");
+ keywords.add("custom");
+ keywords.add("default");
+ keywords.add("double");
+ keywords.add("enum");
+ keywords.add("exception");
+ keywords.add("factory");
+ keywords.add("false");
+ keywords.add("fixed");
+ keywords.add("float");
+ keywords.add("in");
+ keywords.add("inout");
+ keywords.add("interface");
+ keywords.add("long");
+ keywords.add("module");
+ keywords.add("native");
+ keywords.add("object");
+ keywords.add("octet");
+ keywords.add("oneway");
+ keywords.add("out");
+ keywords.add("private");
+ keywords.add("public");
+ keywords.add("raises");
+ keywords.add("readonly");
+ keywords.add("sequence");
+ keywords.add("short");
+ keywords.add("string");
+ keywords.add("struct");
+ keywords.add("supports");
+ keywords.add("switch");
+ keywords.add("true");
+ keywords.add("truncatable");
+ keywords.add("typedef");
+ keywords.add("union");
+ keywords.add("unsigned");
+ keywords.add("valuebase");
+ keywords.add("valuetype");
+ keywords.add("void");
+ keywords.add("wchar");
+ keywords.add("wstring");
}
protected String getWriteMethod(JVariable jvariable) {
Modified: geronimo/trunk/modules/interop/src/test-data/nameMangler.properties
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test-data/nameMangler.properties?rev=191412&r1=191411&r2=191412&view=diff
==============================================================================
--- geronimo/trunk/modules/interop/src/test-data/nameMangler.properties (original)
+++ geronimo/trunk/modules/interop/src/test-data/nameMangler.properties Mon Jun 20 00:16:38 2005
@@ -12,7 +12,7 @@
abcdefg_pass_CORBA_Any(org.omg.CORBA.Any) = abcdefg_pass_CORBA_Any
abcdefg_pass_CORBA_TypeCode(org.omg.CORBA.TypeCode) = abcdefg_pass_CORBA_TypeCode
abcdefg_pass_CheeseIDLEntity(org.apache.geronimo.interop.rmi.iiop.portable.other.CheeseIDLEntity) = abcdefg_pass_CheeseIDLEntity
-abcdefg_pass_GenericInterface(org.apache.geronimo.interop.rmi.iiop.portable.other.GenericInterface) = abcdefg_pass_GenericInterface
+abcdefg_pass_GenericInterface(org.apache.geronimo.interop.rmi.iiop.portable.other.Generic$Interface) = abcdefg_pass_GenericInterface
abcdefg_pass_BlahException(org.apache.geronimo.interop.rmi.iiop.portable.other.BlahEx) = abcdefg_pass_BlahException
abcdefg_pass_BooException(org.apache.geronimo.interop.rmi.iiop.portable.BooException) = abcdefg_pass_BooException
abcdefg_return_boolean() = abcdefg_return_boolean
@@ -57,7 +57,7 @@
abcdefg_pass_CORBA_Any_arr(org.omg.CORBA.Any[]) = abcdefg_pass_CORBA_Any_arr
abcdefg_pass_CORBA_TypeCode_arr(org.omg.CORBA.TypeCode[]) = abcdefg_pass_CORBA_TypeCode_arr
abcdefg_pass_CheeseIDLEntity_arr(org.apache.geronimo.interop.rmi.iiop.portable.other.CheeseIDLEntity[]) = abcdefg_pass_CheeseIDLEntity_arr
-abcdefg_pass_GenericInterface_arr(org.apache.geronimo.interop.rmi.iiop.portable.other.GenericInterface[]) = abcdefg_pass_GenericInterface_arr
+abcdefg_pass_GenericInterface_arr(org.apache.geronimo.interop.rmi.iiop.portable.other.Generic$Interface[]) = abcdefg_pass_GenericInterface_arr
abcdefg_pass_BlahException_arr(org.apache.geronimo.interop.rmi.iiop.portable.other.BlahEx[]) = abcdefg_pass_BlahException_arr
abcdefg_pass_BooException_arr(org.apache.geronimo.interop.rmi.iiop.portable.BooException[]) = abcdefg_pass_BooException_arr
abcdefg_return_boolean_arr() = abcdefg_return_boolean_arr
@@ -92,7 +92,7 @@
abcdefg_overload(org.omg.CORBA.Any) = abcdefg_overload__org_omg_boxedIDL_org_omg_CORBA_Any
abcdefg_overload(org.omg.CORBA.TypeCode) = abcdefg_overload__org_omg_boxedIDL_org_omg_CORBA_TypeCode
abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.CheeseIDLEntity) = abcdefg_overload__org_omg_boxedIDL_org_apache_geronimo_interop_rmi_iiop_portable_other_CheeseIDLEntity
-abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.GenericInterface) = abcdefg_overload__org_apache_geronimo_interop_rmi_iiop_portable_other_GenericInterface
+abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.Generic$Interface) = abcdefg_overload__org_apache_geronimo_interop_rmi_iiop_portable_other_GenericU0024Interface
abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.BlahEx) = abcdefg_overload__org_apache_geronimo_interop_rmi_iiop_portable_other_BlahEx
abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.BooException) = abcdefg_overload__org_apache_geronimo_interop_rmi_iiop_portable_BooException
abcdefg_overload(boolean[]) = abcdefg_overload__org_omg_boxedRMI_seq1_boolean
@@ -110,7 +110,7 @@
abcdefg_overload(org.omg.CORBA.Any[]) = abcdefg_overload__org_omg_boxedRMI_org_omg_boxedIDL_org_omg_CORBA_seq1_Any
abcdefg_overload(org.omg.CORBA.TypeCode[]) = abcdefg_overload__org_omg_boxedRMI_org_omg_boxedIDL_org_omg_CORBA_seq1_TypeCode
abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.CheeseIDLEntity[]) = abcdefg_overload__org_omg_boxedRMI_org_omg_boxedIDL_org_apache_geronimo_interop_rmi_iiop_portable_other_seq1_CheeseIDLEntity
-abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.GenericInterface[]) = abcdefg_overload__org_omg_boxedRMI_org_apache_geronimo_interop_rmi_iiop_portable_other_seq1_GenericInterface
+abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.Generic$Interface[]) = abcdefg_overload__org_omg_boxedRMI_org_apache_geronimo_interop_rmi_iiop_portable_other_seq1_GenericU0024Interface
abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.BlahEx[]) = abcdefg_overload__org_omg_boxedRMI_org_apache_geronimo_interop_rmi_iiop_portable_other_seq1_BlahEx
abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.BooException[]) = abcdefg_overload__org_omg_boxedRMI_org_apache_geronimo_interop_rmi_iiop_portable_seq1_BooException
abcdefg_overload(boolean[][]) = abcdefg_overload__org_omg_boxedRMI_seq2_boolean
@@ -128,7 +128,7 @@
abcdefg_overload(org.omg.CORBA.Any[][]) = abcdefg_overload__org_omg_boxedRMI_org_omg_boxedIDL_org_omg_CORBA_seq2_Any
abcdefg_overload(org.omg.CORBA.TypeCode[][]) = abcdefg_overload__org_omg_boxedRMI_org_omg_boxedIDL_org_omg_CORBA_seq2_TypeCode
abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.CheeseIDLEntity[][]) = abcdefg_overload__org_omg_boxedRMI_org_omg_boxedIDL_org_apache_geronimo_interop_rmi_iiop_portable_other_seq2_CheeseIDLEntity
-abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.GenericInterface[][]) = abcdefg_overload__org_omg_boxedRMI_org_apache_geronimo_interop_rmi_iiop_portable_other_seq2_GenericInterface
+abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.Generic$Interface[][]) = abcdefg_overload__org_omg_boxedRMI_org_apache_geronimo_interop_rmi_iiop_portable_other_seq2_GenericU0024Interface
abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.other.BlahEx[][]) = abcdefg_overload__org_omg_boxedRMI_org_apache_geronimo_interop_rmi_iiop_portable_other_seq2_BlahEx
abcdefg_overload(org.apache.geronimo.interop.rmi.iiop.portable.BooException[][]) = abcdefg_overload__org_omg_boxedRMI_org_apache_geronimo_interop_rmi_iiop_portable_seq2_BooException
abcdefg_throw_exception() = abcdefg_throw_exception
Added: geronimo/trunk/modules/interop/src/test-data/specialNameMangler.properties
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test-data/specialNameMangler.properties?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test-data/specialNameMangler.properties (added)
+++ geronimo/trunk/modules/interop/src/test-data/specialNameMangler.properties Mon Jun 20 00:16:38 2005
@@ -0,0 +1,66 @@
+_underscore() = J_underscore
+_underscoreOverload() = J_underscoreOverload__
+_underscoreOverload(org.apache.geronimo.interop.rmi.iiop.portable.other._Something) = J_underscoreOverload__org_apache_geronimo_interop_rmi_iiop_portable_other_J_Something
+_underscoreOverload(org.apache.geronimo.interop.rmi.iiop.portable.other._Something[]) = J_underscoreOverload__org_omg_boxedRMI_org_apache_geronimo_interop_rmi_iiop_portable_other_seq1_J_Something
+dollar$() = dollarU0024
+$dollar() = U0024dollar
+#unicode_¿Ï´¹§Ä½µ() = unicode_??U0153U00A5U03C0??U0192U03A9?U00B5
+innerClass(org.apache.geronimo.interop.rmi.iiop.portable.other.Generic$Interface$Generic$InnerClassint) = innerClass__org_apache_geronimo_interop_rmi_iiop_portable_other_GenericU0024Interface__GenericU0024InnerClass__long
+innerClass(org.apache.geronimo.interop.rmi.iiop.portable.other.Generic$Interface$Generic$InnerClass[]int) = innerClass__org_omg_boxedRMI_org_apache_geronimo_interop_rmi_iiop_portable_other_seq1_GenericU0024Interface__GenericU0024InnerClass__long
+special() = special_
+differByCase() = differByCase_6_8
+differByCASE() = differByCASE_6_8_9_10_11
+differByCaseOverload() = differByCaseOverload_6_8_12
+differByCASEOverload() = differByCASEOverload_6_8_9_10_11_12__
+differByCASEOverload(int) = differByCASEOverload_6_8_9_10_11_12__long
+keyword() = keyword__
+keyword(org.apache.geronimo.interop.rmi.iiop.portable.other.inout) = keyword__org_apache_geronimo_interop_rmi_iiop_portable_other_inout
+ABSTRACT() = ABSTRACT__
+ABSTRACT(int) = ABSTRACT__long
+any() = _any
+attribute() = _attribute
+BOOLEAN() = _BOOLEAN
+CASE() = _CASE
+CHAR() = _CHAR
+CONST() = _CONST
+context() = _context
+custom() = _custom
+DEFAULT() = _DEFAULT
+DOUBLE() = _DOUBLE
+enum() = _enum
+exception() = _exception
+factory() = _factory
+FALSE() = _FALSE
+fixed() = _fixed
+FLOAT() = _FLOAT
+in() = _in
+inout() = _inout
+INTERFACE() = _INTERFACE
+LONG() = _LONG
+module() = _module
+NATIVE() = _NATIVE
+OBJECT() = _OBJECT
+octet() = _octet
+oneway() = _oneway
+out() = _out
+PRIVATE() = _PRIVATE
+PUBLIC() = _PUBLIC
+raises() = _raises
+readonly() = _readonly
+sequence() = _sequence
+SHORT() = _SHORT
+string() = _string
+struct() = _struct
+supports() = _supports
+SWITCH() = _SWITCH
+TRUE() = _TRUE
+truncatable() = _truncatable
+typedef() = _typedef
+union() = _union
+unsigned() = _unsigned
+ValueBase() = _ValueBase
+valuetype() = _valuetype
+VOID() = _VOID
+wchar() = _wchar
+wstring() = _wstring
+
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/BooException.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/BooException.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/BooException.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/BooException.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,37 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class BooException extends Exception {
+ public BooException() {
+ }
+
+ public BooException(String message) {
+ super(message);
+ }
+
+ public BooException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public BooException(Throwable cause) {
+ super(cause);
+ }
+}
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/Foo.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/Foo.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/Foo.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/Foo.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,181 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable;
+
+import java.math.BigDecimal;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
+import org.apache.geronimo.interop.rmi.iiop.portable.other.BlahEx;
+import org.apache.geronimo.interop.rmi.iiop.portable.other.CheeseIDLEntity;
+import org.apache.geronimo.interop.rmi.iiop.portable.other.Donkey;
+import org.apache.geronimo.interop.rmi.iiop.portable.other.DonkeyEx;
+import org.apache.geronimo.interop.rmi.iiop.portable.other.Generic$Interface;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface Foo extends Remote {
+
+ public void abcdefg_nothing() throws RemoteException;
+
+ public void abcdefg_pass_boolean(boolean x) throws RemoteException;
+ public void abcdefg_pass_char(char x) throws RemoteException;
+ public void abcdefg_pass_byte(byte x) throws RemoteException;
+ public void abcdefg_pass_int(int x) throws RemoteException;
+ public void abcdefg_pass_long(long x) throws RemoteException;
+ public void abcdefg_pass_float(float x) throws RemoteException;
+ public void abcdefg_pass_double(double x) throws RemoteException;
+ public void abcdefg_pass_BigDecimal(BigDecimal x) throws RemoteException;
+ public void abcdefg_pass_Class(Class x) throws RemoteException;
+ public void abcdefg_pass_CORBA_Object(org.omg.CORBA.Object x) throws RemoteException;
+ public void abcdefg_pass_CORBA_Any(org.omg.CORBA.Any x) throws RemoteException;
+ public void abcdefg_pass_CORBA_TypeCode(org.omg.CORBA.TypeCode x) throws RemoteException;
+ public void abcdefg_pass_CheeseIDLEntity(CheeseIDLEntity x) throws RemoteException;
+ public void abcdefg_pass_GenericInterface(Generic$Interface x) throws RemoteException;
+ public void abcdefg_pass_BlahException(BlahEx x) throws RemoteException;
+ public void abcdefg_pass_BooException(BooException x) throws RemoteException;
+
+ public boolean abcdefg_return_boolean() throws RemoteException;
+ public char abcdefg_return_char() throws RemoteException;
+ public byte abcdefg_return_byte() throws RemoteException;
+ public int abcdefg_return_int() throws RemoteException;
+ public long abcdefg_return_long() throws RemoteException;
+ public float abcdefg_return_float() throws RemoteException;
+ public double abcdefg_return_double() throws RemoteException;
+ public BigDecimal abcdefg_return_BigDecimal() throws RemoteException;
+ public Class abcdefg_return_Class() throws RemoteException;
+ public org.omg.CORBA.Object abcdefg_return_CORBA_Object() throws RemoteException;
+ public org.omg.CORBA.Any abcdefg_return_CORBA_Any() throws RemoteException;
+ public org.omg.CORBA.TypeCode abcdefg_return_CORBA_TypeCode() throws RemoteException;
+ public CheeseIDLEntity abcdefg_return_CheeseIDLEntity() throws RemoteException;
+ public Generic$Interface abcdefg_return_GenericInterface() throws RemoteException;
+ public BlahEx abcdefg_return_BlahException() throws RemoteException;
+ public BooException abcdefg_return_BooException() throws RemoteException;
+
+ public boolean abcdefg_pass_return_boolean(boolean x) throws RemoteException;
+ public char abcdefg_pass_return_char(char x) throws RemoteException;
+ public byte abcdefg_pass_return_byte(byte x) throws RemoteException;
+ public int abcdefg_pass_return_int(int x) throws RemoteException;
+ public long abcdefg_pass_return_long(long x) throws RemoteException;
+ public float abcdefg_pass_return_float(float x) throws RemoteException;
+ public double abcdefg_pass_return_double(double x) throws RemoteException;
+ public BigDecimal abcdefg_pass_return_BigDecimal(BigDecimal x) throws RemoteException;
+ public Class abcdefg_pass_return_Class(Class x) throws RemoteException;
+ public org.omg.CORBA.Object abcdefg_pass_return_CORBA_Object(org.omg.CORBA.Object x) throws RemoteException;
+ public org.omg.CORBA.Any abcdefg_pass_return_CORBA_Any(org.omg.CORBA.Any x) throws RemoteException;
+ public org.omg.CORBA.TypeCode abcdefg_pass_return_CORBA_TypeCode(org.omg.CORBA.TypeCode x) throws RemoteException;
+ public CheeseIDLEntity abcdefg_pass_return_CheeseIDLEntity(CheeseIDLEntity x) throws RemoteException;
+
+ public void abcdefg_pass_boolean_arr(boolean[] x) throws RemoteException;
+ public void abcdefg_pass_char_arr(char[] x) throws RemoteException;
+ public void abcdefg_pass_byte_arr(byte[] x) throws RemoteException;
+ public void abcdefg_pass_int_arr(int[] x) throws RemoteException;
+ public void abcdefg_pass_long_arr(long[] x) throws RemoteException;
+ public void abcdefg_pass_float_arr(float[] x) throws RemoteException;
+ public void abcdefg_pass_double_arr(double[] x) throws RemoteException;
+ public void abcdefg_pass_BigDecimal_arr(BigDecimal[] x) throws RemoteException;
+ public void abcdefg_pass_Class_arr(Class[] x) throws RemoteException;
+ public void abcdefg_pass_CORBA_Object_arr(org.omg.CORBA.Object[] x) throws RemoteException;
+ public void abcdefg_pass_CORBA_Any_arr(org.omg.CORBA.Any[] x) throws RemoteException;
+ public void abcdefg_pass_CORBA_TypeCode_arr(org.omg.CORBA.TypeCode[] x) throws RemoteException;
+ public void abcdefg_pass_CheeseIDLEntity_arr(CheeseIDLEntity[] x) throws RemoteException;
+ public void abcdefg_pass_GenericInterface_arr(Generic$Interface[] x) throws RemoteException;
+ public void abcdefg_pass_BlahException_arr(BlahEx[] x) throws RemoteException;
+ public void abcdefg_pass_BooException_arr(BooException[] x) throws RemoteException;
+
+ public boolean[] abcdefg_return_boolean_arr() throws RemoteException;
+ public char[] abcdefg_return_char_arr() throws RemoteException;
+ public byte[] abcdefg_return_byte_arr() throws RemoteException;
+ public int[] abcdefg_return_int_arr() throws RemoteException;
+ public long[] abcdefg_return_long_arr() throws RemoteException;
+ public float[] abcdefg_return_float_arr() throws RemoteException;
+ public double[] abcdefg_return_double_arr() throws RemoteException;
+ public BigDecimal[] abcdefg_return_BigDecimal_arr() throws RemoteException;
+ public Class[] abcdefg_return_Class_arr() throws RemoteException;
+ public org.omg.CORBA.Object[] abcdefg_return_CORBA_Object_arr() throws RemoteException;
+ public org.omg.CORBA.Any[] abcdefg_return_CORBA_Any_arr() throws RemoteException;
+ public org.omg.CORBA.TypeCode[] abcdefg_return_CORBA_TypeCode_arr() throws RemoteException;
+ public CheeseIDLEntity[] abcdefg_return_CheeseIDLEntity_arr() throws RemoteException;
+ public Generic$Interface[] abcdefg_return_GenericInterface_arr() throws RemoteException;
+ public BlahEx[] abcdefg_return_BlahException_arr() throws RemoteException;
+ public BooException[] abcdefg_return_BooException_arr() throws RemoteException;
+
+ public void abcdefg_overload() throws RemoteException;
+
+ public void abcdefg_overload(boolean x) throws RemoteException;
+ public void abcdefg_overload(char x) throws RemoteException;
+ public void abcdefg_overload(byte x) throws RemoteException;
+ public void abcdefg_overload(int x) throws RemoteException;
+ public void abcdefg_overload(long x) throws RemoteException;
+ public void abcdefg_overload(float x) throws RemoteException;
+ public void abcdefg_overload(double x) throws RemoteException;
+ public void abcdefg_overload(String x) throws RemoteException;
+ public void abcdefg_overload(BigDecimal x) throws RemoteException;
+ public void abcdefg_overload(Class x) throws RemoteException;
+ public void abcdefg_overload(Object x) throws RemoteException;
+ public void abcdefg_overload(org.omg.CORBA.Object x) throws RemoteException;
+ public void abcdefg_overload(org.omg.CORBA.Any x) throws RemoteException;
+ public void abcdefg_overload(org.omg.CORBA.TypeCode x) throws RemoteException;
+ public void abcdefg_overload(CheeseIDLEntity x) throws RemoteException;
+ public void abcdefg_overload(Generic$Interface x) throws RemoteException;
+ public void abcdefg_overload(BlahEx x) throws RemoteException;
+ public void abcdefg_overload(BooException x) throws RemoteException;
+
+ public void abcdefg_overload(boolean[] x) throws RemoteException;
+ public void abcdefg_overload(char[] x) throws RemoteException;
+ public void abcdefg_overload(byte[] x) throws RemoteException;
+ public void abcdefg_overload(int[] x) throws RemoteException;
+ public void abcdefg_overload(long[] x) throws RemoteException;
+ public void abcdefg_overload(float[] x) throws RemoteException;
+ public void abcdefg_overload(double[] x) throws RemoteException;
+ public void abcdefg_overload(String[] x) throws RemoteException;
+ public void abcdefg_overload(BigDecimal[] x) throws RemoteException;
+ public void abcdefg_overload(Class[] x) throws RemoteException;
+ public void abcdefg_overload(Object[] x) throws RemoteException;
+ public void abcdefg_overload(org.omg.CORBA.Object[] x) throws RemoteException;
+ public void abcdefg_overload(org.omg.CORBA.Any[] x) throws RemoteException;
+ public void abcdefg_overload(org.omg.CORBA.TypeCode[] x) throws RemoteException;
+ public void abcdefg_overload(CheeseIDLEntity[] x) throws RemoteException;
+ public void abcdefg_overload(Generic$Interface[] x) throws RemoteException;
+ public void abcdefg_overload(BlahEx[] x) throws RemoteException;
+ public void abcdefg_overload(BooException[] x) throws RemoteException;
+
+ public void abcdefg_overload(boolean[][] x) throws RemoteException;
+ public void abcdefg_overload(char[][] x) throws RemoteException;
+ public void abcdefg_overload(byte[][] x) throws RemoteException;
+ public void abcdefg_overload(int[][] x) throws RemoteException;
+ public void abcdefg_overload(long[][] x) throws RemoteException;
+ public void abcdefg_overload(float[][] x) throws RemoteException;
+ public void abcdefg_overload(double[][] x) throws RemoteException;
+ public void abcdefg_overload(String[][] x) throws RemoteException;
+ public void abcdefg_overload(BigDecimal[][] x) throws RemoteException;
+ public void abcdefg_overload(Class[][] x) throws RemoteException;
+ public void abcdefg_overload(Object[][] x) throws RemoteException;
+ public void abcdefg_overload(org.omg.CORBA.Object[][] x) throws RemoteException;
+ public void abcdefg_overload(org.omg.CORBA.Any[][] x) throws RemoteException;
+ public void abcdefg_overload(org.omg.CORBA.TypeCode[][] x) throws RemoteException;
+ public void abcdefg_overload(CheeseIDLEntity[][] x) throws RemoteException;
+ public void abcdefg_overload(Generic$Interface[][] x) throws RemoteException;
+ public void abcdefg_overload(BlahEx[][] x) throws RemoteException;
+ public void abcdefg_overload(BooException[][] x) throws RemoteException;
+
+ public void abcdefg_throw_exception() throws RemoteException, BlahEx, BooException, DonkeyEx, Donkey;
+ public void abcdefg_pass_throw_exception(String x) throws RemoteException, BlahEx, BooException, DonkeyEx, Donkey;
+ public String abcdefg_return_throw_exception() throws RemoteException, BlahEx, BooException, DonkeyEx, Donkey;
+ public String abcdefg_pass_return_throw_exception(String x) throws RemoteException, BlahEx, BooException, DonkeyEx, Donkey;
+}
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/PortableStubCompilerTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/PortableStubCompilerTest.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/PortableStubCompilerTest.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/PortableStubCompilerTest.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,114 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Properties;
+import java.util.Set;
+
+import junit.framework.TestCase;
+import org.apache.geronimo.interop.generator.GenOptions;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class PortableStubCompilerTest extends TestCase {
+ public void testStubCompiler() throws Exception {
+ GenOptions genOptions = new GenOptions();
+ new File("target/stubs").mkdirs();
+ genOptions.setClasspath("target/classes");
+ genOptions.setCompile(false);
+ genOptions.setGenSrcDir("target/stubs");
+ genOptions.setGenerate(true);
+ genOptions.setInterfaces(Arrays.asList(new String[]{Foo.class.getName(), Special.class.getName()}));
+ genOptions.setLoadclass(true);
+ genOptions.setOverwrite(true);
+ genOptions.setSimpleIdl(false);
+ genOptions.setVerbose(true);
+
+ ClassLoader classLoader = getClass().getClassLoader();
+ PortableStubCompiler stubCompiler = new PortableStubCompiler(genOptions, classLoader);
+
+ stubCompiler.generate();
+ }
+
+ public void testBasicNameMangler() throws Exception {
+ Properties nameManglerProperties = new Properties();
+ nameManglerProperties.load(new FileInputStream("src/test-data/nameMangler.properties"));
+
+ Set methodSignatures = new HashSet();
+ IiopOperation[] iiopOperations = PortableStubCompiler.createIiopOperations(Foo.class);
+ for (int i = 0; i < iiopOperations.length; i++) {
+ IiopOperation iiopOperation = iiopOperations[i];
+ Method method = iiopOperation.getMethod();
+ String methodSignature = method.getName() + "(";
+
+ Class[] parameterTypes = method.getParameterTypes();
+ for (int j = 0; j < parameterTypes.length; j++) {
+ Class parameterType = parameterTypes[j];
+ String arrayBrackets = "";
+ while (parameterType.isArray()) {
+ arrayBrackets += "[]";
+ parameterType = parameterType.getComponentType();
+ }
+ methodSignature += parameterType.getName() + arrayBrackets;
+ }
+ methodSignature += ")";
+ methodSignatures.add(methodSignature);
+
+ assertTrue("Method not present in name mangler properties: " + methodSignature, nameManglerProperties.containsKey(methodSignature));
+ assertEquals(nameManglerProperties.getProperty(methodSignature), iiopOperation.getName());
+ }
+
+ assertEquals("Did not match all methods", nameManglerProperties.keySet(), methodSignatures);
+ }
+
+ public void testSpecialNameMangler() throws Exception {
+ Properties nameManglerProperties = new Properties();
+ nameManglerProperties.load(new FileInputStream("src/test-data/specialNameMangler.properties"));
+
+ Set methodSignatures = new HashSet();
+ IiopOperation[] iiopOperations = PortableStubCompiler.createIiopOperations(Special.class);
+ for (int i = 0; i < iiopOperations.length; i++) {
+ IiopOperation iiopOperation = iiopOperations[i];
+ Method method = iiopOperation.getMethod();
+ String methodSignature = method.getName() + "(";
+
+ Class[] parameterTypes = method.getParameterTypes();
+ for (int j = 0; j < parameterTypes.length; j++) {
+ Class parameterType = parameterTypes[j];
+ String arrayBrackets = "";
+ while (parameterType.isArray()) {
+ arrayBrackets += "[]";
+ parameterType = parameterType.getComponentType();
+ }
+ methodSignature += parameterType.getName() + arrayBrackets;
+ }
+ methodSignature += ")";
+ methodSignatures.add(methodSignature);
+
+ assertTrue("Method not present in name mangler properties: " + methodSignature, nameManglerProperties.containsKey(methodSignature));
+ assertEquals(nameManglerProperties.getProperty(methodSignature), iiopOperation.getName());
+ }
+
+ assertEquals("Did not match all methods", nameManglerProperties.keySet(), methodSignatures);
+ }
+}
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/Special.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/Special.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/Special.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/Special.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,110 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
+import org.apache.geronimo.interop.rmi.iiop.portable.other.Generic$Interface;
+import org.apache.geronimo.interop.rmi.iiop.portable.other._Something;
+import org.apache.geronimo.interop.rmi.iiop.portable.other.inout;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface Special extends Remote {
+ // J_underscore
+ public void _underscore() throws RemoteException;
+
+ public void _underscoreOverload() throws RemoteException;
+ public void _underscoreOverload(_Something x) throws RemoteException;
+ public void _underscoreOverload(_Something[] x) throws RemoteException;
+
+ // special characters
+ public void dollar$() throws RemoteException;
+ public void $dollar() throws RemoteException;
+
+ // this doesn't work in rmic either although the spec says it's legal
+// public void unicode_¿Ï´¹§Ä½µ() throws RemoteException;
+
+ // innerclass
+ public void innerClass(Generic$Interface.Generic$InnerClass x, int y) throws RemoteException;
+ public void innerClass(Generic$Interface.Generic$InnerClass x[], int y) throws RemoteException;
+
+ // class collision
+ public void special() throws RemoteException;
+
+ // difer by case only
+ public void differByCase() throws RemoteException;
+ public void differByCASE() throws RemoteException;
+ public void differByCaseOverload() throws RemoteException;
+ public void differByCASEOverload() throws RemoteException;
+ public void differByCASEOverload(int x) throws RemoteException;
+
+ // keywords
+ public void keyword() throws RemoteException;
+ public void keyword(inout x) throws RemoteException;
+ public void ABSTRACT() throws RemoteException;
+ public void ABSTRACT(int x) throws RemoteException;
+
+ public void any() throws RemoteException;
+ public void attribute() throws RemoteException;
+ public void BOOLEAN() throws RemoteException;
+ public void CASE() throws RemoteException;
+ public void CHAR() throws RemoteException;
+ public void CONST() throws RemoteException;
+ public void context() throws RemoteException;
+ public void custom() throws RemoteException;
+ public void DEFAULT() throws RemoteException;
+ public void DOUBLE() throws RemoteException;
+ public void enum() throws RemoteException;
+ public void exception() throws RemoteException;
+ public void factory() throws RemoteException;
+ public void FALSE() throws RemoteException;
+ public void fixed() throws RemoteException;
+ public void FLOAT() throws RemoteException;
+ public void in() throws RemoteException;
+ public void inout() throws RemoteException;
+ public void INTERFACE() throws RemoteException;
+ public void LONG() throws RemoteException;
+ public void module() throws RemoteException;
+ public void NATIVE() throws RemoteException;
+ public void OBJECT() throws RemoteException;
+ public void octet() throws RemoteException;
+ public void oneway() throws RemoteException;
+ public void out() throws RemoteException;
+ public void PRIVATE() throws RemoteException;
+ public void PUBLIC() throws RemoteException;
+ public void raises() throws RemoteException;
+ public void readonly() throws RemoteException;
+ public void sequence() throws RemoteException;
+ public void SHORT() throws RemoteException;
+ public void string() throws RemoteException;
+ public void struct() throws RemoteException;
+ public void supports() throws RemoteException;
+ public void SWITCH() throws RemoteException;
+ public void TRUE() throws RemoteException;
+ public void truncatable() throws RemoteException;
+ public void typedef() throws RemoteException;
+ public void union() throws RemoteException;
+ public void unsigned() throws RemoteException;
+ public void ValueBase() throws RemoteException;
+ public void valuetype() throws RemoteException;
+ public void VOID() throws RemoteException;
+ public void wchar() throws RemoteException;
+ public void wstring() throws RemoteException;
+}
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/BlahEx.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/BlahEx.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/BlahEx.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/BlahEx.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,37 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable.other;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class BlahEx extends Exception {
+ public BlahEx() {
+ }
+
+ public BlahEx(String message) {
+ super(message);
+ }
+
+ public BlahEx(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public BlahEx(Throwable cause) {
+ super(cause);
+ }
+}
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/CheeseIDLEntity.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/CheeseIDLEntity.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/CheeseIDLEntity.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/CheeseIDLEntity.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,33 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable.other;
+
+import org.omg.CORBA.portable.IDLEntity;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class CheeseIDLEntity implements IDLEntity {
+ public short cheese = (short) 0;
+
+ public CheeseIDLEntity() {
+ }
+
+ public CheeseIDLEntity(short cheese) {
+ this.cheese = cheese;
+ }
+}
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/Donkey.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/Donkey.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/Donkey.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/Donkey.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,37 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable.other;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class Donkey extends Exception {
+ public Donkey() {
+ }
+
+ public Donkey(String message) {
+ super(message);
+ }
+
+ public Donkey(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public Donkey(Throwable cause) {
+ super(cause);
+ }
+}
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/DonkeyEx.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/DonkeyEx.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/DonkeyEx.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/DonkeyEx.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,37 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable.other;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class DonkeyEx extends Exception {
+ public DonkeyEx() {
+ }
+
+ public DonkeyEx(String message) {
+ super(message);
+ }
+
+ public DonkeyEx(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public DonkeyEx(Throwable cause) {
+ super(cause);
+ }
+}
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/Generic$Interface.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/Generic%24Interface.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/Generic$Interface.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/Generic$Interface.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,28 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable.other;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface Generic$Interface {
+ public void stuff();
+
+ public interface Generic$InnerClass {
+ public void stuff();
+ }
+}
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/_Something.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/_Something.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/_Something.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/_Something.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,23 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable.other;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface _Something {
+}
Added: geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/inout.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/inout.java?rev=191412&view=auto
==============================================================================
--- geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/inout.java (added)
+++ geronimo/trunk/modules/interop/src/test/org/apache/geronimo/interop/rmi/iiop/portable/other/inout.java Mon Jun 20 00:16:38 2005
@@ -0,0 +1,23 @@
+/**
+ *
+ * Copyright 2005 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
+ *
+ * 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.geronimo.interop.rmi.iiop.portable.other;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface inout {
+}
|