[jboss-cvs] JBossAS SVN: r99085 - in projects/jboss-jca/trunk: fungal/src/main/java/org/jboss/jca/fungal/deployment and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jan 6 20:39:33 EST 2010


Author: jesper.pedersen
Date: 2010-01-06 20:39:33 -0500 (Wed, 06 Jan 2010)
New Revision: 99085

Added:
   projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/IncallbackType.java
   projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/UncallbackType.java
   projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/Callback.java
Modified:
   projects/jboss-jca/trunk/doc/developerguide/en/modules/fungal.xml
   projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/BeanType.java
   projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/Unmarshaller.java
   projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/DeploymentDeployer.java
   projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/KernelImpl.java
   projects/jboss-jca/trunk/fungal/src/main/resources/deployment.xsd
Log:
[JBJCA-253] Support <incallback>/<uncallback> in deployment

Modified: projects/jboss-jca/trunk/doc/developerguide/en/modules/fungal.xml
===================================================================
--- projects/jboss-jca/trunk/doc/developerguide/en/modules/fungal.xml	2010-01-07 00:39:35 UTC (rev 99084)
+++ projects/jboss-jca/trunk/doc/developerguide/en/modules/fungal.xml	2010-01-07 01:39:33 UTC (rev 99085)
@@ -104,6 +104,16 @@
           <para>defines an uninstall method.</para>
         </listitem>
         <listitem>
+          <code>&lt;incallback&gt;</code>
+          <para>defines a method which is invoked with all beans that has the type of the first parameter
+            when the installed.</para>
+        </listitem>
+        <listitem>
+          <code>&lt;uncallback&gt;</code>
+          <para>defines a method which is invoked with all beans that has the type of the first parameter
+            when the uninstalled.</para>
+        </listitem>
+        <listitem>
           <code>&lt;map&gt;</code>
           <para>defines a map data structure.</para>
         </listitem>

Modified: projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/BeanType.java
===================================================================
--- projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/BeanType.java	2010-01-07 00:39:35 UTC (rev 99084)
+++ projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/BeanType.java	2010-01-07 01:39:33 UTC (rev 99085)
@@ -35,6 +35,8 @@
    private List<DependsType> depends;
    private List<InstallType> install;
    private List<UninstallType> uninstall;
+   private List<IncallbackType> incallback;
+   private List<UncallbackType> uncallback;
    private String name;
    private String interfaze;
    private String clazz;
@@ -47,6 +49,10 @@
       constructor = null;
       property = null;
       depends = null;
+      install = null;
+      uninstall = null;
+      incallback = null;
+      uncallback = null;
       name = null;
       interfaze = null;
       clazz = null;
@@ -119,6 +125,30 @@
    }
 
    /**
+    * Get the incallback values
+    * @return The value
+    */
+   public List<IncallbackType> getIncallback()
+   {
+      if (incallback == null)
+         incallback = new ArrayList<IncallbackType>(1);
+
+      return incallback;
+   }
+
+   /**
+    * Get the uncallback values
+    * @return The value
+    */
+   public List<UncallbackType> getUncallback()
+   {
+      if (uncallback == null)
+         uncallback = new ArrayList<UncallbackType>(1);
+
+      return uncallback;
+   }
+
+   /**
     * Get the name
     * @return The value
     */

Added: projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/IncallbackType.java
===================================================================
--- projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/IncallbackType.java	                        (rev 0)
+++ projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/IncallbackType.java	2010-01-07 01:39:33 UTC (rev 99085)
@@ -0,0 +1,57 @@
+/*
+ * 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.jca.fungal.deployment;
+
+/**
+ * Represents an incallback element
+ */
+public class IncallbackType
+{
+   private String method;
+
+   /**
+    * Constructor
+    */
+   public IncallbackType()
+   {
+      method = null;
+   }
+
+   /**
+    * Get the method
+    * @return The value
+    */
+   public String getMethod()
+   {
+      return method;
+   }
+
+   /**
+    * Set the method
+    * @param value The value
+    */
+   public void setMethod(String value)
+   {
+      method = value;
+   }
+}

