use of jp.ossc.nimbus.service.aop.Invoker in project nimbus by nimbus-org.
the class MethodSynchronizeInterceptorServiceTest method test4.
public void test4() throws Throwable {
ServiceManagerFactory.registerManager("Test");
MethodSynchronizeInterceptorService interceptor = new MethodSynchronizeInterceptorService();
ServiceManagerFactory.registerService("Test", "MethodSynchronizeInterceptor", interceptor);
try {
ServiceManagerFactory.findManager("Test").createAllService();
interceptor.setScope(MethodSynchronizeInterceptorService.SCOPE_INSTANCE);
ServiceManagerFactory.findManager("Test").startAllService();
class Counter {
public volatile int count;
}
final Counter counter = new Counter();
final InterceptorChain chain1 = new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
try {
counter.count++;
Thread.sleep(500);
return "test";
} finally {
counter.count--;
}
}
});
final InterceptorChain chain2 = new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
assertEquals(1, counter.count);
return "test";
}
});
final InterceptorChain chain3 = new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
assertEquals(0, counter.count);
return "test";
}
});
final HashMap target = new HashMap();
Thread thread = new Thread() {
public void run() {
try {
chain1.invokeNext(new DefaultMethodInvocationContext(target, HashMap.class.getMethod("get", new Class[] { Object.class }), new Object[] { "A" }));
} catch (Throwable th) {
}
}
};
thread.start();
Thread.sleep(100);
chain2.invokeNext(new DefaultMethodInvocationContext(new HashMap(), HashMap.class.getMethod("get", new Class[] { Object.class }), new Object[] { "A" }));
chain3.invokeNext(new DefaultMethodInvocationContext(target, HashMap.class.getMethod("get", new Class[] { Object.class }), new Object[] { "A" }));
} finally {
ServiceManagerFactory.findManager("Test").stopAllService();
ServiceManagerFactory.findManager("Test").destroyAllService();
ServiceManagerFactory.unregisterManager("Test");
}
}
use of jp.ossc.nimbus.service.aop.Invoker in project nimbus by nimbus-org.
the class NoCalledMethodMetricsInterceptorServiceTest method test1.
public void test1() throws Throwable {
ServiceManagerFactory.registerManager("Test");
NoCalledMethodMetricsInterceptorService interceptor = new NoCalledMethodMetricsInterceptorService();
ServiceManagerFactory.registerService("Test", "NoCalledMethodMetricsInterceptor", interceptor);
try {
ServiceManagerFactory.findManager("Test").createAllService();
interceptor.setOutputSystemOut(false);
interceptor.setTargetClassName("jp\\.ossc\\.nimbus\\..*");
ServiceManagerFactory.findManager("Test").startAllService();
final InterceptorChain chain = new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
return null;
}
});
Method method = StringOperator.class.getMethod("makeSpace", new Class[] { Integer.TYPE });
assertNotNull(interceptor.getNoCalledMethodSet());
assertTrue(interceptor.getNoCalledMethodSet().contains(method));
chain.invokeNext(new DefaultMethodInvocationContext(null, method, new Object[] { new Integer(1) }));
assertNotNull(interceptor.getNoCalledMethodSet());
assertFalse(interceptor.getNoCalledMethodSet().contains(method));
} finally {
ServiceManagerFactory.findManager("Test").stopAllService();
ServiceManagerFactory.findManager("Test").destroyAllService();
ServiceManagerFactory.unregisterManager("Test");
}
}
use of jp.ossc.nimbus.service.aop.Invoker in project nimbus by nimbus-org.
the class ExceptionConsumeInterceptorServiceTest method test4.
public void test4() throws Throwable {
ServiceManagerFactory.registerManager("Test");
ExceptionConsumeInterceptorService interceptor1 = new ExceptionConsumeInterceptorService();
ServiceManagerFactory.registerService("Test", "ExceptionConsumeInterceptor", interceptor1);
Interceptor interceptor2 = new Interceptor() {
public Object invoke(InvocationContext context, InterceptorChain chain) throws Throwable {
throw new RuntimeException();
}
};
try {
ServiceManagerFactory.findManager("Test").createAllService();
interceptor1.setExceptionClassNames(new String[] { "java.lang.IllegalArgumentException", "java.lang.UnsupportedOperationException" });
ServiceManagerFactory.findManager("Test").startAllService();
try {
new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor1, interceptor2 }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
return "test";
}
}).invokeNext(new DefaultMethodInvocationContext());
fail();
} catch (RuntimeException e) {
assertEquals(RuntimeException.class, e.getClass());
}
} finally {
ServiceManagerFactory.findManager("Test").stopAllService();
ServiceManagerFactory.findManager("Test").destroyAllService();
ServiceManagerFactory.unregisterManager("Test");
}
}
use of jp.ossc.nimbus.service.aop.Invoker in project nimbus by nimbus-org.
the class ExceptionConsumeInterceptorServiceTest method test6.
public void test6() throws Throwable {
ServiceManagerFactory.registerManager("Test");
ExceptionConsumeInterceptorService interceptor1 = new ExceptionConsumeInterceptorService();
ServiceManagerFactory.registerService("Test", "ExceptionConsumeInterceptor", interceptor1);
Interceptor interceptor2 = new Interceptor() {
public Object invoke(InvocationContext context, InterceptorChain chain) throws Throwable {
throw new IllegalArgumentException();
}
};
try {
ServiceManagerFactory.findManager("Test").createAllService();
interceptor1.setExceptionClassNames(new String[] { "java.lang.IllegalArgumentException", "java.lang.UnsupportedOperationException" });
interceptor1.setReturnValue("-1");
ServiceManagerFactory.findManager("Test").startAllService();
Object ret = new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor1, interceptor2 }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
return "test";
}
}).invokeNext(new DefaultMethodInvocationContext("", String.class.getMethod("indexOf", new Class[] { String.class }), new Object[] { "fuga" }));
assertEquals(new Integer(-1), ret);
} finally {
ServiceManagerFactory.findManager("Test").stopAllService();
ServiceManagerFactory.findManager("Test").destroyAllService();
ServiceManagerFactory.unregisterManager("Test");
}
}
use of jp.ossc.nimbus.service.aop.Invoker in project nimbus by nimbus-org.
the class ExceptionConsumeInterceptorServiceTest method test2.
public void test2() throws Throwable {
ServiceManagerFactory.registerManager("Test");
ExceptionConsumeInterceptorService interceptor1 = new ExceptionConsumeInterceptorService();
ServiceManagerFactory.registerService("Test", "ExceptionConsumeInterceptor", interceptor1);
Interceptor interceptor2 = new Interceptor() {
public Object invoke(InvocationContext context, InterceptorChain chain) throws Throwable {
throw new UnsupportedOperationException();
}
};
try {
ServiceManagerFactory.findManager("Test").createAllService();
interceptor1.setExceptionClassNames(new String[] { "java.lang.IllegalArgumentException", "java.lang.UnsupportedOperationException" });
ServiceManagerFactory.findManager("Test").startAllService();
Object ret = new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor1, interceptor2 }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
return "test";
}
}).invokeNext(new DefaultMethodInvocationContext());
assertNull(ret);
} finally {
ServiceManagerFactory.findManager("Test").stopAllService();
ServiceManagerFactory.findManager("Test").destroyAllService();
ServiceManagerFactory.unregisterManager("Test");
}
}
Aggregations