You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2015/12/15 14:43:49 UTC

[1/2] karaf git commit: [KARAF-4198] Small refactorings

Repository: karaf
Updated Branches:
  refs/heads/master 98652efef -> b9c42b5a3


[KARAF-4198] Small refactorings


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/efe5805d
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/efe5805d
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/efe5805d

Branch: refs/heads/master
Commit: efe5805d752d101044d7e1e37e45540fd5fc9566
Parents: 98652ef
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Tue Dec 15 12:10:57 2015 +0100
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Tue Dec 15 12:10:57 2015 +0100

----------------------------------------------------------------------
 .../tracker/GenerateServiceMetadata.java        | 73 +++++++++++---------
 1 file changed, 42 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/efe5805d/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
----------------------------------------------------------------------
diff --git a/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java b/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
index 42b7543..c441a2e 100644
--- a/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
+++ b/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
@@ -86,7 +86,7 @@ public class GenerateServiceMetadata extends AbstractMojo {
             ClassFinder finder = createFinder(classLoader);
             List<Class<?>> classes = finder.findAnnotatedClasses(Services.class);
 
-            List<Class> activators = new ArrayList<>();
+            List<Class<?>> activators = new ArrayList<>();
             for (Class<?> clazz : classes) {
                 URL classUrl = clazz.getClassLoader().getResource(clazz.getName().replace('.', '/') + ".class");
                 URL outputDirectoryUrl = new File(project.getBuild().getOutputDirectory()).toURI().toURL();
@@ -103,30 +103,12 @@ public class GenerateServiceMetadata extends AbstractMojo {
                 Services services = clazz.getAnnotation(Services.class);
                 if (services != null) {
                     for (RequireService req : services.requires()) {
-                        String flt = req.filter();
-                        if (flt == null) {
-                            flt = "";
-                        }
-                        String fltWithClass;
-                        if (!flt.isEmpty()) {
-                            fltWithClass = "(&(objectClass=" + req.value().getName() + ")" + flt + ")";
-                        } else {
-                            fltWithClass = "(objectClass=" + req.value().getName() + ")";
-                        }
-                        if (requirements.length() > 0) {
-                            requirements.append(",");
-                        }
-                        requirements.append("osgi.service;effective:=active;filter:=\"")
-                                    .append(fltWithClass)
-                                    .append("\"");
-                        props.setProperty(req.value().getName(), flt);
+                        String fltWithClass = combine(req.filter(), "(objectClass=" + req.value().getName() + ")");
+                        addServiceReq(requirements, fltWithClass);
+                        props.setProperty(req.value().getName(), req.filter());
                     }
                     for (ProvideService cap : services.provides()) {
-                        if (capabilities.length() > 0) {
-                            capabilities.append(",");
-                        }
-                        capabilities.append("osgi.service;effective:=active;objectClass=")
-                                    .append(cap.value().getName());
+                        addServiceCap(capabilities, cap);
                     }
                 }
                 Managed managed = clazz.getAnnotation(Managed.class);
@@ -162,14 +144,7 @@ public class GenerateServiceMetadata extends AbstractMojo {
                 packages.add(clazz.getPackage().getName());
             }
             if (!packages.isEmpty()) {
-                StringBuilder sb = new StringBuilder();
-                for (String pkg : packages) {
-                    if (sb.length() > 0) {
-                        sb.append(",");
-                    }
-                    sb.append(pkg);
-                }
-                project.getProperties().setProperty("BNDExtension-Karaf-Commands", sb.toString());
+                project.getProperties().setProperty("BNDExtension-Karaf-Commands", join(packages, ","));
             }
 
         } catch (Exception e) {
@@ -177,6 +152,42 @@ public class GenerateServiceMetadata extends AbstractMojo {
         }
     }
 
+    private String join(Set<String> packages, String separator) {
+        StringBuilder sb = new StringBuilder();
+        for (String pkg : packages) {
+            if (sb.length() > 0) {
+                sb.append(separator);
+            }
+            sb.append(pkg);
+        }
+        return sb.toString();
+    }
+
+    private void addServiceCap(StringBuilder capabilities, ProvideService cap) {
+        if (capabilities.length() > 0) {
+            capabilities.append(",");
+        }
+        capabilities.append("osgi.service;effective:=active;objectClass=")
+                    .append(cap.value().getName());
+    }
+
+    private void addServiceReq(StringBuilder requirements, String fltWithClass) {
+        if (requirements.length() > 0) {
+            requirements.append(",");
+        }
+        requirements.append("osgi.service;effective:=active;filter:=\"")
+                    .append(fltWithClass)
+                    .append("\"");
+    }
+
+    private String combine(String filter1, String filter2) {
+        if (filter1!=null && !filter1.isEmpty()) {
+            return "(&" + filter2 + filter1 + ")";
+        } else {
+            return filter2;
+        }
+    }
+
     private ClassFinder createFinder(String classloaderType) throws Exception {
         ClassFinder finder;
         if ("project".equals(classloaderType)) {


[2/2] karaf git commit: [KARAF-4198] Support m2e incremental builds

Posted by cs...@apache.org.
[KARAF-4198] Support m2e incremental builds


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/b9c42b5a
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/b9c42b5a
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/b9c42b5a

Branch: refs/heads/master
Commit: b9c42b5a3df4ed06aee6c126baf25deb8b989c14
Parents: efe5805
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Tue Dec 15 14:13:50 2015 +0100
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Tue Dec 15 14:13:50 2015 +0100

----------------------------------------------------------------------
 tooling/karaf-services-maven-plugin/pom.xml     |  6 ++++
 .../tracker/GenerateServiceMetadata.java        |  7 +++-
 .../META-INF/m2e/lifecycle-mapping-metadata.xml | 35 ++++++++++++++++++++
 3 files changed, 47 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/b9c42b5a/tooling/karaf-services-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-services-maven-plugin/pom.xml b/tooling/karaf-services-maven-plugin/pom.xml
index 0ed55f7..54dd992 100644
--- a/tooling/karaf-services-maven-plugin/pom.xml
+++ b/tooling/karaf-services-maven-plugin/pom.xml
@@ -89,6 +89,12 @@
             <version>2.6</version>
         </dependency>
         <dependency>
+            <groupId>org.sonatype.plexus</groupId>
+            <artifactId>plexus-build-api</artifactId>
+            <version>0.0.7</version>
+        </dependency>
+        
+        <dependency>
             <groupId>org.apache.karaf</groupId>
             <artifactId>org.apache.karaf.util</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/karaf/blob/b9c42b5a/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
----------------------------------------------------------------------
diff --git a/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java b/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
index c441a2e..203108d 100644
--- a/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
+++ b/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
@@ -37,6 +37,7 @@ import org.apache.maven.model.Resource;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
@@ -44,6 +45,7 @@ import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
 import org.apache.xbean.finder.ClassFinder;
 import org.osgi.framework.BundleActivator;
+import org.sonatype.plexus.build.incremental.BuildContext;
 
 /**
  * Generates service requirement and capabilities for activators
@@ -75,6 +77,9 @@ public class GenerateServiceMetadata extends AbstractMojo {
      */
     @Parameter(defaultValue = "project")
     protected String classLoader;
+    
+    @Component
+    private BuildContext buildContext;
 
     public void execute() throws MojoExecutionException, MojoFailureException {
         try {
@@ -118,7 +123,7 @@ public class GenerateServiceMetadata extends AbstractMojo {
 
                 File file = new File(outputDirectory, "OSGI-INF/karaf-tracker/" + clazz.getName());
                 file.getParentFile().mkdirs();
-                try (OutputStream os = new FileOutputStream(file)) {
+                try (OutputStream os = buildContext.newFileOutputStream(file)) {
                     props.store(os, null);
                 }
                 addSourceDirectory = true;

http://git-wip-us.apache.org/repos/asf/karaf/blob/b9c42b5a/tooling/karaf-services-maven-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-services-maven-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml b/tooling/karaf-services-maven-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
new file mode 100644
index 0000000..70a1f9f
--- /dev/null
+++ b/tooling/karaf-services-maven-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<lifecycleMappingMetadata>
+    <pluginExecutions>
+        <pluginExecution>
+            <pluginExecutionFilter>
+                <goals>
+                    <goal>service-metadata-generate</goal>
+                </goals>
+            </pluginExecutionFilter>
+            <action>
+                <execute>
+                    <runOnIncremental>true</runOnIncremental>
+                </execute>
+            </action>
+        </pluginExecution>
+    </pluginExecutions>
+</lifecycleMappingMetadata>
\ No newline at end of file