home *** CD-ROM | disk | FTP | other *** search
- package java.rmi.activation;
-
- import java.lang.reflect.Constructor;
- import java.lang.reflect.InvocationTargetException;
- import java.rmi.MarshalledObject;
- import java.rmi.Naming;
- import java.rmi.Remote;
- import java.rmi.RemoteException;
- import java.rmi.server.UnicastRemoteObject;
- import java.security.AccessController;
- import java.security.PrivilegedActionException;
- import sun.security.action.GetIntegerAction;
-
- public abstract class ActivationGroup extends UnicastRemoteObject implements ActivationInstantiator {
- private ActivationGroupID groupID;
- private ActivationMonitor monitor;
- private long incarnation;
- private static ActivationGroup currGroup;
- private static ActivationGroupID currGroupID;
- private static ActivationSystem currSystem;
- private static boolean canCreate = true;
- private static Class[] groupConstrParams;
- private static final long serialVersionUID = -7696947875314805420L;
- // $FF: synthetic field
- static Class class$java$rmi$activation$ActivationGroupID;
- // $FF: synthetic field
- static Class class$java$rmi$MarshalledObject;
- // $FF: synthetic field
- static Class class$sun$rmi$server$ActivationGroupImpl;
-
- protected ActivationGroup(ActivationGroupID var1) throws RemoteException {
- this.groupID = var1;
- }
-
- public boolean inactiveObject(ActivationID var1) throws ActivationException, UnknownObjectException, RemoteException {
- this.monitor.inactiveObject(var1);
- return true;
- }
-
- public abstract void activeObject(ActivationID var1, Remote var2) throws ActivationException, UnknownObjectException, RemoteException;
-
- public static synchronized ActivationGroup createGroup(ActivationGroupID var0, ActivationGroupDesc var1, long var2) throws ActivationException {
- SecurityManager var4 = System.getSecurityManager();
- if (var4 != null) {
- var4.checkSetFactory();
- }
-
- if (currGroup != null) {
- throw new ActivationException("group already exists");
- } else if (!canCreate) {
- throw new ActivationException("group deactivated and cannot be recreated");
- } else {
- try {
- try {
- String var5 = var1.getClassName();
- if (var5 == null) {
- var5 = (class$sun$rmi$server$ActivationGroupImpl == null ? (class$sun$rmi$server$ActivationGroupImpl = class$("sun.rmi.server.ActivationGroupImpl")) : class$sun$rmi$server$ActivationGroupImpl).getName();
- }
-
- String var6 = var5;
-
- Class var7;
- try {
- var7 = (Class)AccessController.doPrivileged(new 1(var1, var6));
- } catch (PrivilegedActionException var11) {
- throw new ActivationException("Could not load default group implementation class", var11.getException());
- }
-
- Constructor var8 = var7.getConstructor(groupConstrParams);
- Object[] var9 = new Object[]{var0, var1.getData()};
- Object var10 = var8.newInstance(var9);
- if (!(var10 instanceof ActivationGroup)) {
- throw new ActivationException("group not correct class: " + var10.getClass().getName());
- }
-
- currGroup = (ActivationGroup)var10;
- currGroupID = var0;
- currSystem = var0.getSystem();
- currGroup.incarnation = var2;
- currGroup.monitor = currSystem.activeGroup(var0, currGroup, var2);
- canCreate = false;
- } catch (InvocationTargetException var12) {
- var12.getTargetException().printStackTrace();
- throw new ActivationException("exception in group constructor", var12.getTargetException());
- } catch (ActivationException var13) {
- throw var13;
- } catch (Exception var14) {
- throw new ActivationException("exception creating group", var14);
- }
- } catch (ActivationException var15) {
- destroyGroup();
- canCreate = true;
- throw var15;
- }
-
- return currGroup;
- }
- }
-
- public static synchronized ActivationGroupID currentGroupID() {
- return currGroupID;
- }
-
- static synchronized ActivationGroupID internalCurrentGroupID() throws ActivationException {
- if (currGroupID == null) {
- throw new ActivationException("nonexistent group");
- } else {
- return currGroupID;
- }
- }
-
- public static synchronized void setSystem(ActivationSystem var0) throws ActivationException {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- var1.checkSetFactory();
- }
-
- if (currSystem != null) {
- throw new ActivationException("activation system already set");
- } else {
- currSystem = var0;
- }
- }
-
- public static synchronized ActivationSystem getSystem() throws ActivationException {
- if (currSystem == null) {
- try {
- int var0 = (Integer)AccessController.doPrivileged(new GetIntegerAction("java.rmi.activation.port", 1098));
- currSystem = (ActivationSystem)Naming.lookup("//:" + var0 + "/java.rmi.activation.ActivationSystem");
- } catch (Exception var1) {
- throw new ActivationException("ActivationSystem not running", var1);
- }
- }
-
- return currSystem;
- }
-
- protected void activeObject(ActivationID var1, MarshalledObject var2) throws ActivationException, UnknownObjectException, RemoteException {
- this.monitor.activeObject(var1, var2);
- }
-
- protected void inactiveGroup() throws UnknownGroupException, RemoteException {
- try {
- this.monitor.inactiveGroup(this.groupID, this.incarnation);
- } finally {
- destroyGroup();
- }
-
- }
-
- private static synchronized void destroyGroup() {
- currGroup = null;
- currGroupID = null;
- }
-
- static synchronized ActivationGroup currentGroup() throws ActivationException {
- if (currGroup == null) {
- throw new ActivationException("group is not active");
- } else {
- return currGroup;
- }
- }
-
- public abstract MarshalledObject newInstance(ActivationID var1, ActivationDesc var2) throws ActivationException, RemoteException;
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- static {
- groupConstrParams = new Class[]{class$java$rmi$activation$ActivationGroupID == null ? (class$java$rmi$activation$ActivationGroupID = class$("java.rmi.activation.ActivationGroupID")) : class$java$rmi$activation$ActivationGroupID, class$java$rmi$MarshalledObject == null ? (class$java$rmi$MarshalledObject = class$("java.rmi.MarshalledObject")) : class$java$rmi$MarshalledObject};
- }
- }
-