/**************************************************************************
* Copyright (c) 2001 by Punch Telematix. All rights reserved. *
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* 1. Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* 3. Neither the name of Punch Telematix nor the names of *
* other contributors may be used to endorse or promote products *
* derived from this software without specific prior written permission.*
* *
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED *
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
* IN NO EVENT SHALL PUNCH TELEMATIX OR OTHER CONTRIBUTORS BE LIABLE *
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF *
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR *
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, *
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE *
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN *
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
**************************************************************************/
package java.rmi.activation;
import java.io.Serializable;
import java.util.Properties;
import java.rmi.MarshalledObject;
public final class ActivationGroupDesc implements Serializable {
private static final long serialVersionUID = -4936225423168276595L;
private String className;
private String location;
private MarshalledObject data;
private ActivationGroupDesc.CommandEnvironment env;
private Properties props;
public ActivationGroupDesc(Properties overrides, CommandEnvironment cmd) {
env = cmd;
props = overrides;
//TODO ...
//location = DEFAULT Location ...
//data = DEFAULT data ...
}
public ActivationGroupDesc(String className, String location, MarshalledObject data, Properties overrides, CommandEnvironment cmd) {
this.className = className;
this.location = location;
this.data = data;
env = cmd;
props = overrides;
}
public String getClassName() {
return className;
}
public String getLocation() {
return location;
}
public MarshalledObject getData() {
return data;
}
public Properties getPropertyOverrides() {
return props;
}
public CommandEnvironment getCommandEnvironment() {
return env;
}
public boolean equals(Object obj) {
if(getClass().isInstance(obj)){
ActivationGroupDesc agd = (ActivationGroupDesc)obj;
return (env == null ? agd.env == null : env.equals(agd.env))
&& (props == null ? agd.props == null : props.equals(agd.props))
&& (className == null ? agd.className == null : className.equals(agd.className))
&& data.equals(agd.data) && location.equals(location);
}
return false;
}
public int hashCode() {
int hash = (env == null ? (int)serialVersionUID : env.hashCode());
hash ^= (props == null ? (int)serialVersionUID : props.hashCode());
hash ^= (className == null ? (int)serialVersionUID : className.hashCode());
return data.hashCode() ^ location.hashCode() ^ hash;
}
public static class CommandEnvironment implements Serializable {
private static final long serialVersionUID = 6165754737887770191L;
private String command;
private String[] options;
public CommandEnvironment(String cmdpath, String[] argv){
command = cmdpath;
options = (argv == null ? new String[0] : argv);
}
public String getCommandPath() {
return command;
}
public String[] getCommandOptions() {
return options;
}
public boolean equals(Object obj) {
if(getClass().isInstance(obj)){
CommandEnvironment cenv = (CommandEnvironment)obj;
return (command == null ? cenv.command == null : command.equals(cenv.command))
&& java.util.Arrays.equals(options, cenv.options);
}
return false;
}
public int hashCode() {
return command == null ? (int)serialVersionUID : command.hashCode();
}
}
}