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 2012/01/04 13:22:38 UTC
svn commit: r1227132 - in /karaf/trunk:
assemblies/apache-karaf/src/main/filtered-resources/etc/ features/command/
features/command/src/main/java/org/apache/karaf/features/command/
features/command/src/main/java/org/apache/karaf/features/command/comple...
Author: cschneider
Date: Wed Jan 4 12:22:38 2012
New Revision: 1227132
URL: http://svn.apache.org/viewvc?rev=1227132&view=rev
Log:
KARAF-1132 Adding feature:chooseurl command for karaf 3
Added:
karaf/trunk/assemblies/apache-karaf/src/main/filtered-resources/etc/org.apache.karaf.features.repos.cfg
karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/Artifact.java
karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/ChooseUrlCommand.java
karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/FeatureFinder.java
karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/completers/FeatureRepoNameCompleter.java
Modified:
karaf/trunk/features/command/pom.xml
karaf/trunk/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml
Added: karaf/trunk/assemblies/apache-karaf/src/main/filtered-resources/etc/org.apache.karaf.features.repos.cfg
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/apache-karaf/src/main/filtered-resources/etc/org.apache.karaf.features.repos.cfg?rev=1227132&view=auto
==============================================================================
--- karaf/trunk/assemblies/apache-karaf/src/main/filtered-resources/etc/org.apache.karaf.features.repos.cfg (added)
+++ karaf/trunk/assemblies/apache-karaf/src/main/filtered-resources/etc/org.apache.karaf.features.repos.cfg Wed Jan 4 12:22:38 2012
@@ -0,0 +1,5 @@
+camel=org.apache.camel.karaf:apache-camel:xml:features:(0,]
+cxf=org.apache.cxf.karaf:apache-cxf:xml:features:(0,]
+activemq=org.apache.activemq:activemq-karaf:xml:features:(0,]
+jclouds=org.jclouds.karaf:feature:xml:features:(0,]
+openejb=org.apache.openejb:openejb-feature:xml:features:(0,]
Modified: karaf/trunk/features/command/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/features/command/pom.xml?rev=1227132&r1=1227131&r2=1227132&view=diff
==============================================================================
--- karaf/trunk/features/command/pom.xml (original)
+++ karaf/trunk/features/command/pom.xml Wed Jan 4 12:22:38 2012
@@ -44,6 +44,11 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.karaf.features</groupId>
<artifactId>org.apache.karaf.features.core</artifactId>
</dependency>
Added: karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/Artifact.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/Artifact.java?rev=1227132&view=auto
==============================================================================
--- karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/Artifact.java (added)
+++ karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/Artifact.java Wed Jan 4 12:22:38 2012
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.karaf.features.command;
+
+import java.net.URI;
+
+/**
+ * Simple abstraction of a maven artifact to avoid external deps
+ */
+public class Artifact {
+ String groupId;
+ String artifactId;
+ String version;
+ String extension;
+ String classifier;
+
+ public Artifact(String coords) {
+ String[] coordsAr = coords.split(":");
+ this.groupId = coordsAr[0];
+ this.artifactId = coordsAr[1];
+ this.version = coordsAr[4];
+ this.extension = coordsAr[2];
+ this.classifier = coordsAr[3];
+ }
+
+ public Artifact(String coords, String version) {
+ this(coords);
+ this.version = version;
+ }
+
+ public URI getPaxUrlForArtifact(String version) {
+ String uriSt = "mvn:" + this.groupId + "/" + this.artifactId + "/" + version + "/" + this.extension + "/" + this.classifier;
+ try {
+ return new URI(uriSt);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+}
Added: karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/ChooseUrlCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/ChooseUrlCommand.java?rev=1227132&view=auto
==============================================================================
--- karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/ChooseUrlCommand.java (added)
+++ karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/ChooseUrlCommand.java Wed Jan 4 12:22:38 2012
@@ -0,0 +1,63 @@
+package org.apache.karaf.features.command;
+/*
+ * 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.
+ */
+
+
+import java.net.URI;
+
+import org.apache.karaf.features.FeaturesService;
+import org.apache.karaf.shell.commands.Argument;
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.console.AbstractAction;
+
+/**
+ * Concatenate and print files and/or URLs.
+ *
+ * @version $Rev: 593392 $ $Date: 2007-11-09 03:14:15 +0100 (Fri, 09 Nov 2007) $
+ */
+@Command(scope = "feature", name = "chooseurl", description = "Add a repository url for well known features")
+public class ChooseUrlCommand extends AbstractAction {
+
+ @Argument(index = 0, name = "", description = "", required = true, multiValued = false)
+ private String name;
+
+ @Argument(index = 1, name = "", description = "", required = false, multiValued = false)
+ private String version;
+
+ private FeatureFinder featureFinder;
+ private FeaturesService featuresService;
+
+ public void setFeatureFinder(FeatureFinder featureFinder) {
+ this.featureFinder = featureFinder;
+ }
+
+ public void setFeaturesService(FeaturesService featuresService) {
+ this.featuresService = featuresService;
+ }
+
+ protected Object doExecute() throws Exception {
+ String effectiveVersion = (version == null) ? "LATEST" : version;
+ URI uri = featureFinder.getUriFor(name, effectiveVersion);
+ if (uri == null) {
+ throw new RuntimeException("No feature found for name " + name + " and version " + version);
+ }
+ System.out.println("adding feature url " + uri);
+ featuresService.addRepository(uri);
+ return null;
+ }
+
+}
Added: karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/FeatureFinder.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/FeatureFinder.java?rev=1227132&view=auto
==============================================================================
--- karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/FeatureFinder.java (added)
+++ karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/FeatureFinder.java Wed Jan 4 12:22:38 2012
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+package org.apache.karaf.features.command;
+
+import java.net.URI;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.osgi.service.cm.ConfigurationException;
+import org.osgi.service.cm.ManagedService;
+
+public class FeatureFinder implements ManagedService {
+ Map<String, String> nameToArtifactMap = new HashMap<String, String>();
+ public String[] getNames() {
+ return nameToArtifactMap.keySet().toArray(new String[] {});
+ }
+
+ public URI getUriFor(String name, String version) {
+ String coords = nameToArtifactMap.get(name);
+ if (coords == null) {
+ return null;
+ }
+ Artifact artifact = new Artifact(coords);
+ return artifact.getPaxUrlForArtifact(version);
+ }
+
+ @SuppressWarnings("rawtypes")
+ public void updated(Dictionary properties) throws ConfigurationException {
+ nameToArtifactMap.clear();
+ Enumeration keys = properties.keys();
+ while (keys.hasMoreElements()) {
+ String key = (String)keys.nextElement();
+ if (!"felix.fileinstall.filename".equals(key) && !"service.pid".equals(key)) {
+ nameToArtifactMap.put(key, (String)properties.get(key));
+ }
+ }
+ }
+
+}
Added: karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/completers/FeatureRepoNameCompleter.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/completers/FeatureRepoNameCompleter.java?rev=1227132&view=auto
==============================================================================
--- karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/completers/FeatureRepoNameCompleter.java (added)
+++ karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/completers/FeatureRepoNameCompleter.java Wed Jan 4 12:22:38 2012
@@ -0,0 +1,23 @@
+package org.apache.karaf.features.command.completers;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.karaf.features.command.FeatureFinder;
+import org.apache.karaf.shell.console.Completer;
+import org.apache.karaf.shell.console.completer.StringsCompleter;
+
+public class FeatureRepoNameCompleter implements Completer {
+
+ FeatureFinder featureFinder;
+
+ public void setFeatureFinder(FeatureFinder featureFinder) {
+ this.featureFinder = featureFinder;
+ }
+
+ public int complete(final String buffer, final int cursor, final List candidates) {
+ StringsCompleter delegate = new StringsCompleter(Arrays.asList(featureFinder.getNames()));
+ return delegate.complete(buffer, cursor, candidates);
+ }
+
+}
Modified: karaf/trunk/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml?rev=1227132&r1=1227131&r2=1227132&view=diff
==============================================================================
--- karaf/trunk/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml (original)
+++ karaf/trunk/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml Wed Jan 4 12:22:38 2012
@@ -74,8 +74,31 @@
<ref component-id="allFeatureCompleter" />
</completers>
</command>
+ <command>
+ <action class="org.apache.karaf.features.command.ChooseUrlCommand">
+ <property name="featureFinder" ref="featureFinder" />
+ <property name="featuresService" ref="featuresService" />
+ </action>
+ <completers>
+ <ref component-id="featureRepoCompleter" />
+ <null/>
+ </completers>
+ </command>
</command-bundle>
+ <bean id="featureRepoCompleter" class="org.apache.karaf.features.command.completers.FeatureRepoNameCompleter">
+ <property name="featureFinder" ref="featureFinder" />
+ </bean>
+
+ <bean id="featureFinder" class="org.apache.karaf.features.command.FeatureFinder">
+ </bean>
+
+ <service ref="featureFinder" interface="org.osgi.service.cm.ManagedService" >
+ <service-properties>
+ <entry key="service.pid" value="org.apache.karaf.features.repos" />
+ </service-properties>
+ </service>
+
<reference id="featuresService" interface="org.apache.karaf.features.FeaturesService" />
<bean id="uninstalledFeatureCompleter" class="org.apache.karaf.features.command.completers.AvailableFeatureCompleter">