@@ -41,25 +41,39 @@ public static void main(String[] args) {
4141 }
4242
4343 try {
44- String sparams = new String (Files .readAllBytes (Paths .get (inpath + "1/concore.params" )));
44+ String sparams = new String (Files .readAllBytes (Paths .get (inpath + "1/concore.params" )), java . nio . charset . StandardCharsets . UTF_8 );
4545 if (sparams .length () > 0 && sparams .charAt (0 ) == '"' ) { // windows keeps "" need to remove
4646 sparams = sparams .substring (1 );
4747 sparams = sparams .substring (0 , sparams .indexOf ('"' ));
4848 }
49- if (!sparams .equals ("{" )) {
49+ // Try parsing as dict literal first (matches Python parse_params logic)
50+ sparams = sparams .trim ();
51+ if (sparams .startsWith ("{" ) && sparams .endsWith ("}" )) {
52+ try {
53+ Object parsed = literalEval (sparams );
54+ if (parsed instanceof Map ) {
55+ @ SuppressWarnings ("unchecked" )
56+ Map <String , Object > parsedMap = (Map <String , Object >) parsed ;
57+ params = parsedMap ;
58+ }
59+ } catch (Exception e ) {
60+ System .out .println ("bad params: " + sparams );
61+ }
62+ } else if (!sparams .isEmpty ()) {
63+ // Fallback: convert key=value,key=value format to dict
5064 System .out .println ("converting sparams: " + sparams );
5165 sparams = "{'" + sparams .replaceAll ("," , ",'" ).replaceAll ("=" , "':" ).replaceAll (" " , "" ) + "}" ;
5266 System .out .println ("converted sparams: " + sparams );
53- }
54- try {
55- Object parsed = literalEval (sparams );
56- if (parsed instanceof Map ) {
57- @ SuppressWarnings ("unchecked" )
58- Map <String , Object > parsedMap = (Map <String , Object >) parsed ;
59- params = parsedMap ;
67+ try {
68+ Object parsed = literalEval (sparams );
69+ if (parsed instanceof Map ) {
70+ @ SuppressWarnings ("unchecked" )
71+ Map <String , Object > parsedMap = (Map <String , Object >) parsed ;
72+ params = parsedMap ;
73+ }
74+ } catch (Exception e ) {
75+ System .out .println ("bad params: " + sparams );
6076 }
61- } catch (Exception e ) {
62- System .out .println ("bad params: " + sparams );
6377 }
6478 } catch (IOException e ) {
6579 params = new HashMap <>();
@@ -73,7 +87,7 @@ public static void main(String[] args) {
7387 * Returns empty map if file is empty or malformed (matches Python safe_literal_eval).
7488 */
7589 private static Map <String , Object > parseFile (String filename ) throws IOException {
76- String content = new String (Files .readAllBytes (Paths .get (filename )));
90+ String content = new String (Files .readAllBytes (Paths .get (filename )), java . nio . charset . StandardCharsets . UTF_8 );
7791 content = content .trim ();
7892 if (content .isEmpty ()) {
7993 return new HashMap <>();
@@ -182,7 +196,6 @@ private static List<Object> read(int port, String name, String initstr) {
182196
183197 if (ins .length () == 0 ) {
184198 System .out .println ("Max retries reached for " + filePath + ", using default value." );
185- s += initstr ;
186199 return defaultVal ;
187200 }
188201
@@ -197,7 +210,6 @@ private static List<Object> read(int port, String name, String initstr) {
197210 } catch (Exception e ) {
198211 System .out .println ("Error parsing " + ins + ": " + e .getMessage ());
199212 }
200- s += initstr ;
201213 return defaultVal ;
202214 }
203215
@@ -404,7 +416,12 @@ Map<String, Object> parseDict() {
404416 pos ++; // skip ':'
405417 skipWhitespace ();
406418 Object value = parseExpression ();
407- map .put (key .toString (), value );
419+ if (!(key instanceof String )) {
420+ throw new IllegalArgumentException (
421+ "Dict keys must be non-null strings, but got: "
422+ + (key == null ? "null" : key .getClass ().getSimpleName ()));
423+ }
424+ map .put ((String ) key , value );
408425 skipWhitespace ();
409426 if (pos >= input .length ()) {
410427 throw new IllegalArgumentException ("Unterminated dict: missing '}'" );
0 commit comments