You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:50:31 UTC

[sling-org-apache-sling-jmx-provider] 06/11: SLING-2999 : JMX Resource Provider

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.jmx.provider-0.5.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jmx-provider.git

commit 94e51968fa238dcd1e482a2678e0c55cd4f3e123
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Thu Aug 15 06:50:26 2013 +0000

    SLING-2999 : JMX Resource Provider
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/jmxprovider@1514180 13f79535-47bb-0310-9956-ffa450edef68
---
 .../jmx/provider/impl/JMXResourceProvider.java     | 47 +++++++++++++++++-----
 1 file changed, 37 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java b/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java
index 60d9fe2..5cdd7a3 100644
--- a/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java
+++ b/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java
@@ -18,7 +18,10 @@
  */
 package org.apache.sling.jmx.provider.impl;
 
+import java.io.UnsupportedEncodingException;
 import java.lang.management.ManagementFactory;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -283,17 +286,35 @@ public class JMXResourceProvider implements ResourceProvider {
     private static final String MARKER_NOTYPE = "{notype}";
     private static final String MARKER_NONAME = "{noname}";
 
+    private String encode(final String value) {
+        try {
+            return URLEncoder.encode(value, "UTF-8");
+        } catch (final UnsupportedEncodingException uee) {
+            // this should never happen, UTF-8 is always supported
+            return value;
+        }
+    }
+
+    private String decode(final String value) {
+        try {
+            return URLDecoder.decode(value, "UTF-8");
+        } catch (final UnsupportedEncodingException uee) {
+            // this should never happen, UTF-8 is always supported
+            return value;
+        }
+    }
+
     private String convertObjectNameToResourcePath(final ObjectName name) {
         final StringBuilder sb = new StringBuilder(name.getDomain().replace('.', '/'));
         sb.append('/');
         if ( name.getKeyProperty("type") != null ) {
-            sb.append(name.getKeyProperty("type"));
+            sb.append(encode(name.getKeyProperty("type")));
         } else {
             sb.append(MARKER_NOTYPE);
         }
         sb.append('/');
         if ( name.getKeyProperty("name") != null ) {
-            sb.append(name.getKeyProperty("name"));
+            sb.append(encode(name.getKeyProperty("name")));
         } else {
             sb.append(MARKER_NONAME);
         }
@@ -308,9 +329,9 @@ public class JMXResourceProvider implements ResourceProvider {
             } else {
                 sb.append(',');
             }
-            sb.append(entry.getKey());
+            sb.append(encode(entry.getKey()));
             sb.append('=');
-            sb.append(entry.getValue());
+            sb.append(encode(entry.getValue()));
         }
         return sb.toString();
     }
@@ -321,16 +342,16 @@ public class JMXResourceProvider implements ResourceProvider {
             final int typeSlash = path.lastIndexOf('/', nameSlash - 1);
             if ( typeSlash != -1 ) {
                 final String domain = path.substring(0, typeSlash).replace('/', '.');
-                final String type = path.substring(typeSlash + 1, nameSlash);
+                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 = nameAndProps;
+                    name = decode(nameAndProps);
                     props = null;
                 } else {
-                    name = nameAndProps.substring(0,  colonPos);
+                    name = decode(nameAndProps.substring(0,  colonPos));
                     props = nameAndProps.substring(colonPos + 1);
                 }
                 final StringBuilder sb = new StringBuilder();
@@ -351,10 +372,16 @@ public class JMXResourceProvider implements ResourceProvider {
                     hasProps = true;
                 }
                 if ( props != null ) {
-                    if ( hasProps ) {
-                        sb.append(",");
+                    final String[] propArray = props.split(",");
+                    for(final String keyValue : propArray) {
+                        if ( hasProps ) {
+                            sb.append(",");
+                        }
+                        final int pos = keyValue.indexOf('=');
+                        sb.append(decode(keyValue.substring(0, pos)));
+                        sb.append('=');
+                        sb.append(decode(keyValue.substring(pos+1)));
                     }
-                    sb.append(props);
                 }
                 try {
                     return new ObjectName(sb.toString());

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.