You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by dj...@apache.org on 2011/04/08 06:40:26 UTC

svn commit: r1090110 - in /karaf/trunk: assemblies/features/enterprise/ assemblies/features/enterprise/src/main/feature/ assemblies/features/enterprise/src/main/resources/ assemblies/features/standard/ assemblies/features/standard/src/main/feature/ ass...

Author: djencks
Date: Fri Apr  8 04:40:26 2011
New Revision: 1090110

URL: http://svn.apache.org/viewvc?rev=1090110&view=rev
Log:
KARAF-424 use karaf plugin to filter features. Make features defaults clearer. Fix a but in karaf plugin where new feature file had to be longer than original

Added:
    karaf/trunk/assemblies/features/enterprise/src/main/feature/
    karaf/trunk/assemblies/features/enterprise/src/main/feature/feature.xml   (contents, props changed)
      - copied, changed from r1090057, karaf/trunk/assemblies/features/enterprise/src/main/resources/features.xml
    karaf/trunk/assemblies/features/standard/src/main/feature/
    karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml   (contents, props changed)
      - copied, changed from r1090057, karaf/trunk/assemblies/features/standard/src/main/resources/features.xml
Removed:
    karaf/trunk/assemblies/features/enterprise/src/main/resources/features.xml
    karaf/trunk/assemblies/features/standard/src/main/resources/features.xml
Modified:
    karaf/trunk/assemblies/features/enterprise/pom.xml
    karaf/trunk/assemblies/features/standard/pom.xml
    karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
    karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/model/Bundle.java
    karaf/trunk/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java
    karaf/trunk/features/core/src/test/java/org/apache/karaf/features/internal/FeaturesServiceImplTest.java
    karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateFeaturesXmlMojo2.java

Modified: karaf/trunk/assemblies/features/enterprise/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/features/enterprise/pom.xml?rev=1090110&r1=1090109&r2=1090110&view=diff
==============================================================================
--- karaf/trunk/assemblies/features/enterprise/pom.xml (original)
+++ karaf/trunk/assemblies/features/enterprise/pom.xml Fri Apr  8 04:40:26 2011
@@ -28,76 +28,27 @@
     </parent>
 
     <artifactId>enterprise</artifactId>
+    <packaging>pom</packaging>
     <name>Apache Karaf :: Assemblies :: Features :: Enterprise</name>
 
     <properties>
         <appendedResourcesDirectory>${basedir}/../../../etc/appended-resources</appendedResourcesDirectory>
     </properties>
 
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.aries.jndi</groupId>
-            <artifactId>org.apache.aries.jndi.api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.aries.jndi</groupId>
-            <artifactId>org.apache.aries.jndi.core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.aries.jndi</groupId>
-            <artifactId>org.apache.aries.jndi.url</artifactId>
-        </dependency>
-    </dependencies>
-
     <build>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-                <filtering>true</filtering>
-                <includes>
-                    <include>**/*</include>
-                </includes>
-            </resource>
-        </resources>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-resources-plugin</artifactId>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-maven-plugin</artifactId>
                 <configuration>
-                    <useDefaultDelimiters>false</useDefaultDelimiters>
-                    <delimiters>
-                        <delimiter>${*}</delimiter>
-                    </delimiters>
                 </configuration>
                 <executions>
                     <execution>
-                        <id>filter</id>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>resources</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>attach-artifacts</id>
-                        <phase>package</phase>
+                        <id>compile</id>
+                        <phase>compile</phase>
                         <goals>
-                            <goal>attach-artifact</goal>
+                            <goal>generate-features-xml2</goal>
                         </goals>
-                        <configuration>
-                            <artifacts>
-                                <artifact>
-                                    <file>target/classes/features.xml</file>
-                                    <type>xml</type>
-                                    <classifier>features</classifier>
-                                </artifact>
-                            </artifacts>
-                        </configuration>
                     </execution>
                 </executions>
             </plugin>

Copied: karaf/trunk/assemblies/features/enterprise/src/main/feature/feature.xml (from r1090057, karaf/trunk/assemblies/features/enterprise/src/main/resources/features.xml)
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/features/enterprise/src/main/feature/feature.xml?p2=karaf/trunk/assemblies/features/enterprise/src/main/feature/feature.xml&p1=karaf/trunk/assemblies/features/enterprise/src/main/resources/features.xml&r1=1090057&r2=1090110&rev=1090110&view=diff
==============================================================================
    (empty)

Propchange: karaf/trunk/assemblies/features/enterprise/src/main/feature/feature.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: karaf/trunk/assemblies/features/enterprise/src/main/feature/feature.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: karaf/trunk/assemblies/features/enterprise/src/main/feature/feature.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: karaf/trunk/assemblies/features/standard/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/features/standard/pom.xml?rev=1090110&r1=1090109&r2=1090110&view=diff
==============================================================================
--- karaf/trunk/assemblies/features/standard/pom.xml (original)
+++ karaf/trunk/assemblies/features/standard/pom.xml Fri Apr  8 04:40:26 2011
@@ -28,6 +28,7 @@
     </parent>
 
     <artifactId>standard</artifactId>
+    <packaging>pom</packaging>
     <name>Apache Karaf :: Assemblies :: Features :: Standard</name>
 
     <properties>
@@ -35,57 +36,22 @@
     </properties>
 
     <build>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-                <filtering>true</filtering>
-                <includes>
-                    <include>**/*</include>
-                </includes>
-            </resource>
-        </resources>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-resources-plugin</artifactId>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-maven-plugin</artifactId>
                 <configuration>
