[jboss-cvs] JBossAS SVN: r103414 - in projects/scanning/trunk: deployers/src/main/java/org/jboss/scanning/deployers/filter and 8 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Apr 1 07:31:15 EDT 2010


Author: alesj
Date: 2010-04-01 07:31:13 -0400 (Thu, 01 Apr 2010)
New Revision: 103414

Added:
   projects/scanning/trunk/deployers/src/main/java/org/jboss/scanning/deployers/filter/
   projects/scanning/trunk/deployers/src/main/java/org/jboss/scanning/deployers/filter/ScanningDeploymentUnitFilter.java
   projects/scanning/trunk/deployers/src/main/java/org/jboss/scanning/deployers/metadata/
   projects/scanning/trunk/deployers/src/main/java/org/jboss/scanning/deployers/metadata/ScanningMetaDataDeployer.java
   projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/
   projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractPathEntryMetaData.java
   projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractPathMetaData.java
   projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractScanningMetaData.java
   projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/
   projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/FilterablePathEntry.java
   projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/PathEntryMetaData.java
   projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/PathMetaData.java
   projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/ScanningMetaData.java
Removed:
   projects/scanning/trunk/testsuite/src/test/java/org/jboss/test/scanning/annotations/support/ScanningMDFilter.java
Modified:
   projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/DeploymentUnitScanner.java
   projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/filter/ScanningMetaDataRecurseFilter.java
   projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/filter/ScanningMetaDataResourceFilter.java
   projects/scanning/trunk/testsuite/src/test/resources/org/jboss/test/scanning/annotations/test/AnnotationsScanningWithMetaDataTestCase.xml
Log:
Copy scanning metadata.

Copied: projects/scanning/trunk/deployers/src/main/java/org/jboss/scanning/deployers/filter/ScanningDeploymentUnitFilter.java (from rev 103411, projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/filter/ScanningMetaDataResourceFilter.java)
===================================================================
--- projects/scanning/trunk/deployers/src/main/java/org/jboss/scanning/deployers/filter/ScanningDeploymentUnitFilter.java	                        (rev 0)
+++ projects/scanning/trunk/deployers/src/main/java/org/jboss/scanning/deployers/filter/ScanningDeploymentUnitFilter.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -0,0 +1,88 @@
+/*
+* 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.scanning.deployers.filter;
+
+import org.jboss.classloading.spi.visitor.ResourceFilter;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.spi.structure.helpers.VFS2BaseBridgeDeploymentUnitFilter;
+import org.jboss.logging.Logger;
+import org.jboss.scanning.plugins.filter.ScanningMetaDataRecurseFilter;
+import org.jboss.scanning.plugins.filter.ScanningMetaDataResourceFilter;
+import org.jboss.scanning.spi.metadata.ScanningMetaData;
+
+/**
+ * ScanningMetaDataResourceFilter
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ScanningDeploymentUnitFilter extends VFS2BaseBridgeDeploymentUnitFilter
+{
+   private Logger log = Logger.getLogger(getClass());
+
+   protected boolean doAccepts(DeploymentUnit unit)
+   {
+      ScanningMetaData smd = unit.getAttachment(ScanningMetaData.class);
+      if (smd != null)
+      {
+         // recurse
+         ResourceFilter recurse = createRecurseFilter(smd);
+         if (recurse != null)
+         {
+            ResourceFilter previousRecurse = unit.addAttachment(ResourceFilter.class.getName() + ".recurse", recurse, ResourceFilter.class);
+            if (previousRecurse != null)
+               log.debugf("Overridding previous recurse filter: %1s", previousRecurse);
+         }
+
+         // resource
+         ResourceFilter filter = createResourceFilter(smd);
+         if (filter != null)
+         {
+            ResourceFilter previousFilter = unit.addAttachment(ResourceFilter.class.getName() + ".resource", filter, ResourceFilter.class);
+            if (previousFilter != null)
+               log.debugf("Overridding previous resource filter: %1s", previousFilter);
+         }
+      }
+      return true;
+   }
+
+   /**
+    * Create recurse filter.
+    *
+    * @param smd the scanning metadata
+    * @return recurse filter
+    */
+   protected ResourceFilter createRecurseFilter(ScanningMetaData smd)
+   {
+      return new ScanningMetaDataRecurseFilter(smd);
+   }
+
+   /**
+    * Create resource filter.
+    *
+    * @param smd the scanning metadata
+    * @return resource filter
+    */
+   protected ResourceFilter createResourceFilter(ScanningMetaData smd)
+   {
+      return new ScanningMetaDataResourceFilter(smd);
+   }
+}

