Author: cschneider
Date: Mon Jul  2 14:25:46 2012
New Revision: 1356249

URL: http://svn.apache.org/viewvc?rev=1356249&view=rev
Log:
KARAF-540 Moving filter by bundle url to bundle.core

Added:
    
karaf/trunk/dev/core/src/main/java/org/apache/karaf/dev/core/internal/MavenConfigService.java
Modified:
    
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundleService.java
    
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleSelectorImpl.java
    
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java
    karaf/trunk/dev/core/pom.xml
    
karaf/trunk/dev/core/src/main/java/org/apache/karaf/dev/core/internal/BundleWatcherImpl.java
    karaf/trunk/dev/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml

Modified: 
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundleService.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundleService.java?rev=1356249&r1=1356248&r2=1356249&view=diff
==============================================================================
--- 
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundleService.java
 (original)
+++ 
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundleService.java
 Mon Jul  2 14:25:46 2012
@@ -26,8 +26,11 @@ public interface BundleService {
     BundleInfo getInfo(Bundle bundle);
 
     List<Bundle> selectBundles(List<String> ids, boolean defaultAllBundles);
-
+    
+    List<Bundle> getBundlesByURL(String urlFilter);
+    
     String getDiag(Bundle bundle);
     
     List<BundleRequirement> getUnsatisfiedRquirements(Bundle bundle, String 
namespace);
+
 }

Modified: 
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleSelectorImpl.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleSelectorImpl.java?rev=1356249&r1=1356248&r2=1356249&view=diff
==============================================================================
--- 
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleSelectorImpl.java
 (original)
+++ 
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleSelectorImpl.java
 Mon Jul  2 14:25:46 2012
@@ -174,5 +174,50 @@ public class BundleSelectorImpl {
         }
         return result;
     }
+    
+    public List<Bundle> getBundlesByURL(String url) {
+        List<Bundle> bundleList = new ArrayList<Bundle>();
+        try {
+            Long id = Long.parseLong(url);
+            Bundle bundle = bundleContext.getBundle(id);
+            if (bundle != null) {
+                bundleList.add(bundle);
+            }
+        } catch (NumberFormatException e) {
+            for (int i = 0; i < bundleContext.getBundles().length; i++) {
+                Bundle bundle = bundleContext.getBundles()[i];
+                if (isMavenSnapshotUrl(bundle.getLocation()) && 
wildCardMatch(bundle.getLocation(), url)) {
+                    bundleList.add(bundle);
+                }
+            }
+        }
+        return bundleList;
+    }
+
+    private boolean isMavenSnapshotUrl(String url) {
+        return url.startsWith("mvn:") && url.contains("SNAPSHOT");
+    }
+
+    /**
+     * Matches text using a pattern containing wildcards.
+     * 
+     * @param text
+     * @param pattern
+     * @return
+     */
+    private boolean wildCardMatch(String text, String pattern) {
+        String[] cards = pattern.split("\\*");
+        for (String card : cards) {
+            int idx = text.indexOf(card);
+            // Card not detected in the text.
+            if (idx == -1) {
+                return false;
+            }
+
+            // Move ahead, towards the right of the text.
+            text = text.substring(idx + card.length());
+        }
+        return true;
+    }
 
 }

Modified: 
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java?rev=1356249&r1=1356248&r2=1356249&view=diff
==============================================================================
--- 
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java
 (original)
+++ 
karaf/trunk/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java
 Mon Jul  2 14:25:46 2012
@@ -108,4 +108,9 @@ public class BundleServiceImpl implement
         return false;
     }
 
-}
+    @Override
+    public List<Bundle> getBundlesByURL(String urlFilter) {
+        return new 
BundleSelectorImpl(bundleContext).getBundlesByURL(urlFilter);
+    }
+
+}
\ No newline at end of file

