package org.jboss.invocation.http.interfaces;
import java.io.Externalizable;
import java.lang.reflect.Method;
import org.jboss.invocation.Invocation;
import org.jboss.proxy.Interceptor;
public class ClientMethodInterceptorHA extends Interceptor
implements Externalizable
{
private static final long serialVersionUID = 7633261444020820792L;
public Object invoke(Invocation mi) throws Throwable
{
Method m = mi.getMethod();
String methodName = m.getName();
HttpInvokerProxyHA proxy = (HttpInvokerProxyHA) mi.getInvocationContext().getInvoker();
if( methodName.equals("toString") )
{
return toString(proxy);
}
if( methodName.equals("equals") )
{
Object[] args = mi.getArguments();
String thisString = toString(proxy);
String argsString = args[0] == null ? "" : args[0].toString();
return new Boolean(thisString.equals(argsString));
}
if( methodName.equals("hashCode") )
{
return (Integer) mi.getObjectName();
}
return getNext().invoke(mi);
}
private String toString(HttpInvokerProxyHA proxy)
{
StringBuffer tmp = new StringBuffer(proxy.toString());
tmp.append('{');
tmp.append("clusterInfo="+proxy.getClusterInfo());
tmp.append('}');
return tmp.toString();
}
}