use of jp.ossc.nimbus.service.journal.editor.MethodThrowJournalData in project nimbus by nimbus-org.
the class MethodJournalInterceptorServiceTest method test2.
public void test2() throws Throwable {
ServiceManagerFactory.registerService("Test", interceptorServiceData);
interceptor = (MethodJournalInterceptorService) ServiceManagerFactory.getService("Test", "MethodJournalInterceptor");
ServiceManagerFactory.findManager("Test").createAllService();
ServiceManagerFactory.findManager("Test").startAllService();
final Context context = (Context) ServiceManagerFactory.getServiceObject("Test", "Context");
context.put(ThreadContextKey.REQUEST_ID, "001");
Map target = new HashMap();
target.put("A", new Integer(100));
try {
new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
throw new IllegalArgumentException();
}
}).invokeNext(new DefaultMethodInvocationContext(target, HashMap.class.getMethod("get", new Class[] { Object.class }), new Object[] { "A" }));
fail();
} catch (IllegalArgumentException e) {
}
synchronized (writer) {
if (writer.record == null) {
writer.wait(1000);
}
}
assertNotNull(writer.record);
assertEquals(3, writer.record.getElementMap().size());
WritableElement element = (WritableElement) writer.record.getElementMap().get("REQUEST_ID");
assertNotNull(element);
assertEquals("001", element.toObject());
element = (WritableElement) writer.record.getElementMap().get("CALL");
assertNotNull(element);
MethodCallJournalData callData = (MethodCallJournalData) element.toObject();
assertNotNull(callData);
assertEquals(HashMap.class, callData.getOwnerClass());
assertEquals("get", callData.getName());
assertNotNull(callData.getParameterTypes());
assertEquals(1, callData.getParameterTypes().length);
assertEquals(Object.class, callData.getParameterTypes()[0]);
assertNotNull(callData.getParameters());
assertEquals(1, callData.getParameters().length);
assertEquals("A", callData.getParameters()[0]);
element = (WritableElement) writer.record.getElementMap().get("RETURN");
assertNotNull(element);
MethodReturnJournalData retData = (MethodReturnJournalData) element.toObject();
assertNotNull(retData);
assertEquals(HashMap.class, retData.getOwnerClass());
assertEquals("get", retData.getName());
assertNotNull(retData.getParameterTypes());
assertEquals(1, retData.getParameterTypes().length);
assertEquals(Object.class, retData.getParameterTypes()[0]);
assertTrue(retData.getReturnValue() instanceof IllegalArgumentException);
assertTrue(retData instanceof MethodThrowJournalData);
assertTrue(((MethodThrowJournalData) retData).getThrowable() instanceof IllegalArgumentException);
}
Aggregations