From bfcf0064501b526e6e57e459f72a46d5ba7d086d Mon Sep 17 00:00:00 2001 From: Jon Marius Venstad Date: Fri, 8 Dec 2017 16:07:50 +0100 Subject: Replaced inheritance with delegation --- .../preprocessor/ApplicationPreprocessor.java | 6 ++-- .../provider/FilesApplicationPackageTest.java | 11 +++---- .../main/java/com/yahoo/config/provision/Zone.java | 37 ++++++++++++++++++++-- .../config/server/session/SessionPreparer.java | 2 +- .../vespa/hosted/controller/ControllerTest.java | 2 +- 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java b/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java index e879acef3bb..303ce3e8d29 100644 --- a/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java +++ b/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java @@ -39,9 +39,9 @@ public class ApplicationPreprocessor { FilesApplicationPackage.Builder applicationPackageBuilder = new FilesApplicationPackage.Builder(applicationDir); outputDir.ifPresent(applicationPackageBuilder::preprocessedDir); ApplicationPackage preprocessed = applicationPackageBuilder.build().preprocess( - new Zone(environment.orElse(Environment.defaultEnvironment()), region.orElse(RegionName.defaultName())), - (a, b) -> { - }, logger); + ZoneId.from(environment.orElse(Environment.defaultEnvironment()), region.orElse(RegionName.defaultName())), + (a, b) -> { }, + logger); preprocessed.validateXML(); } diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java index c12a9ad0d06..2dfaf440084 100644 --- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java +++ b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java @@ -7,6 +7,7 @@ import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.Zone; +import com.yahoo.config.provision.ZoneId; import com.yahoo.io.IOUtils; import org.junit.Rule; import org.junit.Test; @@ -41,13 +42,9 @@ public class FilesApplicationPackageTest { assertTrue(new File(appDir, "hosts.xml").exists()); FilesApplicationPackage app = FilesApplicationPackage.fromFile(appDir); - ApplicationPackage processed = app.preprocess(new Zone(Environment.dev, RegionName.defaultName()), - new RuleConfigDeriver() { - @Override - public void derive(String ruleBaseDir, String outputDir) throws Exception { - } - }, - new BaseDeployLogger()); + ApplicationPackage processed = app.preprocess(ZoneId.from(Environment.dev, RegionName.defaultName()), + (ruleBaseDir, outputDir) -> {}, + new BaseDeployLogger()); assertTrue(new File(appDir, ".preprocessed").exists()); String expectedServices = "\n" + " \n" + diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java index b69795a4f95..4dd6324b423 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java @@ -5,6 +5,7 @@ import com.google.common.base.Strings; import com.google.inject.Inject; import com.yahoo.cloud.config.ConfigserverConfig; +import java.util.Objects; import java.util.Optional; /** @@ -14,11 +15,12 @@ import java.util.Optional; * * @author bratseth */ -public class Zone extends ZoneId { +public class Zone { private final SystemName systemName; private final FlavorDefaults flavorDefaults; private final Optional nodeFlavors; + private final ZoneId id; @Inject public Zone(ConfigserverConfig configserverConfig, NodeFlavors nodeFlavors) { @@ -44,12 +46,27 @@ public class Zone extends ZoneId { RegionName region, FlavorDefaults flavorDefaults, NodeFlavors nodeFlavors) { - super(environment, region); + this.id = new ZoneId(environment, region); this.flavorDefaults = flavorDefaults; this.systemName = systemName; this.nodeFlavors = Optional.ofNullable(nodeFlavors); } + /** Returns the id of this */ + public ZoneId id() { + return id; + } + + /** Returns the current environment */ + public Environment environment() { + return id.environment(); + } + + /** Returns the current region */ + public RegionName region() { + return id.region(); + } + /** Returns the current system */ public SystemName system() { return systemName; } @@ -64,6 +81,22 @@ public class Zone extends ZoneId { return new Zone(SystemName.defaultSystem(), Environment.defaultEnvironment(), RegionName.defaultName()); } + + public String toString() { + return id.toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if ( ! (o instanceof Zone)) return false; + return Objects.equals(id, ((Zone) o).id); + } + + public int hashCode() { + return id.hashCode(); + } + private static class FlavorDefaults { /** The default default flavor */ diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java index 70db406bd53..24666f42dc9 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java @@ -178,7 +178,7 @@ public class SessionPreparer { void preprocess() { try { - this.applicationPackage = context.getApplicationPackage().preprocess(properties.zone(), null, logger); + this.applicationPackage = context.getApplicationPackage().preprocess(properties.zone().id(), null, logger); } catch (IOException | TransformerException | ParserConfigurationException | SAXException e) { throw new RuntimeException("Error deploying application package", e); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java index efd3ddd80e6..3af68befd1d 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java @@ -494,7 +494,7 @@ public class ControllerTest { public void testGlobalRotations() throws IOException { // Setup tester and app def ControllerTester tester = new ControllerTester(); - ZoneId zone = Zone.defaultZone(); + ZoneId zone = ZoneId.from(Environment.defaultEnvironment(), RegionName.defaultName()); ApplicationId appId = tester.applicationId("tenant", "app1", "default"); DeploymentId deployId = new DeploymentId(appId, zone); -- cgit v1.2.3