[jboss-cvs] JBossAS SVN: r94026 - in projects/naming/trunk/naming-mc-int/src: test/java/org/jboss/test/naming/microcontainer/binding and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Sep 25 11:25:22 EDT 2009


Author: alesj
Date: 2009-09-25 11:25:22 -0400 (Fri, 25 Sep 2009)
New Revision: 94026

Added:
   projects/naming/trunk/naming-mc-int/src/test/java/org/jboss/test/naming/microcontainer/binding/support/
   projects/naming/trunk/naming-mc-int/src/test/java/org/jboss/test/naming/microcontainer/binding/support/NonSerializable.java
   projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/NonSerializable.xml
Modified:
   projects/naming/trunk/naming-mc-int/src/main/java/org/jboss/naming/microcontainer/AbstractJNDILifecycleCallback.java
   projects/naming/trunk/naming-mc-int/src/test/java/org/jboss/test/naming/microcontainer/binding/test/JNDIBindingUnitTestCase.java
   projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/OnDemand.xml
   projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/Plain.xml
Log:
[JBNAME-35]; allow for non serializable binding.

Modified: projects/naming/trunk/naming-mc-int/src/main/java/org/jboss/naming/microcontainer/AbstractJNDILifecycleCallback.java
===================================================================
--- projects/naming/trunk/naming-mc-int/src/main/java/org/jboss/naming/microcontainer/AbstractJNDILifecycleCallback.java	2009-09-25 15:08:15 UTC (rev 94025)
+++ projects/naming/trunk/naming-mc-int/src/main/java/org/jboss/naming/microcontainer/AbstractJNDILifecycleCallback.java	2009-09-25 15:25:22 UTC (rev 94026)
@@ -21,6 +21,9 @@
 */
 package org.jboss.naming.microcontainer;
 
+import java.io.Serializable;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArraySet;
 import javax.naming.InitialContext;
 
 import org.jboss.annotations.spi.naming.JNDI;
