Author: cziegeler
Date: Mon Nov 26 16:38:25 2012
New Revision: 1413710

URL: http://svn.apache.org/viewvc?rev=1413710&view=rev
Log:
FELIX-2892 : Get SCR annotations to work with Scala

Modified:
    
felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/MavenProjectScanner.java
    
felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java

Modified: 
felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/MavenProjectScanner.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/MavenProjectScanner.java?rev=1413710&r1=1413709&r2=1413710&view=diff
==============================================================================
--- 
felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/MavenProjectScanner.java
 (original)
+++ 
felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/MavenProjectScanner.java
 Mon Nov 26 16:38:25 2012
@@ -29,6 +29,7 @@ import org.apache.felix.scrplugin.Log;
 import org.apache.felix.scrplugin.Source;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.Scanner;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
@@ -38,13 +39,14 @@ public class MavenProjectScanner {
        private enum ScanKind {
                ADDED_OR_UPDATED, DELETED;
        }
-       
+
     private final MavenProject project;
 
     private final String includeString;
 
     private final String excludeString;
 
+    private final boolean scanClasses;
     private final Log log;
 
     private final BuildContext buildContext;
@@ -53,10 +55,12 @@ public class MavenProjectScanner {
             final MavenProject project,
             final String includeString,
             final String excludeString,
+            final boolean scanClasses,
             final Log log) {
         this.project = project;
         this.includeString = includeString;
         this.excludeString = excludeString;
+        this.scanClasses = scanClasses;
         this.log = log;
         this.buildContext = buildContext;
     }
@@ -65,7 +69,40 @@ public class MavenProjectScanner {
      * Return all sources.
      */
     public Collection<Source> getSources() {
-       
+       if ( scanClasses ) {
+            final ArrayList<Source> files = new ArrayList<Source>();
+
+            final DirectoryScanner scanner = new DirectoryScanner();
+            scanner.setBasedir(this.project.getBuild().getOutputDirectory());
+            if ( this.includeString != null ) {
+                scanner.setIncludes(this.includeString.split(","));
+            } else {
+                scanner.setIncludes(new String[] {"**/*.class"});
+            }
+            if ( this.excludeString != null ) {
+                scanner.setExcludes(this.excludeString.split(","));
+            }
+            scanner.addDefaultExcludes();
+
+            scanner.scan();
+
+            for ( final String fileName : scanner.getIncludedFiles() ) {
+                files.add( new Source() {
+
+                    public File getFile() {
+                        return new 
File(project.getBuild().getOutputDirectory(), fileName);
+                    }
+
+                    public String getClassName() {
+                        // remove ".class"
+                        String name = fileName.substring(0, fileName.length() 
- 6);
+                        return name.replace(File.separatorChar, 
'/').replace('/', '.');
+                    }
+                });
+            }
+
+           return files;
+       }
        return getSourcesForScanKind(ScanKind.ADDED_OR_UPDATED);
     }
 
@@ -97,23 +134,23 @@ public class MavenProjectScanner {
                 continue;
             }
             log.debug( "Scanning source tree " + tree );
-            
+
             final Scanner scanner;
             switch ( scanKind ) {
-            
+
                case ADDED_OR_UPDATED:
                        scanner = this.buildContext.newScanner(directory, 
false);
                        break;
-                       
+
                case DELETED:
                        scanner = this.buildContext.newDeleteScanner(directory);
                        break;
-                       
+
                default:
                        throw new AssertionError("Unhandled ScanKind " + 
scanKind);
-               
+
             }
-            
+
 
             if ( excludes != null && excludes.length > 0 ) {
                 scanner.setExcludes( excludes );
@@ -141,14 +178,14 @@ public class MavenProjectScanner {
 
         return files;
        }
-    
+
        /**
         * Returns all sources which were deleted since the previous build
-        * 
+        *
         * @return the deleted sources
         */
     public Collection<Source> getDeletedSources() {
-       
+
        return getSourcesForScanKind(ScanKind.DELETED);
     }
 

Modified: 
felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java?rev=1413710&r1=1413709&r2=1413710&view=diff
==============================================================================
--- 
felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java
 (original)
+++ 
felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java
 Mon Nov 26 16:38:25 2012
@@ -178,6 +178,14 @@ public class SCRDescriptorMojo extends A
             { "jar", "bundle" } );
 
     /**
+     * By default the plugin scans the java source tree, if this is set to 
true,
+     * the generated classes directory is scanned instead.
+     *
+     * @parameter default-value="false"
+     */
+    private boolean scanClasses;
+
+    /**
      * @component
      */
     private BuildContext buildContext;
@@ -198,7 +206,7 @@ public class SCRDescriptorMojo extends A
         // create project
         final MavenProjectScanner scanner = new MavenProjectScanner(
                 this.buildContext,
-                this.project, this.sourceIncludes, this.sourceExcludes, 
scrLog);
+                this.project, this.sourceIncludes, this.sourceExcludes, 
this.scanClasses, scrLog);
 
         final Project project = new Project();
         // create the class loader
@@ -259,7 +267,7 @@ public class SCRDescriptorMojo extends A
 
     /**
      * Remove existing files for the sources which have recently changed
-     * 
+     *
      * <p>This method ensures that files which were generated in a previous 
run are not
      * leftover if the source file has changed by:
      * <ol>
@@ -267,7 +275,7 @@ public class SCRDescriptorMojo extends A
      *  <li>No longer having the <tt>metatype</tt> property set to true</li>
      * </ol>
      * </p>
-     * 
+     *
      * @param sources the changed source files
      */
     private void removePossiblyStaleFiles(final Collection<Source> sources, 
final Options options) {


Reply via email to