Author: dblevins
Date: Fri Nov 30 14:48:28 2007
New Revision: 599997
URL: http://svn.apache.org/viewvc?rev=599997&view=rev
Log:
Revamped example to show a pojo bean using legacy interfaces as well as
business interfaces
Added:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbHome.java
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbLocalHome.java
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbLocalObject.java
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbObject.java
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonLocal.java
(contents, props changed)
- copied, changed from r599684,
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPerson.java
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonRemote.java
Removed:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPerson.java
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonComponent.java
Modified:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonImpl.java
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/resources/META-INF/ejb-jar.xml
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/test/java/org/acme/FriendlyPersonTest.java
Added:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbHome.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbHome.java?rev=599997&view=auto
==============================================================================
---
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbHome.java
(added)
+++
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbHome.java
Fri Nov 30 14:48:28 2007
@@ -0,0 +1,18 @@
+/* =====================================================================
+ *
+ * Copyright (c) 2003 David Blevins. All rights reserved.
+ *
+ * =====================================================================
+ */
+package org.acme;
+
+import javax.ejb.CreateException;
+import javax.ejb.EJBHome;
+import java.rmi.RemoteException;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public interface FriendlyPersonEjbHome extends EJBHome {
+ FriendlyPersonEjbObject create() throws CreateException, RemoteException;
+}
Added:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbLocalHome.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbLocalHome.java?rev=599997&view=auto
==============================================================================
---
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbLocalHome.java
(added)
+++
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbLocalHome.java
Fri Nov 30 14:48:28 2007
@@ -0,0 +1,18 @@
+/* =====================================================================
+ *
+ * Copyright (c) 2003 David Blevins. All rights reserved.
+ *
+ * =====================================================================
+ */
+package org.acme;
+
+import javax.ejb.CreateException;
+import javax.ejb.EJBLocalHome;
+import java.rmi.RemoteException;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public interface FriendlyPersonEjbLocalHome extends EJBLocalHome {
+ FriendlyPersonEjbLocalObject create() throws CreateException,
RemoteException;
+}
Added:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbLocalObject.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbLocalObject.java?rev=599997&view=auto
==============================================================================
---
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbLocalObject.java
(added)
+++
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbLocalObject.java
Fri Nov 30 14:48:28 2007
@@ -0,0 +1,26 @@
+/* =====================================================================
+ *
+ * Copyright (c) 2003 David Blevins. All rights reserved.
+ *
+ * =====================================================================
+ */
+package org.acme;
+
+import javax.ejb.Remote;
+import javax.ejb.EJBLocalObject;
+
[EMAIL PROTECTED]
+public interface FriendlyPersonEjbLocalObject extends EJBLocalObject {
+ String greet(String friend);
+
+ String greet(String language, String friend);
+
+ void addGreeting(String language, String message);
+
+ void setLanguagePreferences(String friend, String language);
+
+ String getDefaultLanguage();
+
+ void setDefaultLanguage(String defaultLanguage);
+
+}
Added:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbObject.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbObject.java?rev=599997&view=auto
==============================================================================
---
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbObject.java
(added)
+++
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonEjbObject.java
Fri Nov 30 14:48:28 2007
@@ -0,0 +1,27 @@
+/* =====================================================================
+ *
+ * Copyright (c) 2003 David Blevins. All rights reserved.
+ *
+ * =====================================================================
+ */
+package org.acme;
+
+import javax.ejb.Remote;
+import javax.ejb.EJBObject;
+import java.rmi.RemoteException;
+
[EMAIL PROTECTED]
+public interface FriendlyPersonEjbObject extends EJBObject {
+ String greet(String friend) throws RemoteException;
+
+ String greet(String language, String friend) throws RemoteException;
+
+ void addGreeting(String language, String message) throws RemoteException;
+
+ void setLanguagePreferences(String friend, String language) throws
RemoteException;
+
+ String getDefaultLanguage() throws RemoteException;
+
+ void setDefaultLanguage(String defaultLanguage) throws RemoteException;
+
+}
Modified:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonImpl.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonImpl.java?rev=599997&r1=599996&r2=599997&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonImpl.java
(original)
+++
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonImpl.java
Fri Nov 30 14:48:28 2007
@@ -16,6 +16,13 @@
*/
package org.acme;
+import javax.ejb.Init;
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+import javax.ejb.Remote;
+import javax.ejb.Local;
+import javax.ejb.RemoteHome;
+import javax.ejb.LocalHome;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Locale;
@@ -27,7 +34,23 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">David Blevins</a>
*/
-public class FriendlyPersonImpl implements FriendlyPerson {
+
+// EJB 3.0 Style business interfaces
+// Each of these interfaces are already annotated in the classes
+// themselves with @Remote and @Local, so annotating them here
+// in the bean class again is not really required.
[EMAIL PROTECTED]({FriendlyPersonRemote.class})
[EMAIL PROTECTED]({FriendlyPersonLocal.class})
+
+// EJB 2.1 Style component interfaces
+// These interfaces, however, must be annotated here in the bean class.
+// Use of @RemoteHome in the FriendlyPersonEjbHome class itself is not allowed.
+// Use of @LocalHome in the FriendlyPersonEjbLocalHome class itself is also
not allowed.
[EMAIL PROTECTED](FriendlyPersonEjbHome.class)
[EMAIL PROTECTED](FriendlyPersonEjbLocalHome.class)
+
[EMAIL PROTECTED](name="FriendlyPerson")
+public class FriendlyPersonImpl implements FriendlyPersonLocal,
FriendlyPersonRemote {
private final HashMap<String, MessageFormat> greetings;
private final Properties languagePreferences;
@@ -45,8 +68,27 @@
addGreeting("pl", "Witaj {0}!");
}
+ /**
+ * This method corresponds to the FriendlyPersonEjbHome.create() method
+ * and the FriendlyPersonEjbLocalHome.create()
+ *
+ * If you do not have an EJBHome or EJBLocalHome interface, this method
+ * can be deleted.
+ */
+ @Init
public void create(){}
+ /**
+ * This method corresponds to the following methods:
+ * - EJBObject.remove()
+ * - EJBHome.remove(ejbObject)
+ * - EJBLocalObject.remove()
+ * - EJBLocalHome.remove(ejbObject)
+ *
+ * If you do not have an EJBHome or EJBLocalHome interface, this method
+ * can be deleted.
+ */
+ @Remove
public void remove(){}
public String greet(String friend) {
@@ -78,9 +120,5 @@
public void setDefaultLanguage(String defaultLanguage) {
this.defaultLanguage = defaultLanguage;
- }
-
- public void setSessionContext(Object object){
- // This is required until this bug is fixed
http://jira.codehaus.org/browse/OPENEJB-259
}
}
Copied:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonLocal.java
(from r599684,
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPerson.java)
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonLocal.java?p2=openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonLocal.java&p1=openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPerson.java&r1=599684&r2=599997&rev=599997&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPerson.java
(original)
+++
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonLocal.java
Fri Nov 30 14:48:28 2007
@@ -16,11 +16,10 @@
*/
package org.acme;
-/**
- * @author <a href="mailto:[EMAIL PROTECTED]">David Blevins</a>
- * @version $Revision$ $Date$
- */
-public interface FriendlyPerson {
+import javax.ejb.Local;
+
[EMAIL PROTECTED]
+public interface FriendlyPersonLocal {
String greet(String friend);
String greet(String language, String friend);
Propchange:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonLocal.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author Id Revision HeadURL
Added:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonRemote.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonRemote.java?rev=599997&view=auto
==============================================================================
---
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonRemote.java
(added)
+++
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/java/org/acme/FriendlyPersonRemote.java
Fri Nov 30 14:48:28 2007
@@ -0,0 +1,25 @@
+/* =====================================================================
+ *
+ * Copyright (c) 2003 David Blevins. All rights reserved.
+ *
+ * =====================================================================
+ */
+package org.acme;
+
+import javax.ejb.Remote;
+
[EMAIL PROTECTED]
+public interface FriendlyPersonRemote {
+ String greet(String friend);
+
+ String greet(String language, String friend);
+
+ void addGreeting(String language, String message);
+
+ void setLanguagePreferences(String friend, String language);
+
+ String getDefaultLanguage();
+
+ void setDefaultLanguage(String defaultLanguage);
+
+}
Modified:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/resources/META-INF/ejb-jar.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/resources/META-INF/ejb-jar.xml?rev=599997&r1=599996&r2=599997&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/resources/META-INF/ejb-jar.xml
(original)
+++
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/main/resources/META-INF/ejb-jar.xml
Fri Nov 30 14:48:28 2007
@@ -16,29 +16,4 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0"
metadata-complete="flase">
- <enterprise-beans>
- <session>
- <ejb-name>FriendlyPerson</ejb-name>
- <home>org.acme.FriendlyPersonComponent$Home</home>
- <remote>org.acme.FriendlyPersonComponent$Remote</remote>
- <local-home>org.acme.FriendlyPersonComponent$LocalHome</local-home>
- <local>org.acme.FriendlyPersonComponent$Local</local>
- <ejb-class>org.acme.FriendlyPersonImpl</ejb-class>
- <session-type>Stateful</session-type>
- <init-method>
- <bean-method>
- <method-name>create</method-name>
- <method-params/>
- </bean-method>
- </init-method>
- <remove-method>
- <bean-method>
- <method-name>remove</method-name>
- <method-params/>
- </bean-method>
- </remove-method>
- <transaction-type>Container</transaction-type>
- </session>
- </enterprise-beans>
-</ejb-jar>
\ No newline at end of file
+<ejb-jar/>
\ No newline at end of file
Modified:
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/test/java/org/acme/FriendlyPersonTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/test/java/org/acme/FriendlyPersonTest.java?rev=599997&r1=599996&r2=599997&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/test/java/org/acme/FriendlyPersonTest.java
(original)
+++
openejb/trunk/openejb3/examples/helloworld-stateful-pojo/src/test/java/org/acme/FriendlyPersonTest.java
Fri Nov 30 14:48:28 2007
@@ -34,40 +34,90 @@
protected void setUp() throws Exception {
Properties properties = new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.client.LocalInitialContextFactory");
-
- // Tells OpenEJB to look for META-INF/ejb-jar.xml files in the
classpath
- System.setProperty("openejb.deployments.classpath.include",
".*helloworld-stateful-pojo.*");
-
initialContext = new InitialContext(properties);
}
/**
- * Here we lookup the FriendlyPerson bean via it's remote home interface
+ * Here we lookup and test the FriendlyPerson bean via its EJB 2.1 EJBHome
and EJBObject interfaces
*
* @throws Exception
*/
- public void testFriendlyPersonViaRemoteInterface() throws Exception {
+ public void testEjbHomeAndEjbObject() throws Exception {
Object object = initialContext.lookup("FriendlyPersonRemoteHome");
- FriendlyPersonComponent.Home home = (FriendlyPersonComponent.Home)
object;
- FriendlyPerson friendlyPerson = home.create();
+ FriendlyPersonEjbHome home = (FriendlyPersonEjbHome) object;
+ FriendlyPersonEjbObject friendlyPerson = home.create();
+
+ friendlyPerson.setDefaultLanguage("en");
+
+ assertEquals("Hello David!", friendlyPerson.greet("David"));
+ assertEquals("Hello Amelia!", friendlyPerson.greet("Amelia"));
+
+ friendlyPerson.setLanguagePreferences("Amelia", "es");
+
+ assertEquals("Hello David!", friendlyPerson.greet("David"));
+ assertEquals("Hola Amelia!", friendlyPerson.greet("Amelia"));
+
+ // Amelia took some French, let's see if she remembers
+ assertEquals("Bonjour Amelia!", friendlyPerson.greet("fr", "Amelia"));
+
+ // Dave should take some Polish and if he had, he could say Hi in
Polish
+ assertEquals("Witaj Dave!", friendlyPerson.greet("pl", "Dave"));
+
+ // Let's see if I speak Portuguese
+ assertEquals("Sorry, I don't speak " + new
Locale("pt").getDisplayLanguage() + ".", friendlyPerson.greet("pt", "David"));
+
+ // Ok, well I've been meaning to learn, so...
+ friendlyPerson.addGreeting("pt", "Ola {0}!");
- assertFriendlyPerson(friendlyPerson);
+ assertEquals("Ola David!", friendlyPerson.greet("pt", "David"));
}
+
/**
- * Here we lookup the FriendlyPerson bean via it's local home interface
- *
+ * Here we lookup and test the FriendlyPerson bean via its EJB 2.1
EJBLocalHome and EJBLocalObject interfaces
+ *
* @throws Exception
*/
- public void testFriendlyPersonViaLocalInterface() throws Exception {
+ public void testEjbLocalHomeAndEjbLocalObject() throws Exception {
Object object = initialContext.lookup("FriendlyPersonLocalHome");
- FriendlyPersonComponent.LocalHome home =
(FriendlyPersonComponent.LocalHome) object;
- FriendlyPerson friendlyPerson = home.create();
+ FriendlyPersonEjbLocalHome home = (FriendlyPersonEjbLocalHome) object;
+ FriendlyPersonEjbLocalObject friendlyPerson = home.create();
+
+ friendlyPerson.setDefaultLanguage("en");
+
+ assertEquals("Hello David!", friendlyPerson.greet("David"));
+ assertEquals("Hello Amelia!", friendlyPerson.greet("Amelia"));
+
+ friendlyPerson.setLanguagePreferences("Amelia", "es");
+
+ assertEquals("Hello David!", friendlyPerson.greet("David"));
+ assertEquals("Hola Amelia!", friendlyPerson.greet("Amelia"));
+
+ // Amelia took some French, let's see if she remembers
+ assertEquals("Bonjour Amelia!", friendlyPerson.greet("fr", "Amelia"));
+
+ // Dave should take some Polish and if he had, he could say Hi in
Polish
+ assertEquals("Witaj Dave!", friendlyPerson.greet("pl", "Dave"));
+
+ // Let's see if I speak Portuguese
+ assertEquals("Sorry, I don't speak " + new
Locale("pt").getDisplayLanguage() + ".", friendlyPerson.greet("pt", "David"));
+
+ // Ok, well I've been meaning to learn, so...
+ friendlyPerson.addGreeting("pt", "Ola {0}!");
- assertFriendlyPerson(friendlyPerson);
+ assertEquals("Ola David!", friendlyPerson.greet("pt", "David"));
}
- private void assertFriendlyPerson(FriendlyPerson friendlyPerson) {
+ /**
+ * Here we lookup and test the FriendlyPerson bean via its EJB 3.0
business remote interface
+ *
+ * @throws Exception
+ */
+ public void testBusinessRemote() throws Exception {
+ Object object = initialContext.lookup("FriendlyPersonRemote");
+
+ FriendlyPersonRemote friendlyPerson = (FriendlyPersonRemote) object;
+
friendlyPerson.setDefaultLanguage("en");
assertEquals("Hello David!", friendlyPerson.greet("David"));
@@ -84,6 +134,40 @@
// Dave should take some Polish and if he had, he could say Hi in
Polish
assertEquals("Witaj Dave!", friendlyPerson.greet("pl", "Dave"));
+ // Let's see if I speak Portuguese
+ assertEquals("Sorry, I don't speak " + new
Locale("pt").getDisplayLanguage() + ".", friendlyPerson.greet("pt", "David"));
+
+ // Ok, well I've been meaning to learn, so...
+ friendlyPerson.addGreeting("pt", "Ola {0}!");
+
+ assertEquals("Ola David!", friendlyPerson.greet("pt", "David"));
+ }
+
+ /**
+ * Here we lookup and test the FriendlyPerson bean via its EJB 3.0
business local interface
+ *
+ * @throws Exception
+ */
+ public void testBusinessLocal() throws Exception {
+ Object object = initialContext.lookup("FriendlyPersonLocal");
+
+ FriendlyPersonLocal friendlyPerson = (FriendlyPersonLocal) object;
+
+ friendlyPerson.setDefaultLanguage("en");
+
+ assertEquals("Hello David!", friendlyPerson.greet("David"));
+ assertEquals("Hello Amelia!", friendlyPerson.greet("Amelia"));
+
+ friendlyPerson.setLanguagePreferences("Amelia", "es");
+
+ assertEquals("Hello David!", friendlyPerson.greet("David"));
+ assertEquals("Hola Amelia!", friendlyPerson.greet("Amelia"));
+
+ // Amelia took some French, let's see if she remembers
+ assertEquals("Bonjour Amelia!", friendlyPerson.greet("fr", "Amelia"));
+
+ // Dave should take some Polish and if he had, he could say Hi in
Polish
+ assertEquals("Witaj Dave!", friendlyPerson.greet("pl", "Dave"));
// Let's see if I speak Portuguese
assertEquals("Sorry, I don't speak " + new
Locale("pt").getDisplayLanguage() + ".", friendlyPerson.greet("pt", "David"));
@@ -93,4 +177,6 @@
assertEquals("Ola David!", friendlyPerson.greet("pt", "David"));
}
+
+
}