Added: projects/scanning/trunk/deployers/src/main/java/org/jboss/scanning/deployers/metadata/ScanningMetaDataDeployer.java
===================================================================
--- projects/scanning/trunk/deployers/src/main/java/org/jboss/scanning/deployers/metadata/ScanningMetaDataDeployer.java	                        (rev 0)
+++ projects/scanning/trunk/deployers/src/main/java/org/jboss/scanning/deployers/metadata/ScanningMetaDataDeployer.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -0,0 +1,44 @@
+/*
+ * 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.scanning.deployers.metadata;
+
+import org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer;
+import org.jboss.scanning.plugins.metadata.AbstractScanningMetaData;
+import org.jboss.scanning.spi.metadata.ScanningMetaData;
+
+/**
+ * ScanningMetaDataDeployer
+ * 
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class ScanningMetaDataDeployer extends SchemaResolverDeployer<AbstractScanningMetaData>
+{
+   public ScanningMetaDataDeployer()
+   {
+      super(AbstractScanningMetaData.class);
+      setName("jboss-scanning.xml");
+      setRegisterWithJBossXB(true);
+      addOutput(ScanningMetaData.class);
+      setAttachmentKey(ScanningMetaData.class.getName());
+   }
+}

Modified: projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/DeploymentUnitScanner.java
===================================================================
--- projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/DeploymentUnitScanner.java	2010-04-01 11:29:15 UTC (rev 103413)
+++ projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/DeploymentUnitScanner.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -28,11 +28,8 @@
 import org.jboss.classloading.plugins.visitor.FederatedResourceVisitor;
 import org.jboss.classloading.spi.dependency.Module;
 import org.jboss.classloading.spi.visitor.ResourceFilter;
-import org.jboss.deployers.spi.annotations.ScanningMetaData;
 import org.jboss.deployers.spi.deployer.helpers.AttachmentLocator;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.scanning.plugins.filter.ScanningMetaDataRecurseFilter;
-import org.jboss.scanning.plugins.filter.ScanningMetaDataResourceFilter;
 import org.jboss.scanning.plugins.helpers.DelegateResourceFilter;
 import org.jboss.scanning.spi.ScanningHandle;
 import org.jboss.scanning.spi.ScanningPlugin;
@@ -56,6 +53,27 @@
       this.unit = unit;
    }
 
+   /**
+    * Wrap federated filters with existing.
+    * e.g. scanning metadata restrictions
+    *
+    * @param name the attachment name
+    * @param filter the existing federated filter
+    * @return filter
+    */
+   protected ResourceFilter wrap(String name, ResourceFilter filter)
+   {
+      ResourceFilter ext = unit.getAttachment(name, ResourceFilter.class);
+      if (ext != null)
+      {
+         if (filter != null)
+            return new DelegateResourceFilter(ext, filter);
+         else
+            return ext;
+      }
+      return filter;
+   }
+
    protected void scan(Set<ScanningPlugin> plugins) throws Exception
    {
       Module module = AttachmentLocator.searchAncestors(unit, Module.class);
@@ -67,17 +85,8 @@
       ResourceFilter filter = visitor.getFilter();
       ResourceFilter recurseFilter = visitor.getRecurseFilter();
 
-      // wrap existing filters with SMD filtering, if it exists
-      ScanningMetaData smd = unit.getAttachment(ScanningMetaData.class);
-      if (smd != null)
-      {
-         filter = new DelegateResourceFilter(new ScanningMetaDataResourceFilter(smd), filter);
-         ScanningMetaDataRecurseFilter smdrf = new ScanningMetaDataRecurseFilter(smd);
-         if (recurseFilter != null)
-            recurseFilter = new DelegateResourceFilter(smdrf, recurseFilter);
-         else
-            recurseFilter = smdrf;
-      }
+      filter = wrap(ResourceFilter.class.getName() + ".resource", filter);
+      recurseFilter = wrap(ResourceFilter.class.getName() + ".recurse", recurseFilter);
 
       // something in javassist uses TCL
       ClassLoader tccl = SecurityActions.setContextClassLoader(unit.getClassLoader());

Modified: projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/filter/ScanningMetaDataRecurseFilter.java
===================================================================
--- projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/filter/ScanningMetaDataRecurseFilter.java	2010-04-01 11:29:15 UTC (rev 103413)
+++ projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/filter/ScanningMetaDataRecurseFilter.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -26,8 +26,8 @@
 
 import org.jboss.classloading.spi.visitor.ResourceContext;
 import org.jboss.classloading.spi.visitor.ResourceFilter;
-import org.jboss.deployers.spi.annotations.PathMetaData;
-import org.jboss.deployers.spi.annotations.ScanningMetaData;
+import org.jboss.scanning.spi.metadata.PathMetaData;
+import org.jboss.scanning.spi.metadata.ScanningMetaData;
 
 /**
  * Simple recurse filter.

Modified: projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/filter/ScanningMetaDataResourceFilter.java
===================================================================
--- projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/filter/ScanningMetaDataResourceFilter.java	2010-04-01 11:29:15 UTC (rev 103413)
+++ projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/filter/ScanningMetaDataResourceFilter.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -29,9 +29,10 @@
 import org.jboss.classloader.spi.filter.PackageClassFilter;
 import org.jboss.classloading.spi.visitor.ResourceContext;
 import org.jboss.classloading.spi.visitor.ResourceFilter;
-import org.jboss.deployers.spi.annotations.PathEntryMetaData;
-import org.jboss.deployers.spi.annotations.PathMetaData;
-import org.jboss.deployers.spi.annotations.ScanningMetaData;
+import org.jboss.scanning.spi.metadata.FilterablePathEntry;
+import org.jboss.scanning.spi.metadata.PathEntryMetaData;
+import org.jboss.scanning.spi.metadata.PathMetaData;
+import org.jboss.scanning.spi.metadata.ScanningMetaData;
 
 /**
  * ScanningMetaDataResourceFilter
@@ -106,7 +107,9 @@
     */
    protected ClassFilter getClassFilter(PathEntryMetaData pemd)
    {
-      // TODO -- check for FilterablePathEntry
-      return PackageClassFilter.createPackageClassFilter(pemd.getName());
+      if (pemd instanceof FilterablePathEntry)
+         return ((FilterablePathEntry)pemd).getFilter();
+      else
+         return PackageClassFilter.createPackageClassFilter(pemd.getName());
    }
 }
