Search in sources :

Example 21 with Invoker

use of jp.ossc.nimbus.service.aop.Invoker in project nimbus by nimbus-org.

the class MethodAsynchronousInterceptorServiceTest method test3.

public void test3() throws Throwable {
    ServiceManagerFactory.registerManager("Test");
    MethodAsynchronousInterceptorService interceptor = new MethodAsynchronousInterceptorService();
    ServiceManagerFactory.registerService("Test", "MethodAsynchronousInterceptor", interceptor);
    try {
        ServiceManagerFactory.findManager("Test").createAllService();
        interceptor.setResponseTimeout(200);
        interceptor.setFailToWaitResponseTimeout(false);
        ServiceManagerFactory.findManager("Test").startAllService();
        assertNull(new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {

            public Object invoke(InvocationContext context) throws Throwable {
                Thread.sleep(500);
                return "test";
            }
        }).invokeNext(new DefaultMethodInvocationContext(new Integer(100), Integer.class.getMethod("toString", (Class[]) null), null)));
    } finally {
        ServiceManagerFactory.findManager("Test").stopAllService();
        ServiceManagerFactory.findManager("Test").destroyAllService();
        ServiceManagerFactory.unregisterManager("Test");
    }
}
Also used : DefaultInterceptorChainList(jp.ossc.nimbus.service.aop.DefaultInterceptorChainList) Invoker(jp.ossc.nimbus.service.aop.Invoker) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) InvocationContext(jp.ossc.nimbus.service.aop.InvocationContext) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) Interceptor(jp.ossc.nimbus.service.aop.Interceptor) DefaultInterceptorChain(jp.ossc.nimbus.service.aop.DefaultInterceptorChain)

Example 22 with Invoker

use of jp.ossc.nimbus.service.aop.Invoker in project nimbus by nimbus-org.

the class MethodAsynchronousInterceptorServiceTest method test1.

public void test1() throws Throwable {
    ServiceManagerFactory.registerManager("Test");
    MethodAsynchronousInterceptorService interceptor = new MethodAsynchronousInterceptorService();
    ServiceManagerFactory.registerService("Test", "MethodAsynchronousInterceptor", interceptor);
    try {
        ServiceManagerFactory.findManager("Test").createAllService();
        ServiceManagerFactory.findManager("Test").startAllService();
        final Date invokeTime = new Date();
        assertNull(new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {

            public Object invoke(InvocationContext context) throws Throwable {
                Thread.sleep(500);
                invokeTime.setTime(System.currentTimeMillis());
                return "test";
            }
        }).invokeNext(new DefaultMethodInvocationContext(new Integer(100), Integer.class.getMethod("toString", (Class[]) null), null)));
        Date returnTime = new Date();
        Thread.sleep(1000);
        assertTrue(returnTime.before(invokeTime));
    } finally {
        ServiceManagerFactory.findManager("Test").stopAllService();
        ServiceManagerFactory.findManager("Test").destroyAllService();
        ServiceManagerFactory.unregisterManager("Test");
    }
}
Also used : DefaultInterceptorChainList(jp.ossc.nimbus.service.aop.DefaultInterceptorChainList) Invoker(jp.ossc.nimbus.service.aop.Invoker) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) InvocationContext(jp.ossc.nimbus.service.aop.InvocationContext) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) Interceptor(jp.ossc.nimbus.service.aop.Interceptor) Date(java.util.Date) DefaultInterceptorChain(jp.ossc.nimbus.service.aop.DefaultInterceptorChain)

Example 23 with Invoker

use of jp.ossc.nimbus.service.aop.Invoker in project nimbus by nimbus-org.

the class MethodJournalInterceptorServiceTest method test4.

