in yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FieldDescriptor.java [148:198]
private static FieldDescriptor get0(Class owner, Class type, String name,
java.lang.reflect.Field f, TypeRepository repository) {
if (type.isPrimitive()) {
if (type == Boolean.TYPE) {
return new BooleanFieldDescriptor(owner, type, name, f, repository);
} else if (type == Byte.TYPE) {
return new ByteFieldDescriptor(owner, type, name, f, repository);
} else if (type == Short.TYPE) {
return new ShortFieldDescriptor(owner, type, name, f, repository);
} else if (type == Character.TYPE) {
return new CharFieldDescriptor(owner, type, name, f, repository);
} else if (type == Integer.TYPE) {
return new IntFieldDescriptor(owner, type, name, f, repository);
} else if (type == Long.TYPE) {
return new LongFieldDescriptor(owner, type, name, f, repository);
} else if (type == Float.TYPE) {
return new FloatFieldDescriptor(owner, type, name, f, repository);
} else if (type == Double.TYPE) {
return new DoubleFieldDescriptor(owner, type, name, f, repository);
} else {
throw new RuntimeException("unknown field type " + type);
}
} else {
if(org.omg.CORBA.Object.class.isAssignableFrom(type)) {
return new CorbaObjectFieldDescriptor(owner, type, name, f, repository);
}
if (java.lang.Object.class.equals(type)
|| java.io.Externalizable.class.equals(type)
|| java.io.Serializable.class.equals(type)) {
return new AnyFieldDescriptor(owner, type, name, f,repository);
} else if (java.rmi.Remote.class.isAssignableFrom(type)
|| java.rmi.Remote.class.equals(type))
{
return new RemoteFieldDescriptor(owner, type, name, f, repository);
} else if (String.class.equals(type)) {
return new StringFieldDescriptor(owner, type, name, f, repository);
} else if (java.io.Serializable.class.isAssignableFrom(type)) {
return new ValueFieldDescriptor(owner, type, name, f, repository);
} else if (type.isInterface() && type.getMethods().length > 0) {
// interface classes that define methods
return new ValueFieldDescriptor(owner, type, name, f, repository);
} else {
return new ObjectFieldDescriptor(owner, type, name, f, repository);
}
}
}