\ No newline at end of file

Added: projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractPathEntryMetaData.java
===================================================================
--- projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractPathEntryMetaData.java	                        (rev 0)
+++ projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractPathEntryMetaData.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -0,0 +1,93 @@
+/*
+ * 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.scanning.plugins.metadata;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import java.io.Serializable;
+
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.PackageClassFilter;
+import org.jboss.scanning.spi.metadata.FilterablePathEntry;
+import org.jboss.scanning.spi.metadata.PathEntryMetaData;
+
+/**
+ * AbstractPathEntryMetaData
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+ at XmlType(name="pathEntryType")
+public class AbstractPathEntryMetaData implements PathEntryMetaData, FilterablePathEntry, Serializable
+{
+   private static final long serialVersionUID = 1L;
+
+   private String name;
+   private transient ClassFilter filter;
+
+   @XmlTransient
+   public ClassFilter getFilter()
+   {
+      if (filter == null)
+         filter = PackageClassFilter.createPackageClassFilter(getNameInternal());
+
+      return filter;
+   }
+
+   @XmlTransient
+   private String getNameInternal()
+   {
+      if (name == null)
+         throw new IllegalArgumentException("Null name");
+
+      return name;
+   }
+
+   public String getName()
+   {
+      return name;
+   }
+
+   @XmlAttribute(name = "name", required = true)
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+
+   @Override
+   public int hashCode()
+   {
+      return getNameInternal().hashCode();
+   }
+
+   @Override
+   public boolean equals(Object obj)
+   {
+      if (obj instanceof PathEntryMetaData == false)
+         return false;
+
+      PathEntryMetaData pemd = (PathEntryMetaData)obj;
+      return getNameInternal().equals(pemd.getName());
+   }
+}

Added: projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractPathMetaData.java
===================================================================
--- projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractPathMetaData.java	                        (rev 0)
+++ projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractPathMetaData.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -0,0 +1,84 @@
+/*
+ * 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.scanning.plugins.metadata;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import org.jboss.scanning.spi.metadata.PathEntryMetaData;
+import org.jboss.scanning.spi.metadata.PathMetaData;
+
+
+/**
+ * AbstractPathMetaData
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+ at XmlRootElement(name="path")
+ at XmlType(name="pathType", propOrder={"includes", "excludes"})
+public class AbstractPathMetaData implements PathMetaData, Serializable
+{
+   private static final long serialVersionUID = 1L;
+
+   private String pathName;
+   private Set<PathEntryMetaData> includes;
+   private Set<PathEntryMetaData> excludes;
+
+   public String getPathName()
+   {
+      return pathName;
+   }
+
+   @XmlAttribute(name = "name", required = true)
+   public void setPathName(String pathName)
+   {
+      this.pathName = pathName;
+   }
+
+   public Set<PathEntryMetaData> getIncludes()
+   {
+      return includes;
+   }
+
+   @XmlElement(name = "include", type = AbstractPathEntryMetaData.class)
+   public void setIncludes(Set<PathEntryMetaData> includes)
+   {
+      this.includes = includes;
+   }
+
+   public Set<PathEntryMetaData> getExcludes()
+   {
+      return excludes;
+   }
+
+   @XmlElement(name = "exclude", type = AbstractPathEntryMetaData.class)
+   public void setExcludes(Set<PathEntryMetaData> excludes)
+   {
+      this.excludes = excludes;
+   }
+}

Added: projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractScanningMetaData.java
===================================================================
--- projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractScanningMetaData.java	                        (rev 0)
+++ projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/metadata/AbstractScanningMetaData.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -0,0 +1,61 @@
+/*
+ * 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.scanning.plugins.metadata;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.jboss.scanning.spi.metadata.PathMetaData;
+import org.jboss.scanning.spi.metadata.ScanningMetaData;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * AbstractScanningMetaData
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+ at JBossXmlSchema(namespace="urn:jboss:scanning:1.0", elementFormDefault= XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="scanning")
+ at XmlType(name="scanningType", propOrder={"paths"})
+public class AbstractScanningMetaData implements ScanningMetaData, Serializable
+{
+   private static final long serialVersionUID = 1L;
+
+   private List<PathMetaData> paths;
+
+   public List<PathMetaData> getPaths()
+   {
+      return paths;
+   }
+
+   @XmlElement(name="path", type = AbstractPathMetaData.class)
+   public void setPaths(List<PathMetaData> paths)
+   {
+      this.paths = paths;
+   }
+}

Added: projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/FilterablePathEntry.java
===================================================================
--- projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/FilterablePathEntry.java	                        (rev 0)
+++ projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/FilterablePathEntry.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -0,0 +1,40 @@
+/*
+ * 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.scanning.spi.metadata;
+
+import org.jboss.classloader.spi.filter.ClassFilter;
+
+/**
+ * FilterablePathEntry
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public interface FilterablePathEntry
+{
+   /**
+    * Get class filter.
+    *
+    * @return the filter
+    */
+   ClassFilter getFilter();
+}

