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"/>