Modified: karaf/trunk/dev/core/pom.xml
URL: 
http://svn.apache.org/viewvc/karaf/trunk/dev/core/pom.xml?rev=1356249&r1=1356248&r2=1356249&view=diff
==============================================================================
--- karaf/trunk/dev/core/pom.xml (original)
+++ karaf/trunk/dev/core/pom.xml Mon Jul  2 14:25:46 2012
@@ -59,6 +59,10 @@
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.utils</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.karaf.bundle</groupId>
+            <artifactId>org.apache.karaf.bundle.core</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

Modified: 
karaf/trunk/dev/core/src/main/java/org/apache/karaf/dev/core/internal/BundleWatcherImpl.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/dev/core/src/main/java/org/apache/karaf/dev/core/internal/BundleWatcherImpl.java?rev=1356249&r1=1356248&r2=1356249&view=diff
==============================================================================
--- 
karaf/trunk/dev/core/src/main/java/org/apache/karaf/dev/core/internal/BundleWatcherImpl.java
 (original)
+++ 
karaf/trunk/dev/core/src/main/java/org/apache/karaf/dev/core/internal/BundleWatcherImpl.java
 Mon Jul  2 14:25:46 2012
@@ -23,7 +23,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.util.ArrayList;
-import java.util.Dictionary;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -31,20 +30,14 @@ import java.util.concurrent.CopyOnWriteA
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.karaf.bundle.core.BundleService;
 import org.apache.karaf.dev.core.BundleWatcher;
-import org.ops4j.pax.url.maven.commons.MavenConfiguration;
-import org.ops4j.pax.url.maven.commons.MavenConfigurationImpl;
-import org.ops4j.pax.url.maven.commons.MavenRepositoryURL;
 import org.ops4j.pax.url.mvn.Parser;
-import org.ops4j.pax.url.mvn.ServiceConstants;
-import org.ops4j.util.property.DictionaryPropertyResolver;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
 import org.osgi.framework.BundleException;
 import org.osgi.framework.BundleListener;
-import org.osgi.service.cm.Configuration;
-import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.packageadmin.PackageAdmin;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -58,8 +51,9 @@ public class BundleWatcherImpl implement
     private final Logger logger = 
LoggerFactory.getLogger(BundleWatcherImpl.class);
 
     private BundleContext bundleContext;
-    private ConfigurationAdmin configurationAdmin;
     private final PackageAdmin packageAdmin;
+       private final BundleService bundleService;
+       private final MavenConfigService localRepoDetector;
 
     private AtomicBoolean running = new AtomicBoolean(false);
     private long interval = 1000L;
@@ -70,10 +64,11 @@ public class BundleWatcherImpl implement
      * Constructor
      */
     @SuppressWarnings("deprecation")
