Repository: karaf Updated Branches: refs/heads/karaf-2.3.x 1a603a574 -> a61d063ba
[KARAF-3747] Handle local context aliasing Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/a61d063b Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/a61d063b Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/a61d063b Branch: refs/heads/karaf-2.3.x Commit: a61d063ba2682b917286f1cc432e36baad0cba0f Parents: 1a603a5 Author: Jean-Baptiste Onofré <[email protected]> Authored: Mon Jun 1 20:56:14 2015 +0200 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Tue Jun 2 15:52:16 2015 +0200 ---------------------------------------------------------------------- .../apache/karaf/jndi/internal/JndiServiceImpl.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/a61d063b/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java ---------------------------------------------------------------------- diff --git a/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java b/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java index d7ba7e4..8c35295 100644 --- a/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java +++ b/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java @@ -37,7 +37,7 @@ public class JndiServiceImpl implements JndiService { private BundleContext bundleContext; private ProxyManager proxyManager; - private final static String OSGI_JNDI_CONTEXT_PREFIX = "osgi:service/"; + private final static String OSGI_JNDI_CONTEXT_PREFIX = "osgi:service"; private final static String OSGI_JNDI_SERVICE_PROPERTY = "osgi.jndi.service.name"; public Map<String, String> names() throws Exception { @@ -61,7 +61,9 @@ public class JndiServiceImpl implements JndiService { if (proxyManager.isProxy(actualService)) { actualService = proxyManager.unwrap(actualService).call(); } - map.put(OSGI_JNDI_CONTEXT_PREFIX + service.getProperty(OSGI_JNDI_SERVICE_PROPERTY), actualService.getClass().getName()); + if (service.getProperty(OSGI_JNDI_SERVICE_PROPERTY).toString().startsWith("/")) + map.put(OSGI_JNDI_CONTEXT_PREFIX + service.getProperty(OSGI_JNDI_SERVICE_PROPERTY), actualService.getClass().getName()); + else map.put(OSGI_JNDI_CONTEXT_PREFIX + "/" + service.getProperty(OSGI_JNDI_SERVICE_PROPERTY), actualService.getClass().getName()); bundleContext.ungetService(service); } } @@ -81,10 +83,14 @@ public class JndiServiceImpl implements JndiService { } if (o instanceof Context) { StringBuilder sb = new StringBuilder(); - sb.append("/" + pair.getName()); + if (pair.getName().contains(":")) + sb.append(pair.getName()); + else sb.append("/" + pair.getName()); names((Context) o, sb, map); } else { - map.put("/" + pair.getName(), pair.getClassName()); + if (pair.getName().contains(":")) + map.put(pair.getName(), pair.getClassName()); + else map.put("/" + pair.getName(), pair.getClassName()); } } } @@ -229,7 +235,7 @@ public class JndiServiceImpl implements JndiService { ServiceReference<?>[] services = bundle.getRegisteredServices(); if (services != null) { for (ServiceReference service : services) { - if (service.getProperty(OSGI_JNDI_SERVICE_PROPERTY) != null && ((String) service.getProperty(OSGI_JNDI_SERVICE_PROPERTY)).equals(name.substring(OSGI_JNDI_CONTEXT_PREFIX.length()))) { + if (service.getProperty(OSGI_JNDI_SERVICE_PROPERTY) != null && ((String) service.getProperty(OSGI_JNDI_SERVICE_PROPERTY)).equals(name.substring(OSGI_JNDI_CONTEXT_PREFIX.length() + 1))) { Object actualService = bundleContext.getService(service); try { if (proxyManager.isProxy(actualService)) {