Added: projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/PathEntryMetaData.java
===================================================================
--- projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/PathEntryMetaData.java	                        (rev 0)
+++ projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/PathEntryMetaData.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -0,0 +1,38 @@
+/*
+ * 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.scanning.spi.metadata;
+
+/**
+ * Path entry meta data.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public interface PathEntryMetaData
+{
+   /**
+    * Get name.
+    *
+    * @return the name
+    */
+   String getName();
+}

Added: projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/PathMetaData.java
===================================================================
--- projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/PathMetaData.java	                        (rev 0)
+++ projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/PathMetaData.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -0,0 +1,54 @@
+/*
+ * 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.scanning.spi.metadata;
+
+import java.util.Set;
+
+/**
+ * Path meta data.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public interface PathMetaData
+{
+   /**
+    * Get path name.
+    *
+    * @return the path name
+    */
+   String getPathName();
+
+   /**
+    * Get includes.
+    *
+    * @return the includes
+    */
+   Set<PathEntryMetaData> getIncludes();
+
+   /**
+    * Get excludes.
+    *
+    * @return the excludes
+    */
+   Set<PathEntryMetaData> getExcludes();
+}

Added: projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/ScanningMetaData.java
===================================================================
--- projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/ScanningMetaData.java	                        (rev 0)
+++ projects/scanning/trunk/scanning-spi/src/main/java/org/jboss/scanning/spi/metadata/ScanningMetaData.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -0,0 +1,40 @@
+/*
+ * 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.scanning.spi.metadata;
+
+import java.util.List;
+
+/**
+ * Scanning meta data.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public interface ScanningMetaData
+{
+   /**
+    * Get the paths.
+    *
+    * @return the paths
+    */
+   List<PathMetaData> getPaths();
+}