-    public BundleWatcherImpl(BundleContext bundleContext, ConfigurationAdmin 
configurationAdmin, PackageAdmin packageAdmin) {
+    public BundleWatcherImpl(BundleContext bundleContext, PackageAdmin 
packageAdmin, MavenConfigService mavenConfigService, BundleService 
bundleService) {
         this.bundleContext = bundleContext;
-        this.configurationAdmin = configurationAdmin;
         this.packageAdmin = packageAdmin;
+               this.localRepoDetector = mavenConfigService;
+        this.bundleService = bundleService;
     }
 
     /* (non-Javadoc)
@@ -95,13 +90,13 @@ public class BundleWatcherImpl implement
                 oldCounter = counter.get();
                 watchedBundles.clear();
                 for (String bundleURL : watchURLs) {
-                    for (Bundle bundle : getBundlesByURL(bundleURL)) {
+                    for (Bundle bundle : 
bundleService.getBundlesByURL(bundleURL)) {
                         watchedBundles.add(bundle);
                     }
                 }
             }
             if (watchedBundles.size() > 0) {
-                File localRepository = getLocalRepository();
+                File localRepository = 
this.localRepoDetector.getLocalRepository();
                 List<Bundle> updated = new ArrayList<Bundle>();
                 for (Bundle bundle : watchedBundles) {
                     try {
@@ -183,87 +178,6 @@ public class BundleWatcherImpl implement
         return null;
     }
 
-    private File getLocalRepository() {
-        // Attempt to retrieve local repository location from 
MavenConfiguration
-        MavenConfiguration configuration = retrieveMavenConfiguration();
-        if (configuration != null) {
-            MavenRepositoryURL localRepositoryURL = 
configuration.getLocalRepository();
-            if (localRepositoryURL != null) {
-                return localRepositoryURL.getFile().getAbsoluteFile();
-            }
-        }
-        // If local repository not found assume default.
-        String localRepo = System.getProperty("user.home") + File.separator + 
".m2" + File.separator + "repository";
-        return new File(localRepo).getAbsoluteFile();
-    }
-
-    private MavenConfiguration retrieveMavenConfiguration() {
-        MavenConfiguration mavenConfiguration = null;
-        try {
-            Configuration configuration = 
configurationAdmin.getConfiguration(ServiceConstants.PID);
-            if (configuration != null) {
-                Dictionary dictonary = configuration.getProperties();
-                if (dictonary != null) {
-                    DictionaryPropertyResolver resolver = new 
DictionaryPropertyResolver(dictonary);
-                    mavenConfiguration = new MavenConfigurationImpl(resolver, 
ServiceConstants.PID);
-                }
-            }
-        } catch (IOException e) {
-            logger.error("Error retrieving maven configuration", e);
-        }
-        return mavenConfiguration;
-    }
-
-    /* (non-Javadoc)
-     * @see 
org.apache.karaf.dev.core.internal.BundleWatcher#getBundlesByURL(java.lang.String)
-     */
-    @Override
-    public List<Bundle> getBundlesByURL(String url) {
-        List<Bundle> bundleList = new ArrayList<Bundle>();
-        try {
-            Long id = Long.parseLong(url);
-            Bundle bundle = bundleContext.getBundle(id);
-            if (bundle != null) {
-                bundleList.add(bundle);
-            }
-        } catch (NumberFormatException e) {
-            for (int i = 0; i < bundleContext.getBundles().length; i++) {
-                Bundle bundle = bundleContext.getBundles()[i];
-                if (isMavenSnapshotUrl(bundle.getLocation()) && 
wildCardMatch(bundle.getLocation(), url)) {
-                    bundleList.add(bundle);
-                }
-            }
-        }
-        return bundleList;
-    }
-
-    private boolean isMavenSnapshotUrl(String url) {
-        return url.startsWith("mvn:") && url.contains("SNAPSHOT");
-    }
-
-    /**
-     * Matches text using a pattern containing wildcards.
-     * 
-     * @param text
-     * @param pattern
-     * @return
-     */
-    private boolean wildCardMatch(String text, String pattern) {
-        String[] cards = pattern.split("\\*");
-        // Iterate over the cards.
-        for (String card : cards) {
-            int idx = text.indexOf(card);
-            // Card not detected in the text.
-            if (idx == -1) {
-                return false;
-            }
-
-            // Move ahead, towards the right of the text.
-            text = text.substring(idx + card.length());
-        }
-        return true;
-    }
-
     public void start() {
         bundleContext.addBundleListener(this);
         // start the watch thread
@@ -311,4 +225,9 @@ public class BundleWatcherImpl implement
         return running.get();
     }
 
+       @Override
+       public List<Bundle> getBundlesByURL(String urlFilter) {
+               return bundleService.getBundlesByURL(urlFilter);
+       }
+
 }

Added: 
karaf/trunk/dev/core/src/main/java/org/apache/karaf/dev/core/internal/MavenConfigService.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/dev/core/src/main/java/org/apache/karaf/dev/core/internal/MavenConfigService.java?rev=1356249&view=auto
==============================================================================
--- 
karaf/trunk/dev/core/src/main/java/org/apache/karaf/dev/core/internal/MavenConfigService.java
 (added)
