in src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java [437:495]
private ObjectName convertResourcePathToObjectName(final String path) {
final int nameSlash = path.lastIndexOf('/');
if ( nameSlash != -1 ) {
final int typeSlash = path.lastIndexOf('/', nameSlash - 1);
if ( typeSlash != -1 ) {
final String domain = path.substring(0, typeSlash).replace('/', '.');
final String type = decode(path.substring(typeSlash + 1, nameSlash));
final String nameAndProps = path.substring(nameSlash + 1);
final int colonPos = nameAndProps.indexOf(':');
final String name;
final String props;
if ( colonPos == -1 ) {
name = decode(nameAndProps);
props = null;
} else {
name = decode(nameAndProps.substring(0, colonPos));
props = nameAndProps.substring(colonPos + 1);
}
final StringBuilder sb = new StringBuilder();
sb.append(domain);
sb.append(':');
boolean hasProps = false;
if ( !MARKER_NOTYPE.equals(type)) {
sb.append("type=");
sb.append(type);
hasProps = true;
}
if ( !MARKER_NONAME.equals(name) ) {
if ( hasProps ) {
sb.append(",");
}
sb.append("name=");
sb.append(name);
hasProps = true;
}
if ( props != null ) {
final String[] propArray = props.split(",");
for(final String keyValue : propArray) {
if ( hasProps ) {
sb.append(",");
}
final int pos = keyValue.indexOf('=');
if ( pos == -1 ) {
return null;
}
sb.append(decode(keyValue.substring(0, pos)));
sb.append('=');
sb.append(decode(keyValue.substring(pos+1)));
}
}
try {
return new ObjectName(sb.toString());
} catch (final MalformedObjectNameException e) {
// ignore
}
}
}
return null;
}