[Contestj-developer] contestj/contestj2/src/main/java/org/contestj/interceptor MockInterceptor.jav
Status: Inactive
Brought to you by:
thomasra
|
From: Ståle P. <st...@us...> - 2007-06-20 14:54:18
|
Update of /cvsroot/contestj/contestj/contestj2/src/main/java/org/contestj/interceptor In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv14426/contestj2/src/main/java/org/contestj/interceptor Added Files: MockInterceptor.java MockMethodInterceptor.java Log Message: Initial upload of Contestj2 even though it supports most of the Contestj features its not ready to be used atm. --- NEW FILE: MockInterceptor.java --- package org.contestj.interceptor; import org.contestj.introduction.Mock; import org.contestj.mockservice.MockMethod; import org.contestj.mockservice.MockService; import org.jboss.aop.advice.Interceptor; import org.jboss.aop.joinpoint.Invocation; import org.jboss.aop.joinpoint.MethodInvocation; /** * MockInterceptor. * * @author <a href="st...@gm...">Stale W. Pedersen</a> * @version $Revision: 1.1 $ */ public class MockInterceptor implements Interceptor { public String getName() { return "MockInterceptor"; } public Object invoke(Invocation invocation) throws Throwable { System.out.println("inside MockInterceptor"); if(invocation instanceof MethodInvocation) { MethodInvocation mi = (MethodInvocation) invocation; System.out.println("its a methodinvocation: "+mi.getMethod().getName()); MockMethod mock = null; if(mi.getTargetObject() != null) { System.out.println("Targetobject is not null: "+mi.getTargetObject().getClass().getName()); Object target = mi.getTargetObject(); Object[] params = mi.getArguments(); Object returnValue = ((Mock) target).getReturnObject(mi.getMethod().getName()); System.out.println("Returnvalue is: "+returnValue); return returnValue; //mock = MockService.getInstance().getMockForMethod(mi.getTargetObject().getClass().getName(), mi.getMethod().getName()); } else { System.out.println("targetobject is null, just invoking next in chain"); return invocation.invokeNext(); // String className = mi.getMethod().getDeclaringClass().getName(); // // mock = MockService.getInstance().getMockForMethod(className, mi.getMethod().getName()); } } System.out.println("not a methodinvocation, invoking next"); return invocation.invokeNext(); } } --- NEW FILE: MockMethodInterceptor.java --- package org.contestj.interceptor; import org.contestj.mockservice.MockMethod; import org.contestj.mockservice.MockService; import org.jboss.aop.advice.Interceptor; import org.jboss.aop.joinpoint.Invocation; import org.jboss.aop.joinpoint.MethodInvocation; /** * A MockMethodInterceptor. * * @author <a href="st...@gm...">Stale W. Pedersen</a> * @version $Revision: 1.1 $ */ public class MockMethodInterceptor implements Interceptor { public String getName() { return "MockMethodInterceptor"; } public Object invoke(Invocation invocation) throws Throwable { System.out.println("inside MockMethodInterceptor"); MockService.getInstance().printMockMethodKeysToSystemOut(); MethodInvocation mi = (MethodInvocation) invocation; MockMethod mock = null; if(mi.getTargetObject() == null) { String className = mi.getMethod().getDeclaringClass().getName(); mock = MockService.getInstance().getMockForMethod(className, mi.getMethod().getName()); if(mock != null) System.out.println("MockMethod is set to: "+mock.toString()); else { System.out.println("Mock is null, className: "+className+", method: "+mi.getMethod().getName()); } } else { System.out.println("Target object is NOT null.. method:"+mi.getMethod().getName()); mock = MockService.getInstance().getMockForMethod(mi.getTargetObject().getClass().getName(), mi.getMethod().getName()); } if(mock == null) return invocation.invokeNext(); else { if(mock.isTimedOnly()) { WaitThread waitThread = new WaitThread(mock.getTimeToWait()); waitThread.run(); return invocation.invokeNext(); } else { System.out.println("Contestj couldnt find any mockmethod, just invoking normally.."); return mock.invoke(mi.getArguments()); } } } private class WaitThread extends Thread { private long waitTime; /* (non-Javadoc) * @see java.lang.Runnable#run() */ public void run() { super.run(); try { sleep(waitTime); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public WaitThread(long milliSeconds) { this.waitTime = milliSeconds; } } } |