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/08/10 20:31:18 UTC

karaf git commit: Reverted new command changes

Repository: karaf
Updated Branches:
  refs/heads/master aa6bab593 -> 37025ac14


Reverted new command changes


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

Branch: refs/heads/master
Commit: 37025ac14ee45929749bbe580099f3a596be28bc
Parents: aa6bab5
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Mon Aug 10 20:30:49 2015 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Mon Aug 10 20:30:49 2015 +0200

----------------------------------------------------------------------
 .../src/main/feature/maven-metadata-local.xml   | 20 -------
 .../karaf/shell/commands/impl/NewAction.java    | 56 ++------------------
 2 files changed, 5 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/37025ac1/demos/deployer/kar/src/main/feature/maven-metadata-local.xml
----------------------------------------------------------------------
diff --git a/demos/deployer/kar/src/main/feature/maven-metadata-local.xml b/demos/deployer/kar/src/main/feature/maven-metadata-local.xml
deleted file mode 100644
index 5d6ed69..0000000
--- a/demos/deployer/kar/src/main/feature/maven-metadata-local.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<metadata modelVersion="1.1.0">
-  <groupId>org.apache.karaf.demos</groupId>
-  <artifactId>my-kar</artifactId>
-  <version>4.0.1-SNAPSHOT</version>
-  <versioning>
-    <snapshot>
-      <localCopy>true</localCopy>
-    </snapshot>
-    <lastUpdated>20150810090955</lastUpdated>
-    <snapshotVersions>
-      <snapshotVersion>
-        <classifier>features</classifier>
-        <extension>xml</extension>
-        <value>4.0.1-SNAPSHOT</value>
-        <updated>20150810090955</updated>
-      </snapshotVersion>
-    </snapshotVersions>
-  </versioning>
-</metadata>

http://git-wip-us.apache.org/repos/asf/karaf/blob/37025ac1/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/NewAction.java
----------------------------------------------------------------------
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/NewAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/NewAction.java
index 11df127..c2d2a86 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/NewAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/NewAction.java
@@ -16,6 +16,7 @@
  */
 package org.apache.karaf.shell.commands.impl;
 
+import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Type;
@@ -30,16 +31,10 @@ import java.util.Map;
 import org.apache.karaf.shell.api.action.Action;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Reference;
 import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.apache.karaf.shell.support.converter.DefaultConverter;
 import org.apache.karaf.shell.support.converter.GenericType;
 import org.apache.karaf.shell.support.converter.ReifiedType;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.wiring.BundleCapability;
-import org.osgi.framework.wiring.BundleRevision;
-import org.osgi.framework.wiring.BundleWiring;
 
 /**
  * Instantiate a new object
@@ -48,30 +43,22 @@ import org.osgi.framework.wiring.BundleWiring;
 @Service
 public class NewAction implements Action {
 
-    @Argument(name = "class", index = 0, multiValued = false, required = true, description = "FQN of the class to load")
-    String clazzName;
+    @Argument(name = "class", index = 0, multiValued = false, required = true, description = "The object class")
+    Class clazz;
 
     @Argument(name = "args", index = 1, multiValued = true, required = false, description = "Constructor arguments")
     List<Object> args;
 
     boolean reorderArguments;
 
-    protected DefaultConverter converter;
-    
-    @Reference
-    BundleContext context;
+    protected DefaultConverter converter = new DefaultConverter(getClass().getClassLoader());
 
     @Override
     public Object execute() throws Exception {
         if (args == null) {
             args = Collections.emptyList();
         }
-        String packageName = getPackageName(clazzName);
-        ClassLoader classLoader = getClassLoaderForPackage(packageName);
-        converter = new DefaultConverter(classLoader);
-        Class<?> clazz = (Class<?>)converter.convert(clazzName, Class.class);
         // Handle arrays
-        /*
         if (clazz.isArray()) {
             Object obj = Array.newInstance(clazz.getComponentType(), args.size());
             for (int i = 0; i < args.size(); i++) {
@@ -79,7 +66,6 @@ public class NewAction implements Action {
             }
             return obj;
         }
-        */
         // Map of matching constructors
         Map<Constructor, List<Object>> matches = findMatchingConstructors(clazz, args, Arrays.asList(new ReifiedType[args.size()]));
         if (matches.size() == 1) {
@@ -96,44 +82,12 @@ public class NewAction implements Action {
         }
     }
 
-    private String getPackageName(String name) {
-        int nameSeperator = name.lastIndexOf(".");
-        if (nameSeperator <= 0) {
-            return null;
-        }
-        return name.substring(0, nameSeperator - 1);
-    }
-
-    /**
-     * Get class loader offering a named package. This only works if we do not care
-     * which package we get in case of several package versions
-     *  
-     * @param reqPackageName
-     * @return
-     */
-    private ClassLoader getClassLoaderForPackage(String reqPackageName) {
-        Bundle[] bundles = context.getBundles();
-        for (Bundle bundle : bundles) {
-            BundleRevision rev = bundle.adapt(BundleRevision.class);
-            if (rev != null) {
-                List<BundleCapability> caps = rev.getDeclaredCapabilities(BundleRevision.PACKAGE_NAMESPACE);
-                for (BundleCapability cap : caps) {
-                    Map<String, Object> attr = cap.getAttributes();
-                    String packageName = (String)attr.get(BundleRevision.PACKAGE_NAMESPACE);
-                    if (packageName.equals(reqPackageName)) {
-                        BundleWiring wiring = bundle.adapt(BundleWiring.class);
-                        return wiring.getClassLoader();
-                    }
-                }
-            }
-        }
-        return null;
-    }
 
     //
     // Code below comes from Aries blueprint implementation.  Given this code is not available
     // from a public API it has been copied here.
     //
+
     private Object newInstance(Constructor constructor, Object... args) throws Exception {
         return constructor.newInstance(args);
     }