Repository: karaf Updated Branches: refs/heads/master ffb706534 -> 1a94fcc5b
[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/1a94fcc5 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/1a94fcc5 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/1a94fcc5 Branch: refs/heads/master Commit: 1a94fcc5bd6f7740c071f288be65fc26fe6d4c98 Parents: ffb7065 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 07:54:26 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/1a94fcc5/jndi/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java ---------------------------------------------------------------------- diff --git a/jndi/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java b/jndi/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java index 68d6b94..0508462 100644 --- a/jndi/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java +++ b/jndi/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"; @Override @@ -63,7 +63,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); } } @@ -83,10 +85,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()); } } } @@ -235,7 +241,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)) {
