@@ -94,13 +94,12 @@ public String getRaw(String rawKey) {
9494
9595 @ Override
9696 public String put (String key , String value ) {
97- String rawKey = escape (key , true );
9897 String rawValue = escape (value , false );
9998 if (values .containsKey (key )) {
100- int idx = indexOf (key );
101- addNew (idx , rawKey , key , rawValue , value );
99+ replaceValue (key , rawValue , value );
102100 } else {
103- addNew (-1 , rawKey , key , rawValue , value );
101+ String rawKey = escape (key , true );
102+ addNewKeyValue (rawKey , key , rawValue , value );
104103 }
105104 return values .put (key , value );
106105 }
@@ -117,36 +116,34 @@ public String putRaw(String rawKey, String rawValue) {
117116 String key = unescape (rawKey );
118117 String value = unescape (rawValue );
119118 if (values .containsKey (key )) {
120- int idx = indexOf (key );
121- addNew (idx , rawKey , key , rawValue , value );
119+ replaceValue (key , rawValue , value );
122120 } else {
123- addNew (- 1 , rawKey , key , rawValue , value );
121+ addNewKeyValue ( rawKey , key , rawValue , value );
124122 }
125123 return values .put (key , value );
126124 }
127125
126+ private void replaceValue (String key , String rawValue , String value ) {
127+ int idx = indexOf (key );
128+ tokens .remove (idx + 2 );
129+ tokens .add (
130+ idx + 2 , new PropertiesParser .Token (PropertiesParser .Type .VALUE , rawValue , value ));
131+ }
132+
128133 // Add new tokens to the end of the list of tokens
129- private void addNew ( int index , String rawKey , String key , String rawValue , String value ) {
134+ private void addNewKeyValue ( String rawKey , String key , String rawValue , String value ) {
130135 // Add a newline whitespace token if necessary
131- int idx = index >= 0 ? index : tokens .size ();
136+ int idx = tokens .size ();
132137 if (idx > 0 ) {
133138 PropertiesParser .Token token = tokens .get (idx - 1 );
134139 if (token .getType () != PropertiesParser .Type .WHITESPACE ) {
135- addToken ( index , new PropertiesParser .Token (PropertiesParser .Type .WHITESPACE , "\n " ));
140+ tokens . add ( new PropertiesParser .Token (PropertiesParser .Type .WHITESPACE , "\n " ));
136141 }
137142 }
138143 // Add tokens for key, separator and value
139- addToken (index , new PropertiesParser .Token (PropertiesParser .Type .KEY , rawKey , key ));
140- addToken (index , new PropertiesParser .Token (PropertiesParser .Type .SEPARATOR , "=" ));
141- addToken (index , new PropertiesParser .Token (PropertiesParser .Type .VALUE , rawValue , value ));
142- }
143-
144- private void addToken (int index , PropertiesParser .Token token ) {
145- if (index >= 0 ) {
146- tokens .add (index , token );
147- } else {
148- tokens .add (token );
149- }
144+ tokens .add (new PropertiesParser .Token (PropertiesParser .Type .KEY , rawKey , key ));
145+ tokens .add (new PropertiesParser .Token (PropertiesParser .Type .SEPARATOR , "=" ));
146+ tokens .add (new PropertiesParser .Token (PropertiesParser .Type .VALUE , rawValue , value ));
150147 }
151148
152149 @ Override
0 commit comments