Added: projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/UncallbackType.java
===================================================================
--- projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/UncallbackType.java	                        (rev 0)
+++ projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/UncallbackType.java	2010-01-07 01:39:33 UTC (rev 99085)
@@ -0,0 +1,57 @@
+/*
+ * 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.jca.fungal.deployment;
+
+/**
+ * Represents an uncallback element
+ */
+public class UncallbackType
+{
+   private String method;
+
+   /**
+    * Constructor
+    */
+   public UncallbackType()
+   {
+      method = null;
+   }
+
+   /**
+    * Get the method
+    * @return The value
+    */
+   public String getMethod()
+   {
+      return method;
+   }
+
+   /**
+    * Set the method
+    * @param value The value
+    */
+   public void setMethod(String value)
+   {
+      method = value;
+   }
+}

Modified: projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/Unmarshaller.java
===================================================================
--- projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/Unmarshaller.java	2010-01-07 00:39:35 UTC (rev 99084)
+++ projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/deployment/Unmarshaller.java	2010-01-07 01:39:33 UTC (rev 99085)
@@ -185,6 +185,14 @@
                {
                   result.getUninstall().add(readUninstall(xmlStreamReader));
                }
+               else if ("incallback".equals(name))
+               {
+                  result.getIncallback().add(readIncallback(xmlStreamReader));
+               }
+               else if ("uncallback".equals(name))
+               {
+                  result.getUncallback().add(readUncallback(xmlStreamReader));
+               }
 
                break;
             default :
@@ -499,6 +507,70 @@
    }
 
    /**
+    * Read: <incallback>
+    * @param xmlStreamReader The XML stream
+    * @return The incallback
+    * @exception XMLStreamException Thrown if an exception occurs
+    */
+   private IncallbackType readIncallback(XMLStreamReader xmlStreamReader) throws XMLStreamException
+   {
+      IncallbackType result = new IncallbackType();
+
+      for (int i = 0; i < xmlStreamReader.getAttributeCount(); i++)
+      {
+         String name = xmlStreamReader.getAttributeLocalName(i);
+         if ("method".equals(name))
+         {
+            result.setMethod(xmlStreamReader.getAttributeValue(i));
+         }
+      }
+
+      int eventCode = xmlStreamReader.next();
+
+      while (eventCode != XMLStreamReader.END_ELEMENT)
+      {
+         eventCode = xmlStreamReader.next();
+      }
+
+      if (!"incallback".equals(xmlStreamReader.getLocalName()))
+         throw new XMLStreamException("incallback tag not completed");
+
+      return result;
+   }
+
+   /**
+    * Read: <uncallback>
+    * @param xmlStreamReader The XML stream
+    * @return The uncallback
+    * @exception XMLStreamException Thrown if an exception occurs
+    */
+   private UncallbackType readUncallback(XMLStreamReader xmlStreamReader) throws XMLStreamException
+   {
+      UncallbackType result = new UncallbackType();
+
+      for (int i = 0; i < xmlStreamReader.getAttributeCount(); i++)
+      {
+         String name = xmlStreamReader.getAttributeLocalName(i);
+         if ("method".equals(name))
+         {
+            result.setMethod(xmlStreamReader.getAttributeValue(i));
+         }
+      }
+
+      int eventCode = xmlStreamReader.next();
+
+      while (eventCode != XMLStreamReader.END_ELEMENT)
+      {
+         eventCode = xmlStreamReader.next();
+      }
+
+      if (!"uncallback".equals(xmlStreamReader.getLocalName()))
+         throw new XMLStreamException("uncallback tag not completed");
+
+      return result;
+   }
+
+   /**
     * Read: <map>
     * @param xmlStreamReader The XML stream
     * @return The map

Added: projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/Callback.java
===================================================================
--- projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/Callback.java	                        (rev 0)
+++ projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/Callback.java	2010-01-07 01:39:33 UTC (rev 99085)
@@ -0,0 +1,160 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2010, 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.jca.fungal.impl;
+
+import java.lang.reflect.Method;
+
+/**
+ * The data structure for callbacks
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public class Callback
+{
+   /** The type */
+   private Class<?> type;
+
+   /** The method */
+   private Method method;
+
+   /** The object instance */
+   private Object instance;
+
+   /** Hash code */
+   private transient Integer hashCode;
+
+   /**
+    * Constructor
+    * @param type The registration type
+    * @param method The method that should be invoked
+    * @param instance The object instance where the method is located
+    */
+   public Callback(Class<?> type,
+                   Method method, 
+                   Object instance)
+   {
+      if (type == null)
+         throw new IllegalArgumentException("Type is null");
+
+      if (method == null)
+         throw new IllegalArgumentException("Method is null");
+
+      if (instance == null)
+         throw new IllegalArgumentException("Instance is null");
+
+      this.type = type;
+      this.method = method;
+      this.instance = instance;
+      this.hashCode = null;
+   }
+
+   /**
+    * Get the type
+    * @return The value
+    */
+   public Class<?> getType()
+   {
+      return type;
+   }
+
+   /**
+    * Get the method
+    * @return The value
+    */
+   public Method getMethod()
+   {
+      return method;
+   }
+
+   /**
+    * Get the instance
+    * @return The value
+    */
+   public Object getInstance()
+   {
+      return instance;
+   }
+
+   /**
+    * Hash code
+    * @return The value
+    */
+   public int hashCode()
+   {
+      if (hashCode == null)
+      {
+         int result = 7;
+         
+         result += 7 * type.hashCode();
+         result += 7 * method.hashCode();
+         result += 7 * instance.hashCode();
+         
+         hashCode = Integer.valueOf(result);
+      }
+
+      return hashCode.intValue();
+   }
+
+   /**
+    * Equality
+    * @param obj The other object
+    * @return True if equal; otherwise false
+    */
+   public boolean equals(Object obj)
+   {
+      if (obj == null)
+         return false;
+
+      if (this == obj)
+         return true;
+
+      if (!(obj instanceof Callback))
+         return false;
+
+      Callback cb = (Callback)obj;
+
+      boolean result = type.equals(cb.getType());
+
+      if (result)
+         result = method.equals(cb.getMethod());
+
+      if (result)
+         result = instance.equals(cb.getInstance());
+
+      return result;
+   }
+
+   /**
+    * String representation
+    * @return The value
+    */
+   public String toString()
+   {
+      StringBuilder sb = new StringBuilder("Callback[");
+      sb = sb.append("Type=" + type + ",");
+      sb = sb.append("Method=" + method + ",");
+      sb = sb.append("Instance=" + instance);
+      sb = sb.append("]");
+
+      return sb.toString();
+   }
+}

