From a7b12771952032bfdfd8b872a7d962cadcb7da9c Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 16 Aug 2019 11:10:36 +0200 Subject: Avoid using temporary arrays on frequently called code. Just do what you need. Also chain StringBuilder.append for readability and unify on simple ternary operator. --- .../main/java/com/yahoo/component/ComponentId.java | 6 +-- .../java/com/yahoo/component/SpecSplitter.java | 43 ++++++++++------------ .../src/main/java/com/yahoo/component/Version.java | 38 ++++--------------- 3 files changed, 30 insertions(+), 57 deletions(-) (limited to 'component') diff --git a/component/src/main/java/com/yahoo/component/ComponentId.java b/component/src/main/java/com/yahoo/component/ComponentId.java index e1e1b43c08a..05c710e3fc1 100644 --- a/component/src/main/java/com/yahoo/component/ComponentId.java +++ b/component/src/main/java/com/yahoo/component/ComponentId.java @@ -87,9 +87,9 @@ public final class ComponentId implements Comparable { if (namespace == null) { return this; } else { - ComponentId newNamespace = getNamespace() == null ? - namespace : - getNamespace().nestInNamespace(namespace); + ComponentId newNamespace = (getNamespace() == null) + ? namespace + : getNamespace().nestInNamespace(namespace); return new ComponentId(getName(), getVersion(), newNamespace); } } diff --git a/component/src/main/java/com/yahoo/component/SpecSplitter.java b/component/src/main/java/com/yahoo/component/SpecSplitter.java index 07d5c573140..6bc4bed4094 100644 --- a/component/src/main/java/com/yahoo/component/SpecSplitter.java +++ b/component/src/main/java/com/yahoo/component/SpecSplitter.java @@ -1,9 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.component; -import java.util.Arrays; -import java.util.List; - /** * Splits and component id or component specification string into their constituent parts. * @@ -16,30 +13,28 @@ class SpecSplitter { final ComponentId namespace; SpecSplitter(String spec) { - List idAndNamespace = splitFirst(spec, '@'); - List nameAndVersion = splitFirst(idAndNamespace.get(0), ':'); - - name = nameAndVersion.get(0); - version = second(nameAndVersion); - namespace = ComponentId.fromString(second(idAndNamespace)); - } - - private String second(List components) { - return components.size() == 2? - components.get(1) : - null; - } + int indexOfAlpha = spec.indexOf('@'); + String nameAndVersion = spec; + if (indexOfAlpha != -1) { + if (indexOfAlpha == spec.length() - 1) { + throw new RuntimeException("Expected characters after '@'"); + } + nameAndVersion = spec.substring(0, indexOfAlpha); + namespace = ComponentId.fromString(spec.substring(indexOfAlpha + 1)); + } else { + namespace = null; + } - private static List splitFirst(String string, char c) { - int index = string.indexOf(c); - if (index != -1) { - if (index == string.length() - 1) { - throw new RuntimeException("Expected characters after '" + c + "'"); + int indexOfColon = nameAndVersion.indexOf(':'); + if (indexOfColon != -1) { + if (indexOfColon == nameAndVersion.length() - 1) { + throw new RuntimeException("Expected characters after ':'"); } - return Arrays.asList(string.substring(0, index), - string.substring(index + 1)); + name = nameAndVersion.substring(0, indexOfColon); + version = nameAndVersion.substring(indexOfColon+1); } else { - return Arrays.asList(string, null); + name = nameAndVersion; + version = null; } } diff --git a/component/src/main/java/com/yahoo/component/Version.java b/component/src/main/java/com/yahoo/component/Version.java index e0ed3f03f7e..7c98af55be3 100644 --- a/component/src/main/java/com/yahoo/component/Version.java +++ b/component/src/main/java/com/yahoo/component/Version.java @@ -193,11 +193,7 @@ public final class Version implements Comparable { /** Returns new Version(versionString), or Version.emptyVersion if the input string is null or "" */ public static Version fromString(String versionString) { - if (versionString == null) { - return emptyVersion; - } else { - return new Version(versionString); - } + return (versionString == null) ? emptyVersion :new Version(versionString); } /** @@ -225,23 +221,11 @@ public final class Version implements Comparable { private String toStringValue() { StringBuilder b = new StringBuilder(); if (! qualifier.isEmpty()) { - b.append(getMajor()); - b.append("."); - b.append(getMinor()); - b.append("."); - b.append(getMicro()); - b.append("."); - b.append(qualifier); + b.append(getMajor()).append(".").append(getMinor()).append(".").append(getMicro()).append(".").append(qualifier); } else if (getMicro() != 0) { - b.append(getMajor()); - b.append("."); - b.append(getMinor()); - b.append("."); - b.append(getMicro()); + b.append(getMajor()).append(".").append(getMinor()).append(".").append(getMicro()); } else if (getMinor() != 0) { - b.append(getMajor()); - b.append("."); - b.append(getMinor()); + b.append(getMajor()).append(".").append(getMinor()); } else if (getMajor() != 0) { b.append(getMajor()); } @@ -256,11 +240,7 @@ public final class Version implements Comparable { */ public String toFullString() { StringBuilder b = new StringBuilder(); - b.append(getMajor()); - b.append("."); - b.append(getMinor()); - b.append("."); - b.append(getMicro()); + b.append(getMajor()).append(".").append(getMinor()).append(".").append(getMicro()); if (! qualifier.isEmpty()) { b.append("."); @@ -382,11 +362,9 @@ public final class Version implements Comparable { /** Creates a version specification that only matches this version */ public VersionSpecification toSpecification() { - if (this == emptyVersion) - return VersionSpecification.emptyVersionSpecification; - else { - return new VersionSpecification(getMajor(), getMinor(), getMicro(), getQualifier()); - } + return (this == emptyVersion) + ? VersionSpecification.emptyVersionSpecification + : new VersionSpecification(getMajor(), getMinor(), getMicro(), getQualifier()); } } -- cgit v1.2.3