[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