1 23 24 29 30 31 package com.sun.cli.jmx.cmd; 32 33 import javax.management.remote.JMXServiceURL ; 34 import javax.management.remote.JMXConnector ; 35 import java.net.MalformedURLException ; 36 37 import java.util.Map ; 38 import java.util.HashMap ; 39 40 import com.sun.cli.jmx.support.ArgParserImpl; 41 import com.sun.cli.jmx.support.ArgParserException; 42 43 44 public final class ConnectInfo 45 { 46 public final Map mParams; 47 48 public final static char ESCAPE_CHAR = '\\'; 49 public final static char VALUE_DELIM = '='; 50 public final static char PAIR_DELIM = ','; 51 52 53 57 static Map 58 connectStringToParams( final String connectString ) 59 throws ArgParserException 60 { 61 final Map m = new java.util.HashMap (); 62 63 final ArgParserImpl.ParseChars parseChars = new ArgParserImpl.ParseChars(); 64 parseChars.mArgDelim = PAIR_DELIM; 65 final ArgParserImpl parser = new ArgParserImpl(); 66 67 final String [] pairs = parser.ParseNames( connectString ); 68 69 for( int i = 0; i < pairs.length; ++i ) 70 { 71 final String pair = pairs[ i ]; 72 final int delimIndex = pair.indexOf( VALUE_DELIM ); 73 74 if ( delimIndex <= 0 ) 75 { 76 throw new IllegalArgumentException ( "Illegal connect string: " + connectString ); 77 } 78 79 80 final String name = pair.substring( 0, delimIndex ); 81 final String value = pair.substring( delimIndex + 1, pair.length() ); 82 83 m.put( name, value ); 84 } 85 86 return( m ); 87 } 88 89 public 90 ConnectInfo( final String connectString ) 91 throws ArgParserException 92 { 93 this( connectStringToParams( connectString ) ); 94 } 95 96 public 97 ConnectInfo( final Map params ) 98 throws ArgParserException 99 { 100 mParams = params; 101 } 102 103 104 public 105 ConnectInfo( final ConnectInfo rhs ) 106 { 107 mParams = new HashMap (); 108 mParams.putAll( rhs.mParams ); 109 } 110 111 112 static String 113 escapeString( char charToEscape, String stringToEscape ) 114 { 115 String result = stringToEscape; 116 117 if ( result.indexOf( charToEscape ) >= 0 ) 118 { 119 result = result.replaceAll( "" + charToEscape, 120 ESCAPE_CHAR + "" + charToEscape ); 121 } 122 return( result ); 123 } 124 125 static String 126 escapeString( String value ) 127 { 128 String escapedValue = escapeString( PAIR_DELIM, value ); 129 escapedValue = escapeString( VALUE_DELIM, escapedValue ); 130 131 return( escapedValue ); 132 } 133 134 String 135 paramsToString( ) 136 { 137 final java.util.Iterator iter = mParams.keySet().iterator(); 138 139 StringBuffer buf = new StringBuffer (); 140 while ( iter.hasNext() ) 141 { 142 final String key = (String )iter.next(); 143 final String value =(String )mParams.get( key ); 144 145 final String pair = key + VALUE_DELIM + escapeString( value ); 146 147 buf.append( PAIR_DELIM + pair ); 148 } 149 150 String result = buf.toString(); 151 if ( result.length() != 0 ) 152 { 153 result = result.substring( 1, result.length() ); 155 } 156 157 return( result ); 158 } 159 160 String 161 getParam( String name ) 162 { 163 return( (String )mParams.get( name ) ); 164 } 165 166 public String 167 toString() 168 { 169 return( paramsToString() ); 170 } 171 172 173 public boolean 174 equals( Object o ) 175 { 176 if ( o == this ) 177 { 178 return( true ); 179 } 180 181 if ( ! (o instanceof ConnectInfo ) ) 182 { 183 return( false ); 184 } 185 186 final ConnectInfo rhs = (ConnectInfo)o; 187 188 return( mParams.equals( rhs.mParams ) ); 189 } 190 } 191 192 193 194 195 196 197 198 | Popular Tags |