-                    <useDefaultDelimiters>false</useDefaultDelimiters>
-                    <delimiters>
-                        <delimiter>${*}</delimiter>
-                    </delimiters>
                 </configuration>
                 <executions>
                     <execution>
-                        <id>filter</id>
-                        <phase>generate-resources</phase>
+                        <id>compile</id>
+                        <phase>compile</phase>
                         <goals>
-                            <goal>resources</goal>
+                            <goal>generate-features-xml2</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>attach-artifacts</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>attach-artifact</goal>
-                        </goals>
-                        <configuration>
-                            <artifacts>
-                                <artifact>
-                                    <file>target/classes/features.xml</file>
-                                    <type>xml</type>
-                                    <classifier>features</classifier>
-                                </artifact>
-                            </artifacts>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
         </plugins>
     </build>
 

Copied: karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml (from r1090057, karaf/trunk/assemblies/features/standard/src/main/resources/features.xml)
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml?p2=karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml&p1=karaf/trunk/assemblies/features/standard/src/main/resources/features.xml&r1=1090057&r2=1090110&rev=1090110&view=diff
==============================================================================
    (empty)

Propchange: karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java?rev=1090110&r1=1090109&r2=1090110&view=diff
==============================================================================
--- karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java (original)
+++ karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java Fri Apr  8 04:40:26 2011
@@ -46,6 +46,7 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.jar.JarInputStream;
 import java.util.jar.Manifest;
 import java.util.regex.Matcher;
@@ -108,7 +109,7 @@ public class FeaturesServiceImpl impleme
     private Map<String, Map<String, Feature>> features;
     private Map<Feature, Set<Long>> installed = new HashMap<Feature, Set<Long>>();
     private String boot;
-    private boolean bootFeaturesInstalled;
+    AtomicBoolean bootFeaturesInstalled = new AtomicBoolean();
     private List<FeaturesListener> listeners = new CopyOnWriteArrayList<FeaturesListener>();
     private ThreadLocal<Repository> repo = new ThreadLocal<Repository>();
     private EventAdminListener eventAdminListener;
@@ -914,7 +915,7 @@ public class FeaturesServiceImpl impleme
             saveState();
         }
         // Install boot features