Modified: projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/DeploymentDeployer.java
===================================================================
--- projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/DeploymentDeployer.java	2010-01-07 00:39:35 UTC (rev 99084)
+++ projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/DeploymentDeployer.java	2010-01-07 01:39:33 UTC (rev 99085)
@@ -30,6 +30,7 @@
 import org.jboss.jca.fungal.deployment.ConstructorType;
 import org.jboss.jca.fungal.deployment.DependsType;
 import org.jboss.jca.fungal.deployment.EntryType;
+import org.jboss.jca.fungal.deployment.IncallbackType;
 import org.jboss.jca.fungal.deployment.InjectType;
 import org.jboss.jca.fungal.deployment.InstallType;
 import org.jboss.jca.fungal.deployment.ListType;
@@ -38,6 +39,7 @@
 import org.jboss.jca.fungal.deployment.PropertyType;
 import org.jboss.jca.fungal.deployment.SetType;
 import org.jboss.jca.fungal.deployment.ThisType;
+import org.jboss.jca.fungal.deployment.UncallbackType;
 import org.jboss.jca.fungal.deployment.UninstallType;
 import org.jboss.jca.fungal.deployment.Unmarshaller;
 import org.jboss.jca.fungal.deployment.ValueType;
@@ -624,6 +626,58 @@
             uninstall.put(bt.getName(), methods);
          }
 
