[jboss-cvs] JBossAS SVN: r74386 - in projects/ejb3/trunk/core: src/main/java/org/jboss/ejb3/session and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jun 11 08:29:07 EDT 2008
Author: wolfc
Date: 2008-06-11 08:29:07 -0400 (Wed, 11 Jun 2008)
New Revision: 74386
Added:
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/MyStateful.java
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/MyStatefulBean.java
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/unit/
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/unit/OverriddenProxyFactoryTestCase.java
Modified:
projects/ejb3/trunk/core/pom.xml
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/ProxyDeployer.java
projects/ejb3/trunk/core/src/test/resources/basicbootstrap-beans.xml
projects/ejb3/trunk/core/src/test/resources/log4j.xml
Log:
EJBTHREE-1253: fixed regression
Modified: projects/ejb3/trunk/core/pom.xml
===================================================================
--- projects/ejb3/trunk/core/pom.xml 2008-06-11 12:28:15 UTC (rev 74385)
+++ projects/ejb3/trunk/core/pom.xml 2008-06-11 12:29:07 UTC (rev 74386)
@@ -7,7 +7,7 @@
<parent>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-build</artifactId>
- <version>0.13.7</version>
+ <version>0.13.8-SNAPSHOT</version>
<relativePath>../build/pom.xml</relativePath>
</parent>
@@ -458,6 +458,10 @@
<version>${version.org.jboss.jboss-as}</version>
<exclusions>
<exclusion>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-remoting</artifactId>
+ </exclusion>
+ <exclusion>
<groupId>org.jboss</groupId>
<artifactId>jboss-metadata</artifactId>
</exclusion>
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/ProxyDeployer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/ProxyDeployer.java 2008-06-11 12:28:15 UTC (rev 74385)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/ProxyDeployer.java 2008-06-11 12:29:07 UTC (rev 74386)
@@ -23,6 +23,7 @@
import java.lang.reflect.Constructor;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -61,6 +62,35 @@
this.container = container;
}
+ private static <T> Constructor<T> getConstructor(Class<T> cls, Class<?> ... parameterTypes) throws SecurityException, NoSuchMethodException
+ {
+ try
+ {
+ return cls.getConstructor(parameterTypes);
+ }
+ catch(NoSuchMethodException e)
+ {
+ log.warn("Class " + cls + " does not have a proper constructor with parameters " + Arrays.toString(parameterTypes) + ", will try to find one");
+
+ Constructor<T> constructors[] = cls.getConstructors();
+ for(Constructor<T> constructor : constructors)
+ {
+ if(parameterTypes.length != constructor.getParameterTypes().length)
+ continue;
+
+ int i = 0;
+ for(; i < parameterTypes.length; i++)
+ {
+ if(!constructor.getParameterTypes()[i].isAssignableFrom(parameterTypes[i]))
+ break;
+ }
+ if(i == parameterTypes.length)
+ return constructor;
+ }
+ throw e;
+ }
+ }
+
public Map<Object, ProxyFactory> getProxyFactories()
{
return proxyFactories;
@@ -89,7 +119,7 @@
else
{
Class<? extends RemoteProxyFactory> remoteFactoryClass = container.getDeployment().getRemoteProxyFactoryRegistry().getProxyFactoryClass(binding.factory());
- Constructor<? extends RemoteProxyFactory> constructor = remoteFactoryClass.getConstructor(SessionContainer.class, RemoteBinding.class);
+ Constructor<? extends RemoteProxyFactory> constructor = getConstructor(remoteFactoryClass, container.getClass(), RemoteBinding.class);
factory = constructor.newInstance(container, binding);
}
factory.start();
Added: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/MyStateful.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/MyStateful.java (rev 0)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/MyStateful.java 2008-06-11 12:29:07 UTC (rev 74386)
@@ -0,0 +1,36 @@
+/*
+ * 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.ejb3.core.test.regression.ejbthree1253;
+
+import javax.ejb.Remote;
+
+/**
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Remote
+public interface MyStateful
+{
+ String sayHi();
+
+ void setName(String name);
+}
Property changes on: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/MyStateful.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/MyStatefulBean.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/MyStatefulBean.java (rev 0)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/MyStatefulBean.java 2008-06-11 12:29:07 UTC (rev 74386)
@@ -0,0 +1,51 @@
+/*
+ * 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.ejb3.core.test.regression.ejbthree1253;
+
+import javax.ejb.Stateful;
+
+import org.jboss.ejb3.annotation.RemoteBinding;
+import org.jboss.ejb3.annotation.defaults.RemoteBindingDefaults;
+
+/**
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Stateful
+ at RemoteBinding(factory = RemoteBindingDefaults.PROXY_FACTORY_STATEFUL_REMOTE)
+public class MyStatefulBean implements MyStateful
+{
+ private String name;
+
+ public String sayHi()
+ {
+ if(name == null)
+ throw new IllegalStateException("name is null");
+
+ return "Hi " + name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+}
Property changes on: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/MyStatefulBean.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/unit/OverriddenProxyFactoryTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/unit/OverriddenProxyFactoryTestCase.java (rev 0)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/unit/OverriddenProxyFactoryTestCase.java 2008-06-11 12:29:07 UTC (rev 74386)
@@ -0,0 +1,95 @@
+/*
+ * 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.ejb3.core.test.regression.ejbthree1253.unit;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Hashtable;
+
+import javax.naming.InitialContext;
+
+import org.jboss.aop.Domain;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.Ejb3Registry;
+import org.jboss.ejb3.cache.persistence.PersistenceManagerFactoryRegistry;
+import org.jboss.ejb3.core.test.common.AbstractEJB3TestCase;
+import org.jboss.ejb3.core.test.regression.ejbthree1253.MyStateful;
+import org.jboss.ejb3.core.test.regression.ejbthree1253.MyStatefulBean;
+import org.jboss.ejb3.proxy.factory.RemoteProxyFactoryRegistry;
+import org.jboss.ejb3.stateful.StatefulContainer;
+import org.jboss.ejb3.test.cachepassivation.MockDeploymentUnit;
+import org.jboss.ejb3.test.cachepassivation.MockEjb3Deployment;
+import org.jboss.ejb3.test.common.MetaDataHelper;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.junit.Test;
+
+/**
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class OverriddenProxyFactoryTestCase extends AbstractEJB3TestCase
+{
+ @Test
+ public void test1() throws Throwable
+ {
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ System.out.println(cl.getResource("jndi.properties"));
+ String beanClassname = MyStatefulBean.class.getName();
+ String ejbName = MyStatefulBean.class.getSimpleName();
+ Domain domain = getDomain("Stateful Bean");
+ Hashtable<?,?> ctxProperties = null;
+ Ejb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit(), null);
+ deployment.setPersistenceManagerFactoryRegistry(getBootstrap().lookup("EJB3PersistenceManagerFactoryRegistry", PersistenceManagerFactoryRegistry.class));
+ deployment.setRemoteProxyFactoryRegistry(getBootstrap().lookup("EJB3RemoteProxyFactoryRegistry", RemoteProxyFactoryRegistry.class));
+ JBossSessionBeanMetaData beanMetaData = MetaDataHelper.getMetadataFromBeanImplClass(MyStatefulBean.class);
+ StatefulContainer container = new StatefulContainer(cl, beanClassname, ejbName, domain, ctxProperties, deployment, beanMetaData);
+
+ // TODO: wickedness
+ container.instantiated();
+
+ // A container does not register itself
+ Ejb3Registry.register(container);
+
+ // Register the Container in ObjectStore (MC)
+ String containerName = container.getName();
+ AbstractBeanMetaData bmd = new AbstractBeanMetaData(containerName, StatefulContainer.class.getName());
+ KernelControllerContext context = getBootstrap().getKernel().getController().install(bmd, container);
+ if(context.getError() != null)
+ throw context.getError();
+// Ejb3RegistrarLocator.locateRegistrar().bind(containerName, container);
+
+
+ InitialContext ctx = new InitialContext();
+ System.out.println("ctx = " + ctx);
+ //System.out.println(" " + container.getInitialContext().list("MyStatelessBean").next());
+ MyStateful bean = (MyStateful) ctx.lookup("MyStatefulBean/remote");
+
+ bean.setName("Me");
+ String actual = bean.sayHi();
+ assertEquals("Hi Me", actual);
+
+ getBootstrap().getKernel().getController().uninstall(containerName);
+ Ejb3Registry.unregister(container);
+ }
+}
Property changes on: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/unit/OverriddenProxyFactoryTestCase.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: projects/ejb3/trunk/core/src/test/resources/basicbootstrap-beans.xml
===================================================================
--- projects/ejb3/trunk/core/src/test/resources/basicbootstrap-beans.xml 2008-06-11 12:28:15 UTC (rev 74385)
+++ projects/ejb3/trunk/core/src/test/resources/basicbootstrap-beans.xml 2008-06-11 12:29:07 UTC (rev 74386)
@@ -114,4 +114,85 @@
<!-- JNDI Registrar Configuration -->
<bean name="org.jboss.ejb3.JndiContext"
class="javax.naming.InitialContext" />
+
+ <!-- Remoting Proxy Factory Registry -->
+ <bean name="EJB3RemoteProxyFactoryRegistry" class="org.jboss.ejb3.proxy.factory.RemoteProxyFactoryRegistry">
+ <property name="factories">
+ <!-- Define each of the registered factories -->
+ <map class="java.util.HashMap" keyClass="java.lang.String"
+ valueClass="java.lang.Class">
+ <!-- RemoteProxyFactory -->
+ <entry>
+ <key>RemoteProxyFactory</key>
+ <value>org.jboss.ejb3.proxy.factory.RemoteProxyFactory</value>
+ </entry>
+ <!-- IORFactory -->
+ <!-- Only available in AS
+ <entry>
+ <key>IORFactory</key>
+ <value>org.jboss.ejb3.iiop.IORFactory</value>
+ </entry>
+ -->
+ <!-- ServiceRemoteProxyFactory -->
+ <entry>
+ <key>ServiceRemoteProxyFactory</key>
+ <value>org.jboss.ejb3.proxy.factory.service.ServiceRemoteProxyFactory</value>
+ </entry>
+ <!-- StatefulClusterProxyFactory -->
+ <entry>
+ <key>StatefulClusterProxyFactory</key>
+ <value>org.jboss.ejb3.proxy.factory.stateful.StatefulClusterProxyFactory</value>
+ </entry>
+ <!-- StatefulRemoteProxyFactory -->
+ <entry>
+ <key>StatefulRemoteProxyFactory</key>
+ <value>org.jboss.ejb3.proxy.factory.stateful.StatefulRemoteProxyFactory</value>
+ </entry>
+ <!-- StatelessClusterProxyFactory -->
+ <entry>
+ <key>StatelessClusterProxyFactory</key>
+ <value>org.jboss.ejb3.proxy.factory.stateless.StatelessClusterProxyFactory</value>
+ </entry>
+ <!-- StatelessRemoteProxyFactory -->
+ <entry>
+ <key>StatelessRemoteProxyFactory</key>
+ <value>org.jboss.ejb3.proxy.factory.stateless.StatelessRemoteProxyFactory</value>
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+ <!-- EJB3 Persistence Manager Factory Registry -->
+ <bean name="EJB3PersistenceManagerFactoryRegistry" class="org.jboss.ejb3.cache.persistence.PersistenceManagerFactoryRegistry">
+ <property name="factories">
+ <!-- Define each of the registered factories -->
+ <map class="java.util.HashMap" keyClass="java.lang.String"
+ valueClass="java.lang.Class">
+ <!-- StatefulSessionFilePersistenceManager -->
+ <entry>
+ <key>StatefulSessionFilePersistenceManager</key>
+ <!-- A dummy persistence manager which doesn't rely on the jboss mbean -->
+ <value>org.jboss.ejb3.test.cachepassivation.MyStatefulSessionFilePersistenceManagerFactory</value>
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+ <!-- REMOTING -->
+
+ <bean name="ServerConfiguration" class="org.jboss.remoting.ServerConfiguration">
+ <property name="invocationHandlers">
+ <map keyClass="java.lang.String" valueClass="java.lang.String">
+ <entry>
+ <key>AOP</key>
+ <value>org.jboss.aspects.remoting.AOPRemotingInvocationHandler</value>
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+ <bean name="Connector" class="org.jboss.remoting.transport.Connector">
+ <property name="invokerLocator">socket://0.0.0.0:3873</property>
+ <property name="serverConfiguration"><inject bean="ServerConfiguration"/></property>
+ </bean>
</deployment>
\ No newline at end of file
Modified: projects/ejb3/trunk/core/src/test/resources/log4j.xml
===================================================================
--- projects/ejb3/trunk/core/src/test/resources/log4j.xml 2008-06-11 12:28:15 UTC (rev 74385)
+++ projects/ejb3/trunk/core/src/test/resources/log4j.xml 2008-06-11 12:29:07 UTC (rev 74386)
@@ -61,7 +61,7 @@
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
- <param name="Threshold" value="DEBUG"/>
+ <param name="Threshold" value="WARN"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
More information about the jboss-cvs-commits
mailing list