OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [gnu/] [java/] [rmi/] [activation/] [DefaultActivationGroup.java] - Blame information for rev 769

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 769 jeremybenn
/* DefaultActivationGroup.java -- Default activation group.
2
   Copyright (C) 2006 Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
package gnu.java.rmi.activation;
40
 
41
import gnu.java.rmi.server.ActivatableServerRef;
42
import gnu.java.rmi.server.UnicastServer;
43
 
44
import java.lang.reflect.Constructor;
45
import java.rmi.MarshalledObject;
46
import java.rmi.Remote;
47
import java.rmi.RemoteException;
48
import java.rmi.activation.ActivationDesc;
49
import java.rmi.activation.ActivationException;
50
import java.rmi.activation.ActivationGroup;
51
import java.rmi.activation.ActivationGroupID;
52
import java.rmi.activation.ActivationID;
53
import java.rmi.activation.UnknownObjectException;
54
 
55
/**
56
 * The default activation group class. This activation group assumes that
57
 * all classes are accessible via current thread context class loader.
58
 * The remote class loading is not supported for security reasons. The
59
 * activation always occurs in the current jre.
60
 *
61
 * @author Audrius Meskauskas (audriusa@Bioinformatics.org)
62
 */
63
public class DefaultActivationGroup
64
    extends ActivationGroup
65
{
66
  /**
67
   * Use the serialVersionUID for interoperability.
68
   */
69
  private static final long serialVersionUID = 1;
70
 
71
  /**
72
   * Used during the group creation (required constructor).
73
   */
74
  static final Class[] cConstructorTypes = new Class[]
75
                                                   {
76
                                                    ActivationID.class,
77
                                                    MarshalledObject.class
78
                                                   };
79
 
80
 
81
  /**
82
   * Create the new default activation group.
83
   *
84
   * @param id the group activation id.
85
   * @param data may contain the group initialization data (unused and can be
86
   *          null)
87
   * @throws RemoteException if the super constructor does
88
   */
89
  public DefaultActivationGroup(ActivationGroupID id, MarshalledObject data)
90
  throws RemoteException
91
  {
92
    super(id);
93
  }
94
 
95
 
96
  /**
97
   * May be overridden and used as a hook. This method is called each time
98
   * the new object is instantiated.
99
   */
100
  public void activeObject(ActivationID id, Remote obj)
101
      throws ActivationException, UnknownObjectException, RemoteException
102
  {
103
    // Nothing to do (the monitor is already notified in newInstance)
104
  }
105
 
106
  /**
107
   * Create the new instance of the object, using the class name and location
108
   * information, stored in the passed descriptor. The method expects the object
109
   * class to have the two parameter constructor, the first parameter being the
110
   * {@link ActivationID} and the second the {@link MarshalledObject}.
111
   *
112
   * @param id the object activation id
113
   * @param desc the activation descriptor, providing the information, necessary
114
   *          to create and activate the object
115
   * @return the marshalled object, containing the exported stub of the created
116
   *         object
117
   * @throws ActivationException if the activation fails due any reason
118
   */
119
  public MarshalledObject newInstance(ActivationID id, ActivationDesc desc)
120
      throws ActivationException, RemoteException
121
  {
122
    try
123
      {
124
        if (ActivationSystemTransient.debug)
125
          System.out.println("Instantiating "+desc.getClassName());
126
 
127
        Remote object;
128
        Class objectClass;
129
 
130
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
131
        objectClass = loader.loadClass(desc.getClassName());
132
        Constructor constructor = objectClass.getConstructor(cConstructorTypes);
133
        object = (Remote) constructor.newInstance(
134
          new Object[] { id, desc.getData() });
135
 
136
        // Make the object accessible and create the stub.
137
        ActivatableServerRef ref = UnicastServer.getActivatableRef(id);
138
        Remote stub = ref.exportObject(object);
139
 
140
        MarshalledObject marsh = new MarshalledObject(stub);
141
 
142
        // Notify the activation monitor.
143
        activeObject(id, marsh);
144
 
145
        // Make call to the hook that may be overridden.
146
        activeObject(id, stub);
147
 
148
        return marsh;
149
      }
150
    catch (Exception e)
151
      {
152
        ActivationException acex = new ActivationException(
153
          "Unable to activate "+ desc.getClassName()
154
            + " from "+ desc.getLocation(), e);
155
        throw acex;
156
      }
157
  }
158
 
159
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.