+         // Register incallback methods
+         if (bt.getIncallback() != null && bt.getIncallback().size() > 0)
+         {
+            for (IncallbackType it : bt.getIncallback())
+            {
+               List<Method> candidates = new ArrayList<Method>(1);
+               Method[] methods = clz.getMethods();
+
+               for (Method m : methods)
+               {
+                  if (m.getName().equals(it.getMethod()) && m.getParameterTypes().length == 1)
+                     candidates.add(m);
+               }
+
+               if (candidates.size() > 0)
+               {
+                  Method method = candidates.get(0);
+                  Class<?> parameter = method.getParameterTypes()[0];
+
+                  Callback cb = new Callback(parameter, method, instance);
+
+                  kernel.registerIncallback(cb);
+               }
+            }
+         }
+
+         // Register uncallback methods
+         if (bt.getUncallback() != null && bt.getUncallback().size() > 0)
+         {
+            for (UncallbackType ut : bt.getUncallback())
+            {
+               List<Method> candidates = new ArrayList<Method>(1);
+               Method[] methods = clz.getMethods();
+
+               for (Method m : methods)
+               {
+                  if (m.getName().equals(ut.getMethod()) && m.getParameterTypes().length == 1)
+                     candidates.add(m);
+               }
+
+               if (candidates.size() > 0)
+               {
+                  Method method = candidates.get(0);
+                  Class<?> parameter = method.getParameterTypes()[0];
+
+                  Callback cb = new Callback(parameter, method, instance);
+
+                  kernel.registerUncallback(cb);
+               }
+            }
+         }
+
          // Register deployer
          if (instance instanceof Deployer)
          {

Modified: projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/KernelImpl.java
===================================================================
--- projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/KernelImpl.java	2010-01-07 00:39:35 UTC (rev 99084)
+++ projects/jboss-jca/trunk/fungal/src/main/java/org/jboss/jca/fungal/impl/KernelImpl.java	2010-01-07 01:39:33 UTC (rev 99085)
@@ -1,6 +1,6 @@
 /*
  * JBoss, Home of Professional Open Source.
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * Copyright 2010, 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.
  *
@@ -39,6 +39,7 @@
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ConcurrentHashMap;
@@ -104,6 +105,15 @@
    /** Temporary environment */
    private boolean temporaryEnvironment;
 
+   /** Incallbacks */
+   private ConcurrentMap<Class<?>, List<Callback>> incallbacks = new ConcurrentHashMap<Class<?>, List<Callback>>();
+
+   /** Uncallbacks */
+   private ConcurrentMap<Class<?>, List<Callback>> uncallbacks = new ConcurrentHashMap<Class<?>, List<Callback>>();
+
+   /** Callback beans */
+   private ConcurrentMap<Object, List<Callback>> callbackBeans = new ConcurrentHashMap<Object, List<Callback>>();
+
    /** Logging */
    private Object logging;
 
@@ -249,6 +259,8 @@
 
                deployUrls(bootstrapUrls.toArray(new URL[bootstrapUrls.size()]));
             }
+
+            incallback();
          }
       }
 
@@ -272,6 +284,9 @@
             {
                deployUrls(new URL[] {f.toURI().toURL()});
             }                     
+
+            if (counter > 0)
+               incallback();
          }
       }
 
@@ -526,6 +541,43 @@
     */
    void removeBean(String name)
    {
+      if (uncallbacks.size() > 0)
+      {
+         Object bean = beans.get(name);
+
+         if (callbackBeans.containsKey(bean))
+         {
+            Iterator<Map.Entry<Class<?>, List<Callback>>> cit = uncallbacks.entrySet().iterator();
+            while (cit.hasNext())
+            {
+               Map.Entry<Class<?>, List<Callback>> entry = cit.next();
+
+               Class<?> type = entry.getKey();
+               List<Callback> callbacks = entry.getValue();
+            
+               if (type.isInstance(bean))
+               {
+                  for (Callback cb : callbacks)
+                  {
+                     try
+                     {
+                        Method m = cb.getMethod();
+                        Object instance = cb.getInstance();
+                           
+                        m.invoke(instance, new Object[] {bean});
+                     }
+                     catch (Throwable t)
+                     {
+                        debug(cb.toString());
+                     }
+                  }
+               }
+            }
+
+            callbackBeans.remove(bean);
+         }
+      }
+
       beans.remove(name);
       beanStatus.remove(name);
    }
