[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><incallback></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><uncallback></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><map></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