@@ -204,7 +204,7 @@ protected void processInvocation(final EJBReceiverInvocationContext receiverCont
result = view. invoke(interceptorContext);
} catch (Exception e) {
// WFLY-4331 - clone the exception of an async task
receiverContext. resultReady(new CloningExceptionProducer (resultCloner, e));
receiverContext. resultReady(new CloningExceptionProducer (resultCloner, e, allowPassByReference ));
return ;
}
// if the result is null, there is no cloning needed
@@ -225,7 +225,7 @@ protected void processInvocation(final EJBReceiverInvocationContext receiverCont
intr = true ;
} catch (ExecutionException e) {
// WFLY-4331 - clone the exception of an async task
receiverContext. resultReady(new CloningExceptionProducer (resultCloner, e));
receiverContext. resultReady(new CloningExceptionProducer (resultCloner, e, allowPassByReference ));
return ;
}
} finally {
@@ -267,7 +267,7 @@ protected void processInvocation(final EJBReceiverInvocationContext receiverCont
} catch (Exception e) {
// we even have to clone the exception type
// to make sure it matches
receiverContext. resultReady(new CloningExceptionProducer (resultCloner, e));
receiverContext. resultReady(new CloningExceptionProducer (resultCloner, e, allowPassByReference ));
return ;
}
receiverContext. resultReady(new CloningResultProducer (invocation, resultCloner, result, allowPassByReference));
@@ -309,14 +309,16 @@ public void discardResult() {
static final class CloningExceptionProducer implements EJBReceiverInvocationContext .ResultProducer {
private final ObjectCloner resultCloner;
private final Exception exception;
private final boolean allowPassByReference;
CloningExceptionProducer (final ObjectCloner resultCloner , final Exception exception ) {
CloningExceptionProducer (final ObjectCloner resultCloner , final Exception exception , final boolean allowPassByReference ) {
this . resultCloner = resultCloner;
this . exception = exception;
this . allowPassByReference = allowPassByReference;
}
public Object getResult () throws Exception {
throw (Exception ) LocalEjbReceiver . clone(resultCloner, exception);
throw (Exception ) LocalEjbReceiver . clone(Exception . class, resultCloner, exception, allowPassByReference );
}
public void discardResult () {