[jboss-cvs] JBossAS SVN: r101109 - in projects/kernel/trunk/kernel/src: test/java/org/jboss/test/kernel/dependency/test and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Feb 18 06:22:27 EST 2010
Author: kabir.khan at jboss.com
Date: 2010-02-18 06:22:27 -0500 (Thu, 18 Feb 2010)
New Revision: 101109
Added:
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/UninstallNoOptionalContextDependencyTestCase.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/support/LoggerDecorator.java
Modified:
projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
Log:
[JBKERNEL-100] Check for null values in ungetValue()
Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java 2010-02-18 06:28:44 UTC (rev 101108)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java 2010-02-18 11:22:27 UTC (rev 101109)
@@ -319,10 +319,13 @@
ControllerState state = dependentState;
if (state == null)
state = ControllerState.INSTALLED;
- ControllerContext lookup = getControllerContext(getUnderlyingValue(), state);
- if (lookup != null)
+ if (getUnderlyingValue() != null)
{
- return ungetTarget(context, lookup);
+ ControllerContext lookup = getControllerContext(getUnderlyingValue(), state);
+ if (lookup != null)
+ {
+ return ungetTarget(context, lookup);
+ }
}
}
Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java 2010-02-18 06:28:44 UTC (rev 101108)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java 2010-02-18 11:22:27 UTC (rev 101109)
@@ -272,11 +272,14 @@
{
if (getUnderlyingValue() == null)
{
- ControllerContext lookup = item.getControllerContext(context.getController());
- if (lookup != null)
+ if (context != null && item != null)
{
- ungetTarget(context, lookup);
- return null;
+ ControllerContext lookup = item.getControllerContext(context.getController());
+ if (lookup != null)
+ {
+ ungetTarget(context, lookup);
+ return null;
+ }
}
}
return super.ungetValue(info, cl);
Added: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/UninstallNoOptionalContextDependencyTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/UninstallNoOptionalContextDependencyTestCase.java (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/UninstallNoOptionalContextDependencyTestCase.java 2010-02-18 11:22:27 UTC (rev 101109)
@@ -0,0 +1,148 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.kernel.dependency.test;
+
+import java.lang.reflect.Field;
+import java.util.Map;
+
+import junit.framework.Test;
+
+import org.jboss.beans.metadata.api.model.InjectOption;
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.plugins.action.ControllerContextAction;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.plugins.dependency.ConfigureAction;
+import org.jboss.kernel.plugins.dependency.KernelControllerContextAction;
+import org.jboss.kernel.plugins.dependency.KernelControllerContextActions;
+import org.jboss.logging.Logger;
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.test.kernel.dependency.support.SimpleBeanImpl;
+import org.jboss.test.kernel.dependency.support.SimpleBeanWithDependency;
+import org.jboss.test.kernel.dependency.support.SimpleBeanWithDependencyImpl;
+import org.jboss.test.kernel.deployment.support.LoggerDecorator;
+
+/**
+ * Constructor Dependency Test Case.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 64400 $
+ */
+public class UninstallNoOptionalContextDependencyTestCase extends OldAbstractKernelDependencyTest
+{
+ public static Test suite()
+ {
+ return suite(UninstallNoOptionalContextDependencyTestCase.class);
+ }
+
+ public UninstallNoOptionalContextDependencyTestCase(String name) throws Throwable
+ {
+ super(name);
+ }
+
+ public UninstallNoOptionalContextDependencyTestCase(String name, boolean xmltest) throws Throwable
+ {
+ super(name, xmltest);
+ }
+
+ public void testUninstallOptionalInjectionNotPresent() throws Throwable
+ {
+ //Get hold of the ConfigureAction instance - UGLY but needed so we can replace its logger :-)
+ KernelControllerContextActions actions = KernelControllerContextActions.getInstance();
+ Field field = getField(actions.getClass().getSuperclass(), "actions");
+ Map<ControllerState, ControllerContextAction> actionsMap = (Map<ControllerState, ControllerContextAction>)field.get(actions);
+ ConfigureAction action = (ConfigureAction)actionsMap.get(ControllerState.CONFIGURED);
+ Class<?> clazz = action.getClass();
+ while (clazz != null && clazz != KernelControllerContextAction.class)
+ clazz = clazz.getSuperclass();
+ assertNotNull(clazz);
+ field = getField(clazz, "log");
+
+ Logger old = (Logger) field.get(action);
+ LoggerDecorator newLogger = new LoggerDecorator(old);
+ try
+ {
+ field.set(action, newLogger);
+ uninstallOptionalInjectionNotPresent();
+ ControllerContext context1 = assertInstall(0, "Name1");
+
+ SimpleBeanWithDependency bean1 = (SimpleBeanWithDependency) context1.getTarget();
+ assertNotNull(bean1);
+ assertNull(bean1.getSimpleBean());
+
+ uninstall("Name1");
+
+ assertFalse(newLogger.isWarnErrorCalled());
+ }
+ finally
+ {
+ field.set(action, old);
+ }
+ }
+
+ public void uninstallOptionalInjectionNotPresent() throws Throwable
+ {
+ BeanMetaDataBuilder builder1 = BeanMetaDataBuilder.createBuilder("Name1", SimpleBeanWithDependencyImpl.class.getName());
+ AbstractInjectionValueMetaData injection = new AbstractInjectionValueMetaData();
+ injection.setInjectionOption(InjectOption.OPTIONAL);
+ builder1.addPropertyMetaData("simpleBean", injection);
+
+ BeanMetaDataBuilder builder2 = BeanMetaDataBuilder.createBuilder("Name2", SimpleBeanImpl.class.getName());
+
+ setBeanMetaDatas(new BeanMetaData[] {builder1.getBeanMetaData(), builder2.getBeanMetaData()});
+ }
+
+ public static Field getField(Class<?> clazz, String name)
+ {
+ Field field = null;
+
+ while (field == null && clazz != null)
+ {
+ try
+ {
+ field = clazz.getDeclaredField(name);
+ field.setAccessible(true);
+ break;
+ }
+ catch (Exception e)
+ {
+ }
+ clazz = clazz.getSuperclass();
+ }
+
+ if (field == null)
+ throw new IllegalStateException("No field called '" + name + "' in " + clazz.getName());
+ return field;
+ }
+
+ /**
+ * Don't use security for this test
+ */
+ public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
+ {
+ AbstractTestDelegate delegate = new AbstractTestDelegate(clazz);
+ return delegate;
+ }
+
+}
\ No newline at end of file
Added: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/support/LoggerDecorator.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/support/LoggerDecorator.java (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/support/LoggerDecorator.java 2010-02-18 11:22:27 UTC (rev 101109)
@@ -0,0 +1,451 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, 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.kernel.deployment.support;
+
+import java.lang.reflect.Field;
+
+import org.jboss.logging.Logger;
+import org.jboss.logging.LoggerPlugin;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class LoggerDecorator extends Logger
+{
+ private static final long serialVersionUID = 1L;
+
+ Logger delegate;
+ boolean warnErrorCalled;
+
+
+ public LoggerDecorator(Logger delegate)
+ {
+ // FIXME LoggerDecorator constructor
+ super(delegate.getName());
+ this.delegate = delegate;
+ }
+
+ public boolean isWarnErrorCalled()
+ {
+ return warnErrorCalled;
+ }
+
+ /**
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#debug(java.lang.Object, java.lang.Throwable)
+ */
+ public void debug(Object message, Throwable t)
+ {
+ delegate.debug(message, t);
+ }
+
+ /**
+ * @param message
+ * @see org.jboss.logging.Logger#debug(java.lang.Object)
+ */
+ public void debug(Object message)
+ {
+ delegate.debug(message);
+ }
+
+ /**
+ * @param loggerFqcn
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#debug(java.lang.String, java.lang.Object, java.lang.Throwable)
+ */
+ public void debug(String loggerFqcn, Object message, Throwable t)
+ {
+ delegate.debug(loggerFqcn, message, t);
+ }
+
+ /**
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#debugf(java.lang.String, java.lang.Object[])
+ */
+ public void debugf(String format, Object... params)
+ {
+ delegate.debugf(format, params);
+ }
+
+ /**
+ * @param t
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#debugf(java.lang.Throwable, java.lang.String, java.lang.Object[])
+ */
+ public void debugf(Throwable t, String format, Object... params)
+ {
+ delegate.debugf(t, format, params);
+ }
+
+ /**
+ * @param obj
+ * @return
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals(Object obj)
+ {
+ return delegate.equals(obj);
+ }
+
+ /**
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#error(java.lang.Object, java.lang.Throwable)
+ */
+ public void error(Object message, Throwable t)
+ {
+ delegate.error(message, t);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param message
+ * @see org.jboss.logging.Logger#error(java.lang.Object)
+ */
+ public void error(Object message)
+ {
+ delegate.error(message);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param loggerFqcn
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#error(java.lang.String, java.lang.Object, java.lang.Throwable)
+ */
+ public void error(String loggerFqcn, Object message, Throwable t)
+ {
+ delegate.error(loggerFqcn, message, t);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#errorf(java.lang.String, java.lang.Object[])
+ */
+ public void errorf(String format, Object... params)
+ {
+ delegate.errorf(format, params);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param t
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#errorf(java.lang.Throwable, java.lang.String, java.lang.Object[])
+ */
+ public void errorf(Throwable t, String format, Object... params)
+ {
+ delegate.errorf(t, format, params);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#fatal(java.lang.Object, java.lang.Throwable)
+ */
+ public void fatal(Object message, Throwable t)
+ {
+ delegate.fatal(message, t);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param message
+ * @see org.jboss.logging.Logger#fatal(java.lang.Object)
+ */
+ public void fatal(Object message)
+ {
+ delegate.fatal(message);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param loggerFqcn
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#fatal(java.lang.String, java.lang.Object, java.lang.Throwable)
+ */
+ public void fatal(String loggerFqcn, Object message, Throwable t)
+ {
+ delegate.fatal(loggerFqcn, message, t);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#fatalf(java.lang.String, java.lang.Object[])
+ */
+ public void fatalf(String format, Object... params)
+ {
+ delegate.fatalf(format, params);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param t
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#fatalf(java.lang.Throwable, java.lang.String, java.lang.Object[])
+ */
+ public void fatalf(Throwable t, String format, Object... params)
+ {
+ delegate.fatalf(t, format, params);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @return
+ * @see org.jboss.logging.Logger#getLoggerPlugin()
+ */
+ public LoggerPlugin getLoggerPlugin()
+ {
+ return delegate.getLoggerPlugin();
+ }
+
+ /**
+ * @return
+ * @see org.jboss.logging.Logger#getName()
+ */
+ public String getName()
+ {
+ return delegate.getName();
+ }
+
+ /**
+ * @return
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode()
+ {
+ return delegate.hashCode();
+ }
+
+ /**
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#info(java.lang.Object, java.lang.Throwable)
+ */
+ public void info(Object message, Throwable t)
+ {
+ delegate.info(message, t);
+ }
+
+ /**
+ * @param message
+ * @see org.jboss.logging.Logger#info(java.lang.Object)
+ */
+ public void info(Object message)
+ {
+ delegate.info(message);
+ }
+
+ /**
+ * @param loggerFqcn
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#info(java.lang.String, java.lang.Object, java.lang.Throwable)
+ */
+ public void info(String loggerFqcn, Object message, Throwable t)
+ {
+ delegate.info(loggerFqcn, message, t);
+ }
+
+ /**
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#infof(java.lang.String, java.lang.Object[])
+ */
+ public void infof(String format, Object... params)
+ {
+ delegate.infof(format, params);
+ }
+
+ /**
+ * @param t
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#infof(java.lang.Throwable, java.lang.String, java.lang.Object[])
+ */
+ public void infof(Throwable t, String format, Object... params)
+ {
+ delegate.infof(t, format, params);
+ }
+
+ /**
+ * @return
+ * @deprecated
+ * @see org.jboss.logging.Logger#isDebugEnabled()
+ */
+ public boolean isDebugEnabled()
+ {
+ return delegate.isDebugEnabled();
+ }
+
+ /**
+ * @return
+ * @deprecated
+ * @see org.jboss.logging.Logger#isInfoEnabled()
+ */
+ public boolean isInfoEnabled()
+ {
+ return delegate.isInfoEnabled();
+ }
+
+ /**
+ * @return
+ * @see org.jboss.logging.Logger#isTraceEnabled()
+ */
+ public boolean isTraceEnabled()
+ {
+ return delegate.isTraceEnabled();
+ }
+
+ /**
+ * @return
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return delegate.toString();
+ }
+
+ /**
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#trace(java.lang.Object, java.lang.Throwable)
+ */
+ public void trace(Object message, Throwable t)
+ {
+ delegate.trace(message, t);
+ }
+
+ /**
+ * @param message
+ * @see org.jboss.logging.Logger#trace(java.lang.Object)
+ */
+ public void trace(Object message)
+ {
+ delegate.trace(message);
+ }
+
+ /**
+ * @param loggerFqcn
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#trace(java.lang.String, java.lang.Object, java.lang.Throwable)
+ */
+ public void trace(String loggerFqcn, Object message, Throwable t)
+ {
+ delegate.trace(loggerFqcn, message, t);
+ }
+
+ /**
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#tracef(java.lang.String, java.lang.Object[])
+ */
+ public void tracef(String format, Object... params)
+ {
+ delegate.tracef(format, params);
+ }
+
+ /**
+ * @param t
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#tracef(java.lang.Throwable, java.lang.String, java.lang.Object[])
+ */
+ public void tracef(Throwable t, String format, Object... params)
+ {
+ delegate.tracef(t, format, params);
+ }
+
+ /**
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#warn(java.lang.Object, java.lang.Throwable)
+ */
+ public void warn(Object message, Throwable t)
+ {
+ delegate.warn(message, t);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param message
+ * @see org.jboss.logging.Logger#warn(java.lang.Object)
+ */
+ public void warn(Object message)
+ {
+ delegate.warn(message);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param loggerFqcn
+ * @param message
+ * @param t
+ * @see org.jboss.logging.Logger#warn(java.lang.String, java.lang.Object, java.lang.Throwable)
+ */
+ public void warn(String loggerFqcn, Object message, Throwable t)
+ {
+ delegate.warn(loggerFqcn, message, t);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#warnf(java.lang.String, java.lang.Object[])
+ */
+ public void warnf(String format, Object... params)
+ {
+ delegate.warnf(format, params);
+ warnErrorCalled = true;
+ }
+
+ /**
+ * @param t
+ * @param format
+ * @param params
+ * @see org.jboss.logging.Logger#warnf(java.lang.Throwable, java.lang.String, java.lang.Object[])
+ */
+ public void warnf(Throwable t, String format, Object... params)
+ {
+ delegate.warnf(t, format, params);
+ warnErrorCalled = true;
+ }
+
+
+}
More information about the jboss-cvs-commits
mailing list