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 ClientMethodInterceptor extends Interceptor
implements Externalizable
{
private static final long serialVersionUID = 3511654206312502958L;
public Object invoke(Invocation mi) throws Throwable
{
Method m = mi.getMethod();
String methodName = m.getName();
HttpInvokerProxy proxy = (HttpInvokerProxy) 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(HttpInvokerProxy proxy)
{
StringBuffer tmp = new StringBuffer(proxy.toString());
tmp.append('{');
tmp.append("externalURLValue="+proxy.getExternalURLValue());
tmp.append(",externalURL="+proxy.getExternalURL());
tmp.append('}');
return tmp.toString();
}
}