Deleted: projects/scanning/trunk/testsuite/src/test/java/org/jboss/test/scanning/annotations/support/ScanningMDFilter.java
===================================================================
--- projects/scanning/trunk/testsuite/src/test/java/org/jboss/test/scanning/annotations/support/ScanningMDFilter.java	2010-04-01 11:29:15 UTC (rev 103413)
+++ projects/scanning/trunk/testsuite/src/test/java/org/jboss/test/scanning/annotations/support/ScanningMDFilter.java	2010-04-01 11:31:13 UTC (rev 103414)
@@ -1,126 +0,0 @@
-/*
-* 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.test.scanning.annotations.support;
-
-import java.net.URL;
-import java.util.List;
-
-import org.jboss.classloading.spi.visitor.ResourceContext;
-import org.jboss.classloading.spi.visitor.ResourceFilter;
-import org.jboss.deployers.spi.annotations.PathMetaData;
-import org.jboss.deployers.spi.annotations.ScanningMetaData;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.deployers.vfs.plugins.annotations.ScanningMetaDataResourceFilter;
-import org.jboss.deployers.vfs.spi.structure.helpers.VFS2BaseBridgeDeploymentUnitFilter;
-import org.jboss.logging.Logger;
-
-/**
- * ScanningDeploymentUnitFilter
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class ScanningMDFilter extends VFS2BaseBridgeDeploymentUnitFilter
-{
-   private Logger log = Logger.getLogger(getClass());
-
-   protected boolean doAccepts(DeploymentUnit unit)
-   {
-      ScanningMetaData smd = unit.getAttachment(ScanningMetaData.class);
-      if (smd != null)
-      {
-         // recurse
-         ResourceFilter recurse = createRecurseFilter(smd);
-         if (recurse != null)
-         {
-            ResourceFilter previousRecurse = unit.addAttachment(ResourceFilter.class.getName() + ".recurse", recurse, ResourceFilter.class);
-            if (previousRecurse != null)
-               log.debugf("Overridding previous recurse filter: %1s", previousRecurse);
-         }
-
-         // resource
-         ResourceFilter filter = createResourceFilter(smd);
-         if (filter != null)
-         {
-            ResourceFilter previousFilter = unit.addAttachment(ResourceFilter.class.getName() + ".resource", filter, ResourceFilter.class);
-            if (previousFilter != null)
-               log.debugf("Overridding previous resource filter: %1s", previousFilter);
-         }
-      }
-      return true;
-   }
-
-   /**
-    * Create recurse filter.
-    *
-    * @param smd the scanning metadata
-    * @return recurse filter
-    */
-   protected ResourceFilter createRecurseFilter(ScanningMetaData smd)
-   {
-      return new ScanningMetaDataRecurseFilter(smd);
-   }
-
-   /**
-    * Create resource filter.
-    *
-    * @param smd the scanning metadata
-    * @return resource filter
-    */
-   protected ResourceFilter createResourceFilter(ScanningMetaData smd)
-   {
-      return new ScanningMetaDataResourceFilter(smd);
-   }
-
-   /**
-    * Simple recurse filter.
-    * It searches for path substring in url string.
-    */
-   private class ScanningMetaDataRecurseFilter implements ResourceFilter
-   {
-      private ScanningMetaData smd;
-
-      private ScanningMetaDataRecurseFilter(ScanningMetaData smd)
-      {
-         this.smd = smd;
-      }
-
-      public boolean accepts(ResourceContext resource)
-      {
-         URL url = resource.getUrl();
-         String urlString = url.toExternalForm();
-         List<PathMetaData> paths = smd.getPaths();
-         if (paths != null && paths.isEmpty() == false)
-         {
-            for (PathMetaData pmd : paths)
-            {
-               String name = pmd.getPathName();
-               // url contains path
-               if (urlString.contains(name))
-               {
-                  return true;
-               }
-            }
-         }
-         return false;
-      }
-   }
-}