public void test4() throws Throwable {
    AttributeMetaData attr = new AttributeMetaData(interceptorServiceData);
    attr.setName("BushingCallBlock");
    attr.setValue("true");
    interceptorServiceData.addAttribute(attr);
    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));
    Object ret = new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor, new Interceptor() {

        public Object invoke(InvocationContext ctx, InterceptorChain chain) throws Throwable {
            ctx.setAttribute("chain", chain);
            return chain.invokeNext(ctx);
        }
    } }), new Invoker() {

        public Object invoke(InvocationContext ctx) throws Throwable {
            String reqId = (String) context.get(ThreadContextKey.REQUEST_ID);
            if ("001".equals(reqId)) {
                context.put(ThreadContextKey.REQUEST_ID, "002");
                final InterceptorChain chain = (InterceptorChain) ctx.getAttribute("chain");
                final InterceptorChain newChain = chain.cloneChain();
                newChain.setCurrentInterceptorIndex(0);
                return newChain.invokeNext(ctx);
            } else {
                MethodInvocationContext mctx = (MethodInvocationContext) ctx;
                return mctx.getTargetMethod().invoke(mctx.getTargetObject(), mctx.getParameters());
            }
        }
    }).invokeNext(new DefaultMethodInvocationContext(target, HashMap.class.getMethod("get", new Class[] { Object.class }), new Object[] { "A" }));
    assertEquals(ret, new Integer(100));
    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]);
    assertEquals(new Integer(100), retData.getReturnValue());
}
Also used : InvocationContext(jp.ossc.nimbus.service.aop.InvocationContext) MethodInvocationContext(jp.ossc.nimbus.service.aop.MethodInvocationContext) Context(jp.ossc.nimbus.service.context.Context) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) DefaultInterceptorChainList(jp.ossc.nimbus.service.aop.DefaultInterceptorChainList) MethodInvocationContext(jp.ossc.nimbus.service.aop.MethodInvocationContext) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) AttributeMetaData(jp.ossc.nimbus.core.AttributeMetaData) HashMap(java.util.HashMap) MethodCallJournalData(jp.ossc.nimbus.service.journal.editor.MethodCallJournalData) DefaultInterceptorChain(jp.ossc.nimbus.service.aop.DefaultInterceptorChain) InterceptorChain(jp.ossc.nimbus.service.aop.InterceptorChain) Invoker(jp.ossc.nimbus.service.aop.Invoker) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) WritableElement(jp.ossc.nimbus.service.writer.WritableElement) MethodReturnJournalData(jp.ossc.nimbus.service.journal.editor.MethodReturnJournalData) InvocationContext(jp.ossc.nimbus.service.aop.InvocationContext) MethodInvocationContext(jp.ossc.nimbus.service.aop.MethodInvocationContext) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) HashMap(java.util.HashMap) Map(java.util.Map) Interceptor(jp.ossc.nimbus.service.aop.Interceptor) DefaultInterceptorChain(jp.ossc.nimbus.service.aop.DefaultInterceptorChain)

Example 24 with Invoker

use of jp.ossc.nimbus.service.aop.Invoker 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);
}
Also used : InvocationContext(jp.ossc.nimbus.service.aop.InvocationContext) MethodInvocationContext(jp.ossc.nimbus.service.aop.MethodInvocationContext) Context(jp.ossc.nimbus.service.context.Context) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) DefaultInterceptorChainList(jp.ossc.nimbus.service.aop.DefaultInterceptorChainList) HashMap(java.util.HashMap) MethodCallJournalData(jp.ossc.nimbus.service.journal.editor.MethodCallJournalData) Invoker(jp.ossc.nimbus.service.aop.Invoker) MethodThrowJournalData(jp.ossc.nimbus.service.journal.editor.MethodThrowJournalData) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) WritableElement(jp.ossc.nimbus.service.writer.WritableElement) MethodReturnJournalData(jp.ossc.nimbus.service.journal.editor.MethodReturnJournalData) InvocationContext(jp.ossc.nimbus.service.aop.InvocationContext) MethodInvocationContext(jp.ossc.nimbus.service.aop.MethodInvocationContext) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) HashMap(java.util.HashMap) Map(java.util.Map) DefaultInterceptorChain(jp.ossc.nimbus.service.aop.DefaultInterceptorChain)

Example 25 with Invoker

use of jp.ossc.nimbus.service.aop.Invoker in project nimbus by nimbus-org.

the class MethodMetricsInterceptorServiceTest method test2.

