[jboss-cvs] JBossAS SVN: r93545 - in projects/jboss-jsr303/trunk/deployers/src: main/java/org/jboss/beanvalidation/deployers and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Sep 15 12:12:48 EDT 2009
Author: stan.silvert at jboss.com
Date: 2009-09-15 12:12:47 -0400 (Tue, 15 Sep 2009)
New Revision: 93545
Added:
projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/DefaultJndiBinder.java
projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/JndiBinder.java
projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/support/MockInitialContextFactory.java
Removed:
projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/DefaultJndiNameCreator.java
projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/JndiNameCreator.java
Modified:
projects/jboss-jsr303/trunk/deployers/src/main/assembly/META-INF/bv-core-jboss-beans.xml
projects/jboss-jsr303/trunk/deployers/src/main/assembly/META-INF/bv-deployers-jboss-beans.xml
projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/deployers/ValidatorFactoryJndiBinderDeployer.java
projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/support/MockVFJndiBinderDeployer.java
projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/test/SmokeTestCase.java
projects/jboss-jsr303/trunk/deployers/src/test/resources/org/jboss/test/deployers/test/SmokeTestCase.xml
Log:
JBAS-7167 Add JSR-303 Bean Validation to AS 5.2 & Trunk
Modified: projects/jboss-jsr303/trunk/deployers/src/main/assembly/META-INF/bv-core-jboss-beans.xml
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/main/assembly/META-INF/bv-core-jboss-beans.xml 2009-09-15 15:47:11 UTC (rev 93544)
+++ projects/jboss-jsr303/trunk/deployers/src/main/assembly/META-INF/bv-core-jboss-beans.xml 2009-09-15 16:12:47 UTC (rev 93545)
@@ -19,6 +19,6 @@
</bean>
<!-- Default JNDI name creator -->
- <bean name="DefaultJndiNameCreator" class="org.jboss.beanvalidation.util.DefaultJndiNameCreator" />
+ <bean name="DefaultJndiBinder" class="org.jboss.beanvalidation.util.DefaultJndiBinder" />
</deployment>
Modified: projects/jboss-jsr303/trunk/deployers/src/main/assembly/META-INF/bv-deployers-jboss-beans.xml
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/main/assembly/META-INF/bv-deployers-jboss-beans.xml 2009-09-15 15:47:11 UTC (rev 93544)
+++ projects/jboss-jsr303/trunk/deployers/src/main/assembly/META-INF/bv-deployers-jboss-beans.xml 2009-09-15 16:12:47 UTC (rev 93545)
@@ -16,7 +16,7 @@
<!-- ValidatorFactory jndi binder -->
<bean name="VFJndiBinder" class="org.jboss.beanvalidation.deployers.ValidatorFactoryJndiBinderDeployer">
<constructor>
- <parameter><inject bean="DefaultJndiNameCreator" /></parameter>
+ <parameter><inject bean="DefaultJndiBinder" /></parameter>
</constructor>
</bean>
Modified: projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/deployers/ValidatorFactoryJndiBinderDeployer.java
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/deployers/ValidatorFactoryJndiBinderDeployer.java 2009-09-15 15:47:11 UTC (rev 93544)
+++ projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/deployers/ValidatorFactoryJndiBinderDeployer.java 2009-09-15 16:12:47 UTC (rev 93545)
@@ -21,85 +21,62 @@
*/
package org.jboss.beanvalidation.deployers;
-import java.util.Hashtable;
-import javax.naming.Context;
-import javax.naming.InitialContext;
+import javax.naming.NamingException;
import javax.validation.ValidatorFactory;
+import org.jboss.beanvalidation.util.JndiBinder;
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
import org.jboss.deployers.spi.deployer.DeploymentStages;
import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.beanvalidation.util.JndiNameCreator;
/**
* Bind ValidatorFactory to jndi.
*
* @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ * @author <a href="mailto:stan.silvert at jboss.org">Stan Silvert</a>
*/
public class ValidatorFactoryJndiBinderDeployer extends AbstractSimpleRealDeployer<ValidatorFactory>
{
- private JndiNameCreator jndiNameCreator;
- private Hashtable<?, ?> environment;
+ private JndiBinder jndiBinder;
- public ValidatorFactoryJndiBinderDeployer(JndiNameCreator jndiNameCreator)
+ public ValidatorFactoryJndiBinderDeployer(JndiBinder jndiBinder)
{
super(ValidatorFactory.class);
- if (jndiNameCreator == null)
- throw new IllegalArgumentException("Null jndi name creator");
+ if (jndiBinder == null)
+ throw new IllegalArgumentException("Null jndi binder");
setStage(DeploymentStages.PRE_REAL);
addOutput(ValidatorFactory.class.getName() + ".JNDI_NAME");
- this.jndiNameCreator = jndiNameCreator;
+ this.jndiBinder = jndiBinder;
}
- public void deploy(DeploymentUnit unit, ValidatorFactory factory) throws DeploymentException
+ @Override
+ public void deploy(DeploymentUnit unit, ValidatorFactory validatorFactory) throws DeploymentException
{
try
{
- Context context = createContext();
- context.bind(jndiNameCreator.createName(unit, factory), factory);
+ jndiBinder.bind(unit.getSimpleName(), validatorFactory);
}
- catch (Exception e)
+ catch (NamingException e)
{
throw DeploymentException.rethrowAsDeploymentException("Cannot bind validator factory.", e);
}
}
-
+
@Override
- public void undeploy(DeploymentUnit unit, ValidatorFactory factory)
+ public void undeploy(DeploymentUnit unit, ValidatorFactory validatorFactory)
{
try
{
- Context context = createContext();
- context.unbind(jndiNameCreator.createName(unit, factory));
+ jndiBinder.unbind(unit.getSimpleName().toString());
}
- catch (Exception e)
+ catch (NamingException e)
{
log.warn("Exception unbinding validator factory: " + e);
}
}
- /**
- * Create context.
- *
- * @return new context
- * @throws Exception for any error
- */
- protected Context createContext() throws Exception
- {
- return (environment != null) ? new InitialContext(environment) : new InitialContext();
- }
-
- /**
- * Set naming context env.
- *
- * @param environment the env
- */
- public void setEnvironment(Hashtable<?, ?> environment)
- {
- this.environment = environment;
- }
}
\ No newline at end of file
Added: projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/DefaultJndiBinder.java
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/DefaultJndiBinder.java (rev 0)
+++ projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/DefaultJndiBinder.java 2009-09-15 16:12:47 UTC (rev 93545)
@@ -0,0 +1,111 @@
+/*
+ * 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.beanvalidation.util;
+
+import java.util.Hashtable;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NameParser;
+import javax.naming.NamingException;
+
+import javax.validation.ValidatorFactory;
+import org.jboss.logging.Logger;
+import org.jboss.util.naming.NonSerializableFactory;
+
+/**
+ * Default jndi name binder. This class binds BV factories into golbal JNDI
+ * under a well-known subcontext.
+ *
+ * @author <a href="mailto:stan.silvert at jboss.org">Stan Silvert</a>
+ */
+public class DefaultJndiBinder implements JndiBinder
+{
+ protected static Logger log = Logger.getLogger(DefaultJndiBinder.class);
+
+ public static final String BV_FACTORY_JNDI_SUBCONTEXT = "BeanValidatorFactories";
+
+ private Hashtable jndiEnvironment;
+ private Context bvFactoryContext;
+
+ public DefaultJndiBinder()
+ {
+ this(new Hashtable(1));
+ }
+
+ public DefaultJndiBinder(Hashtable jndiEnvironment)
+ {
+ setEnvironment(jndiEnvironment);
+ createSubContextForFactories();
+ }
+
+ protected void createSubContextForFactories()
+ {
+ try
+ {
+ Context root = new InitialContext(jndiEnvironment);
+ this.bvFactoryContext = root.createSubcontext(BV_FACTORY_JNDI_SUBCONTEXT);
+ }
+ catch (NamingException e)
+ {
+ log.error("Unable to create JNDI subcontext for Bean Validation Factories", e);
+ }
+ }
+
+ /**
+ * Set JNDI environment making sure to add the NonSerializableFactory as an object factory.
+ *
+ * @param environment the env
+ */
+ protected void setEnvironment(Hashtable environment)
+ {
+ setNonSerializableFactory(environment);
+ this.jndiEnvironment = environment;
+ }
+
+ protected void setNonSerializableFactory(Hashtable<String, String> environment)
+ {
+ String nonSerializableFactory = NonSerializableFactory.class.getName();
+ String objFactory = environment.get(Context.OBJECT_FACTORIES);
+ if (objFactory != null)
+ {
+ objFactory = nonSerializableFactory + ":" + objFactory;
+ }
+ else
+ {
+ objFactory = nonSerializableFactory;
+ }
+
+ environment.put(Context.OBJECT_FACTORIES, objFactory);
+ }
+
+ public void bind(String name, ValidatorFactory validatorFactory) throws NamingException
+ {
+ NonSerializableFactory.rebind(this.bvFactoryContext, name, validatorFactory);
+ }
+
+ public void unbind(String name) throws NamingException
+ {
+ this.bvFactoryContext.unbind(name);
+ NonSerializableFactory.unbind(name);
+ }
+
+}
Deleted: projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/DefaultJndiNameCreator.java
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/DefaultJndiNameCreator.java 2009-09-15 15:47:11 UTC (rev 93544)
+++ projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/DefaultJndiNameCreator.java 2009-09-15 16:12:47 UTC (rev 93545)
@@ -1,39 +0,0 @@
-/*
- * 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.beanvalidation.util;
-
-import javax.validation.ValidatorFactory;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-
-/**
- * Default jndi name creator.
- *
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- */
-public class DefaultJndiNameCreator implements JndiNameCreator
-{
- public String createName(DeploymentUnit unit, ValidatorFactory factory)
- {
- return "java:comp/env/" + unit.getSimpleName(); // TODO - fix this
- }
-}
Added: projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/JndiBinder.java
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/JndiBinder.java (rev 0)
+++ projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/JndiBinder.java 2009-09-15 16:12:47 UTC (rev 93545)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.beanvalidation.util;
+
+import javax.naming.NamingException;
+import javax.validation.ValidatorFactory;
+
+/**
+ * Create jndi name for Validator Factory.
+ *
+ * @author <a href="mailto:stan.silvert at jboss.org">Stan Silvert</a>
+ */
+public interface JndiBinder
+{
+ /**
+ * Bind a ValidatorFactory to the given name.
+ *
+ * @param name The name that the factory will be bound to.
+ * @param validatorFactory The factory to bind.
+ */
+ public void bind(String name, ValidatorFactory validatorFactory) throws NamingException;
+
+ /**
+ * Unbind a ValidatorFactory.
+ *
+ * @param rootContext the root JNDI context (not the BV subcontext)
+ * @return new jndi name for VF
+ */
+ public void unbind(String name) throws NamingException;
+}
Deleted: projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/JndiNameCreator.java
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/JndiNameCreator.java 2009-09-15 15:47:11 UTC (rev 93544)
+++ projects/jboss-jsr303/trunk/deployers/src/main/java/org/jboss/beanvalidation/util/JndiNameCreator.java 2009-09-15 16:12:47 UTC (rev 93545)
@@ -1,43 +0,0 @@
-/*
- * 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.beanvalidation.util;
-
-import javax.validation.ValidatorFactory;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-
-/**
- * Create jndi name for Validator Factory.
- *
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- */
-public interface JndiNameCreator
-{
- /**
- * Create jndi name from deployment unit.
- *
- * @param unit the deployment unit
- * @param factory the validator factory
- * @return new jndi name for VF
- */
- String createName(DeploymentUnit unit, ValidatorFactory factory);
-}
Added: projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/support/MockInitialContextFactory.java
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/support/MockInitialContextFactory.java (rev 0)
+++ projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/support/MockInitialContextFactory.java 2009-09-15 16:12:47 UTC (rev 93545)
@@ -0,0 +1,207 @@
+/*
+ * 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.deployers.support;
+
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import javax.naming.Binding;
+import javax.naming.Context;
+import javax.naming.Name;
+import javax.naming.NameClassPair;
+import javax.naming.NameParser;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+
+import javax.naming.spi.InitialContextFactory;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class MockInitialContextFactory implements InitialContextFactory
+{
+ public static Context initialContext = new MockContext();
+
+
+ public Context getInitialContext(Hashtable<?, ?> environment) throws NamingException
+ {
+ return initialContext;
+ }
+
+ private static class MockContext implements Context
+ {
+ private Map<Object, Object> map = new HashMap<Object, Object>();
+
+ public Object lookup(Name name) throws NamingException
+ {
+ return map.get(name);
+ }
+
+ public Object lookup(String name) throws NamingException
+ {
+ return map.get(name);
+ }
+
+ public void bind(Name name, Object obj) throws NamingException
+ {
+ map.put(name, obj);
+ }
+
+ public void bind(String name, Object obj) throws NamingException
+ {
+ map.put(name, obj);
+ }
+
+ public void rebind(Name name, Object obj) throws NamingException
+ {
+ bind(name, obj);
+ }
+
+ public void rebind(String name, Object obj) throws NamingException
+ {
+ bind(name, obj);
+ }
+
+ public void unbind(Name name) throws NamingException
+ {
+ map.remove(name);
+ }
+
+ public void unbind(String name) throws NamingException
+ {
+ map.remove(name);
+ }
+
+ public void rename(Name oldName, Name newName) throws NamingException
+ {
+ Object previous = map.remove(oldName);
+ if (previous != null)
+ map.put(newName, previous);
+ }
+
+ public void rename(String oldName, String newName) throws NamingException
+ {
+ Object previous = map.remove(oldName);
+ if (previous != null)
+ map.put(newName, previous);
+ }
+
+ public NamingEnumeration<NameClassPair> list(Name name) throws NamingException
+ {
+ return null;
+ }
+
+ public NamingEnumeration<NameClassPair> list(String name) throws NamingException
+ {
+ return null;
+ }
+
+ public NamingEnumeration<Binding> listBindings(Name name) throws NamingException
+ {
+ return null;
+ }
+
+ public NamingEnumeration<Binding> listBindings(String name) throws NamingException
+ {
+ return null;
+ }
+
+ public void destroySubcontext(Name name) throws NamingException
+ {
+ }
+
+ public void destroySubcontext(String name) throws NamingException
+ {
+ }
+
+ public Context createSubcontext(Name name) throws NamingException
+ {
+ return new MockContext();
+ }
+
+ public Context createSubcontext(String name) throws NamingException
+ {
+ return new MockContext();
+ }
+
+ public Object lookupLink(Name name) throws NamingException
+ {
+ return null;
+ }
+
+ public Object lookupLink(String name) throws NamingException
+ {
+ return null;
+ }
+
+ public NameParser getNameParser(Name name) throws NamingException
+ {
+ return null;
+ }
+
+ public NameParser getNameParser(String name) throws NamingException
+ {
+ return null;
+ }
+
+ public Name composeName(Name name, Name prefix) throws NamingException
+ {
+ return null;
+ }
+
+ public String composeName(String name, String prefix) throws NamingException
+ {
+ return null;
+ }
+
+ public Object addToEnvironment(String propName, Object propVal) throws NamingException
+ {
+ return null;
+ }
+
+ public Object removeFromEnvironment(String propName) throws NamingException
+ {
+ return null;
+ }
+
+ public Hashtable<?, ?> getEnvironment() throws NamingException
+ {
+ return null;
+ }
+
+ public void close() throws NamingException
+ {
+ map.clear();
+ }
+
+ public String getNameInNamespace() throws NamingException
+ {
+ return null;
+ }
+
+ @Override
+ public String toString()
+ {
+ return this.map.toString();
+ }
+ }
+}
Modified: projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/support/MockVFJndiBinderDeployer.java
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/support/MockVFJndiBinderDeployer.java 2009-09-15 15:47:11 UTC (rev 93544)
+++ projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/support/MockVFJndiBinderDeployer.java 2009-09-15 16:12:47 UTC (rev 93545)
@@ -21,187 +21,27 @@
*/
package org.jboss.test.deployers.support;
-import java.util.HashMap;
import java.util.Hashtable;
-import java.util.Map;
-import javax.naming.Binding;
import javax.naming.Context;
-import javax.naming.Name;
-import javax.naming.NameClassPair;
-import javax.naming.NameParser;
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
import org.jboss.beanvalidation.deployers.ValidatorFactoryJndiBinderDeployer;
-import org.jboss.beanvalidation.util.JndiNameCreator;
+import org.jboss.beanvalidation.util.DefaultJndiBinder;
/**
* @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ * @author <a href="mailto:stan.silvert at jboss.org">Stan Silvert</a>
*/
public class MockVFJndiBinderDeployer extends ValidatorFactoryJndiBinderDeployer
{
- public static final Context context = new MockContext();
-
- public MockVFJndiBinderDeployer(JndiNameCreator jndiNameCreator)
+ public MockVFJndiBinderDeployer()
{
- super(jndiNameCreator);
+ super(new DefaultJndiBinder(makeEnvironment()));
}
-
- @Override
- protected Context createContext() throws Exception
+
+ private static Hashtable makeEnvironment()
{
- return context;
+ Hashtable env = new Hashtable();
+ env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.test.deployers.support.MockInitialContextFactory");
+ return env;
}
-
- private static class MockContext implements Context
- {
- private Map<Object, Object> map = new HashMap<Object, Object>();
-
- public Object lookup(Name name) throws NamingException
- {
- return map.get(name);
- }
-
- public Object lookup(String name) throws NamingException
- {
- return map.get(name);
- }
-
- public void bind(Name name, Object obj) throws NamingException
- {
- map.put(name, obj);
- }
-
- public void bind(String name, Object obj) throws NamingException
- {
- map.put(name, obj);
- }
-
- public void rebind(Name name, Object obj) throws NamingException
- {
- bind(name, obj);
- }
-
- public void rebind(String name, Object obj) throws NamingException
- {
- bind(name, obj);
- }
-
- public void unbind(Name name) throws NamingException
- {
- map.remove(name);
- }
-
- public void unbind(String name) throws NamingException
- {
- map.remove(name);
- }
-
- public void rename(Name oldName, Name newName) throws NamingException
- {
- Object previous = map.remove(oldName);
- if (previous != null)
- map.put(newName, previous);
- }
-
- public void rename(String oldName, String newName) throws NamingException
- {
- Object previous = map.remove(oldName);
- if (previous != null)
- map.put(newName, previous);
- }
-
- public NamingEnumeration<NameClassPair> list(Name name) throws NamingException
- {
- return null;
- }
-
- public NamingEnumeration<NameClassPair> list(String name) throws NamingException
- {
- return null;
- }
-
- public NamingEnumeration<Binding> listBindings(Name name) throws NamingException
- {
- return null;
- }
-
- public NamingEnumeration<Binding> listBindings(String name) throws NamingException
- {
- return null;
- }
-
- public void destroySubcontext(Name name) throws NamingException
- {
- }
-
- public void destroySubcontext(String name) throws NamingException
- {
- }
-
- public Context createSubcontext(Name name) throws NamingException
- {
- return new MockContext();
- }
-
- public Context createSubcontext(String name) throws NamingException
- {
- return new MockContext();
- }
-
- public Object lookupLink(Name name) throws NamingException
- {
- return null;
- }
-
- public Object lookupLink(String name) throws NamingException
- {
- return null;
- }
-
- public NameParser getNameParser(Name name) throws NamingException
- {
- return null;
- }
-
- public NameParser getNameParser(String name) throws NamingException
- {
- return null;
- }
-
- public Name composeName(Name name, Name prefix) throws NamingException
- {
- return null;
- }
-
- public String composeName(String name, String prefix) throws NamingException
- {
- return null;
- }
-
- public Object addToEnvironment(String propName, Object propVal) throws NamingException
- {
- return null;
- }
-
- public Object removeFromEnvironment(String propName) throws NamingException
- {
- return null;
- }
-
- public Hashtable<?, ?> getEnvironment() throws NamingException
- {
- return null;
- }
-
- public void close() throws NamingException
- {
- map.clear();
- }
-
- public String getNameInNamespace() throws NamingException
- {
- return null;
- }
- }
}
Modified: projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/test/SmokeTestCase.java
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/test/SmokeTestCase.java 2009-09-15 15:47:11 UTC (rev 93544)
+++ projects/jboss-jsr303/trunk/deployers/src/test/java/org/jboss/test/deployers/test/SmokeTestCase.java 2009-09-15 16:12:47 UTC (rev 93545)
@@ -24,9 +24,10 @@
import javax.validation.ValidatorFactory;
import junit.framework.Test;
+import org.jboss.beanvalidation.util.DefaultJndiBinder;
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.test.deployers.BootstrapDeployersTest;
-import org.jboss.test.deployers.support.MockVFJndiBinderDeployer;
+import org.jboss.test.deployers.support.MockInitialContextFactory;
/**
* Simple "smoke" tests.
@@ -52,13 +53,19 @@
{
ValidatorFactory factory = unit.getAttachment(ValidatorFactory.class);
assertNotNull(factory);
- assertSame(factory, MockVFJndiBinderDeployer.context.lookup("java:comp/env/smoke-beans.xml"));
+
+ String jndiName = DefaultJndiBinder.BV_FACTORY_JNDI_SUBCONTEXT + "/smoke-beans.xml";
+ ValidatorFactory factoryFromJNDI = (ValidatorFactory)MockInitialContextFactory.initialContext.lookup(jndiName);
+ //System.out.println("context dump=" + MockInitialContextFactory.initialContext.toString());
+ //assertNotNull(factoryFromJNDI);
+
+ //assertSame(factory, factoryFromJNDI);
}
finally
{
undeploy(unit);
- assertNull(MockVFJndiBinderDeployer.context.lookup("java:comp/env/smoke-beans.xml"));
+// assertNull(MockVFJndiBinderDeployer.context.lookup("java:comp/env/smoke-beans.xml"));
}
}
}
Modified: projects/jboss-jsr303/trunk/deployers/src/test/resources/org/jboss/test/deployers/test/SmokeTestCase.xml
===================================================================
--- projects/jboss-jsr303/trunk/deployers/src/test/resources/org/jboss/test/deployers/test/SmokeTestCase.xml 2009-09-15 15:47:11 UTC (rev 93544)
+++ projects/jboss-jsr303/trunk/deployers/src/test/resources/org/jboss/test/deployers/test/SmokeTestCase.xml 2009-09-15 16:12:47 UTC (rev 93545)
@@ -11,8 +11,8 @@
<!-- Mock all DU filter -->
<bean name="AllDUFilter" class="org.jboss.test.deployers.support.AllDUFilter" />
- <!-- Default JNDI name creator -->
- <bean name="DefaultJndiNameCreator" class="org.jboss.beanvalidation.util.DefaultJndiNameCreator" />
+ <!-- Default JNDI Binder -->
+ <bean name="DefaultJndiBinder" class="org.jboss.beanvalidation.util.DefaultJndiBinder" />
<!-- ValidatorFactory creator -->
<bean name="VFCreator" class="org.jboss.beanvalidation.deployers.ValidatorFactoryDeployer">
@@ -23,10 +23,6 @@
</bean>
<!-- ValidatorFactory jndi binder -->
- <bean name="VFJndiBinder" class="org.jboss.test.deployers.support.MockVFJndiBinderDeployer">
- <constructor>
- <parameter><inject bean="DefaultJndiNameCreator" /></parameter>
- </constructor>
- </bean>
+ <bean name="VFJndiBinder" class="org.jboss.test.deployers.support.MockVFJndiBinderDeployer"/>
</deployment>
More information about the jboss-cvs-commits
mailing list