@@ -560,7 +612,7 @@
       Set<String> dependants = beanDependants.get(from);
       if (dependants == null)
       {
-         Set<String> newDependants = new HashSet<String>();
+         Set<String> newDependants = new HashSet<String>(1);
          dependants = beanDependants.putIfAbsent(from, newDependants);
          if (dependants == null)
          {
@@ -614,6 +666,98 @@
    }
 
    /**
+    * Register an incallback method with the kernel
+    * @param cb The callback structure
+    */
+   void registerIncallback(Callback cb)
+   {
+      List<Callback> callbacks = incallbacks.get(cb.getType());
+      if (callbacks == null)
+      {
+         List<Callback> newCallbacks = new ArrayList<Callback>(1);
+         callbacks = incallbacks.putIfAbsent(cb.getType(), newCallbacks);
+         if (callbacks == null)
+         {
+            callbacks = newCallbacks;
+         }
+      }
+      
+      callbacks.add(cb);
+   }
+
+   /**
+    * Register an uncallback method with the kernel
+    * @param cb The callback structure
+    */
+   void registerUncallback(Callback cb)
+   {
+      List<Callback> callbacks = uncallbacks.get(cb.getType());
+      if (callbacks == null)
+      {
+         List<Callback> newCallbacks = new ArrayList<Callback>(1);
+         callbacks = uncallbacks.putIfAbsent(cb.getType(), newCallbacks);
+         if (callbacks == null)
+         {
+            callbacks = newCallbacks;
+         }
+      }
+      
+      callbacks.add(cb);
+   }
+
+   /**
+    * Handle incallback
+    */
+   private void incallback()
+   {
+      if (incallbacks.size() > 0)
+      {
+         Iterator<Map.Entry<Class<?>, List<Callback>>> cit = incallbacks.entrySet().iterator();
+         while (cit.hasNext())
+         {
+            Map.Entry<Class<?>, List<Callback>> entry = cit.next();
+
+            Class<?> type = entry.getKey();
+            List<Callback> callbacks = entry.getValue();
+            
+            Iterator<Object> bit = beans.values().iterator();
+            while (bit.hasNext())
+            {
+               Object bean = bit.next();
+
+               if (type.isInstance(bean))
+               {
+                  for (Callback cb : callbacks)
+                  {
+                     List<Callback> registeredCallbacks = callbackBeans.get(bean);
+                     if (registeredCallbacks == null || !registeredCallbacks.contains(bean))
+                     {
+                        if (registeredCallbacks == null)
+                           registeredCallbacks = new ArrayList<Callback>(1);
+
+                        try
+                        {
+                           Method m = cb.getMethod();
+                           Object instance = cb.getInstance();
+                           
+                           m.invoke(instance, new Object[] {bean});
+
+                           registeredCallbacks.add(cb);
+                           callbackBeans.put(bean, registeredCallbacks);
+                        }
+                        catch (Throwable t)
+                        {
+                           debug(cb.toString());
+                        }
+                     }
+                  }
+               }
+            }
+         }
+      }
+   }
+
+   /**
     * Get the URLs for the directory and all libraries located in the directory
     * @param directrory The directory
     * @return The URLs

Modified: projects/jboss-jca/trunk/fungal/src/main/resources/deployment.xsd
===================================================================
--- projects/jboss-jca/trunk/fungal/src/main/resources/deployment.xsd	2010-01-07 00:39:35 UTC (rev 99084)
+++ projects/jboss-jca/trunk/fungal/src/main/resources/deployment.xsd	2010-01-07 01:39:33 UTC (rev 99085)
@@ -125,6 +125,14 @@
      <xsd:attribute name="method" type="xsd:token"/>
    </xsd:complexType>
 
+   <xsd:complexType name="incallbackType">
+     <xsd:attribute name="method" type="xsd:token"/>
+   </xsd:complexType>
+
+   <xsd:complexType name="uncallbackType">
+     <xsd:attribute name="method" type="xsd:token"/>
+   </xsd:complexType>
+
    <xsd:element name="deployment">
      <xsd:complexType>
        <xsd:sequence>




More information about the jboss-cvs-commits mailing list