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"));
     }
+
+
 }


Reply via email to