[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