001 package com.mockrunner.ejb;
002
003 import javax.naming.Context;
004
005 /**
006 * Global configuration options regarding EJB and JNDI.
007 * Usually you do not have to change these options.
008 */
009 public class Configuration
010 {
011 private String userTransactionJNDIName;
012 private boolean bindMockUserTransactionToJNDI;
013 private Context context;
014
015 public Configuration()
016 {
017 this("javax.transaction.UserTransaction");
018 }
019
020 public Configuration(String userTransactionJNDIName)
021 {
022 this(userTransactionJNDIName, true);
023 }
024
025 public Configuration(String userTransactionJNDIName, boolean bindMockUserTransactionToJNDI)
026 {
027 this.userTransactionJNDIName = userTransactionJNDIName;
028 this.bindMockUserTransactionToJNDI = bindMockUserTransactionToJNDI;
029 this.context = null;
030 }
031
032 /**
033 * Get the JNDI context. This method returns <code>null</code> if no context
034 * is set. In this case the {@link com.mockrunner.mock.ejb.EJBMockObjectFactory}
035 * uses the MockEJB JNDI implementation.
036 * @return the JNDI context
037 */
038 public Context getContext()
039 {
040 return context;
041 }
042
043 /**
044 * Set the JNDI context used by {@link com.mockrunner.mock.ejb.EJBMockObjectFactory}.
045 * @param context the JNDI context
046 */
047 public void setContext(Context context)
048 {
049 this.context = context;
050 }
051
052 /**
053 * Get if the mock transaction should be bound to JNDI.
054 * @return if the mock transaction should be bound to JNDI
055 */
056 public boolean getBindMockUserTransactionToJNDI()
057 {
058 return bindMockUserTransactionToJNDI;
059 }
060
061 /**
062 * Set if the mock transaction should be bound to JNDI.
063 * When the {@link com.mockrunner.mock.ejb.EJBMockObjectFactory}
064 * creates a {@link com.mockrunner.mock.ejb.MockUserTransaction},
065 * it tries to rebind the transaction to the JNDI tree with the
066 * specified name {@link #setUserTransactionJNDIName}, the name
067 * <code>javax.transaction.UserTransaction</code> (which is used
068 * by MockEJB and Weblogic) and the name
069 * <code>java:comp/UserTransaction</code> (which is the standard name),
070 * if this option is <code>true</code>.
071 * If this option is <code>false</code>, a mock transaction is created
072 * but not bound to JNDI.
073 * Default is <code>true</code>.
074 * @param bindMockUserTransactionToJNDI should the mock transaction be bound to JNDI
075 */
076 public void setBindMockUserTransactionToJNDI(boolean bindMockUserTransactionToJNDI)
077 {
078 this.bindMockUserTransactionToJNDI = bindMockUserTransactionToJNDI;
079 }
080
081 /**
082 * Get the JNDI name for the user transaction.
083 * @return the JNDI name for the user transaction
084 */
085 public String getUserTransactionJNDIName()
086 {
087 return userTransactionJNDIName;
088 }
089
090 /**
091 * Set the JNDI name for the user transaction. The
092 * {@link com.mockrunner.mock.ejb.EJBMockObjectFactory} tries to
093 * obtain a <code>UserTransaction</code> from JNDI using this
094 * name. If the lookup fails, a {@link com.mockrunner.mock.ejb.MockUserTransaction}
095 * is created and bound to JNDI, if {@link #setBindMockUserTransactionToJNDI} is
096 * set to <code>true</code>.
097 * Default is <code>javax.transaction.UserTransaction</code>.
098 * @param userTransactionJNDIName the JNDI name for the user transaction
099 */
100 public void setUserTransactionJNDIName(String userTransactionJNDIName)
101 {
102 this.userTransactionJNDIName = userTransactionJNDIName;
103 }
104 }