package org.marketcetera.saclient; import java.beans.ConstructorProperties; import java.util.Arrays; import org.apache.commons.lang.ObjectUtils; import org.marketcetera.util.misc.ClassVersion; import org.marketcetera.util.ws.ContextClassProvider; /* $License$ */ /** * The set of parameters needed to initialize the client connection * to the strategy agent. * * @author anshul@marketcetera.com * @version $Id: SAClientParameters.java 16879 2014-04-15 21:40:25Z colin $ * @since 2.0.0 * @see org.marketcetera.saclient.SAClientFactoryImpl#create(SAClientParameters) */ @ClassVersion("$Id: SAClientParameters.java 16879 2014-04-15 21:40:25Z colin $") public class SAClientParameters { /** * Gets the user name to use when connecting to the strategy agent. * * @return the user name. */ public String getUsername() { return mUsername; } /** * The password to use when connecting to the strategy agent. * * @return the password. */ public char[] getPassword() { return mPassword == null ? null : Arrays.copyOf(mPassword, mPassword.length); } /** * The URL of the strategy agent. * * @return the URL of the strategy agent. */ public String getURL() { return mURL; } /** * The port number of the strategy agent. * * @return the strategy agent port number. */ public int getPort() { return mPort; } /** * The strategy agent hostname. * * @return the strategy agent hostname. */ public String getHostname() { return mHostname; } public ContextClassProvider getContextClassProvider() { return contextClassProvider; } /** * Get the useJms value. * * @return a <code>boolean</code> value */ public boolean getUseJms() { return useJms; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; SAClientParameters that = (SAClientParameters) o; return ObjectUtils.equals(mPort, that.mPort)&& Arrays.equals(mPassword, that.mPassword) && ObjectUtils.equals(contextClassProvider, that.contextClassProvider) && ObjectUtils.equals(mURL, that.mURL) && ObjectUtils.equals(mUsername, that.mUsername) && ObjectUtils.equals(mHostname, that.mHostname); } @Override public int hashCode() { return ObjectUtils.hashCode(mUsername) + Arrays.hashCode(mPassword) + ObjectUtils.hashCode(contextClassProvider) + ObjectUtils.hashCode(mHostname) + ObjectUtils.hashCode(mPort) + ObjectUtils.hashCode(mURL); } /** * Creates an instance. * * @param inUsername the user name. * @param inPassword the password. * @param inURL the URL. * @param inHostname the host name * @param inPort the port number */ @ConstructorProperties({ "username","password","URL","hostname","port" }) public SAClientParameters(String inUsername, char[] inPassword, String inURL, String inHostname, int inPort) { this(inUsername, inPassword, inURL, inHostname, inPort, null); } /** * Create a new SAClientParameters instance. * * @param inUsername a <code>String</code> value * @param inPassword a <code>char[]</code> value * @param inURL a <code>String</code> value * @param inHostname a <code>String</code> value * @param inPort an <code>int</code> value * @param contextClassProvider a <code>ContextClassProvider</code> value */ @ConstructorProperties({ "username","password","URL","hostname","port","contextClasses" }) public SAClientParameters(String inUsername, char[] inPassword, String inURL, String inHostname, int inPort, ContextClassProvider inContextClassProvider) { this(inUsername, inPassword, inURL, inHostname, inPort, inContextClassProvider, true); } /** * Create a new SAClientParameters instance. * * @param inUsername a <code>String</code> value * @param inPassword a <code>char[]</code> value * @param inURL a <code>String</code> value * @param inHostname a <code>String</code> value * @param inPort an <code>int</code> value * @param inContextClassProvider a <code>ContextClassProvider</code> value * @param inUseJms a <code>boolean</code> value */ @ConstructorProperties({ "username","password","URL","hostname","port","contextClasses","useJms" }) public SAClientParameters(String inUsername, char[] inPassword, String inURL, String inHostname, int inPort, ContextClassProvider inContextClassProvider, boolean inUseJms) { mUsername = inUsername; mPassword = inPassword == null ? null : Arrays.copyOf(inPassword,inPassword.length); mURL = inURL; mHostname = inHostname; mPort = inPort; contextClassProvider = inContextClassProvider; useJms = inUseJms; } @Override public String toString() { return "ClientParameters{" + //$NON-NLS-1$ "Username='" + mUsername + '\'' + //$NON-NLS-1$ $NON-NLS-2$ ", Password='*****'" + //$NON-NLS-1$ ", URL='" + mURL + '\'' + //$NON-NLS-1$ $NON-NLS-2$ ", Hostname='" + mHostname + '\'' + //$NON-NLS-1$ $NON-NLS-2$ ", Port='" + mPort + '\'' + //$NON-NLS-1$ $NON-NLS-2$ '}'; //$NON-NLS-1$ } private final boolean useJms; private final String mUsername; private final char[] mPassword; private final String mHostname; private final int mPort; private final String mURL; private final ContextClassProvider contextClassProvider; }