Skip to content

Commit 222c1bd

Browse files
committed
SLING-7752 - Deserializing and serializing a feature model file suffles the configurations
Committed on behalf of @andreituicu with many thanks! Pull request closed #2.
1 parent c034687 commit 222c1bd

5 files changed

Lines changed: 15 additions & 13 deletions

File tree

src/main/java/org/apache/sling/feature/Configuration.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
*/
1717
package org.apache.sling.feature;
1818

19-
import java.util.Dictionary;
20-
import java.util.Hashtable;
19+
import java.util.LinkedHashMap;
20+
import java.util.Map;
2121

2222

2323
/**
@@ -44,7 +44,7 @@ public class Configuration
4444
private final String factoryPid;
4545

4646
/** The properties. */
47-
private final Dictionary<String, Object> properties = new Hashtable<>();
47+
private final Map<String, Object> properties = new LinkedHashMap<>();
4848

4949
/**
5050
* Create a new configuration
@@ -139,7 +139,7 @@ public boolean isFactoryConfiguration() {
139139
* Get all properties of the configuration.
140140
* @return The properties
141141
*/
142-
public Dictionary<String, Object> getProperties() {
142+
public Map<String, Object> getProperties() {
143143
return this.properties;
144144
}
145145

src/main/java/org/apache/sling/feature/Feature.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@
1717
package org.apache.sling.feature;
1818

1919
import java.util.ArrayList;
20-
import java.util.Enumeration;
2120
import java.util.List;
2221

2322
import org.apache.felix.utils.resource.CapabilityImpl;
2423
import org.apache.felix.utils.resource.RequirementImpl;
2524
import org.osgi.resource.Capability;
2625
import org.osgi.resource.Requirement;
2726

27+
import java.util.Iterator;
28+
2829
/**
2930
* A feature consists of
3031
* <ul>
@@ -310,9 +311,9 @@ public Feature copy(final ArtifactId id) {
310311
// configurations
311312
for(final Configuration cfg : this.getConfigurations()) {
312313
final Configuration c = cfg.isFactoryConfiguration() ? new Configuration(cfg.getFactoryPid(), cfg.getName()) : new Configuration(cfg.getPid());
313-
final Enumeration<String> keyEnum = cfg.getProperties().keys();
314-
while ( keyEnum.hasMoreElements() ) {
315-
final String key = keyEnum.nextElement();
314+
final Iterator<String> keyEnum = cfg.getProperties().keySet().iterator();
315+
while ( keyEnum.hasNext() ) {
316+
final String key = keyEnum.next();
316317
c.getProperties().put(key, cfg.getProperties().get(key));
317318
}
318319
result.getConfigurations().add(c);

src/main/java/org/apache/sling/feature/builder/BuilderUtil.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.io.StringReader;
3131
import java.io.StringWriter;
3232
import java.util.Enumeration;
33+
import java.util.Iterator;
3334
import java.util.List;
3435
import java.util.Map;
3536
import java.util.stream.Stream;
@@ -148,9 +149,9 @@ static void mergeConfigurations(final Configurations target, final Configuration
148149
if ( current.compareTo(cfg) == 0 ) {
149150
found = true;
150151
// merge / override properties
151-
final Enumeration<String> i = cfg.getProperties().keys();
152-
while ( i.hasMoreElements() ) {
153-
final String key = i.nextElement();
152+
final Iterator<String> i = cfg.getProperties().keySet().iterator();
153+
while ( i.hasNext() ) {
154+
final String key = i.next();
154155
current.getProperties().put(key, cfg.getProperties().get(key));
155156
}
156157
break;

src/main/java/org/apache/sling/feature/builder/FeatureBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ public static Feature assemble(
214214
*/
215215
public static void resolveVariables(final Feature feature, final KeyValueMap additionalVariables) {
216216
for(final Configuration cfg : feature.getConfigurations()) {
217-
final Set<String> keys = new HashSet<>(Collections.list(cfg.getProperties().keys()));
217+
final Set<String> keys = new HashSet<>(cfg.getProperties().keySet());
218218
for(final String key : keys) {
219219
final Object value = cfg.getProperties().get(key);
220220
cfg.getProperties().put(key, replaceVariables(value, additionalVariables, feature));

src/main/java/org/apache/sling/feature/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* under the License.
1818
*/
1919

20-
@org.osgi.annotation.versioning.Version("0.1.0")
20+
@org.osgi.annotation.versioning.Version("0.2.0")
2121
package org.apache.sling.feature;
2222

2323

0 commit comments

Comments
 (0)