[jboss-cvs] JBossAS SVN: r64422 - in projects/microcontainer/trunk: dependency/src/main/org/jboss/dependency/spi/helpers and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Aug 2 07:20:54 EDT 2007
Author: alesj
Date: 2007-08-02 07:20:54 -0400 (Thu, 02 Aug 2007)
New Revision: 64422
Added:
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableControllerContext.java
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableDependencyInfo.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/helpers/
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java
Modified:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java
projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/FromContextUnsupportedTestCase.xml
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/FromContextUnsupportedTestCase.java
Log:
ControllerContext unmodifiable wrapper.
Added: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableControllerContext.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableControllerContext.java (rev 0)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableControllerContext.java 2007-08-02 11:20:54 UTC (rev 64422)
@@ -0,0 +1,131 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.dependency.spi.helpers;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.DependencyInfo;
+import org.jboss.util.JBossObject;
+
+/**
+ * Unmodifiable delegate instance.
+ *
+ * @param <T> exact context type
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class UnmodifiableControllerContext<T extends ControllerContext> extends JBossObject implements ControllerContext
+{
+ protected T delegate;
+
+ public UnmodifiableControllerContext(T delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ public Object getName()
+ {
+ return delegate.getName();
+ }
+
+ public Set<Object> getAliases()
+ {
+ Set<Object> aliases = delegate.getAliases();
+ return aliases != null ? Collections.unmodifiableSet(aliases) : null;
+ }
+
+ public DependencyInfo getDependencyInfo()
+ {
+ DependencyInfo dependencyInfo = delegate.getDependencyInfo();
+ return dependencyInfo != null ? new UnmodifiableDependencyInfo(dependencyInfo) : null;
+ }
+
+ public Object getTarget()
+ {
+ return delegate.getTarget();
+ }
+
+ public Controller getController()
+ {
+ return delegate.getController();
+ }
+
+ public void setController(Controller controller)
+ {
+ throw new UnsupportedOperationException("Cannot invoke set on unmodifiable wrapper.");
+ }
+
+ public void install(ControllerState fromState, ControllerState toState) throws Throwable
+ {
+ delegate.install(fromState, toState);
+ }
+
+ public void uninstall(ControllerState fromState, ControllerState toState)
+ {
+ delegate.uninstall(fromState, toState);
+ }
+
+ public ControllerState getState()
+ {
+ return delegate.getState();
+ }
+
+ public void setState(ControllerState state)
+ {
+ throw new UnsupportedOperationException("Cannot invoke set on unmodifiable wrapper.");
+ }
+
+ public ControllerState getRequiredState()
+ {
+ return delegate.getRequiredState();
+ }
+
+ public void setRequiredState(ControllerState state)
+ {
+ throw new UnsupportedOperationException("Cannot invoke set on unmodifiable wrapper.");
+ }
+
+ public ControllerMode getMode()
+ {
+ return delegate.getMode();
+ }
+
+ public void setMode(ControllerMode mode)
+ {
+ throw new UnsupportedOperationException("Cannot invoke set on unmodifiable wrapper.");
+ }
+
+ public Throwable getError()
+ {
+ return delegate.getError();
+ }
+
+ public void setError(Throwable error)
+ {
+ throw new UnsupportedOperationException("Cannot invoke set on unmodifiable wrapper.");
+ }
+
+}
Added: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableDependencyInfo.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableDependencyInfo.java (rev 0)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableDependencyInfo.java 2007-08-02 11:20:54 UTC (rev 64422)
@@ -0,0 +1,130 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.dependency.spi.helpers;
+
+import java.util.Set;
+import java.util.List;
+
+import org.jboss.dependency.spi.DependencyInfo;
+import org.jboss.dependency.spi.DependencyItem;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.CallbackItem;
+import org.jboss.dependency.spi.LifecycleCallbackItem;
+import org.jboss.util.JBossObject;
+
+/**
+ * Unmodifiable instance.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class UnmodifiableDependencyInfo extends JBossObject implements DependencyInfo
+{
+ private DependencyInfo delegate;
+
+ public UnmodifiableDependencyInfo(DependencyInfo delegate)
+ {
+ if (delegate == null)
+ throw new IllegalArgumentException("Null dependency info!");
+ this.delegate = delegate;
+ }
+
+ public Set<DependencyItem> getIDependOn(Class type)
+ {
+ return delegate.getIDependOn(type);
+ }
+
+ public Set<DependencyItem> getDependsOnMe(Class type)
+ {
+ return delegate.getDependsOnMe(type);
+ }
+
+ public void addIDependOn(DependencyItem dependency)
+ {
+ throw new UnsupportedOperationException("Cannot execute add on unmodifiable wrapper.");
+ }
+
+ public void removeIDependOn(DependencyItem dependency)
+ {
+ throw new UnsupportedOperationException("Cannot execute remove on unmodifiable wrapper.");
+ }
+
+ public void addDependsOnMe(DependencyItem dependency)
+ {
+ throw new UnsupportedOperationException("Cannot execute add on unmodifiable wrapper.");
+ }
+
+ public void removeDependsOnMe(DependencyItem dependency)
+ {
+ throw new UnsupportedOperationException("Cannot execute remove on unmodifiable wrapper.");
+ }
+
+ public boolean resolveDependencies(Controller controller, ControllerState state)
+ {
+ return delegate.resolveDependencies(controller, state);
+ }
+
+ public Set<DependencyItem> getUnresolvedDependencies()
+ {
+ return delegate.getUnresolvedDependencies();
+ }
+
+ public void addInstallItem(CallbackItem callbackItem)
+ {
+ throw new UnsupportedOperationException("Cannot execute add on unmodifiable wrapper.");
+ }
+
+ public void removeInstallItem(CallbackItem callbackItem)
+ {
+ throw new UnsupportedOperationException("Cannot execute remove on unmodifiable wrapper.");
+ }
+
+ public Set<CallbackItem> getInstallItems()
+ {
+ return delegate.getInstallItems();
+ }
+
+ public void addUninstallItem(CallbackItem callbackItem)
+ {
+ throw new UnsupportedOperationException("Cannot execute add on unmodifiable wrapper.");
+ }
+
+ public void removeUninstallItem(CallbackItem callbackItem)
+ {
+ throw new UnsupportedOperationException("Cannot execute remove on unmodifiable wrapper.");
+ }
+
+ public Set<CallbackItem> getUninstallItems()
+ {
+ return delegate.getUninstallItems();
+ }
+
+ public void addLifecycleCallback(LifecycleCallbackItem lifecycleCallbackItem)
+ {
+ throw new UnsupportedOperationException("Cannot execute add on unmodifiable wrapper.");
+ }
+
+ public List<LifecycleCallbackItem> getLifecycleCallbacks()
+ {
+ return delegate.getLifecycleCallbacks();
+ }
+}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java 2007-08-02 10:55:39 UTC (rev 64421)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java 2007-08-02 11:20:54 UTC (rev 64422)
@@ -30,6 +30,7 @@
import java.util.HashSet;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.dependency.helpers.UnmodifiableKernelControllerContext;
import org.jboss.metadata.spi.MetaData;
import org.jboss.metadata.spi.scope.ScopeKey;
import org.jboss.metadata.spi.helpers.UnmodifiableMetaData;
@@ -37,6 +38,7 @@
import org.jboss.util.JBossStringBuilder;
import org.jboss.reflect.plugins.introspection.ReflectionUtils;
import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.helpers.UnmodifiableControllerContext;
import org.jboss.beans.info.spi.BeanInfo;
import org.jboss.beans.info.spi.helpers.UnmodifiableBeanInfo;
@@ -304,8 +306,9 @@
public ControllerContext internalExecute(ControllerContext context)
{
- // todo - wrapper
- return context;
+ if (context instanceof KernelControllerContext)
+ return new UnmodifiableKernelControllerContext((KernelControllerContext)context);
+ return new UnmodifiableControllerContext<ControllerContext>(context);
}
}
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java 2007-08-02 11:20:54 UTC (rev 64422)
@@ -0,0 +1,129 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.kernel.spi.dependency.helpers;
+
+import org.jboss.dependency.spi.helpers.UnmodifiableControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.Kernel;
+import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.info.spi.helpers.UnmodifiableBeanInfo;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.metadata.spi.MetaData;
+import org.jboss.metadata.spi.helpers.UnmodifiableMetaData;
+import org.jboss.metadata.spi.scope.ScopeKey;
+
+/**
+ * Unmodifiable instance.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class UnmodifiableKernelControllerContext extends UnmodifiableControllerContext<KernelControllerContext> implements KernelControllerContext
+{
+ public UnmodifiableKernelControllerContext(KernelControllerContext delegate)
+ {
+ super(delegate);
+ }
+
+ public Kernel getKernel()
+ {
+ return delegate.getKernel();
+ }
+
+ public BeanInfo getBeanInfo()
+ {
+ BeanInfo beanInfo = delegate.getBeanInfo();
+ return beanInfo != null ? new UnmodifiableBeanInfo(beanInfo) : null;
+ }
+
+ public void setBeanInfo(BeanInfo info)
+ {
+ throw new UnsupportedOperationException("Cannot execute set on unmodifiable wrapper.");
+ }
+
+ public BeanMetaData getBeanMetaData()
+ {
+ return delegate.getBeanMetaData();
+ }
+
+ public void setTarget(Object target)
+ {
+ throw new UnsupportedOperationException("Cannot execute set on unmodifiable wrapper.");
+ }
+
+ public MetaData getMetaData()
+ {
+ MetaData metaData = delegate.getMetaData();
+ return metaData != null ? new UnmodifiableMetaData(metaData) : null;
+ }
+
+ public ScopeKey getScope()
+ {
+ ScopeKey key = delegate.getScope();
+ return key != null ? key.clone() :null;
+ }
+
+ public void setScope(ScopeKey key)
+ {
+ throw new UnsupportedOperationException("Cannot execute set on unmodifiable wrapper.");
+ }
+
+ public ScopeKey getInstallScope()
+ {
+ ScopeKey key = delegate.getInstallScope();
+ return key != null ? key.clone() : null;
+ }
+
+ public void setInstallScope(ScopeKey key)
+ {
+ throw new UnsupportedOperationException("Cannot execute set on unmodifiable wrapper.");
+ }
+
+ public boolean isAutowireCandidate()
+ {
+ return delegate.isAutowireCandidate();
+ }
+
+ public void setName(Object name)
+ {
+ throw new UnsupportedOperationException("Cannot execute set on unmodifiable wrapper.");
+ }
+
+ public Object invoke(String name, Object parameters[], String[] signature) throws Throwable
+ {
+ return delegate.invoke(name, parameters, signature);
+ }
+
+ public ClassLoader getClassLoader() throws Throwable
+ {
+ return delegate.getClassLoader();
+ }
+
+ public Object get(String name) throws Throwable
+ {
+ return delegate.get(name);
+ }
+
+ public void set(String name, Object value) throws Throwable
+ {
+ delegate.set(name, value);
+ }
+}
Modified: projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/FromContextUnsupportedTestCase.xml
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/FromContextUnsupportedTestCase.xml 2007-08-02 10:55:39 UTC (rev 64421)
+++ projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/FromContextUnsupportedTestCase.xml 2007-08-02 11:20:54 UTC (rev 64422)
@@ -25,4 +25,8 @@
<property name="dynamic"><inject fromContext="getBeanMetaData"/></property>
</bean>
+ <bean name="context" class="org.jboss.test.kernel.deployment.support.NameAwareBean">
+ <property name="context"><inject fromContext="context"/></property>
+ </bean>
+
</deployment>
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/FromContextUnsupportedTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/FromContextUnsupportedTestCase.java 2007-08-02 10:55:39 UTC (rev 64421)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/FromContextUnsupportedTestCase.java 2007-08-02 11:20:54 UTC (rev 64422)
@@ -33,6 +33,10 @@
import org.jboss.test.kernel.deployment.support.NameAwareBean;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.reflect.spi.MethodInfo;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.dependency.spi.DependencyInfo;
+import org.jboss.dependency.plugins.AbstractDependencyItem;
/**
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
@@ -110,6 +114,29 @@
{
assertUnsupported(t);
}
+
+ NameAwareBean ctx = (NameAwareBean)getBean("context");
+ assertNotNull(ctx);
+ ControllerContext realCtx = ctx.getContext();
+ assertNotNull(realCtx);
+ try
+ {
+ realCtx.setMode(ControllerMode.DISABLED);
+ }
+ catch(Throwable t)
+ {
+ assertUnsupported(t);
+ }
+ DependencyInfo dependencyInfo = realCtx.getDependencyInfo();
+ assertNotNull(dependencyInfo);
+ try
+ {
+ dependencyInfo.addIDependOn(new AbstractDependencyItem());
+ }
+ catch(Throwable t)
+ {
+ assertUnsupported(t);
+ }
}
protected void assertUnsupported(Throwable t)
More information about the jboss-cvs-commits
mailing list