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);
}