Pankraz76 commented on code in PR #2436:
URL: https://github.com/apache/maven/pull/2436#discussion_r2128796874


##########
src/mdo/java/WrapperProperties.java:
##########
@@ -101,102 +88,89 @@ public void list(PrintWriter out) {
 
     @Override
     public int size() {
-        ensureInitialized();
-        return orderedProps.size();
+        return getter.get().size();
     }
 
     @Override
     public boolean isEmpty() {
-        ensureInitialized();
-        return orderedProps.isEmpty();
+        return getter.get().isEmpty();
     }
 
     @Override
     public Enumeration<Object> keys() {
-        ensureInitialized();
-        return orderedProps.keys();
+        return Collections.enumeration((Set) getter.get().keySet());
     }
 
     @Override
     public Enumeration<Object> elements() {
-        ensureInitialized();
-        return orderedProps.elements();
+        return Collections.enumeration((Collection) getter.get().values());
     }
 
     @Override
     public boolean contains(Object value) {
-        ensureInitialized();
-        return orderedProps.contains(value);
+        return getter.get().containsKey(value != null ? value.toString() : 
null);
     }
 
     @Override
     public boolean containsValue(Object value) {
-        ensureInitialized();
-        return orderedProps.containsValue(value);
+        return getter.get().containsValue(value);
     }
 
     @Override
     public boolean containsKey(Object key) {
-        ensureInitialized();
-        return orderedProps.containsKey(key);
+        return getter.get().containsKey(key);
     }
 
     @Override
     public Object get(Object key) {
-        ensureInitialized();
-        return orderedProps.get(key);
+        return getter.get().get(key);
     }
 
     @Override
     public synchronized String toString() {
-        ensureInitialized();
-        return orderedProps.toString();
+        return getter.get().toString();
     }
 
     @Override
     public Set<Object> keySet() {
-        ensureInitialized();
-        return orderedProps.keySet();
+        return new OrderedProperties(getter.get()).keySet();
     }
 
     @Override
     public Collection<Object> values() {
-        ensureInitialized();
-        return orderedProps.values();
+        return new OrderedProperties(getter.get()).values();
     }
 
     @Override
     public Set<Map.Entry<Object, Object>> entrySet() {
-        ensureInitialized();
-        return orderedProps.entrySet();
+        return new OrderedProperties(getter.get()).entrySet();
     }
 
     @Override
     public synchronized boolean equals(Object o) {
-        ensureInitialized();
         if (o instanceof WrapperProperties wrapperProperties) {
-            wrapperProperties.ensureInitialized();
-            return orderedProps.equals(wrapperProperties.orderedProps);
+            o = wrapperProperties.getter.get();
         }
-        return orderedProps.equals(o);
+        return getter.get().equals(o);
     }
 
     @Override
     public synchronized int hashCode() {
-        ensureInitialized();
-        return orderedProps.hashCode();
+        return getter.get().hashCode();
     }
 
     @Override
     public Object getOrDefault(Object key, Object defaultValue) {
-        ensureInitialized();
-        return orderedProps.getOrDefault(key, defaultValue);
+        if (key instanceof String str && defaultValue instanceof String def) {
+            return getter.get().getOrDefault(key, def);
+        } else {
+            return defaultValue;
+        }

Review Comment:
   ```suggestion
           return key instanceof String str && defaultValue instanceof String 
def
           ? getter.get().getOrDefault(key, def)
           : defaultValue;
   ```
   this is the term reduced to its (c)leanest.



##########
src/mdo/java/WrapperProperties.java:
##########
@@ -101,102 +88,89 @@ public void list(PrintWriter out) {
 
     @Override
     public int size() {
-        ensureInitialized();
-        return orderedProps.size();
+        return getter.get().size();
     }
 
     @Override
     public boolean isEmpty() {
-        ensureInitialized();
-        return orderedProps.isEmpty();
+        return getter.get().isEmpty();
     }
 
     @Override
     public Enumeration<Object> keys() {
-        ensureInitialized();
-        return orderedProps.keys();
+        return Collections.enumeration((Set) getter.get().keySet());
     }
 
     @Override
     public Enumeration<Object> elements() {
-        ensureInitialized();
-        return orderedProps.elements();
+        return Collections.enumeration((Collection) getter.get().values());
     }
 
     @Override
     public boolean contains(Object value) {
-        ensureInitialized();
-        return orderedProps.contains(value);
+        return getter.get().containsKey(value != null ? value.toString() : 
null);
     }
 
     @Override
     public boolean containsValue(Object value) {
-        ensureInitialized();
-        return orderedProps.containsValue(value);
+        return getter.get().containsValue(value);
     }
 
     @Override
     public boolean containsKey(Object key) {
-        ensureInitialized();
-        return orderedProps.containsKey(key);
+        return getter.get().containsKey(key);
     }
 
     @Override
     public Object get(Object key) {
-        ensureInitialized();
-        return orderedProps.get(key);
+        return getter.get().get(key);
     }
 
     @Override
     public synchronized String toString() {
-        ensureInitialized();
-        return orderedProps.toString();
+        return getter.get().toString();
     }
 
     @Override
     public Set<Object> keySet() {
-        ensureInitialized();
-        return orderedProps.keySet();
+        return new OrderedProperties(getter.get()).keySet();
     }
 
     @Override
     public Collection<Object> values() {
-        ensureInitialized();
-        return orderedProps.values();
+        return new OrderedProperties(getter.get()).values();
     }
 
     @Override
     public Set<Map.Entry<Object, Object>> entrySet() {
-        ensureInitialized();
-        return orderedProps.entrySet();
+        return new OrderedProperties(getter.get()).entrySet();
     }
 
     @Override
     public synchronized boolean equals(Object o) {
-        ensureInitialized();
         if (o instanceof WrapperProperties wrapperProperties) {
-            wrapperProperties.ensureInitialized();
-            return orderedProps.equals(wrapperProperties.orderedProps);
+            o = wrapperProperties.getter.get();

Review Comment:
   ```suggestion
               return getter.get().equals(
               o instanceof WrapperProperties wrapperProperties
                ? wrapperProperties.getter.get()
                : o);
   ```
   one thing only.



##########
src/mdo/java/WrapperProperties.java:
##########
@@ -324,22 +302,19 @@ public synchronized void load(InputStream inStream) 
throws IOException {
 
     @Override
     public void save(OutputStream out, String comments) {
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());
         props.save(out, comments);
     }
 
     @Override
     public void store(Writer writer, String comments) throws IOException {
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());
         props.store(writer, comments);
     }
 
     @Override
     public void store(OutputStream out, String comments) throws IOException {
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());

Review Comment:
   please inline, considering sonar motivation.
   
   - https://github.com/pmd/pmd/issues/5770



##########
src/mdo/java/WrapperProperties.java:
##########
@@ -350,28 +325,32 @@ public synchronized void loadFromXML(InputStream in) 
throws IOException, Invalid
 
     @Override
     public void storeToXML(OutputStream os, String comment) throws IOException 
{
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());
         props.storeToXML(os, comment);
     }
 
     @Override
     public void storeToXML(OutputStream os, String comment, String encoding) 
throws IOException {
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());
         props.storeToXML(os, comment, encoding);
     }
 
 
     private Object writeReplace() throws java.io.ObjectStreamException {
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());
         return props;
     }
 
     private class OrderedProperties extends Properties {
         private final List<Object> keyOrder = new CopyOnWriteArrayList<>();
 
+        public OrderedProperties() {

Review Comment:
   if explicit unused loose.



##########
src/mdo/java/WrapperProperties.java:
##########
@@ -208,16 +182,20 @@ interface WriteOpVoid {
     }
 
     private <T> T writeOperation(WriteOp<T> runner) {
-        ensureInitialized();
-        T ret = runner.perform(orderedProps);
-        setter.accept(orderedProps);
+        OrderedProperties props = new OrderedProperties(getter.get());
+        T ret = runner.perform(props);
+        if (!props.equals(getter.get())) {
+            setter.accept(props);
+        }
         return ret;
     }
 
     private void writeOperationVoid(WriteOpVoid runner) {
-        ensureInitialized();
-        runner.perform(orderedProps);
-        setter.accept(orderedProps);
+        OrderedProperties props = new OrderedProperties(getter.get());
+        runner.perform(props);
+        if (!props.equals(getter.get())) {
+            setter.accept(props);
+        }

Review Comment:
   ```suggestion
           acceptNewValue()
   ```
   dedicate.



##########
src/mdo/java/WrapperProperties.java:
##########
@@ -350,28 +325,32 @@ public synchronized void loadFromXML(InputStream in) 
throws IOException, Invalid
 
     @Override
     public void storeToXML(OutputStream os, String comment) throws IOException 
{
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());

Review Comment:
   please inline, considering sonar motivation.
   
   - https://github.com/pmd/pmd/issues/5770



##########
src/mdo/java/WrapperProperties.java:
##########
@@ -208,16 +182,20 @@ interface WriteOpVoid {
     }
 
     private <T> T writeOperation(WriteOp<T> runner) {
-        ensureInitialized();
-        T ret = runner.perform(orderedProps);
-        setter.accept(orderedProps);
+        OrderedProperties props = new OrderedProperties(getter.get());
+        T ret = runner.perform(props);
+        if (!props.equals(getter.get())) {
+            setter.accept(props);
+        }

Review Comment:
   ```suggestion
           acceptNewValue()
   ```
   dedicate.



##########
src/mdo/java/WrapperProperties.java:
##########
@@ -350,28 +325,32 @@ public synchronized void loadFromXML(InputStream in) 
throws IOException, Invalid
 
     @Override
     public void storeToXML(OutputStream os, String comment) throws IOException 
{
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());
         props.storeToXML(os, comment);
     }
 
     @Override
     public void storeToXML(OutputStream os, String comment, String encoding) 
throws IOException {
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());
         props.storeToXML(os, comment, encoding);
     }
 
 
     private Object writeReplace() throws java.io.ObjectStreamException {
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());
         return props;
     }
 
     private class OrderedProperties extends Properties {

Review Comment:
   its private class so default constructor `OrderedProperties()` seems unused.



##########
src/mdo/java/WrapperProperties.java:
##########
@@ -350,28 +325,32 @@ public synchronized void loadFromXML(InputStream in) 
throws IOException, Invalid
 
     @Override
     public void storeToXML(OutputStream os, String comment) throws IOException 
{
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());
         props.storeToXML(os, comment);
     }
 
     @Override
     public void storeToXML(OutputStream os, String comment, String encoding) 
throws IOException {
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());
         props.storeToXML(os, comment, encoding);
     }
 
 
     private Object writeReplace() throws java.io.ObjectStreamException {
-        Properties props = new Properties();
-        props.putAll(getter.get());
+        OrderedProperties props = new OrderedProperties(getter.get());

Review Comment:
   please inline, considering sonar.
   
   - https://github.com/pmd/pmd/issues/5770



##########
src/mdo/java/WrapperProperties.java:
##########
@@ -50,43 +50,30 @@ class WrapperProperties extends Properties {
 
     final Supplier<Map<String, String>> getter;
     final Consumer<Properties> setter;
-    private final OrderedProperties orderedProps = new OrderedProperties();

Review Comment:
   loose.
   
   <img width="337" alt="image" 
src="https://github.com/user-attachments/assets/795b493f-436a-453a-910a-85bb4eaed5b1";
 />
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to