public void test2() throws Throwable {
    ServiceManagerFactory.registerManager("Test");
    MethodMetricsInterceptorService interceptor = new MethodMetricsInterceptorService();
    ServiceManagerFactory.registerService("Test", "MethodMetricsInterceptor", interceptor);
    try {
        ServiceManagerFactory.findManager("Test").createAllService();
        ServiceManagerFactory.findManager("Test").startAllService();
        try {
            new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {

                public Object invoke(InvocationContext context) throws Throwable {
                    Thread.sleep(new Random().nextInt(400) + 100);
                    throw new IllegalArgumentException();
                }
            }).invokeNext(new DefaultMethodInvocationContext(null, HashMap.class.getMethod("get", new Class[] { Object.class }), null));
            fail();
        } catch (IllegalArgumentException e) {
        }
        MetricsInfo info = interceptor.getMetricsInfo(HashMap.class.getMethod("get", new Class[] { Object.class }));
        assertNotNull(info);
        assertEquals("java.util.HashMap#get(java.lang.Object)", info.getKey());
        assertEquals(1L, info.getTotalCount());
        assertEquals(0L, info.getCount());
        assertTrue(info.getLastTime() > 0);
        assertEquals(1L, info.getExceptionCount());
        assertTrue(info.getLastExceptionTime() > 0);
        assertEquals(0L, info.getErrorCount());
        assertEquals(0L, info.getLastErrorTime());
        assertTrue(info.getBestPerformance() > 0);
        assertTrue(info.getBestPerformanceTime() > 0);
        assertTrue(info.getWorstPerformance() > 0);
        assertTrue(info.getWorstPerformanceTime() > 0);
        assertTrue(info.getAveragePerformance() > 0);
    } finally {
        ServiceManagerFactory.findManager("Test").stopAllService();
        ServiceManagerFactory.findManager("Test").destroyAllService();
        ServiceManagerFactory.unregisterManager("Test");
    }
}
Also used : DefaultInterceptorChainList(jp.ossc.nimbus.service.aop.DefaultInterceptorChainList) Invoker(jp.ossc.nimbus.service.aop.Invoker) Random(java.util.Random) HashMap(java.util.HashMap) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) InvocationContext(jp.ossc.nimbus.service.aop.InvocationContext) DefaultMethodInvocationContext(jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext) DefaultInterceptorChain(jp.ossc.nimbus.service.aop.DefaultInterceptorChain)

Aggregations

DefaultInterceptorChainList (jp.ossc.nimbus.service.aop.DefaultInterceptorChainList)36 InvocationContext (jp.ossc.nimbus.service.aop.InvocationContext)36 Invoker (jp.ossc.nimbus.service.aop.Invoker)36 DefaultMethodInvocationContext (jp.ossc.nimbus.service.aop.DefaultMethodInvocationContext)35 DefaultInterceptorChain (jp.ossc.nimbus.service.aop.DefaultInterceptorChain)33 Interceptor (jp.ossc.nimbus.service.aop.Interceptor)25 InterceptorChain (jp.ossc.nimbus.service.aop.InterceptorChain)20 HashMap (java.util.HashMap)14 Random (java.util.Random)7 Map (java.util.Map)6 Properties (java.util.Properties)6 ServiceName (jp.ossc.nimbus.core.ServiceName)5 ServiceMetaData (jp.ossc.nimbus.core.ServiceMetaData)4 MethodInvocationContext (jp.ossc.nimbus.service.aop.MethodInvocationContext)4 Context (jp.ossc.nimbus.service.context.Context)4 Date (java.util.Date)3 DefaultThreadLocalInterceptorChain (jp.ossc.nimbus.service.aop.DefaultThreadLocalInterceptorChain)3 MethodCallJournalData (jp.ossc.nimbus.service.journal.editor.MethodCallJournalData)3 MethodReturnJournalData (jp.ossc.nimbus.service.journal.editor.MethodReturnJournalData)3 DefaultSemaphoreService (jp.ossc.nimbus.service.semaphore.DefaultSemaphoreService)3