in src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java [519:572]
private PathInfo parse(final String path) {
for(final String root : this.rootsWithSlash) {
if ( path.startsWith(root) ) {
final String subPath = path.substring(root.length());
if ( subPath.length() == 0 ) {
return new PathInfo(true);
}
// MBean name / path
String checkPath = subPath;
String pathInfo = null;
ObjectName objectName = null;
MBeanInfo mbi = null;
while ( checkPath.length() > 0 && mbi == null ) {
try {
objectName = this.convertResourcePathToObjectName(checkPath);
if ( objectName != null ) {
mbi = this.mbeanServer.getMBeanInfo(objectName);
}
} catch (final IntrospectionException e) {
// ignore
} catch (final InstanceNotFoundException e) {
// ignore
} catch (final ReflectionException e) {
// ignore
}
if ( mbi == null ) {
final int sep = checkPath.lastIndexOf('/');
if ( sep == -1 ) {
checkPath = "";
pathInfo = subPath;
} else {
checkPath = checkPath.substring(0, sep);
pathInfo = subPath.substring(sep + 1);
}
}
}
final PathInfo info = new PathInfo(pathInfo);
if ( mbi != null ) {
info.objectName = objectName;
info.mbeanInfo = mbi;
}
return info;
}
}
for(final String root : this.roots) {
if ( path.equals(root) ) {
return new PathInfo(true);
}
}
return null;
}