Introduce ModelElement.init() - use it for gathering idl_name
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/BooleanDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/BooleanDescriptor.java
index 2de50d2..24e22e6 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/BooleanDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/BooleanDescriptor.java
@@ -18,7 +18,7 @@
package org.apache.yoko.rmi.impl;
-class BooleanDescriptor extends SimpleDescriptor {
+final class BooleanDescriptor extends SimpleDescriptor {
BooleanDescriptor(TypeRepository repository) {
super(Boolean.TYPE, repository, "boolean",
org.omg.CORBA.TCKind.tk_boolean);
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ByteDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ByteDescriptor.java
index b47b7d4..2c044cf 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ByteDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ByteDescriptor.java
@@ -18,7 +18,7 @@
package org.apache.yoko.rmi.impl;
-class ByteDescriptor extends SimpleDescriptor {
+final class ByteDescriptor extends SimpleDescriptor {
ByteDescriptor(TypeRepository repository) {
super(Byte.TYPE, repository, "octet", org.omg.CORBA.TCKind.tk_octet);
}
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/CharDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/CharDescriptor.java
index 8334380..b8077b7 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/CharDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/CharDescriptor.java
@@ -18,7 +18,7 @@
package org.apache.yoko.rmi.impl;
-class CharDescriptor extends SimpleDescriptor {
+final class CharDescriptor extends SimpleDescriptor {
CharDescriptor(TypeRepository repository) {
super(Character.TYPE, repository, "wchar",
org.omg.CORBA.TCKind.tk_wchar);
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/DoubleDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/DoubleDescriptor.java
index 2fd7ca6..8299776 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/DoubleDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/DoubleDescriptor.java
@@ -18,7 +18,7 @@
package org.apache.yoko.rmi.impl;
-class DoubleDescriptor extends SimpleDescriptor {
+final class DoubleDescriptor extends SimpleDescriptor {
DoubleDescriptor(TypeRepository repository) {
super(Double.TYPE, repository, "double", org.omg.CORBA.TCKind.tk_double);
}
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FieldDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FieldDescriptor.java
index 00c2b1d..c4b1e89 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FieldDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FieldDescriptor.java
@@ -47,7 +47,7 @@
java.lang.reflect.Field f, TypeRepository repo) {
super(repo, name);
this.type = type;
- setIDLName(name);
+ init();
declaringClass = owner;
if (f != null) {
@@ -61,6 +61,11 @@
}
}
+ @Override
+ protected final String genIDLName() {
+ return java_name;
+ }
+
ValueMember getValueMember(TypeRepository rep) {
if (valuemember == null) {
TypeDescriptor desc = rep.getDescriptor(type);
@@ -134,6 +139,13 @@
}
static FieldDescriptor get(Class owner, Class type, String name,
+ java.lang.reflect.Field f, TypeRepository repository) {
+ FieldDescriptor desc = get0(owner, type, name, f, repository);
+ desc.init();
+ return desc;
+ }
+
+ private static FieldDescriptor get0(Class owner, Class type, String name,
java.lang.reflect.Field f, TypeRepository repository) {
if (type.isPrimitive()) {
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FloatDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FloatDescriptor.java
index 271d272..a28eea0 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FloatDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FloatDescriptor.java
@@ -18,7 +18,7 @@
package org.apache.yoko.rmi.impl;
-class FloatDescriptor extends SimpleDescriptor {
+final class FloatDescriptor extends SimpleDescriptor {
FloatDescriptor(TypeRepository repository) {
super(Float.TYPE, repository, "float", org.omg.CORBA.TCKind.tk_float);
}
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/IntegerDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/IntegerDescriptor.java
index ce67d33..1649929 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/IntegerDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/IntegerDescriptor.java
@@ -18,7 +18,7 @@
package org.apache.yoko.rmi.impl;
-class IntegerDescriptor extends SimpleDescriptor {
+final class IntegerDescriptor extends SimpleDescriptor {
IntegerDescriptor(TypeRepository repository) {
super(Integer.TYPE, repository, "long", org.omg.CORBA.TCKind.tk_long);
}
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/LongDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/LongDescriptor.java
index 39e3b71..7b6e417 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/LongDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/LongDescriptor.java
@@ -18,7 +18,7 @@
package org.apache.yoko.rmi.impl;
-class LongDescriptor extends SimpleDescriptor {
+final class LongDescriptor extends SimpleDescriptor {
LongDescriptor(TypeRepository repository) {
super(Long.TYPE, repository, "long_long",
org.omg.CORBA.TCKind.tk_longlong);
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/MethodDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/MethodDescriptor.java
index 749bfe9..1dfa274 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/MethodDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/MethodDescriptor.java
@@ -347,10 +347,11 @@
}
parameter_count = param_types.length;
- generateIDLName();
+ super.init();
}
- void generateIDLName() {
+ @Override
+ protected String genIDLName() {
String idl_name = null;
if (isSetterMethod()) {
@@ -368,8 +369,7 @@
if (isOverloaded) {
idl_name = transformOverloading(idl_name);
}
-
- setIDLName(idl_name);
+ return idl_name;
}
private String attributeName() {
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ModelElement.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ModelElement.java
index 24a3c59..4fa6b85 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ModelElement.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ModelElement.java
@@ -20,19 +20,27 @@
abstract class ModelElement {
protected final TypeRepository repo;
- protected final String java_name; // the java name of the type
- private String idl_name; // fully resolved package name
+ protected final String java_name; // the java name of the type
+ private String idl_name; // fully resolved package name
+ private volatile boolean notInit = true;
protected ModelElement(TypeRepository repo, String java_name) {
this.repo = repo;
this.java_name = java_name;
}
- protected void setIDLName(String name) {
- idl_name = name;
+ protected void init() {
+ idl_name = genIDLName();
+ notInit = false;
}
-
+
+ protected abstract String genIDLName();
+
+ final void checkInit() {
+ if (notInit) throw new IllegalStateException("Not initialized");
+ }
public String getIDLName() {
+ checkInit();
return idl_name;
}
}
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteClassDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteClassDescriptor.java
index 1116043..ca40f49 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteClassDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteClassDescriptor.java
@@ -27,8 +27,4 @@
RemoteClassDescriptor(Class type, TypeRepository repository) {
super(type, repository);
}
-
- public void init() {
- super.init();
- }
}
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteDescriptor.java
index 8aafb16..4154c49 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteDescriptor.java
@@ -140,9 +140,6 @@
super(type, repository);
}
- public void init() {
- }
-
public MethodDescriptor[] getMethods() {
if (operations == null) {
init_methods();
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteInterfaceDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteInterfaceDescriptor.java
index c053fd5..72f8e91 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteInterfaceDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/RemoteInterfaceDescriptor.java
@@ -22,9 +22,4 @@
RemoteInterfaceDescriptor(Class type, TypeRepository repository) {
super(type, repository);
}
-
- public void init() {
- super.init();
- }
-
}
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ShortDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ShortDescriptor.java
index 6a3ce74..eb95f93 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ShortDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ShortDescriptor.java
@@ -18,7 +18,7 @@
package org.apache.yoko.rmi.impl;
-class ShortDescriptor extends SimpleDescriptor {
+final class ShortDescriptor extends SimpleDescriptor {
ShortDescriptor(TypeRepository repository) {
super(Short.TYPE, repository, "short", org.omg.CORBA.TCKind.tk_short);
}
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/SimpleDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/SimpleDescriptor.java
index eddf015..96e3a77 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/SimpleDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/SimpleDescriptor.java
@@ -19,10 +19,11 @@
package org.apache.yoko.rmi.impl;
abstract class SimpleDescriptor extends TypeDescriptor {
+ private final String idl_name;
SimpleDescriptor(Class type, TypeRepository repository, String idl_name,
org.omg.CORBA.TCKind tc) {
super(type, repository);
- setIDLName(idl_name);
+ this.idl_name = idl_name;
// the simple type name is the same as the IDL name. The
// package name is null
setTypeName(idl_name);
@@ -32,6 +33,11 @@
_type_code = orb.get_primitive_tc(tc);
}
+ @Override
+ protected String genIDLName() {
+ return idl_name;
+ }
+
org.omg.CORBA.TypeCode getTypeCode() {
return _type_code;
}
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/StringDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/StringDescriptor.java
index 26a2dce..8374213 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/StringDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/StringDescriptor.java
@@ -30,10 +30,6 @@
setPackageName("CORBA");
}
- public void init() {
- super.init();
- }
-
/** Read an instance of this value from a CDR stream */
public Object read(org.omg.CORBA.portable.InputStream in) {
return org.omg.CORBA.WStringValueHelper.read(in);
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/TypeDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/TypeDescriptor.java
index 5c01684..0641778 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/TypeDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/TypeDescriptor.java
@@ -30,7 +30,7 @@
abstract class TypeDescriptor extends ModelElement {
static Logger logger = Logger.getLogger(TypeDescriptor.class.getName());
- protected final Class _java_class;
+ private final Class _java_class;
protected String _repid;
@@ -125,7 +125,6 @@
super(repository, type.getName());
_java_class = type;
String typeName = type.getName();
- setIDLName(typeName.replace('.', '_'));
// break up the simple type and package
int idx = typeName.lastIndexOf('.');
// if we have a package, split it into the component parts
@@ -140,6 +139,11 @@
}
}
+ @Override
+ protected String genIDLName() {
+ return java_name.replace('.', '_');
+ }
+
public String getRepositoryID() {
if (_repid == null)
_repid = "RMI:" + getJavaClass().getName() + ":0000000000000000";
@@ -162,9 +166,6 @@
public abstract void write(org.omg.CORBA.portable.OutputStream out,
Object val);
- public void init() {
- }
-
public boolean isCustomMarshalled() {
return false;
}
diff --git a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/VoidDescriptor.java b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/VoidDescriptor.java
index 0ec6385..3c9ecfe 100755
--- a/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/VoidDescriptor.java
+++ b/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/VoidDescriptor.java
@@ -18,7 +18,7 @@
package org.apache.yoko.rmi.impl;
-class VoidDescriptor extends SimpleDescriptor {
+final class VoidDescriptor extends SimpleDescriptor {
VoidDescriptor(TypeRepository repository) {
super(Void.TYPE, repository, "void", org.omg.CORBA.TCKind.tk_void);
}