Refine search
public Object processInvocation(final InterceptorContext context) throws Exception { final ComponentInstance componentInstance = context.getPrivateData(ComponentInstance.class); final ManagedReference existing = (ManagedReference) componentInstance.getInstanceData(contextKey); if (existing == null) { final ManagedReference reference = componentFactory.create(context); boolean ok = false; try { componentInstance.setInstanceData(contextKey, reference); if (setTarget) { context.setTarget(reference.getInstance()); } Object result = context.proceed(); ok = true; return result; } finally { if (!ok) { reference.release(); componentInstance.setInstanceData(contextKey, reference); } } } else { return context.proceed(); } }
private void prepareInterceptorContext(final SkeletonStrategy op, final Object[] params, final InterceptorContext interceptorContext) throws IOException, ClassNotFoundException { if (!home) { if (componentView.getComponent() instanceof StatefulSessionComponent) { final SessionID sessionID = (SessionID) unmarshalIdentifier(); interceptorContext.putPrivateData(SessionID.class, sessionID); } } interceptorContext.setContextData(new HashMap<>()); interceptorContext.setParameters(params); interceptorContext.setMethod(op.getMethod()); interceptorContext.putPrivateData(ComponentView.class, componentView); interceptorContext.putPrivateData(Component.class, componentView.getComponent()); interceptorContext.putPrivateData(InvocationType.class, InvocationType.REMOTE); interceptorContext.setTransaction(inboundTxCurrent == null ? null : inboundTxCurrent.getCurrentTransaction()); }
protected InterceptorContext prepareInterceptorContext() { final InterceptorContext interceptorContext = new InterceptorContext(); interceptorContext.putPrivateData(Component.class, component); interceptorContext.putPrivateData(ComponentInstance.class, this); interceptorContext.setContextData(new HashMap<String, Object>()); return interceptorContext; }
public Object processInvocation(final InterceptorContext context) throws Exception { final SecurityDomain oldDomain = context.putPrivateData(SecurityDomain.class, securityDomain); try { return context.proceed(); } finally { context.putPrivateData(SecurityDomain.class, oldDomain); } } }
@SuppressWarnings("unchecked") @Override public T aroundConstruct(ConstructionHandle<T> ctx, AnnotatedConstructor<T> constructor, Object[] parameters, Map<String, Object> data) throws Exception { context.putPrivateData(ConstructionHandle.class, ctx); context.setParameters(parameters); context.setContextData(data); context.setConstructor(constructor.getJavaMember()); context.proceed(); // proceed with the WF interceptor chain return (T) context.getTarget(); } });
@Override public Object processInvocation(final InterceptorContext context) throws Exception { WeldInjectionContext injectionContext = context.getPrivateData(WeldInjectionContext.class); ManagedReference reference = (ManagedReference) context.getPrivateData(ComponentInstance.class).getInstanceData(BasicComponentInstance.INSTANCE_KEY); if (reference != null) { injectionContext.inject(reference.getInstance()); } return context.proceed(); } }
final ManagedReference reference = (ManagedReference) context.getPrivateData(ComponentInstance.class).getInstanceData(contextKey); final Object instance = reference.getInstance(); try { final Method method = this.method; if (withContext) { final Method oldMethod = context.getMethod(); try { if (this.lifecycleMethod) { context.setMethod(null); return method.invoke(instance, context.getInvocationContext()); } else if (this.changeMethod) { context.setMethod(method); return method.invoke(instance, context.getInvocationContext()); } else { return method.invoke(instance, context.getInvocationContext()); context.setMethod(oldMethod); return context.proceed();
/** * {@inheritDoc} */ public Object processInvocation(final InterceptorContext context) throws Exception { try { return context.proceed(); } finally { final ManagedReference managedReference = (ManagedReference) context.getPrivateData(ComponentInstance.class).getInstanceData(contextKey); if (managedReference != null) { managedReference.release(); } } } }
/** * {@inheritDoc} */ public Object processInvocation(final InterceptorContext context) throws Exception { final ManagedReference reference = (ManagedReference) context.getPrivateData(ComponentInstance.class).getInstanceData(contextKey); final Object instance = reference.getInstance(); try { return method.invoke(instance, context.getParameters()); } catch (IllegalAccessException e) { final IllegalAccessError n = new IllegalAccessError(e.getMessage()); n.setStackTrace(e.getStackTrace()); throw n; } catch (InvocationTargetException e) { throw Interceptors.rethrow(e.getCause()); } } }
public Object processInvocation(final InterceptorContext context) throws Exception { ComponentInstance componentInstance = context.getPrivateData(ComponentInstance.class); if (componentInstance == null) { throw EeLogger.ROOT_LOGGER.noComponentInstance(); } Method oldMethod = context.getMethod(); try { context.setMethod(componentMethod); context.setTarget(componentInstance.getInstance()); return componentInstance.getInterceptor(componentMethod).processInvocation(context); } finally { context.setMethod(oldMethod); context.setTarget(null); } } }
@Override public Object processInvocation(final InterceptorContext invocation) throws Exception { // Do we have a foreign transaction context? Transaction tx = TxServerInterceptor.getCurrentTransaction(); if (tx instanceof ForeignTransaction) { final EJBComponent component = (EJBComponent) invocation.getPrivateData(Component.class); //for timer invocations there is no view, so the methodInf is attached directly //to the context. Otherwise we retrieve it from the invoked view MethodIntf methodIntf = invocation.getPrivateData(MethodIntf.class); if (methodIntf == null) { final ComponentView componentView = invocation.getPrivateData(ComponentView.class); if (componentView != null) { methodIntf = componentView.getPrivateData(MethodIntf.class); } else { methodIntf = MethodIntf.BEAN; } } final TransactionAttributeType attr = component.getTransactionAttributeType(methodIntf, invocation.getMethod()); if (attr != TransactionAttributeType.NOT_SUPPORTED && attr != TransactionAttributeType.REQUIRES_NEW) { throw EjbLogger.ROOT_LOGGER.transactionPropagationNotSupported(); } } return invocation.proceed(); } }
/** * {@inheritDoc} */ public Object processInvocation(final InterceptorContext context) throws Exception { // get the container-interceptor instance final Object interceptorInstance = interceptorInstanceRef.getInstance(); try { final Method method = this.method; return method.invoke(interceptorInstance, context.getInvocationContext()); } catch (IllegalAccessException e) { final IllegalAccessError n = new IllegalAccessError(e.getMessage()); n.setStackTrace(e.getStackTrace()); throw n; } catch (InvocationTargetException e) { throw Interceptors.rethrow(e.getCause()); } } }
@Override public Object processInvocation(final InterceptorContext context) throws Exception { final ComponentView view = viewToCreate.getValue(); try { INIT_METHOD.set(method); INIT_PARAMETERS.set(context.getParameters()); final ManagedReference instance = view.createInstance(); return instance.getInstance(); } finally { INIT_METHOD.remove(); INIT_PARAMETERS.remove(); } } };
final InterceptorContext interceptorContext = new InterceptorContext(); interceptorContext.setParameters(parameters); interceptorContext.setMethod(method); interceptorContext.setTransaction(invocation.getTransaction()); interceptorContext.setTarget(invocation.getInvokedProxy()); interceptorContext.setContextData(new HashMap<String, Object>()); } else { final Map<String, Object> data = new HashMap<String, Object>(); interceptorContext.setContextData(data); interceptorContext.putPrivateData(Component.class, ejbComponent); interceptorContext.putPrivateData(ComponentView.class, view); interceptorContext.putPrivateData(SessionID.class, locator.asStateful().getSessionId()); } else if (locator instanceof EntityEJBLocator) { throw EjbLogger.ROOT_LOGGER.ejbNotFoundInDeployment(locator); if (isAsync && isSessionBean) { if (! oneWay) { interceptorContext.putPrivateData(CancellationFlag.class, flag); interceptorContext.putPrivateData(CancellationFlag.class, flag); final ExecutorService executor = component.getAsynchronousExecutor(); if (executor == null) { for(Map.Entry<String, Object> entry : interceptorContext.getContextData().entrySet()) { if (entry.getValue() instanceof Serializable) { invocation.getContextData().put(entry.getKey(), entry.getValue());
@Override public Object processInvocation(final InterceptorContext context) throws Exception { SessionBeanComponentInstance instance = (SessionBeanComponentInstance) context.getPrivateData(ComponentInstance.class); final InvocationType invocationType = context.getPrivateData(InvocationType.class); try { context.putPrivateData(InvocationType.class, InvocationType.DEPENDENCY_INJECTION); ((SessionBean) context.getTarget()).setSessionContext(instance.getEjbContext()); } finally { context.putPrivateData(InvocationType.class, invocationType); } return context.proceed(); } }
public Object processInvocation(final InterceptorContext context) throws Exception { final ComponentClientInstance instance = context.getPrivateData(ComponentClientInstance.class); final Component component = context.getPrivateData(Component.class); final ComponentInstance componentInstance = component.createInstance(); boolean ok = false; try { context.putPrivateData(ComponentInstance.class, componentInstance); instance.setViewInstanceData(ComponentInstance.class, componentInstance); final Object result = context.proceed(); ok = true; return result; } finally { context.putPrivateData(ComponentInstance.class, null); if (! ok) { componentInstance.destroy(); instance.setViewInstanceData(ComponentInstance.class, null); } } } }
@Override public Object processInvocation(final InterceptorContext context) throws Exception { if (context.getMethod().getName().equals("equals") || context.getMethod().getName().equals("isIdentical")) { final Object other = context.getParameters()[0]; final ComponentView componentView = context.getPrivateData(ComponentView.class); final Class<?> proxyType = componentView.getProxyClass(); final SessionID sessionId = context.getPrivateData(SessionID.class); if( proxyType.isAssignableFrom(other.getClass())) { //now we know that this is an ejb for the correct component view //as digging out the session id from the proxy object is not really //a viable option, we invoke equals() for the other instance with a //SessionIdHolder as the other side return other.equals(new SessionIdHolder(sessionId)); } else if(other instanceof SessionIdHolder) { return sessionId.equals( ((SessionIdHolder)other).sessionId); } else { return false; } } else if (context.getMethod().getName().equals("hashCode")) { final SessionID sessionId = context.getPrivateData(SessionID.class); //use the identity of the component view as a hash code return sessionId.hashCode(); } else { return context.proceed(); } }
@Override public Object processInvocation(final InterceptorContext context) throws Exception { final ComponentInstance componentInstance = context.getPrivateData(ComponentInstance.class); final InterceptorInstances interceptorInstances = interceptorSupport.getInterceptorInstances(componentInstance); final InterceptorBindings interceptorBindings = interceptorBindingsSupplier.get(); switch (interceptionType) { case AROUND_INVOKE: return doMethodInterception(context.getInvocationContext(), InterceptionType.AROUND_INVOKE, interceptorInstances, interceptorBindings); case AROUND_TIMEOUT: return doMethodInterception(context.getInvocationContext(), InterceptionType.AROUND_TIMEOUT, interceptorInstances, interceptorBindings); case PRE_DESTROY: try { return doLifecycleInterception(context, interceptorInstances, interceptorBindings); } finally { interceptorInstances.getCreationalContext().release(); } case POST_CONSTRUCT: return doLifecycleInterception(context, interceptorInstances, interceptorBindings); case AROUND_CONSTRUCT: return doLifecycleInterception(context, interceptorInstances, interceptorBindings); default: //should never happen return context.proceed(); } }
private Object execute(final Interceptor interceptor, final Method method, final Object... parameters) { if (interceptor == null) return null; final InterceptorContext interceptorContext = new InterceptorContext(); //we need the method so this does not count as a lifecycle invocation interceptorContext.setMethod(method); interceptorContext.putPrivateData(Component.class, getComponent()); interceptorContext.putPrivateData(ComponentInstance.class, this); interceptorContext.putPrivateData(InvokeMethodOnTargetInterceptor.PARAMETERS_KEY, parameters); interceptorContext.setContextData(new HashMap<String, Object>()); interceptorContext.setTarget(getInstance()); final AbstractTransaction transaction = ContextTransactionManager.getInstance().getTransaction(); interceptorContext.setTransactionSupplier(() -> transaction); try { return interceptor.processInvocation(interceptorContext); } catch (Error e) { throw e; } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new EJBException(e); } }
@Override public Object processInvocation(final InterceptorContext context) throws Exception { final EntityBeanComponentInstance instance = (EntityBeanComponentInstance) context.getPrivateData(ComponentInstance.class); try { return viewToCreate.getValue().createInstance().getInstance(); } finally { instance.getComponent().getCache().release(instance, true); } } };