+++ 
karaf/trunk/dev/core/src/main/java/org/apache/karaf/dev/core/internal/MavenConfigService.java
 Mon Jul  2 14:25:46 2012
@@ -0,0 +1,56 @@
+package org.apache.karaf.dev.core.internal;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Dictionary;
+
+import org.ops4j.pax.url.maven.commons.MavenConfiguration;
+import org.ops4j.pax.url.maven.commons.MavenConfigurationImpl;
+import org.ops4j.pax.url.maven.commons.MavenRepositoryURL;
+import org.ops4j.pax.url.wrap.ServiceConstants;
+import org.ops4j.util.property.DictionaryPropertyResolver;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MavenConfigService {
+       private final Logger logger = 
LoggerFactory.getLogger(BundleWatcherImpl.class);
+       private final ConfigurationAdmin configurationAdmin;
+
+       public MavenConfigService(ConfigurationAdmin configurationAdmin) {
+               this.configurationAdmin = configurationAdmin;
+       }
+
+    public File getLocalRepository() {
+        // Attempt to retrieve local repository location from 
MavenConfiguration
+        MavenConfiguration configuration = retrieveMavenConfiguration();
+        if (configuration != null) {
+            MavenRepositoryURL localRepositoryURL = 
configuration.getLocalRepository();
+            if (localRepositoryURL != null) {
+                return localRepositoryURL.getFile().getAbsoluteFile();
+            }
+        }
+        // If local repository not found assume default.
+        String localRepo = System.getProperty("user.home") + File.separator + 
".m2" + File.separator + "repository";
+        return new File(localRepo).getAbsoluteFile();
+    }
+
+    private MavenConfiguration retrieveMavenConfiguration() {
+        MavenConfiguration mavenConfiguration = null;
+        try {
+            Configuration configuration = 
configurationAdmin.getConfiguration(ServiceConstants.PID);
+            if (configuration != null) {
+                @SuppressWarnings("rawtypes")
+                               Dictionary dictonary = 
configuration.getProperties();
+                if (dictonary != null) {
+                    DictionaryPropertyResolver resolver = new 
DictionaryPropertyResolver(dictonary);
+                    mavenConfiguration = new MavenConfigurationImpl(resolver, 
ServiceConstants.PID);
+                }
+            }
+        } catch (IOException e) {
+            logger.error("Error retrieving maven configuration", e);
+        }
+        return mavenConfiguration;
+    }
+}

Modified: 
karaf/trunk/dev/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
URL: 
http://svn.apache.org/viewvc/karaf/trunk/dev/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1356249&r1=1356248&r2=1356249&view=diff
==============================================================================
--- karaf/trunk/dev/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml 
(original)
+++ karaf/trunk/dev/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml 
Mon Jul  2 14:25:46 2012
@@ -19,11 +19,17 @@
 
     <reference id="configurationAdmin" 
interface="org.osgi.service.cm.ConfigurationAdmin"/>
     <reference id="packageAdmin" 
interface="org.osgi.service.packageadmin.PackageAdmin"/>
+    <reference id="bundleService" 
interface="org.apache.karaf.bundle.core.BundleService"/>
 
     <bean id="watcher" 
class="org.apache.karaf.dev.core.internal.BundleWatcherImpl" 
init-method="start" destroy-method="stop">
         <argument ref="blueprintBundleContext"/>
-        <argument ref="configurationAdmin"/>
         <argument ref="packageAdmin"/>
+        <argument ref="mavenConfigService"/>
+        <argument ref="bundleService"/>
+    </bean>
+
+    <bean id="mavenConfigService" 
class="org.apache.karaf.dev.core.internal.MavenConfigService">
+        <argument ref="configurationAdmin"/>
     </bean>
     
     <service ref="watcher" 
interface="org.apache.karaf.dev.core.BundleWatcher"/>


Reply via email to