blob: debb1ec059bfa0f4867dda08e2e941e819d442d8 [file] [log] [blame]
package org.apache.yoko.rmi.impl;
import java.lang.reflect.Field;
import java.security.AccessController;
import java.security.PrivilegedAction;
import javax.rmi.CORBA.ClassDesc;
import org.omg.CORBA.MARSHAL;
abstract class ClassBaseDescriptor extends ValueDescriptor {
ClassBaseDescriptor(Class type, TypeRepository repository) {
super(type, repository);
}
@Override
public void init() {
super.init();
final Class<?> clz = ClassDesc.class;
AccessController.doPrivileged(new PrivilegedAction<Void>() {
@Override
public Void run() {
try {
final Field repid_field = clz.getDeclaredField("repid");
repid_field.setAccessible(true);
final Field codebase_field = clz.getDeclaredField("codebase");
codebase_field.setAccessible(true);
init(repid_field, codebase_field);
} catch (NoSuchFieldException ex) {
throw (MARSHAL)new MARSHAL("no such field: " + ex).initCause(ex);
}
return null;
}
});
}
abstract void init(Field repid_field, Field codebase_field);
}