aboutsummaryrefslogtreecommitdiff
path: root/libjava/classpath/java/rmi/activation/ActivationGroupDesc.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/java/rmi/activation/ActivationGroupDesc.java')
-rw-r--r--libjava/classpath/java/rmi/activation/ActivationGroupDesc.java433
1 files changed, 0 insertions, 433 deletions
diff --git a/libjava/classpath/java/rmi/activation/ActivationGroupDesc.java b/libjava/classpath/java/rmi/activation/ActivationGroupDesc.java
deleted file mode 100644
index a0c88ec..0000000
--- a/libjava/classpath/java/rmi/activation/ActivationGroupDesc.java
+++ /dev/null
@@ -1,433 +0,0 @@
-/* ActivationGroupDesc.java -- the RMI activation group descriptor
- Copyright (c) 1996, 1997, 1998, 1999, 2004, 2006
- Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package java.rmi.activation;
-
-import gnu.java.rmi.activation.DefaultActivationGroup;
-
-import java.io.Serializable;
-import java.rmi.MarshalledObject;
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.TreeSet;
-import java.util.zip.Adler32;
-
-/**
- * Contains information, necessary to create of recreate the activation objects.
- * The group descriptor contains:
- * <ul>
- * <li>The name of the group's class. This class is derived from the
- * {@link ActivationGroup}.</li>
- * <li>The group class code location.</li>
- * <li>The marshalled object that contains the group specific initialization
- * information</li>
- * </ul>
- * The groups are created by the {@link ActivationGroup#createGroup} method that
- * expectes the group class to have the two parameter constructor, the first
- * parameter being the {@link ActivationGroupID} and the second the
- * {@link MarshalledObject}.
- *
- * @author Audrius Meskauskas (audriusa@bioinformatics.org) (from stub)
- */
-public final class ActivationGroupDesc
- implements Serializable
-{
- /**
- * Contains the startup options for the {@link ActivationGroup}
- * implementations. Allows to override system properties and specify other
- * options for the implementation groups.
- *
- * @author Audrius Meskauskas (audriusa@bioinformatics.org) (from stub)
- */
- public static class CommandEnvironment
- implements Serializable
- {
-
- /**
- * Use the SVUID for interoperability.
- */
- static final long serialVersionUID = 6165754737887770191L;
-
- /**
- * The zero size string array used as argv value when null is passed.
- */
- private static final String[] NO_ARGS = new String[0];
-
- /**
- * The path to the java executable (or null for using default jre).
- */
- final String command;
-
- /**
- * The extra parameters (may be empty array but never null).
- */
- final String[] options;
-
- /**
- * Create the new command environment.
- *
- * @param commandPatch the full path (and name) to the java executable of
- * null for using the default executable.
- * @param args extra options that will be used when creating the activation
- * group. Null has the same effect as the empty list.
- */
- public CommandEnvironment(String commandPatch, String[] args)
- {
- command = commandPatch;
- if (args != null)
- options = args;
- else
- options = NO_ARGS;
- }
-
- /**
- * Get the path to the java executable.
- *
- * @return the path to the java executable or null for using the default
- * jre.
- */
- public String getCommandPath()
- {
- return command;
- }
-
- /**
- * Get the additional command options.
- *
- * @return the command options array, may be empty string
- */
- public String[] getCommandOptions()
- {
- return options;
- }
-
- /**
- * Compare for content equality.
- */
- public boolean equals(Object obj)
- {
- if (obj instanceof CommandEnvironment)
- {
- CommandEnvironment that = (CommandEnvironment) obj;
-
- if (command == null || that.command == null)
- {
- // Use direct comparison if null is involved.
- if (command != that.command)
- return false;
- }
- else
- {
- // Use .equals if null is not involved.
- if (! this.command.equals(that.command))
- return false;
- }
-
- return Arrays.equals(options, that.options);
- }
- else
- return false;
- }
-
- /**
- * Get the hash code.
- */
- public int hashCode()
- {
- int h = command == null ? 0 : command.hashCode();
- for (int i = 0; i < options.length; i++)
- h ^= options[i].hashCode();
-
- return h;
- }
- }
-
- /**
- * Use the SVUID for interoperability.
- */
- static final long serialVersionUID = - 4936225423168276595L;
-
- /**
- * The group class name or null for the default group class implementation.
- */
- final String className;
-
- /**
- * The group class download location URL (codebase), ignored by the
- * default implementation.
- */
- final String location;
-
- /**
- * The group initialization data.
- */
- final MarshalledObject<?> data;
-
- /**
- * The path to the group jre and the parameters of this jre, may be
- * null for the default jre.
- */
- final ActivationGroupDesc.CommandEnvironment env;
-
- /**
- * The properties that override the system properties.
- */
- final Properties props;
-
- /**
- * The cached hash code.
- */
- transient long hash;
-
- /**
- * Create the new activation group descriptor that will use the default
- * activation group implementation with the given properties and
- * environment.
- *
- * @param aProperties the properties that override the system properties
- * @param environment the command line (and parameters), indicating, where to
- * find the jre executable and with that parameters to call it. May
- * be null if the default executable should be used. In this case,
- * the activation group with the null name (the system default group)
- * will be created.
- */
- public ActivationGroupDesc(Properties aProperties,
- ActivationGroupDesc.CommandEnvironment environment)
- {
- this(DefaultActivationGroup.class.getName(), null, null, aProperties,
- environment);
- }
-
- /**
- * Create the new activation group descriptor.
- *
- * @param aClassName the name of the group implementation class. The null
- * value indicates the default implementation.
- * @param aLocation the location, from where the group implementation class
- * should be loaded (ignored for the system default implementation).
- * @param aData the group intialization data
- * @param aProperties the properties that will override the system properties
- * of the new group. These properties will be translated into -D
- * options.
- * @param environment the record, containing path to the jre executable and
- * start options for the jre or null for using the default jre and
- * options.
- */
- public ActivationGroupDesc(String aClassName, String aLocation,
- MarshalledObject<?> aData, Properties aProperties,
- ActivationGroupDesc.CommandEnvironment environment)
- {
- className = aClassName;
- location = aLocation;
- data = aData;
- props = aProperties;
- env = environment;
- }
-
- /**
- * Get the activation group class name.
- *
- * @return the activation group class name (null for default implementation)
- */
- public String getClassName()
- {
- return className;
- }
-
- /**
- * Get the location, from where the group class will be loaded
- *
- * @return the location, from where the implementation should be loaded (null
- * for the default implementation)
- */
- public String getLocation()
- {
- return location;
- }
-
- /**
- * Get the group intialization data.
- *
- * @return the group intialization data in the marshalled form.
- */
- public MarshalledObject<?> getData()
- {
- return data;
- }
-
- /**
- * Get the overridded system properties.
- *
- * @return the overridden group system properties.
- */
- public Properties getPropertyOverrides()
- {
- return props;
- }
-
- /**
- * Get the group command environment, containing path to the jre executable
- * and startup options.
- *
- * @return the command environment or null if the default environment should
- * be used.
- */
- public ActivationGroupDesc.CommandEnvironment getCommandEnvironment()
- {
- return env;
- }
-
- /**
- * Compare for the content equality.
- */
- public boolean equals(Object obj)
- {
- if (obj instanceof ActivationGroupDesc)
- {
- ActivationGroupDesc that = (ActivationGroupDesc) obj;
-
- // Ensure the hashcodes are computed.
- if (hash == 0)
- hashCode();
- if (that.hash == 0)
- that.hashCode();
-
- // We compare the hash fields as they are type long rather than int.
- if (hash != that.hash)
- return false;
-
- if (! eq(className, that.className))
- return false;
- if (! eq(data, that.data))
- return false;
- if (! eq(env, that.env))
- return false;
- if (! eq(location, that.location))
- return false;
-
- // Compare the properties.
- if (eq(props, that.props))
- return true;
-
- if (props.size() != that.props.size())
- return false;
-
- Enumeration en = props.propertyNames();
- Object key, value;
-
- while (en.hasMoreElements())
- {
- key = en.nextElement();
- if (! that.props.containsKey(key))
- return false;
- if (! eq(props.get(key), that.props.get(key)))
- return false;
- }
- return true;
- }
- else
- return false;
- }
-
- /**
- * Compare for direct equality if one or both parameters are null, otherwise
- * call .equals.
- */
- static boolean eq(Object a, Object b)
- {
- if (a == null || b == null)
- return a == b;
- else
- return a.equals(b);
- }
-
- /**
- * Return the hashcode.
- */
- public int hashCode()
- {
- if (hash==0)
- {
- // Using Adler32 - the hashcode is cached, will be computed only
- // once and due need to scan properties is the expensive operation
- // anyway. Reliability is more important.
- Adler32 adler = new Adler32();
- if (className!=null)
- adler.update(className.getBytes());
- if (data!=null)
- adler.update(data.hashCode());
- if (env!=null)
- adler.update(env.hashCode());
- if (location!=null)
- adler.update(location.getBytes());
- if (props!=null)
- {
- Enumeration en = props.propertyNames();
-
- // Using the intermediate sorted set to ensure that the
- // properties are sorted.
- TreeSet pr = new TreeSet();
-
- Object key;
- Object value;
- while (en.hasMoreElements())
- {
- key = en.nextElement();
- if (key!=null)
- pr.add(key);
- }
-
- Iterator it = pr.iterator();
- while (it.hasNext())
- {
- key = it.next();
- value = props.get(key);
- adler.update(key.hashCode());
- if (value!=null)
- adler.update(value.hashCode());
- }
- }
- hash = adler.getValue();
- }
- return (int) hash;
- }
-
-}