1 22 23 package org.jboss.aspects.asynchronous.aspects.jboss; 24 25 import org.jboss.aop.annotation.AnnotationElement; 26 import org.jboss.aop.joinpoint.MethodInvocation; 27 import org.jboss.aspects.asynchronous.aspects.AsynchronousFacade; 28 import org.jboss.aspects.asynchronous.aspects.AsynchronousFacadeImpl; 29 import org.jboss.aspects.asynchronous.aspects.Utils; 30 import org.jboss.aspects.asynchronous.concurrent.ThreadManagerFactory; 31 32 36 public class AsynchronousAspect 37 { 38 private AsynchronousInvokeTask asynchronousInvokeTask = 39 new AsynchronousInvokeTask(); 40 41 public AsynchronousAspect() {} 42 43 public Object execute(MethodInvocation invocation) throws Throwable 44 { 45 AsynchronousFacade asynchronousResult = null; 46 if (invocation.getTargetObject() != null) 47 asynchronousResult = (AsynchronousFacade) invocation.getTargetObject(); 48 else 49 { 50 Object [] tObject = invocation.getArguments(); 51 for (int i = 0; i < tObject.length; i++) 52 { 53 Object object = tObject[i]; 54 if (object instanceof AsynchronousFacade) 55 { 56 asynchronousResult = (AsynchronousFacade) object; 57 break; 58 } 59 } 60 if (asynchronousResult == null) 61 asynchronousResult = new AsynchronousFacadeImpl(); 62 } 63 Asynchronous asynchronous = (Asynchronous) AnnotationElement.getAnyAnnotation(invocation.getMethod(), Asynchronous.class); 64 if (asynchronous!=null) 65 { 66 if (asynchronousResult.getTimeout() == 0) 67 asynchronousResult.setTimeout(asynchronous.timeout()); 68 69 if ((asynchronousResult.getId()!=null) && (asynchronousResult.getId().equals("None")) 70 && 71 (asynchronous.id()!=null)&&(asynchronous.id().length()!=0) ) 72 asynchronousResult.setId(asynchronous.id()); 73 } 74 asynchronousResult.setAsynchronousTask(ThreadManagerFactory.getThreadManager().process(ThreadManagerFactory.createNewThreadManagerRequest(asynchronousResult.getId(), 75 new InvokeTaskInputParameters((MethodInvocation) invocation.copy()), 76 asynchronousInvokeTask, 77 asynchronousResult.getTimeout()))); 78 Class returnType = invocation.getActualMethod().getReturnType(); 79 return Utils.returnInitObject(returnType); 80 } 81 } 82 | Popular Tags |