/** * Get the pojo plan of a plan. * @return The pojo plan. */ public Object getPojoPlan() { return body instanceof ClassPlanBody? ((ClassPlanBody)body).getPojoPlan(): null; }
body = new ClassPlanBody(ia, rplan, candidate); if(clazz.isAnnotationPresent(Plan.class)) body = new ClassPlanBody(ia, rplan, clazz); body = new ClassPlanBody(ia, rplan, plan);
/** * Invoke the body. */ public Object invokeBody(Object agent, Object[] params) throws BodyAborted { try { getBody(agent); bodymethod.setAccessible(true); return bodymethod.invoke(plan, params); } catch(Exception e) { Throwable t = e instanceof InvocationTargetException ? ((InvocationTargetException)e).getTargetException() : e; if(t instanceof Error) { throw (Error)t; } else if(t instanceof RuntimeException) { throw (RuntimeException)t; } else { throw new RuntimeException(t); } // throw t instanceof BodyAborted? (BodyAborted)t: t instanceof RuntimeException ? (RuntimeException)t : new RuntimeException(t); } }
body = new ClassPlanBody(ia, rplan, candidate.getRawCandidate()); body = new ClassPlanBody(ia, rplan, clazz0); body = new ClassPlanBody(ia, rplan, plan);
/** * Create a new plan body. */ public ClassPlanBody(IInternalAccess ia, RPlan rplan, Class<?> body, Object plan) { super(ia, rplan); this.body = body; this.plan = plan; // Class<?> mbd = body!=null? body: plan.getClass(); MBody mbody = ((MPlan)rplan.getModelElement()).getBody(); bodymethod = mbody.getBodyMethod(ia.getClassLoader()).getMethod(ia.getClassLoader()); MethodInfo mi = mbody.getPassedMethod(ia.getClassLoader()); if(mi!=null) passedmethod = mi.getMethod(ia.getClassLoader()); mi = mbody.getFailedMethod(ia.getClassLoader()); if(mi!=null) failedmethod = mi.getMethod(ia.getClassLoader()); mi = mbody.getAbortedMethod(ia.getClassLoader()); if(mi!=null) abortedmethod = mi.getMethod(ia.getClassLoader()); if(plan!=null) injectElements();//ia.getComponentFeature(IPojoComponentFeature.class).getPojoAgent()); }
/** * Create a new plan body. */ public ClassPlanBody(IInternalAccess ia, RPlan rplan, Class<?> body, Object plan) { super(ia, rplan); this.body = body; this.plan = plan; // Class<?> mbd = body!=null? body: plan.getClass(); MBody mbody = ((MPlan)rplan.getModelElement()).getBody(); bodymethod = mbody.getBodyMethod(ia.getClassLoader()).getMethod(ia.getClassLoader()); MethodInfo mi = mbody.getPassedMethod(ia.getClassLoader()); if(mi!=null) passedmethod = mi.getMethod(ia.getClassLoader()); mi = mbody.getFailedMethod(ia.getClassLoader()); if(mi!=null) failedmethod = mi.getMethod(ia.getClassLoader()); mi = mbody.getAbortedMethod(ia.getClassLoader()); if(mi!=null) abortedmethod = mi.getMethod(ia.getClassLoader()); if(plan!=null) injectElements(((IPojoMicroAgent)ia).getPojoAgent()); }