@@ -29,17 +32,30 @@
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.metadata.spi.MetaData;
+import org.jboss.util.naming.NonSerializableFactory;
 import org.jboss.util.naming.Util;
 
 /**
  * AbstractJNDILifecycleCallback.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @version $Revision: 1.1 $
  */
 public abstract class AbstractJNDILifecycleCallback
 {
+   /** Keep track of non serializable entries */
+   private Set<String> nonSerializableEntries = new CopyOnWriteArraySet<String>();
+
    /**
+    * At stop clear non serializable entries.
+    */
+   public void stop()
+   {
+      nonSerializableEntries.clear();
+   }
+
+   /**
     * Installation of the context
     * 
     * @param context the context
@@ -92,7 +108,17 @@
          Object object = context.getTarget();
          if (object == null)
             throw new IllegalStateException("No object associated with context: " + context.getName());
-         Util.bind(new InitialContext(), jndi.binding(), object);
+
+         if (jndi.serializable() == false || object instanceof Serializable == false)
+         {
+            String binding = jndi.binding();
+            NonSerializableFactory.rebind(new InitialContext(), binding, object);
+            nonSerializableEntries.add(binding);
+         }
+         else
+         {
+            Util.bind(new InitialContext(), jndi.binding(), object);
+         }
       }
       else
       {
@@ -117,7 +143,16 @@
 
       if (jndi.bindDirect())
       {
-         Util.unbind(new InitialContext(), jndi.binding());
+         String binding = jndi.binding();
+         if (nonSerializableEntries.remove(binding))
+         {
+            NonSerializableFactory.unbind(binding);
+            new InitialContext().unbind(binding);
+         }
+         else
+         {
+            Util.unbind(new InitialContext(), binding);
+         }
       }
       else
       {

Added: projects/naming/trunk/naming-mc-int/src/test/java/org/jboss/test/naming/microcontainer/binding/support/NonSerializable.java
===================================================================
--- projects/naming/trunk/naming-mc-int/src/test/java/org/jboss/test/naming/microcontainer/binding/support/NonSerializable.java	                        (rev 0)
+++ projects/naming/trunk/naming-mc-int/src/test/java/org/jboss/test/naming/microcontainer/binding/support/NonSerializable.java	2009-09-25 15:25:22 UTC (rev 94026)
@@ -0,0 +1,53 @@
+/*
+ * 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.naming.microcontainer.binding.support;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class NonSerializable
+{
+   private String qualifier;
+
+   public NonSerializable(String qualifier)
+   {
+      if (qualifier == null)
+         throw new IllegalArgumentException("Null qualifier");
+      this.qualifier = qualifier;
+   }
+
+   @Override
+   public int hashCode()
+   {
+      return qualifier.hashCode();
+   }
+
+   @Override
+   public boolean equals(Object obj)
+   {
+      if (obj instanceof NonSerializable == false)
+         return false;
+
+      NonSerializable other = (NonSerializable)obj;
+      return qualifier.equals(other.qualifier);
+   }
+}

Modified: projects/naming/trunk/naming-mc-int/src/test/java/org/jboss/test/naming/microcontainer/binding/test/JNDIBindingUnitTestCase.java
===================================================================
--- projects/naming/trunk/naming-mc-int/src/test/java/org/jboss/test/naming/microcontainer/binding/test/JNDIBindingUnitTestCase.java	2009-09-25 15:08:15 UTC (rev 94025)
+++ projects/naming/trunk/naming-mc-int/src/test/java/org/jboss/test/naming/microcontainer/binding/test/JNDIBindingUnitTestCase.java	2009-09-25 15:25:22 UTC (rev 94026)
@@ -26,6 +26,7 @@
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.kernel.spi.deployment.KernelDeployment;
 import org.jboss.test.naming.microcontainer.BootstrapNamingTest;
+import org.jboss.test.naming.microcontainer.binding.support.NonSerializable;
 
 /**
  * PlainJNDIUnitTestCase.
@@ -78,4 +79,20 @@
          assertNoBinding("Test");
       }
    }
+
+   public void testNonSerializable() throws Throwable
+   {
+      assertNoBinding("Test");
+      KernelDeployment deployment = deploy("NonSerializable.xml");
+      try
+      {
+         getControllerContext("Test", ControllerState.INSTALLED);
+         assertBinding("Test", new NonSerializable("Hello"));
+      }
+      finally
+      {
+         undeploy(deployment);
+         assertNoBinding("Test");
+      }
+   }
 }

Copied: projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/NonSerializable.xml (from rev 94022, projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/OnDemand.xml)
===================================================================
--- projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/NonSerializable.xml	                        (rev 0)
+++ projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/NonSerializable.xml	2009-09-25 15:25:22 UTC (rev 94026)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <bean name="Test" class="org.jboss.test.naming.microcontainer.binding.support.NonSerializable">
+      <annotation>@org.jboss.annotations.spi.naming.JNDI(binding="Test", bindDirect=true)</annotation>
+      <constructor>
+         <parameter class="java.lang.String">Hello</parameter>
+      </constructor>
+   </bean>
+
+</deployment>

Modified: projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/OnDemand.xml
===================================================================
--- projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/OnDemand.xml	2009-09-25 15:08:15 UTC (rev 94025)
+++ projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/OnDemand.xml	2009-09-25 15:25:22 UTC (rev 94026)
@@ -2,7 +2,6 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <!-- Aspect Manager -->
    <bean name="Test" class="java.lang.String" mode="On Demand">
       <annotation>@org.jboss.annotations.spi.naming.JNDI(binding="Test")</annotation>
       <constructor>

Modified: projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/Plain.xml
===================================================================
--- projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/Plain.xml	2009-09-25 15:08:15 UTC (rev 94025)
+++ projects/naming/trunk/naming-mc-int/src/test/resources/org/jboss/test/naming/microcontainer/binding/test/Plain.xml	2009-09-25 15:25:22 UTC (rev 94026)
@@ -2,7 +2,6 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <!-- Aspect Manager -->
    <bean name="Test" class="java.lang.String">
      <annotation>@org.jboss.annotations.spi.naming.JNDI(binding="Test")</annotation>
       <constructor>




More information about the jboss-cvs-commits mailing list