Author: cziegeler
Date: Sat Mar  8 09:50:02 2008
New Revision: 635027

URL: http://svn.apache.org/viewvc?rev=635027&view=rev
Log:
FELIX-509: Exclude files before they are added to QDox. Pattern syntax is now 
supported.

Modified:
    
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
    
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java

Modified: 
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java?rev=635027&r1=635026&r2=635027&view=diff
==============================================================================
--- 
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
 (original)
+++ 
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
 Sat Mar  8 09:50:02 2008
@@ -80,7 +80,6 @@
 
     /**
      * The comma separated list of tokens to exclude when processing sources.
-     * All entries should be relative to the project directory
      *
      * @parameter alias="excludes"
      */

Modified: 
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java?rev=635027&r1=635026&r2=635027&view=diff
==============================================================================
--- 
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
 (original)
+++ 
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
 Sat Mar  8 09:50:02 2008
@@ -36,7 +36,7 @@
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.*;
 
 import com.thoughtworks.qdox.JavaDocBuilder;
 import com.thoughtworks.qdox.model.JavaSource;
@@ -76,7 +76,7 @@
      */
     public JavaClassDescriptorManager(final Log          log,
                                       final MavenProject project,
-                                      final String       excludes)
+                                      final String       excludeString)
     throws MojoFailureException, MojoExecutionException {
         this.log = log;
         this.project = project;
@@ -87,36 +87,49 @@
         JavaDocBuilder builder = new JavaDocBuilder();
         builder.getClassLibrary().addClassLoader(this.classloader);
         final Iterator i = project.getCompileSourceRoots().iterator();
-        while ( i.hasNext() ) {
-            final String tree = (String)i.next();
-            this.log.debug("Adding source tree " + tree);
-            builder.addSourceTree(new File(tree));
-        }
         // FELIX-509: check for excludes
-        if ( excludes != null ) {
-            final List sourcesList = new 
ArrayList(Arrays.asList(builder.getSources()));
-            final File projectDir = project.getBasedir();
-            final StringTokenizer st = new StringTokenizer(excludes, ",");
-            while ( st.hasMoreTokens() ) {
-                final String excludeEntry = st.nextToken();
-                this.log.debug("Processing configured exclude " + 
excludeEntry);
-                String exclude = projectDir.getAbsolutePath() + 
File.separatorChar + excludeEntry;
-                if ( File.separatorChar != '/' ) {
-                    exclude = exclude.replace('/', File.separatorChar);
+        if ( excludeString != null ) {
+            final String[] excludes = StringUtils.split(excludeString, ",");
+            final String[] includes = new String[] {"**/*.java"};
+
+            while ( i.hasNext() ) {
+                final String tree = (String)i.next();
+                this.log.debug("Scanning source tree " + tree);
+                final File directory = new File(tree);
+                final DirectoryScanner scanner = new DirectoryScanner();
+                scanner.setBasedir( directory );
+
+                if ( excludes != null && excludes.length > 0 ) {
+                    scanner.setExcludes( excludes );
                 }
-                final Iterator iter = sourcesList.iterator();
-                while ( iter.hasNext() ) {
-                    JavaSource current = (JavaSource)iter.next();
-                    if ( 
current.getFile().getAbsolutePath().startsWith(exclude)) {
-                        this.log.debug("Excluding source " + 
current.getFile());
-                        iter.remove();
+                scanner.addDefaultExcludes();
+                scanner.setIncludes( includes );
+
+                scanner.scan();
+
+                final String[] files = scanner.getIncludedFiles();
+                if ( files != null ) {
+                    for(int m=0; m<files.length; m++) {
+                        this.log.debug("Adding source file " + files[m]);
+                        try {
+                            builder.addSource(new File(directory, files[m]));
+                        } catch (FileNotFoundException e) {
+                            throw new MojoExecutionException("Unable to scan 
directory.", e);
+                        } catch (IOException e) {
+                            throw new MojoExecutionException("Unable to scan 
directory.", e);
+                        }
                     }
                 }
             }
-            this.sources = (JavaSource[]) sourcesList.toArray(new 
JavaSource[sourcesList.size()]);
         } else {
-            this.sources = builder.getSources();
+            while ( i.hasNext() ) {
+                final String tree = (String)i.next();
+                this.log.debug("Adding source tree " + tree);
+                final File directory = new File(tree);
+                builder.addSourceTree(directory);
+            }
         }
+        this.sources = builder.getSources();
 
         // and now scan artifacts
         final List components = new ArrayList();


Reply via email to