/*
* JBoss, Home of Professional Open Source.
* Copyright 2008, Red Hat Middleware LLC, 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.test.testbean.bean;
import java.rmi.*;
import javax.ejb.*;
import javax.naming.Context;
import javax.sql.DataSource;
import javax.naming.InitialContext;
import java.sql.Connection;
import org.jboss.test.testbean.interfaces.StatelessSession;
import org.jboss.test.testbean.interfaces.StatelessSessionHome;
import java.util.Collection;
import java.util.Collections;
import java.util.Vector;
import java.util.Enumeration;
public class EntityBMPBean implements EntityBean {
org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(getClass());
private EntityContext entityContext;
public String name;
private StatelessSession statelessSession;
private boolean wasFind = false;
public String ejbCreate() throws RemoteException, CreateException {
log.debug("EntityBMP.ejbCreate() called");
this.name = "noname";
return name;
}
public String ejbCreate(String name) throws RemoteException, CreateException {
log.debug("EntityBMP.ejbCreate("+name+") called");
this.name = name;
return name;
}
public String ejbCreateMETHOD(String name) throws RemoteException, CreateException {
log.debug("EntityBMP.ejbCreateMETHOD("+name+") called");
this.name = name;
return name;
}
// For usage in BMP only (The return is the primary key type)
public String ejbFindByPrimaryKey(String name) throws RemoteException, FinderException {
log.debug("EntityBMP.ejbFindByPrimaryKey() called");
wasFind = true;
return name;
}
public Collection ejbFindCollectionKeys(int num) throws RemoteException, FinderException {
log.debug("EntityBMP.ejbFindMultipleKeys() called with num "+num);
Collection pks = new Vector();
pks.add("primary key number 1");
pks.add("primary key number 2");
pks.add("primary key number 3");
return pks;
}
public Enumeration ejbFindEnumeratedKeys(int num) throws RemoteException, FinderException {
log.debug("EntityBMP.ejbFindEnumeratedKeys() called with num "+num);
Collection pks = new Vector();
pks.add("primary key number 1");
pks.add("primary key number 2");
pks.add("primary key number 3");
return Collections.enumeration(pks);
}
public void ejbPostCreate() throws RemoteException, CreateException {
log.debug("EntityBMP.ejbPostCreate() called");
}
public void ejbPostCreate(String name) throws RemoteException, CreateException {
log.debug("EntityBMP.ejbPostCreate("+name+") called");
}
public void ejbPostCreateMETHOD(String name) throws RemoteException, CreateException {
log.debug("EntityBMP.ejbPostCreateMETHOD("+name+") called");
}
public void ejbActivate() throws RemoteException {
log.debug("EntityBMP.ejbActivate() called");
}
public void ejbLoad() throws RemoteException {
log.debug("EntityBMP.ejbLoad() called");
}
public void ejbPassivate() throws RemoteException {
log.debug("Was Find "+wasFind);
log.debug("EntityBMP.ejbPassivate() called");
}
public void ejbRemove() throws RemoteException, RemoveException {
log.debug("EntityBMP.ejbRemove() called");
}
public void ejbStore() throws RemoteException {
log.debug("EntityBMP.ejbStore() called");
}
public String callBusinessMethodA() throws RemoteException{
log.debug("EntityBMP.callBusinessMethodA() called");
return "EntityBMP.callBusinessMethodA() called, my primaryKey is "+
entityContext.getPrimaryKey().toString();
}
public String callBusinessMethodB() throws RemoteException {
log.debug("EntityBMP.callBusinessMethodB() called, calling B2B");
String b2bMessage = statelessSession.callBusinessMethodB();
log.debug("EntityBMP called stateless Bean and it said "+b2bMessage);
return "EntityBMP.callBusinessMethodB() called, called other bean (B2B) and it said \""+b2bMessage+"\"";
}
public String callBusinessMethodB(String words) throws RemoteException {
log.debug("EntityBMP.callBusinessMethodB(String) called, calling B2B");
String b2bMessage = statelessSession.callBusinessMethodB();
log.debug("EntityBMP called stateless Bean and it said "+b2bMessage);
return "EntityBMP.callBusinessMethodB() called, called other bean (B2B) and it said \""+b2bMessage+"\""+" words "+words;
}
public void setEntityContext(EntityContext context) throws RemoteException {
log.debug("EntityBMP.setSessionContext() called");
entityContext = context;
//we use the setEntityContext to lookup the connection and the EJBReference
try {
Context namingContext = new InitialContext();
Connection connection = ((DataSource) namingContext.lookup("java:comp/env/jdbc/myDatabase")).getConnection();
connection.close();
log.debug("EntityBMP I did get the connection to the database for BMP");
}
catch (Exception e) {
log.debug("failed", e);
log.debug("EntityBMP Could not find the database connection, check settings");
throw new RemoteException("EntityBMP Could not find the database connection");
}
try {
Context namingContext = new InitialContext();
log.debug("EntityBMP Looking up Stateless Home");
StatelessSessionHome statelessHome = ((StatelessSessionHome) namingContext.lookup("java:comp/env/ejb/myEJBRef"));
log.debug("EntityBMP Calling create on Stateless Home");
statelessSession = statelessHome.create();
log.debug("EntityBMP Found the EJB Reference in my java:comp/env/ environment");
}
catch (Exception e) {
log.debug("failed", e);
log.debug("EntityBMP Could not find the EJB Reference called myEJBRef, check settings");
throw new RemoteException("EntityBean Could not find EJB Reference");
}
}
public void unsetEntityContext() throws RemoteException {
log.debug("EntityBMP.unsetSessionContext() called");
entityContext = null;
}
}