[jboss-cvs] JBossAS SVN: r97601 - in projects/ejb3/trunk/deployers: src/main/java/org/jboss/ejb3/deployers and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Dec 9 06:19:14 EST 2009
Author: jaikiran
Date: 2009-12-09 06:19:14 -0500 (Wed, 09 Dec 2009)
New Revision: 97601
Added:
projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/
projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/
projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/ClusterConfigDefaultValueProcessorFactory.java
projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/JBossMetaDataProcessorFactory.java
projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/JBossMetaDataValidatorChainProcessorFactory.java
projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/SetDefaultLocalBusinessInterfaceProcessorFactory.java
projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/SetExplicitLocalJNDINameProcessorFactory.java
Modified:
projects/ejb3/trunk/deployers/pom.xml
projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/Ejb3MetadataProcessingDeployer.java
Log:
EJBTHREE-1973 Added better support for configuring processors and validator chain in Ejb3MetadataProcessingDeployer
Modified: projects/ejb3/trunk/deployers/pom.xml
===================================================================
--- projects/ejb3/trunk/deployers/pom.xml 2009-12-09 09:45:55 UTC (rev 97600)
+++ projects/ejb3/trunk/deployers/pom.xml 2009-12-09 11:19:14 UTC (rev 97601)
@@ -14,7 +14,7 @@
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-deployers</artifactId>
<name>JBoss EJB3 Deployers</name>
- <version>1.0.2-SNAPSHOT</version>
+ <version>1.1.0-SNAPSHOT</version>
<description>
Deployers conforming to the MC Deployers SPI for EJB3
</description>
Modified: projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/Ejb3MetadataProcessingDeployer.java
===================================================================
--- projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/Ejb3MetadataProcessingDeployer.java 2009-12-09 09:45:55 UTC (rev 97600)
+++ projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/Ejb3MetadataProcessingDeployer.java 2009-12-09 11:19:14 UTC (rev 97601)
@@ -21,22 +21,28 @@
*/
package org.jboss.ejb3.deployers;
+import java.util.HashSet;
+import java.util.Set;
+
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.spi.deployer.DeploymentStages;
import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.ejb3.common.deployers.spi.AttachmentNames;
-import org.jboss.ejb3.common.metadata.MetadataUtil;
+import org.jboss.ejb3.deployers.metadata.processor.JBossMetaDataProcessorFactory;
import org.jboss.logging.Logger;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
import org.jboss.metadata.process.chain.ProcessorChain;
+import org.jboss.metadata.process.chain.ejb.jboss.JBossMetaDataProcessorChain;
+import org.jboss.metadata.process.processor.JBossMetaDataProcessor;
+import org.jboss.metadata.validation.chain.ValidatorChain;
/**
* Ejb3MetadataProcessingDeployer
- *
+ *
* Runs post-merge processing on EJB3 Metadata
* to apply rules, perform validation, etc
- *
+ *
* JBMETA-132
*
* @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
@@ -60,6 +66,21 @@
* Deployer Output, the Processed metadata
*/
public static final String OUTPUT = AttachmentNames.PROCESSED_METADATA;
+
+
+ /**
+ * {@link JBossMetaDataProcessorFactory} processor factories which will be used
+ * to create processors {@link JBossMetaDataProcessor} to process the merged {@link JBossMetaData}
+ *
+ */
+ private Set<JBossMetaDataProcessorFactory<JBossMetaData>> processorFactories = new HashSet<JBossMetaDataProcessorFactory<JBossMetaData>>();
+
+ /**
+ * A metadata validator chain which will be used to validate the merged metadata,
+ * after processing the metadata through all available {@link JBossMetaDataProcessor}s
+ *
+ */
+ private ValidatorChain<JBossMetaData> validatorChain;
// ------------------------------------------------------------------------------||
// Constructor ------------------------------------------------------------------||
@@ -86,9 +107,9 @@
/**
* For DeploymentUnits with a merged metadata attachment representing
- * EJB3 beans, will run a standard ProcessorChain and output the
- * processed result
- *
+ * EJB3 beans, will run a standard ProcessorChain. The processed
+ * metadata is then run through a validator chain
+ *
* @see org.jboss.deployers.spi.deployer.Deployer#deploy(org.jboss.deployers.structure.spi.DeploymentUnit)
*/
public void deploy(DeploymentUnit du) throws DeploymentException
@@ -96,6 +117,7 @@
// Obtain the Merged Metadata
JBossMetaData md = du.getAttachment(INPUT, JBossMetaData.class);
+
// If metadata's not present as an attachment, return
if (md == null)
{
@@ -108,13 +130,66 @@
return;
}
- // Get the Processor Chain
- ProcessorChain<JBossMetaData> chain = MetadataUtil.getPostMergeMetadataProcessorChain(du.getClassLoader());
-
+ // Create the processor chain
+ ProcessorChain<JBossMetaData> chain = new JBossMetaDataProcessorChain<JBossMetaData>();
+ for (JBossMetaDataProcessorFactory<JBossMetaData> processorFactory : this.processorFactories)
+ {
+ JBossMetaDataProcessor<JBossMetaData> processor = processorFactory.create(du);
+ chain.addProcessor(processor);
+ }
+
// Create new processed metadata
JBossMetaData processedMetadata = chain.process(md);
+
+ // now validate the processed metadata
+ if (this.validatorChain != null)
+ {
+ this.validatorChain.validate(processedMetadata);
+ }
// Set the processed metadata as the output
du.addAttachment(OUTPUT, processedMetadata, JBossMetaData.class);
}
+
+ /**
+ * Add a processor factory to the set of processor factories which will be
+ * used to process the merged {@link JBossMetaData}
+ * @param processorFactory
+ */
+ public void addProcessorFactory(JBossMetaDataProcessorFactory<JBossMetaData> processorFactory)
+ {
+ this.processorFactories.add(processorFactory);
+ }
+ /**
+ * Removes a processor factory from the set of processor factories which are
+ * responsible for processing the merged {@link JBossMetaData}
+ *
+ * @param processorFactory
+ */
+ public void removeProcessorFactory(JBossMetaDataProcessorFactory<JBossMetaData> processorFactory)
+ {
+ this.processorFactories.remove(processorFactory);
+ }
+
+ /**
+ * Sets the validator chain which will be used to validate the metadata
+ * after running it through the available {@link JBossMetaDataProcessor}s
+ *
+ * @param validatorChain
+ */
+ public void setValidatorChain(ValidatorChain<JBossMetaData> validatorChain)
+ {
+ this.validatorChain = validatorChain;
+ }
+
+ /**
+ * Returns the validator chain used to validate the processed metadata
+ *
+ * @return
+ */
+ public ValidatorChain<JBossMetaData> getValidatorChain()
+ {
+ return this.validatorChain;
+ }
+
}
Added: projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/ClusterConfigDefaultValueProcessorFactory.java
===================================================================
--- projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/ClusterConfigDefaultValueProcessorFactory.java (rev 0)
+++ projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/ClusterConfigDefaultValueProcessorFactory.java 2009-12-09 11:19:14 UTC (rev 97601)
@@ -0,0 +1,50 @@
+/*
+* 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.ejb3.deployers.metadata.processor;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.process.processor.JBossMetaDataProcessor;
+import org.jboss.metadata.process.processor.ejb.jboss.ClusterConfigDefaultValueProcessor;
+
+/**
+ * ClusterConfigDefaultValueProcessorFactory
+ *
+ * A {@link JBossMetaDataProcessorFactory} which is responsible for creating
+ * {@link ClusterConfigDefaultValueProcessor} (JBMETA-133, EJBTHREE-1539 Default ClusterConfig)
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class ClusterConfigDefaultValueProcessorFactory implements JBossMetaDataProcessorFactory<JBossMetaData>
+{
+
+ /**
+ * @see org.jboss.ejb3.deployers.metadata.processor.JBossMetaDataProcessorFactory#create(org.jboss.deployers.structure.spi.DeploymentUnit)
+ */
+ public JBossMetaDataProcessor<JBossMetaData> create(DeploymentUnit deploymentUnit)
+ {
+ // we don't require the deployment unit for anything, so just ignore it.
+ return ClusterConfigDefaultValueProcessor.INSTANCE;
+ }
+
+}
Added: projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/JBossMetaDataProcessorFactory.java
===================================================================
--- projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/JBossMetaDataProcessorFactory.java (rev 0)
+++ projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/JBossMetaDataProcessorFactory.java 2009-12-09 11:19:14 UTC (rev 97601)
@@ -0,0 +1,38 @@
+/*
+* 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.ejb3.deployers.metadata.processor;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.process.processor.JBossMetaDataProcessor;
+
+/**
+ * JBossMetaDataProcessorFactory
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public interface JBossMetaDataProcessorFactory<T extends JBossMetaData>
+{
+
+ JBossMetaDataProcessor<T> create(DeploymentUnit deploymentUnit);
+}
Added: projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/JBossMetaDataValidatorChainProcessorFactory.java
===================================================================
--- projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/JBossMetaDataValidatorChainProcessorFactory.java (rev 0)
+++ projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/JBossMetaDataValidatorChainProcessorFactory.java 2009-12-09 11:19:14 UTC (rev 97601)
@@ -0,0 +1,51 @@
+/*
+* 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.ejb3.deployers.metadata.processor;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.process.processor.JBossMetaDataProcessor;
+import org.jboss.metadata.process.processor.ejb.jboss.JBossMetaDataValidatorChainProcessor;
+
+/**
+ * JBossMetaDataValidatorChainProcessorFactory
+ *
+ * A {@link JBossMetaDataProcessorFactory} responsible for creating a
+ * {@link JBossMetaDataValidatorChainProcessor}.
+ * (JBMETA-118 Validation)
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class JBossMetaDataValidatorChainProcessorFactory implements JBossMetaDataProcessorFactory<JBossMetaData>
+{
+
+ /**
+ * @see org.jboss.ejb3.deployers.metadata.processor.JBossMetaDataProcessorFactory#create(org.jboss.deployers.structure.spi.DeploymentUnit)
+ */
+ public JBossMetaDataProcessor<JBossMetaData> create(DeploymentUnit deploymentUnit)
+ {
+ // we don't need the deployment unit to create the processor, so just ignore it
+ return JBossMetaDataValidatorChainProcessor.INSTANCE;
+ }
+
+}
Added: projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/SetDefaultLocalBusinessInterfaceProcessorFactory.java
===================================================================
--- projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/SetDefaultLocalBusinessInterfaceProcessorFactory.java (rev 0)
+++ projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/SetDefaultLocalBusinessInterfaceProcessorFactory.java 2009-12-09 11:19:14 UTC (rev 97601)
@@ -0,0 +1,51 @@
+/*
+* 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.ejb3.deployers.metadata.processor;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.process.processor.JBossMetaDataProcessor;
+import org.jboss.metadata.process.processor.ejb.jboss.SetDefaultLocalBusinessInterfaceProcessor;
+
+/**
+ * SetDefaultLocalBusinessInterfaceProcessorFactory
+ *
+ * A {@link JBossMetaDataProcessorFactory} responsible for creating the
+ * {@link SetDefaultLocalBusinessInterfaceProcessor}.
+ * (JBMETA-122 Implicit Local Business Interface)
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class SetDefaultLocalBusinessInterfaceProcessorFactory implements JBossMetaDataProcessorFactory<JBossMetaData>
+{
+
+ /**
+ * @see org.jboss.ejb3.deployers.metadata.processor.JBossMetaDataProcessorFactory#create(org.jboss.deployers.structure.spi.DeploymentUnit)
+ * @throws NullPointerException If the passed <code>deploymentUnit</code> is null
+ */
+ public JBossMetaDataProcessor<JBossMetaData> create(DeploymentUnit deploymentUnit)
+ {
+ return new SetDefaultLocalBusinessInterfaceProcessor<JBossMetaData>(deploymentUnit.getClassLoader());
+ }
+
+}
Added: projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/SetExplicitLocalJNDINameProcessorFactory.java
===================================================================
--- projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/SetExplicitLocalJNDINameProcessorFactory.java (rev 0)
+++ projects/ejb3/trunk/deployers/src/main/java/org/jboss/ejb3/deployers/metadata/processor/SetExplicitLocalJNDINameProcessorFactory.java 2009-12-09 11:19:14 UTC (rev 97601)
@@ -0,0 +1,51 @@
+/*
+* 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.ejb3.deployers.metadata.processor;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.process.processor.JBossMetaDataProcessor;
+import org.jboss.metadata.process.processor.ejb.jboss.SetExplicitLocalJndiNameProcessor;
+
+/**
+ * SetExplicitLocalJNDINameProcessorFactory
+ *
+ * A {@link JBossMetaDataProcessorFactory} responsible for creating the
+ * {@link SetExplicitLocalJndiNameProcessor}.
+ * (JBMETA-143 Set explicit local JNDI name from @LocalBinding.jndiBinding)
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class SetExplicitLocalJNDINameProcessorFactory implements JBossMetaDataProcessorFactory<JBossMetaData>
+{
+
+ /**
+ * @see org.jboss.ejb3.deployers.metadata.processor.JBossMetaDataProcessorFactory#create(org.jboss.deployers.structure.spi.DeploymentUnit)
+ */
+ public JBossMetaDataProcessor<JBossMetaData> create(DeploymentUnit deploymentUnit)
+ {
+ // we don't need the deployment unit to create the processor, so just ignore it
+ return SetExplicitLocalJndiNameProcessor.INSTANCE;
+ }
+
+}
More information about the jboss-cvs-commits
mailing list