Author: dblevins
Date: Wed Jun  2 05:30:45 2010
New Revision: 950373

URL: http://svn.apache.org/viewvc?rev=950373&view=rev
Log:
Patch from Thiago Veronezi, OPENEJB-1144 and OPENEJB-1146
Partial support for @StatefulTimeout and @AccessTimeout related xml and 
deployment support
Thanks, Thiago!

Added:
    
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/AccessTimeout.java
   (with props)
    
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/StatefulTimeout.java
   (with props)
    
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-timeout.xml
   (with props)
Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
    
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
    
openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/JeeTest.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?rev=950373&r1=950372&r2=950373&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
 Wed Jun  2 05:30:45 2010
@@ -162,6 +162,9 @@ class EnterpriseBeanBuilder {
 
         // ejbTimeout
         deployment.setEjbTimeout(getTimeout(ejbClass, bean.timeoutMethod));
+        
+        deployment.setStatefulTimeout(bean.statefulTimeout);
+        deployment.setAccessTimeout(bean.accessTimeout);
 
         if (bean instanceof StatefulBeanInfo) {
             StatefulBeanInfo statefulBeanInfo = (StatefulBeanInfo) bean;

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java?rev=950373&r1=950372&r2=950373&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java
 Wed Jun  2 05:30:45 2010
@@ -20,6 +20,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
 
+import org.apache.openejb.util.Duration;
+
 public abstract class EnterpriseBeanInfo extends InfoObject {
 
     public static final int ENTITY = 0;
@@ -75,4 +77,7 @@ public abstract class EnterpriseBeanInfo
     public List<String> jndiNames = new ArrayList<String>();
     public boolean loadOnStartup;
     public final List<String> dependsOn = new ArrayList<String>() ;
+    
+    public Duration statefulTimeout;
+    public Duration accessTimeout;
 }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java?rev=950373&r1=950372&r2=950373&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
 Wed Jun  2 05:30:45 2010
@@ -17,7 +17,18 @@
  */
 package org.apache.openejb.config;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.assembler.classic.ApplicationExceptionInfo;
 import org.apache.openejb.assembler.classic.CallbackInfo;
 import org.apache.openejb.assembler.classic.CmrFieldInfo;
 import org.apache.openejb.assembler.classic.EjbJarInfo;
@@ -26,34 +37,38 @@ import org.apache.openejb.assembler.clas
 import org.apache.openejb.assembler.classic.InitMethodInfo;
 import org.apache.openejb.assembler.classic.InterceptorBindingInfo;
 import org.apache.openejb.assembler.classic.InterceptorInfo;
+import org.apache.openejb.assembler.classic.JndiNameInfo;
+import org.apache.openejb.assembler.classic.ManagedBeanInfo;
 import org.apache.openejb.assembler.classic.MessageDrivenBeanInfo;
+import org.apache.openejb.assembler.classic.MethodConcurrencyInfo;
 import org.apache.openejb.assembler.classic.MethodInfo;
 import org.apache.openejb.assembler.classic.MethodPermissionInfo;
+import org.apache.openejb.assembler.classic.MethodScheduleInfo;
 import org.apache.openejb.assembler.classic.MethodTransactionInfo;
 import org.apache.openejb.assembler.classic.NamedMethodInfo;
 import org.apache.openejb.assembler.classic.QueryInfo;
 import org.apache.openejb.assembler.classic.RemoveMethodInfo;
+import org.apache.openejb.assembler.classic.ScheduleInfo;
 import org.apache.openejb.assembler.classic.SecurityRoleInfo;
 import org.apache.openejb.assembler.classic.SecurityRoleReferenceInfo;
+import org.apache.openejb.assembler.classic.SingletonBeanInfo;
 import org.apache.openejb.assembler.classic.StatefulBeanInfo;
 import org.apache.openejb.assembler.classic.StatelessBeanInfo;
-import org.apache.openejb.assembler.classic.ApplicationExceptionInfo;
-import org.apache.openejb.assembler.classic.JndiNameInfo;
-import org.apache.openejb.assembler.classic.SingletonBeanInfo;
-import org.apache.openejb.assembler.classic.MethodConcurrencyInfo;
-import org.apache.openejb.assembler.classic.MethodScheduleInfo;
-import org.apache.openejb.assembler.classic.ScheduleInfo;
-import org.apache.openejb.assembler.classic.ManagedBeanInfo;
+import org.apache.openejb.jee.AccessTimeout;
 import org.apache.openejb.jee.ActivationConfig;
 import org.apache.openejb.jee.ActivationConfigProperty;
+import org.apache.openejb.jee.ApplicationException;
 import org.apache.openejb.jee.CallbackMethod;
 import org.apache.openejb.jee.CmpField;
 import org.apache.openejb.jee.CmpVersion;
+import org.apache.openejb.jee.ConcurrencyType;
+import org.apache.openejb.jee.ContainerConcurrency;
 import org.apache.openejb.jee.ContainerTransaction;
 import org.apache.openejb.jee.EjbRelation;
 import org.apache.openejb.jee.EjbRelationshipRole;
 import org.apache.openejb.jee.EnterpriseBean;
 import org.apache.openejb.jee.EntityBean;
+import org.apache.openejb.jee.ExcludeList;
 import org.apache.openejb.jee.Icon;
 import org.apache.openejb.jee.InitMethod;
 import org.apache.openejb.jee.Interceptor;
@@ -63,6 +78,7 @@ import org.apache.openejb.jee.MessageDri
 import org.apache.openejb.jee.Method;
 import org.apache.openejb.jee.MethodParams;
 import org.apache.openejb.jee.MethodPermission;
+import org.apache.openejb.jee.MethodSchedule;
 import org.apache.openejb.jee.Multiplicity;
 import org.apache.openejb.jee.NamedMethod;
 import org.apache.openejb.jee.PersistenceType;
@@ -70,34 +86,22 @@ import org.apache.openejb.jee.Query;
 import org.apache.openejb.jee.QueryMethod;
 import org.apache.openejb.jee.RemoteBean;
 import org.apache.openejb.jee.RemoveMethod;
+import org.apache.openejb.jee.ResultTypeMapping;
+import org.apache.openejb.jee.Schedule;
 import org.apache.openejb.jee.SecurityRole;
 import org.apache.openejb.jee.SecurityRoleRef;
 import org.apache.openejb.jee.SessionBean;
 import org.apache.openejb.jee.SessionType;
+import org.apache.openejb.jee.StatefulTimeout;
 import org.apache.openejb.jee.TransactionType;
-import org.apache.openejb.jee.ExcludeList;
-import org.apache.openejb.jee.ResultTypeMapping;
-import org.apache.openejb.jee.ApplicationException;
-import org.apache.openejb.jee.ConcurrencyType;
-import org.apache.openejb.jee.ContainerConcurrency;
-import org.apache.openejb.jee.MethodSchedule;
-import org.apache.openejb.jee.Schedule;
 import org.apache.openejb.jee.oejb3.EjbDeployment;
-import org.apache.openejb.jee.oejb3.ResourceLink;
 import org.apache.openejb.jee.oejb3.Jndi;
+import org.apache.openejb.jee.oejb3.ResourceLink;
+import org.apache.openejb.util.Duration;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.Messages;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
-
 /**
  * @version $Revision$ $Date$
  */
@@ -562,6 +566,18 @@ public class EjbJarInfoBuilder {
         bean.serviceEndpoint = s.getServiceEndpoint();
         bean.properties.putAll(d.getProperties());
 
+        final StatefulTimeout statefulTimeout = s.getStatefulTimeout();
+        if(statefulTimeout != null) {
+               bean.statefulTimeout = new 
Duration(statefulTimeout.getTimeout(), 
+                               TimeUnit.valueOf(statefulTimeout.getUnit()));
+        }
+
+        final AccessTimeout accessTimeout = s.getAccessTimeout();
+        if(accessTimeout != null) {
+               bean.accessTimeout = new Duration(accessTimeout.getTimeout(), 
+                               TimeUnit.valueOf(accessTimeout.getUnit()));
+        }
+
         return bean;
     }
 

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?rev=950373&r1=950372&r2=950373&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
 Wed Jun  2 05:30:45 2010
@@ -25,17 +25,18 @@ import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.Properties;
+
 import javax.ejb.EJBHome;
 import javax.ejb.EJBLocalHome;
 import javax.ejb.EJBLocalObject;
 import javax.ejb.EJBObject;
 import javax.ejb.MessageDrivenBean;
+import javax.ejb.SessionSynchronization;
 import javax.ejb.TimedObject;
 import javax.ejb.Timer;
-import javax.ejb.SessionSynchronization;
 import javax.naming.Context;
 import javax.persistence.EntityManagerFactory;
 
@@ -52,8 +53,9 @@ import org.apache.openejb.core.intercept
 import org.apache.openejb.core.ivm.EjbHomeProxyHandler;
 import org.apache.openejb.core.timer.EjbTimerService;
 import org.apache.openejb.core.timer.MethodSchedule;
-import org.apache.openejb.core.transaction.TransactionType;
 import org.apache.openejb.core.transaction.TransactionPolicyFactory;
+import org.apache.openejb.core.transaction.TransactionType;
+import org.apache.openejb.util.Duration;
 import org.apache.openejb.util.Index;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
@@ -133,6 +135,8 @@ public class CoreDeploymentInfo implemen
     private final Map<Class, ExceptionType> exceptions = new HashMap<Class, 
ExceptionType>();
     private boolean loadOnStartup;
     private boolean localbean;
+    private Duration accessTimeout;
+    private Duration statefulTimeout;
 
     public Class getInterface(InterfaceType interfaceType) {
         switch(interfaceType){
@@ -1137,4 +1141,20 @@ public class CoreDeploymentInfo implemen
 
         return null;
     }
+
+       public Duration getAccessTimeout() {
+               return accessTimeout;
+       }
+
+       public void setAccessTimeout(Duration accessTimeout) {
+               this.accessTimeout = accessTimeout;
+       }
+
+       public Duration getStatefulTimeout() {
+               return statefulTimeout;
+       }
+
+       public void setStatefulTimeout(Duration statefulTimeout) {
+               this.statefulTimeout = statefulTimeout;
+       }
 }

Added: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/AccessTimeout.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/AccessTimeout.java?rev=950373&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/AccessTimeout.java
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/AccessTimeout.java
 Wed Jun  2 05:30:45 2010
@@ -0,0 +1,51 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.jee;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+...@xmlaccessortype(XmlAccessType.FIELD)
+...@xmltype(name = "access-timeoutType", propOrder = { "timeout", "unit" })
+public class AccessTimeout {
+
+       @XmlElement(name = "timeout", required = true)
+       private Integer timeout;
+
+       @XmlElement(name = "unit", required = true)
+       private String unit;
+
+       public Integer getTimeout() {
+               return timeout;
+       }
+
+       public void setTimeout(Integer timeout) {
+               this.timeout = timeout;
+       }
+
+       public String getUnit() {
+               return unit;
+       }
+
+       public void setUnit(String unit) {
+               this.unit = unit;
+       }
+
+}

Propchange: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/AccessTimeout.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java?rev=950373&r1=950372&r2=950373&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
 Wed Jun  2 05:30:45 2010
@@ -18,22 +18,23 @@
 
 package org.apache.openejb.jee;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlID;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collection;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Arrays;
 
 
 /**
@@ -134,7 +135,9 @@ import java.util.Arrays;
         "prePassivate",
         "securityRoleRef",
         "securityIdentity",
-        "dependsOn"
+        "dependsOn",
+        "statefulTimeout",
+        "accessTimeout"
         })
 public class SessionBean implements RemoteBean, Session, TimerConsumer {
     @XmlTransient
@@ -214,6 +217,12 @@ public class SessionBean implements Remo
     @XmlElementWrapper(name = "depends-on")
     @XmlElement(name = "ejb-name")
     protected List<String> dependsOn;
+    
+    @XmlElement(name = "stateful-timeout", required = true)
+    protected StatefulTimeout statefulTimeout;
+    
+    @XmlElement(name = "access-timeout", required = true)
+    protected AccessTimeout accessTimeout;
 
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@@ -704,4 +713,20 @@ public class SessionBean implements Remo
         this.id = value;
     }
 
+       public StatefulTimeout getStatefulTimeout() {
+               return statefulTimeout;
+       }
+
+       public void setStatefulTimeout(StatefulTimeout statefulTimeout) {
+               this.statefulTimeout = statefulTimeout;
+       }
+
+       public AccessTimeout getAccessTimeout() {
+               return accessTimeout;
+       }
+
+       public void setAccessTimeout(AccessTimeout accessTimeout) {
+               this.accessTimeout = accessTimeout;
+       }
+
 }

Added: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/StatefulTimeout.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/StatefulTimeout.java?rev=950373&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/StatefulTimeout.java
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/StatefulTimeout.java
 Wed Jun  2 05:30:45 2010
@@ -0,0 +1,51 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.jee;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+...@xmlaccessortype(XmlAccessType.FIELD)
+...@xmltype(name = "stateful-timeoutType", propOrder = { "timeout", "unit" })
+public class StatefulTimeout {
+
+       @XmlElement(name = "timeout", required = true)
+       private Integer timeout;
+
+       @XmlElement(name = "unit", required = true)
+       private String unit;
+
+       public Integer getTimeout() {
+               return timeout;
+       }
+
+       public void setTimeout(Integer timeout) {
+               this.timeout = timeout;
+       }
+
+       public String getUnit() {
+               return unit;
+       }
+
+       public void setUnit(String unit) {
+               this.unit = unit;
+       }
+
+}

Propchange: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/StatefulTimeout.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/JeeTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/JeeTest.java?rev=950373&r1=950372&r2=950373&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/JeeTest.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/JeeTest.java
 Wed Jun  2 05:30:45 2010
@@ -17,22 +17,6 @@
  */
 package org.apache.openejb.jee;
 
-import junit.framework.TestCase;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLFilterImpl;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.bind.ValidationEvent;
-import javax.xml.bind.ValidationEventHandler;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import javax.xml.transform.sax.SAXSource;
 import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -44,6 +28,24 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
 
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.ValidationEvent;
+import javax.xml.bind.ValidationEventHandler;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.transform.sax.SAXSource;
+
+import junit.framework.TestCase;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLFilterImpl;
+
 /**
  * @version $Revision$ $Date$
  */
@@ -85,6 +87,22 @@ public class JeeTest extends TestCase {
 
         System.out.println("time: " + (System.currentTimeMillis() - start));
     }
+    
+    public void testEjbTimeout() throws Exception {
+        String fileName = "ejb-jar-timeout.xml";
+        InputStream in = 
this.getClass().getClassLoader().getResourceAsStream(fileName);
+
+        Object o = JaxbJavaee.unmarshal(EjbJar.class, in);
+
+        EjbJar ejbJar = (EjbJar) o;
+        EnterpriseBean bean = ejbJar.getEnterpriseBean("A");
+
+        assertTrue("The bean A is not a SessionBean", bean instanceof 
SessionBean);
+        SessionBean sbean = (SessionBean) bean;
+
+               assertNotNull("Unable to get the AccessTimeout value", 
sbean.getAccessTimeout());
+               assertNotNull("Unable to get the StatefulTimeout value", 
sbean.getStatefulTimeout());
+    }
 
     public void testEjbJarMdb20() throws Exception {
         String fileName = "ejb-jar-mdb-2.0.xml";

Added: 
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-timeout.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-timeout.xml?rev=950373&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-timeout.xml
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-timeout.xml
 Wed Jun  2 05:30:45 2010
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    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.1" 
metadata-complete="true">
+    <enterprise-beans>
+        <session>
+            <description>String</description>
+            <ejb-name>A</ejb-name>
+                       <stateful-timeout>
+                               <timeout>1234</timeout>
+                               <unit>Seconds</unit>
+                       </stateful-timeout>
+                       <access-timeout>
+                               <timeout>1234</timeout>
+                               <unit>Seconds</unit>
+                       </access-timeout>
+
+        </session>
+    </enterprise-beans>
+</ejb-jar>

Propchange: 
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-timeout.xml
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to