diff --git a/java/com.sap.sailing.landscape/.classpath b/java/com.sap.sailing.landscape/.classpath new file mode 100755 index 00000000000..eca7bdba8f0 --- /dev/null +++ b/java/com.sap.sailing.landscape/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/java/com.sap.sailing.landscape/.project b/java/com.sap.sailing.landscape/.project new file mode 100755 index 00000000000..ccb496f8ed3 --- /dev/null +++ b/java/com.sap.sailing.landscape/.project @@ -0,0 +1,28 @@ + + + com.sap.sailing.landscape + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/java/com.sap.sailing.landscape/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sailing.landscape/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 00000000000..9f6ece88bdf --- /dev/null +++ b/java/com.sap.sailing.landscape/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/java/com.sap.sailing.landscape/.settings/org.eclipse.pde.core.prefs b/java/com.sap.sailing.landscape/.settings/org.eclipse.pde.core.prefs new file mode 100755 index 00000000000..f29e940a005 --- /dev/null +++ b/java/com.sap.sailing.landscape/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +pluginProject.extensions=false +resolve.requirebundle=false diff --git a/java/com.sap.sailing.landscape/META-INF/MANIFEST.MF b/java/com.sap.sailing.landscape/META-INF/MANIFEST.MF new file mode 100755 index 00000000000..5135b49e381 --- /dev/null +++ b/java/com.sap.sailing.landscape/META-INF/MANIFEST.MF @@ -0,0 +1,11 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Landscape +Bundle-SymbolicName: com.sap.sailing.landscape +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: SAP +Automatic-Module-Name: com.sap.sailing.landscape +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Require-Bundle: com.sap.sse.landscape, + com.sap.sse.landscape.aws, + com.sap.sse.common diff --git a/java/com.sap.sailing.landscape/build.properties b/java/com.sap.sailing.landscape/build.properties new file mode 100755 index 00000000000..34d2e4d2dad --- /dev/null +++ b/java/com.sap.sailing.landscape/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/java/com.sap.sailing.landscape/pom.xml b/java/com.sap.sailing.landscape/pom.xml new file mode 100755 index 00000000000..a04434e15bd --- /dev/null +++ b/java/com.sap.sailing.landscape/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + root + com.sap.sailing + 1.0.0-SNAPSHOT + + com.sap.sailing.landscape + eclipse-plugin + diff --git a/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/SailingAnalyticsMaster.java b/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/SailingAnalyticsMaster.java new file mode 100755 index 00000000000..ab098e70660 --- /dev/null +++ b/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/SailingAnalyticsMaster.java @@ -0,0 +1,7 @@ +package com.sap.sailing.landscape; + +import com.sap.sse.landscape.application.ApplicationProcessMetrics; + +public interface SailingAnalyticsMaster extends SailingAnalyticsProcess { + +} diff --git a/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/SailingAnalyticsProcess.java b/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/SailingAnalyticsProcess.java new file mode 100755 index 00000000000..fffbee90efc --- /dev/null +++ b/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/SailingAnalyticsProcess.java @@ -0,0 +1,9 @@ +package com.sap.sailing.landscape; + +import com.sap.sse.landscape.application.ApplicationProcess; +import com.sap.sse.landscape.application.ApplicationProcessMetrics; + +public interface SailingAnalyticsProcess extends ApplicationProcess { + int getTelnetPort(); + int getExpeditionUdpPort(); +} diff --git a/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/SailingAnalyticsReplica.java b/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/SailingAnalyticsReplica.java new file mode 100755 index 00000000000..196ce0adb55 --- /dev/null +++ b/java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/SailingAnalyticsReplica.java @@ -0,0 +1,7 @@ +package com.sap.sailing.landscape; + +import com.sap.sse.landscape.application.ApplicationProcessMetrics; + +public interface SailingAnalyticsReplica extends SailingAnalyticsProcess { + +} diff --git a/java/com.sap.sse.landscape/src/com/sap/sse/landscape/mongodb/MongoProcess.java b/java/com.sap.sse.landscape/src/com/sap/sse/landscape/mongodb/MongoProcess.java index 5b7ffa25057..66b7c6aa652 100755 --- a/java/com.sap.sse.landscape/src/com/sap/sse/landscape/mongodb/MongoProcess.java +++ b/java/com.sap.sse.landscape/src/com/sap/sse/landscape/mongodb/MongoProcess.java @@ -4,6 +4,7 @@ import com.sap.sse.landscape.Process; import com.sap.sse.landscape.RotatingFileBasedLog; public interface MongoProcess extends Process { + int DEFAULT_PORT = 27017; boolean isHidden(); int getPriority(); int getVotes(); diff --git a/java/com.sap.sse.landscape/src/com/sap/sse/landscape/mongodb/MongoReplicaSet.java b/java/com.sap.sse.landscape/src/com/sap/sse/landscape/mongodb/MongoReplicaSet.java index 70022c63a05..affe5b6150b 100755 --- a/java/com.sap.sse.landscape/src/com/sap/sse/landscape/mongodb/MongoReplicaSet.java +++ b/java/com.sap.sse.landscape/src/com/sap/sse/landscape/mongodb/MongoReplicaSet.java @@ -1,15 +1,48 @@ package com.sap.sse.landscape.mongodb; import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; -public interface MongoReplicaSet { +import com.sap.sse.common.Named; + +public interface MongoReplicaSet extends Named { Iterable getInstances(); /** * The {@code "mongodb://..."} URI that application use to connect to this replica set; not specific * to any particular database managed by this replica set; see also {@link Database#getConnectionURI()}. */ - URI getConnectionURI(); + default URI getConnectionURI(Optional optionalDb) throws URISyntaxException { + final StringBuilder result = new StringBuilder("mongodb://"); + final List hostSpecs = new ArrayList<>(); + for (final MongoProcess mongoProcess : getInstances()) { + final StringBuilder hostSpec = new StringBuilder(); + hostSpec.append(mongoProcess.getHost().getPublicAddress().getCanonicalHostName()); + if (mongoProcess.getPort() != MongoProcess.DEFAULT_PORT) { + hostSpec.append(":"); + hostSpec.append(mongoProcess.getPort()); + } + hostSpecs.add(hostSpec.toString()); + } + result.append(String.join(",", hostSpecs)); + result.append("/"); + optionalDb.ifPresent(db->result.append(db.getName())); + result.append("?replicaSet="); + result.append(getName()); + result.append("&retryWrites=true"); + return new URI(result.toString()); + } + + void addReplica(MongoProcess newReplica); + + void removeReplica(MongoProcess replicaToRemove); + + Iterable getDatabases(); + + Database getDatabase(String dbName); /** * Imports a {@link Database} from another {@link MongoReplicaSet} which must be different from {@code this} diff --git a/java/pom.xml b/java/pom.xml index 24d4d93f0c2..fd1ed403088 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -83,6 +83,7 @@ com.sap.sse.landscape.aws com.sap.sse.landscape.aws.test com.sap.sse.landscape.aws.persistence + com.sap.sailing.landscape com.sap.sse.jersey.jaxbdependencyfragment com.sap.sse.jettyextensions com.sap.sailing.routeconverterjava11extension