Squash regular expression constants 67/68467/4
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 21 Feb 2018 14:49:18 +0000 (15:49 +0100)
committerRobert Varga <nite@hq.sk>
Tue, 27 Feb 2018 09:26:30 +0000 (09:26 +0000)
A heap dump analysis has shown we are retaining default-sized
sparse ArrayLists in ConstantImpl. Make sure we squash them to
a properly-sized ImmutableList.

Change-Id: I0b83440af46bcaad334d55506c2f08e36d9a7727
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderImpl.java
binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/ConstantImpl.java
binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeGenHelper.java
binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/ConstantImpl.java

index 7344d5b3c49f6fd04bb054a13c71bfa63ffde429..db446a86c9a5ebde9ba50e999bbd0522129e1c6e 100644 (file)
@@ -876,8 +876,7 @@ public final class TypeProviderImpl implements TypeProvider {
             genTOBuilder.addAnnotation("", "Deprecated");
         }
         if (javaType instanceof ConcreteType && "String".equals(javaType.getName()) && typedef.getBaseType() != null) {
-            final List<String> regExps = resolveRegExpressionsFromTypedef(typedef);
-            addStringRegExAsConstant(genTOBuilder, regExps);
+            addStringRegExAsConstant(genTOBuilder, resolveRegExpressionsFromTypedef(typedef));
         }
         addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null));
         genTOBuilder.setTypedef(true);
@@ -1292,7 +1291,7 @@ public final class TypeProviderImpl implements TypeProvider {
         }
         if (!regularExpressions.isEmpty()) {
             genTOBuilder.addConstant(Types.listTypeFor(BaseYangTypes.STRING_TYPE), TypeConstants.PATTERN_CONSTANT_NAME,
-                    regularExpressions);
+                ImmutableList.copyOf(regularExpressions));
         }
     }
 
index 97f50d3eda6bb8ac0673cee5f3b8ed04942eac1c..0ea3947815b5d1bd74d6241e11d23290eaf4d82e 100644 (file)
@@ -18,7 +18,7 @@ final class ConstantImpl implements Constant {
     private final String name;
     private final Object value;
 
-    public ConstantImpl(final Type definingType, final Type type, final String name, final Object value) {
+    ConstantImpl(final Type definingType, final Type type, final String name, final Object value) {
         this.definingType = definingType;
         this.type = type;
         this.name = name;
@@ -47,34 +47,18 @@ final class ConstantImpl implements Constant {
 
     @Override
     public String toFormattedString() {
-        final StringBuilder builder = new StringBuilder();
-        builder.append(this.type);
-        builder.append(" ");
-        builder.append(this.name);
-        builder.append(" ");
-        builder.append(this.value);
-        return builder.toString();
+        return type + " " + name + " " + value;
     }
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see java.lang.Object#hashCode()
-     */
     @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = (prime * result) + Objects.hashCode(this.name);
-        result = (prime * result) + Objects.hashCode(this.type);
+        result = prime * result + Objects.hashCode(this.name);
+        result = prime * result + Objects.hashCode(this.type);
         return result;
     }
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
     @Override
     public boolean equals(final Object obj) {
         if (this == obj) {
index 3b2a057f839f4617725fb698557e68b88c912397..2aee9626910939594565779ef8c67a660b6ec34d 100644 (file)
@@ -196,8 +196,7 @@ final class TypeGenHelper {
             genTOBuilder.addAnnotation("", "Deprecated");
         }
         if (javaType instanceof ConcreteType && "String".equals(javaType.getName()) && typedef.getBaseType() != null) {
-            final List<String> regExps = resolveRegExpressionsFromTypedef(typedef);
-            addStringRegExAsConstant(genTOBuilder, regExps);
+            addStringRegExAsConstant(genTOBuilder, resolveRegExpressionsFromTypedef(typedef));
         }
         addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null));
         genTOBuilder.setTypedef(true);
@@ -292,7 +291,7 @@ final class TypeGenHelper {
         }
         if (!regularExpressions.isEmpty()) {
             genTOBuilder.addConstant(Types.listTypeFor(BaseYangTypes.STRING_TYPE), TypeConstants.PATTERN_CONSTANT_NAME,
-                    regularExpressions);
+                ImmutableList.copyOf(regularExpressions));
         }
     }
 
index 80a5d793dc694d555968f2d1c3c5890f7b5be2fb..d58fa19769287fa44cd6021d3e217185128d94b1 100644 (file)
@@ -5,15 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.mdsal.binding.javav2.generator.util.generated.type.builder;
 
-import com.google.common.annotations.Beta;
 import java.util.Objects;
 import org.opendaylight.mdsal.binding.javav2.model.api.Constant;
 import org.opendaylight.mdsal.binding.javav2.model.api.Type;
 
-@Beta
 final class ConstantImpl implements Constant {
 
     private final Type definingType;
@@ -21,7 +18,7 @@ final class ConstantImpl implements Constant {
     private final String name;
     private final Object value;
 
-    public ConstantImpl(final Type definingType, final Type type, final String name, final Object value) {
+    ConstantImpl(final Type definingType, final Type type, final String name, final Object value) {
         this.definingType = definingType;
         this.type = type;
         this.name = name;
@@ -50,13 +47,7 @@ final class ConstantImpl implements Constant {
 
     @Override
     public String toFormattedString() {
-        StringBuilder builder = new StringBuilder();
-        builder.append(type);
-        builder.append(" ");
-        builder.append(name);
-        builder.append(" ");
-        builder.append(value);
-        return builder.toString();
+        return type + " " + name + " " + value;
     }
 
     @Override