-        if (boot != null && !bootFeaturesInstalled) {
+        if (boot != null && !bootFeaturesInstalled.get()) {
             new Thread() {
                 public void run() {
                     // splitting the features
@@ -958,7 +959,7 @@ public class FeaturesServiceImpl impleme
                     } catch (Exception e) {
                         LOGGER.error("Error installing boot features", e);
                     }
-                    bootFeaturesInstalled = true;
+                    bootFeaturesInstalled.set(true);
                     saveState();
                 }
             }.start();
@@ -1035,7 +1036,7 @@ public class FeaturesServiceImpl impleme
             Properties props = new Properties();
             saveSet(props, "repositories.", repositories.keySet());
             saveMap(props, "features.", installed);
-            props.put("bootFeaturesInstalled", Boolean.toString(bootFeaturesInstalled));
+            props.put("bootFeaturesInstalled", Boolean.toString(bootFeaturesInstalled.get()));
             OutputStream os = new FileOutputStream(file);
             try {
                 props.store(new FileOutputStream(file), "FeaturesService State");
@@ -1072,7 +1073,7 @@ public class FeaturesServiceImpl impleme
             for (Feature f : installed.keySet()) {
                 callListeners(new FeatureEvent(f, FeatureEvent.EventType.FeatureInstalled, true));
             }
-            bootFeaturesInstalled = Boolean.parseBoolean((String) props.get("bootFeaturesInstalled"));
+            bootFeaturesInstalled.set(Boolean.parseBoolean((String) props.get("bootFeaturesInstalled")));
             return true;
         } catch (Exception e) {
             LOGGER.error("Error loading FeaturesService state", e);

Modified: karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/model/Bundle.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/model/Bundle.java?rev=1090110&r1=1090109&r2=1090110&view=diff
==============================================================================
--- karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/model/Bundle.java (original)
+++ karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/model/Bundle.java Fri Apr  8 04:40:26 2011
@@ -62,11 +62,11 @@ public class Bundle implements BundleInf
     @XmlSchemaType(name = "anyURI")
     protected String value;
     @XmlAttribute(name = "start-level")
-    protected int startLevel;
+    protected Integer startLevel;
     @XmlAttribute
-    protected boolean start = true;
+    protected Boolean start;// = true;
     @XmlAttribute
-    protected boolean dependency;
+    protected Boolean dependency;
 
 
     public Bundle() {
@@ -109,7 +109,7 @@ public class Bundle implements BundleInf
      *     
      */
     public int getStartLevel() {
-        return startLevel;
+        return startLevel == null? 0: startLevel;
     }
 
     /**
@@ -133,7 +133,7 @@ public class Bundle implements BundleInf
      *     
      */
     public boolean isStart() {
-        return start;
+        return start == null? false: start;
     }
 
     /**
@@ -157,7 +157,7 @@ public class Bundle implements BundleInf
      *     
      */
     public boolean isDependency() {
-        return dependency;
+        return dependency == null? false: dependency;
     }
 
     /**
@@ -190,9 +190,9 @@ public class Bundle implements BundleInf
     @Override
     public int hashCode() {
         int result = value != null ? value.hashCode() : 0;
-        result = 31 * result + startLevel;
-        result = 31 * result + (start ? 1 : 0);
-        result = 31 * result + (dependency ? 1 : 0);
+        result = 31 * result + getStartLevel();
+        result = 31 * result + (isStart() ? 1 : 0);
+        result = 31 * result + (isDependency() ? 1 : 0);
         return result;
     }
 }

Modified: karaf/trunk/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java?rev=1090110&r1=1090109&r2=1090110&view=diff
==============================================================================
--- karaf/trunk/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java (original)
+++ karaf/trunk/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java Fri Apr  8 04:40:26 2011
@@ -70,7 +70,7 @@ public class FeaturesServiceTest extends
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
         pw.println("<features xmlns=\"http://karaf.apache.org/xmlns/features/v1.0.0\">");
         pw.println("  <feature name=\"f1\">");
-        pw.println("    <bundle>" + name + "</bundle>");
+        pw.println("    <bundle start='true'>" + name + "</bundle>");
         pw.println("  </feature>");
         pw.println("</features>");
         pw.close();

Modified: karaf/trunk/features/core/src/test/java/org/apache/karaf/features/internal/FeaturesServiceImplTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/core/src/test/java/org/apache/karaf/features/internal/FeaturesServiceImplTest.java?rev=1090110&r1=1090109&r2=1090110&view=diff
==============================================================================
--- karaf/trunk/features/core/src/test/java/org/apache/karaf/features/internal/FeaturesServiceImplTest.java (original)
+++ karaf/trunk/features/core/src/test/java/org/apache/karaf/features/internal/FeaturesServiceImplTest.java Fri Apr  8 04:40:26 2011
@@ -155,10 +155,12 @@ public class FeaturesServiceImplTest ext
             Thread.currentThread().setContextClassLoader(new URLClassLoader(new URL[0]));
             impl.setBoot("transaction;version=1.2,ssh;version=1.0.0");
             impl.start();
-
+            while (!impl.bootFeaturesInstalled.get()) {
+                Thread.sleep(10L);
+            }
             assertFalse("Feature transaction 1.0.0 should not be installed", impl.isInstalled(impl.getFeature("transaction", "1.0.0")));
             assertFalse("Feature transaction 2.0.0 should not be installed", impl.isInstalled(impl.getFeature("transaction", "2.0.0")));
-            assertFalse("Feature ssh should be installed", impl.isInstalled(impl.getFeature("ssh", "1.0.0")));
+            assertTrue("Feature ssh should be installed", impl.isInstalled(impl.getFeature("ssh", "1.0.0")));
         } catch (Exception e) {
             fail(String.format("Service should not throw start-up exception but log the error instead: %s", e));
         }

Modified: karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateFeaturesXmlMojo2.java
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateFeaturesXmlMojo2.java?rev=1090110&r1=1090109&r2=1090110&view=diff
==============================================================================
--- karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateFeaturesXmlMojo2.java (original)
+++ karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateFeaturesXmlMojo2.java Fri Apr  8 04:40:26 2011
@@ -106,6 +106,13 @@ public class GenerateFeaturesXmlMojo2 ex
     private File inputFile;
 
     /**
+     * The filtered input file
+     *
+     * @parameter default-value="${project.build.directory}/feature/filteredInputFeature.xml"
+     */
+    private File filteredInputFile;
+
+    /**
      * The file to generate
      *
      * @parameter default-value="${project.build.directory}/feature/feature.xml"
@@ -242,8 +249,8 @@ public class GenerateFeaturesXmlMojo2 ex
         ObjectFactory objectFactory = new ObjectFactory();
         Features features;
         if (inputFile.exists()) {
-            filter(inputFile, outputFile);
-            features = readFeaturesFile(outputFile);
+            filter(inputFile, filteredInputFile);
+            features = readFeaturesFile(filteredInputFile);
         } else {
             features = objectFactory.createFeaturesRoot();
         }