Permalink
Browse files
Merge pull request #12167 from wfink/WFLY-11866
WFLY-11866 Exception can not be passed-by-reference
- Loading branch information
Showing
with
447 additions
and 9 deletions.
- +7 −5 ejb3/src/main/java/org/jboss/as/ejb3/remote/LocalEjbReceiver.java
- +88 −0 ...tegration/basic/src/test/java/org/jboss/as/test/integration/ejb/remote/byreference/HelloBean.java
- +39 −0 ...gration/basic/src/test/java/org/jboss/as/test/integration/ejb/remote/byreference/HelloRemote.java
- +47 −0 ...sic/src/test/java/org/jboss/as/test/integration/ejb/remote/byreference/NonSerializableObject.java
- +39 −0 ...rc/test/java/org/jboss/as/test/integration/ejb/remote/byreference/RemoteByReferenceException.java
- +1 −1 ...ion/basic/src/test/java/org/jboss/as/test/integration/ejb/remote/byreference/RemoteInterface.java
- +77 −2 ...ava/org/jboss/as/test/integration/ejb/remote/byreference/RemoteInvocationByReferenceTestCase.java
- +49 −0 .../basic/src/test/java/org/jboss/as/test/integration/ejb/remote/byreference/SerializableObject.java
- +1 −1 ...basic/src/test/java/org/jboss/as/test/integration/ejb/remote/byreference/StatelessRemoteBean.java
- +50 −0 ...n/basic/src/test/java/org/jboss/as/test/integration/ejb/remote/byreference/TransferParameter.java
- +49 −0 ...basic/src/test/java/org/jboss/as/test/integration/ejb/remote/byreference/TransferReturnValue.java
| @@ -0,0 +1,88 @@ | ||
| /* | ||
| * JBoss, Home of Professional Open Source. | ||
| * Copyright 2019, Red Hat, Inc., and individual contributors | ||
| * as indicated by the @author tags. See the copyright.txt file in the | ||
| * distribution for a full listing of individual contributors. | ||
| * | ||
| * This is free software; you can redistribute it and/or modify it | ||
| * under the terms of the GNU Lesser General Public License as | ||
| * published by the Free Software Foundation; either version 2.1 of | ||
| * the License, or (at your option) any later version. | ||
| * | ||
| * This software is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| * Lesser General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Lesser General Public | ||
| * License along with this software; if not, write to the Free | ||
| * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | ||
| * 02110-1301 USA, or see the FSF site: http://www.fsf.org. | ||
| */ | ||
| package org.jboss.as.test.integration.ejb.remote.byreference; | ||
|
|
||
|
|
||
| import java.util.logging.Logger; | ||
|
|
||
| import javax.ejb.Stateless; | ||
|
|
||
| @Stateless | ||
| public class HelloBean implements HelloRemote { | ||
|
|
||
| private Logger log = Logger.getLogger(this.getClass().getSimpleName().toString()); | ||
|
|
||
| public TransferReturnValue hello ( TransferParameter param ) throws RemoteByReferenceException { | ||
| log.info("hello("+ param +") = Hello " + param ); | ||
|
|
||
| if(param == null) | ||
| throw new RemoteByReferenceException("Param was null"); | ||
|
|
||
| return new TransferReturnValue ( "Hello " + param ); | ||
| } | ||
|
|
||
| @Override | ||
| public SerializableObject helloSerializable(SerializableObject param) throws RemoteByReferenceException { | ||
| log.info("helloserializable("+ param +") = Hello " + param ); | ||
|
|
||
| if(param == null) | ||
| throw new RemoteByReferenceException("Param was null"); | ||
| param.setValue("Bye"); | ||
|
|
||
| return param; | ||
| } | ||
|
|
||
| @Override | ||
| public NonSerializableObject helloNonSerializable(NonSerializableObject param) throws RemoteByReferenceException { | ||
| log.info("helloserializable("+ param +") = Hello " + param ); | ||
|
|
||
| if(param == null) | ||
| throw new RemoteByReferenceException("Param was null"); | ||
| param.setValue("Bye"); | ||
|
|
||
| return param; | ||
| } | ||
|
|
||
| @Override | ||
| public SerializableObject helloNonSerializableToSerializable(NonSerializableObject param) | ||
| throws RemoteByReferenceException { | ||
| log.info("helloserializable("+ param +") = Hello " + param ); | ||
|
|
||
| if(param == null) | ||
| throw new RemoteByReferenceException("Param was null"); | ||
| param.setValue("Bye"); | ||
|
|
||
| return new SerializableObject(param.getValue()); | ||
| } | ||
|
|
||
| @Override | ||
| public NonSerializableObject helloSerializableToNonSerializable(SerializableObject param) | ||
| throws RemoteByReferenceException { | ||
| log.info("helloserializable("+ param +") = Hello " + param ); | ||
|
|
||
| if(param == null) | ||
| throw new RemoteByReferenceException("Param was null"); | ||
| param.setValue("Bye"); | ||
|
|
||
| return new NonSerializableObject(param.getValue()); | ||
| } | ||
| } |
| @@ -0,0 +1,39 @@ | ||
| /* | ||
| * JBoss, Home of Professional Open Source. | ||
| * Copyright 2019, Red Hat, Inc., and individual contributors | ||
| * as indicated by the @author tags. See the copyright.txt file in the | ||
| * distribution for a full listing of individual contributors. | ||
| * | ||
| * This is free software; you can redistribute it and/or modify it | ||
| * under the terms of the GNU Lesser General Public License as | ||
| * published by the Free Software Foundation; either version 2.1 of | ||
| * the License, or (at your option) any later version. | ||
| * | ||
| * This software is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| * Lesser General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Lesser General Public | ||
| * License along with this software; if not, write to the Free | ||
| * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | ||
| * 02110-1301 USA, or see the FSF site: http://www.fsf.org. | ||
| */ | ||
|
|
||
| package org.jboss.as.test.integration.ejb.remote.byreference; | ||
|
|
||
| import javax.ejb.Remote; | ||
|
|
||
| @Remote | ||
| public interface HelloRemote { | ||
| public TransferReturnValue hello ( TransferParameter param ) throws RemoteByReferenceException; | ||
|
|
||
| public SerializableObject helloSerializable ( SerializableObject param ) throws RemoteByReferenceException; | ||
|
|
||
| public NonSerializableObject helloNonSerializable(NonSerializableObject param) throws RemoteByReferenceException; | ||
|
|
||
| public SerializableObject helloNonSerializableToSerializable(NonSerializableObject param) throws RemoteByReferenceException; | ||
|
|
||
| public NonSerializableObject helloSerializableToNonSerializable(SerializableObject param) throws RemoteByReferenceException; | ||
| } | ||
|
|
| @@ -0,0 +1,47 @@ | ||
| /* | ||
| * JBoss, Home of Professional Open Source. | ||
| * Copyright 2019, Red Hat, Inc., and individual contributors | ||
| * as indicated by the @author tags. See the copyright.txt file in the | ||
| * distribution for a full listing of individual contributors. | ||
| * | ||
| * This is free software; you can redistribute it and/or modify it | ||
| * under the terms of the GNU Lesser General Public License as | ||
| * published by the Free Software Foundation; either version 2.1 of | ||
| * the License, or (at your option) any later version. | ||
| * | ||
| * This software is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| * Lesser General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Lesser General Public | ||
| * License along with this software; if not, write to the Free | ||
| * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | ||
| * 02110-1301 USA, or see the FSF site: http://www.fsf.org. | ||
| */ | ||
|
|
||
| package org.jboss.as.test.integration.ejb.remote.byreference; | ||
|
|
||
| public class NonSerializableObject { | ||
|
|
||
| private String value; | ||
|
|
||
| public NonSerializableObject() { | ||
| } | ||
|
|
||
| public NonSerializableObject(String value) { | ||
| this.value = value; | ||
| } | ||
|
|
||
| public String getValue() { | ||
| return value; | ||
| } | ||
|
|
||
| public void setValue(String value) { | ||
| this.value = value; | ||
| } | ||
|
|
||
| public String toString() { | ||
| return value; | ||
| } | ||
| } |
| @@ -0,0 +1,39 @@ | ||
| /* | ||
| * JBoss, Home of Professional Open Source. | ||
| * Copyright 2019, Red Hat, Inc., and individual contributors | ||
| * as indicated by the @author tags. See the copyright.txt file in the | ||
| * distribution for a full listing of individual contributors. | ||
| * | ||
| * This is free software; you can redistribute it and/or modify it | ||
| * under the terms of the GNU Lesser General Public License as | ||
| * published by the Free Software Foundation; either version 2.1 of | ||
| * the License, or (at your option) any later version. | ||
| * | ||
| * This software is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| * Lesser General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Lesser General Public | ||
| * License along with this software; if not, write to the Free | ||
| * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | ||
| * 02110-1301 USA, or see the FSF site: http://www.fsf.org. | ||
| */ | ||
|
|
||
| package org.jboss.as.test.integration.ejb.remote.byreference; | ||
|
|
||
| public class RemoteByReferenceException extends Exception { | ||
|
|
||
| private NonSerializableObject nonSerializableObject; | ||
|
|
||
| public RemoteByReferenceException() { | ||
| super(); | ||
| nonSerializableObject = new NonSerializableObject("null"); | ||
| } | ||
|
|
||
| public RemoteByReferenceException(String msg) { | ||
| super(msg); | ||
| nonSerializableObject = new NonSerializableObject(msg); | ||
| } | ||
| } | ||
|
|
Oops, something went wrong.