Modified: projects/scanning/trunk/testsuite/src/test/resources/org/jboss/test/scanning/annotations/test/AnnotationsScanningWithMetaDataTestCase.xml
===================================================================
--- projects/scanning/trunk/testsuite/src/test/resources/org/jboss/test/scanning/annotations/test/AnnotationsScanningWithMetaDataTestCase.xml	2010-04-01 11:29:15 UTC (rev 103413)
+++ projects/scanning/trunk/testsuite/src/test/resources/org/jboss/test/scanning/annotations/test/AnnotationsScanningWithMetaDataTestCase.xml	2010-04-01 11:31:13 UTC (rev 103414)
@@ -3,11 +3,11 @@
   <bean name="EarStructure" class="org.jboss.test.deployers.vfs.structure.ear.support.MockEarStructureDeployer"/>
   <bean name="WarStructure" class="org.jboss.deployers.vfs.plugins.structure.war.WARStructure"/>
 
-  <bean name="ScanningMDDeployer" class="org.jboss.deployers.vfs.plugins.annotations.ScanningMetaDataDeployer"/>
+  <bean name="ScanningMDDeployer" class="org.jboss.scanning.deployers.metadata.ScanningMetaDataDeployer"/>
 
   <bean name="AnnEnvDeployer" class="org.jboss.scanning.deployers.ScanningDeployer">
     <property name="filter">
-      <bean class="org.jboss.test.scanning.annotations.support.ScanningMDFilter"/>
+      <bean class="org.jboss.scanning.deployers.filter.ScanningDeploymentUnitFilter"/>
     </property>
     <incallback method="addFactory" />
     <uncallback method="removeFactory" />




More information about the jboss-cvs-commits mailing list