Skip to content

Commit

Permalink
Restructured the platform components.
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed Nov 5, 2017
1 parent 57b1572 commit d0d93d9
Show file tree
Hide file tree
Showing 59 changed files with 375 additions and 217 deletions.
Expand Up @@ -40,7 +40,7 @@
@Since("2.0.0")
public class Conf extends RapidoidThing {

private static final String CONFIG_NAME = Msc.isMultiProcess() ? "rapidoid" : "config";
private static final String CONFIG_NAME = "config";

public static final Config ROOT = new ConfigImpl(CONFIG_NAME, true);

Expand Down
Expand Up @@ -138,8 +138,7 @@ private void initModeAndProfiles() {
RapidoidEnv.touch();

if (!silent()) {
String platform = Msc.isPlatform() ? (Msc.isMultiProcess() ? "multi-process" : "single-process") : "no";
Log.info("Initialized environment", "!mode", mode, "!profiles", profiles, "!platform", platform);
Log.info("Initialized environment", "!mode", mode, "!profiles", profiles);
}
}

Expand Down
Expand Up @@ -8,7 +8,6 @@
import org.rapidoid.util.Msc;

import java.io.File;
import java.util.List;

/*
* #%L
Expand All @@ -34,9 +33,6 @@
@Since("5.4.6")
public class RootContext extends RapidoidThing {

private static final String APP_ROOT = "/app";
private static final String PLATFORM_ROOT = "/platform";

private final String root;

private RootContext(String root) {
Expand All @@ -48,48 +44,42 @@ public String root() {
}

public static RootContext from(String root) {
String rootDir = null;
String rootDesc = Msc.isSingleApp() ? "application root" : "platform root";

if (U.isEmpty(root)) {
if (Msc.hasAppFolder()) {
root = APP_ROOT;
} else if (Msc.isPlatform()) {
root = PLATFORM_ROOT;
}
}

if (root != null) {
File dir = new File(root);

if (dir.exists()) {
if (dir.isDirectory()) {
File[] files = dir.listFiles();
int count = getAppResourcesCount(dir);
Log.info("Setting root path", "!root", root, "items", count);

} else {
Log.warn("Setting non-existing root path", "!root", root);
}
}

if (files != null) {
List<File> content = U.list();
return new RootContext(root);
}

for (File file : files) {
if (Msc.isAppResource(file.getName())) content.add(file);
}
private static int getAppResourcesCount(File dir) {
int count = 0;

Log.info("Setting " + rootDesc, "!root", root, "items", content.size());
rootDir = root;
if (dir.isDirectory()) {
File[] files = dir.listFiles();

} else {
Log.error(U.frmt("Couldn't access the %s!", rootDesc), "!root", root);
}
if (files != null) {

} else {
Log.error(U.frmt("The configured %s must be a folder!", rootDesc), "!root", root);
for (File file : files) {
if (Msc.isAppResource(file.getName())) count++;
}

} else {
Log.error(U.frmt("The configured %s folder doesn't exist!", rootDesc), "!root", root);
throw U.rte("Couldn't access the root path: " + dir.getAbsolutePath());
}

} else {
throw U.rte("The configured root path must be a folder: " + dir.getAbsolutePath());
}

return new RootContext(rootDir);
return count;
}

}
23 changes: 0 additions & 23 deletions commons/rapidoid-commons/src/main/java/org/rapidoid/util/Msc.java
Expand Up @@ -94,8 +94,6 @@ public class Msc extends RapidoidThing {

private static volatile boolean dockerized = MscOpts.hasDockerEnv();

private static volatile boolean singleApp = hasAppFolder();

public static final ScheduledThreadPoolExecutor EXECUTOR = new ScheduledThreadPoolExecutor(8,
new RapidoidThreadFactory("utils", true));

Expand Down Expand Up @@ -1007,11 +1005,6 @@ public static void dockerized(boolean dockerized) {
Msc.dockerized = dockerized;
}

public static boolean hasAppFolder() {
File app = new File("/app");
return app.exists() && app.isDirectory();
}

public static Object maybeMasked(Object value) {
return GlobalCfg.uniformOutput() ? "<?>" : value;
}
Expand Down Expand Up @@ -1160,22 +1153,6 @@ public static boolean isPlatform() {
return platform;
}

public static boolean isMultiAppPlatform() {
return isPlatform() && !isSingleApp();
}

public static boolean isMultiProcess() {
return isPlatform() && (!isSingleApp() || Env.dev());
}

public static boolean isSingleApp() {
return singleApp;
}

public static void singleApp(boolean singleApp) {
Msc.singleApp = singleApp;
}

public static boolean isMavenBuild() {
return mavenBuild;
}
Expand Down
Expand Up @@ -35,8 +35,6 @@ public class MscOpts extends RapidoidThing {
&& U.eq(System.getenv("RAPIDOID_TMP"), "/tmp/rapidoid")
&& U.notEmpty(System.getenv("RAPIDOID_VERSION"));

private static volatile String appsPath = "/apps";

private static final boolean hasValidation = Cls.exists("javax.validation.Validation");
private static final boolean hasJPA = Cls.exists("javax.persistence.Entity");
private static final boolean hasHibernate = Cls.exists("org.hibernate.cfg.Configuration");
Expand Down Expand Up @@ -111,14 +109,6 @@ public static boolean isRestOnly() {
return isRestOnly;
}

public static String appsPath() {
return appsPath;
}

public static void appsPath(String appsPath) {
MscOpts.appsPath = appsPath;
}

public static boolean isTLSEnabled() {
return Conf.TLS.is("enabled");
}
Expand Down
Expand Up @@ -672,7 +672,7 @@ org.rapidoid.performance.BenchmarkRunner
org.rapidoid.performance.Perf
org.rapidoid.performance.WrkSetup
org.rapidoid.platform.CmdArgs
org.rapidoid.platform.DefaultApp
org.rapidoid.platform.EmbeddedApp
org.rapidoid.platform.Main
org.rapidoid.platform.PasswordHashTool
org.rapidoid.platform.Platform
Expand Down
1 change: 0 additions & 1 deletion docker-tests/app-jar.sh
Expand Up @@ -26,7 +26,6 @@ docker run \
-v $(pwd)/app3:/app \
--link mysql:mysql \
rapidoid/rapidoid:$TAG \
platform \
app.services=welcome \
admin.services=center \
app.path=com.example \
Expand Down
7 changes: 4 additions & 3 deletions docker-tests/output/admin-service-application.txt
Expand Up @@ -7,10 +7,11 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
INFO | GET,POST /rapidoid/routes | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
INFO | GET,POST /rapidoid/beans | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
INFO | GET,POST /rapidoid/config | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
Expand Down
7 changes: 4 additions & 3 deletions docker-tests/output/admin-service-auth.txt
Expand Up @@ -7,10 +7,11 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
INFO | POST /rapidoid/login | setup = main | roles = [] | transaction = NONE | mvc = false | cacheTTL = 0
INFO | GET /rapidoid/logout | setup = main | roles = [logged_in] | transaction = NONE | mvc = false | cacheTTL = 0
INFO | Starting server | address = 0.0.0.0 | port = 8888 | I/O workers = 4 | sync = true | accept = non-blocking
Expand Down
7 changes: 4 additions & 3 deletions docker-tests/output/admin-service-center.txt
Expand Up @@ -7,10 +7,11 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
INFO | -------------------------
INFO | Registering Admin Center:
INFO | -------------------------
Expand Down
7 changes: 4 additions & 3 deletions docker-tests/output/admin-service-deploy.txt
Expand Up @@ -7,10 +7,11 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
INFO | GET,POST /rapidoid/deployment | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
INFO | POST /rapidoid/stage | setup = main | roles = [administrator] | transaction = NONE | mvc = false | cacheTTL = 0
INFO | POST /rapidoid/deploy | setup = main | roles = [administrator] | transaction = NONE | mvc = false | cacheTTL = 0
Expand Down
7 changes: 4 additions & 3 deletions docker-tests/output/admin-service-entities.txt
Expand Up @@ -7,10 +7,11 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
INFO | GET,POST /rapidoid/entities | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
INFO | Starting server | address = 0.0.0.0 | port = 8888 | I/O workers = 4 | sync = true | accept = non-blocking
INFO | Server has started | setup = main | home = http://localhost:8888
Expand Down
13 changes: 7 additions & 6 deletions docker-tests/output/admin-service-foo.txt
Expand Up @@ -7,20 +7,21 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
Exception in thread "main" java.lang.IllegalArgumentException: Unknown service: 'foo'!
at org.rapidoid.u.U.illegal(U.java:442)
at org.rapidoid.u.U.must(U.java:468)
at org.rapidoid.util.Msc.bootService(Msc.java:999)
at org.rapidoid.util.Msc.bootService(Msc.java:994)
at org.rapidoid.setup.ServiceActivator.boot(ServiceActivator.java:82)
at org.rapidoid.setup.ServiceActivator.bootstrapServices(ServiceActivator.java:57)
at org.rapidoid.setup.ServiceActivator.activateServices(ServiceActivator.java:43)
at org.rapidoid.setup.AppBootstrap$1.bootstrap(AppBootstrap.java:39)
at org.rapidoid.setup.ServiceBootstrap.run(ServiceBootstrap.java:39)
at org.rapidoid.setup.AppBootstrap.services(AppBootstrap.java:158)
at org.rapidoid.platform.Platform.start(Platform.java:54)
at org.rapidoid.platform.Main.runMain(Main.java:68)
at org.rapidoid.platform.Platform.start(Platform.java:65)
at org.rapidoid.platform.Main.runMain(Main.java:64)
at org.rapidoid.platform.Main.main(Main.java:48)
7 changes: 4 additions & 3 deletions docker-tests/output/admin-service-jmx.txt
Expand Up @@ -7,10 +7,11 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
INFO | GET,POST /rapidoid/jmx/memory | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
INFO | GET,POST /rapidoid/jmx/mempool | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
INFO | GET,POST /rapidoid/jmx/classes | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
Expand Down
7 changes: 4 additions & 3 deletions docker-tests/output/admin-service-lifecycle.txt
Expand Up @@ -7,10 +7,11 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
INFO | GET,POST /rapidoid/terminate | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
INFO | Starting server | address = 0.0.0.0 | port = 8888 | I/O workers = 4 | sync = true | accept = non-blocking
INFO | Server has started | setup = main | home = http://localhost:8888
Expand Down
7 changes: 4 additions & 3 deletions docker-tests/output/admin-service-metrics.txt
Expand Up @@ -7,10 +7,11 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
INFO | GET,POST /rapidoid/metrics | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
INFO | GET /rapidoid/graphs/{id:.*} | setup = main | roles = [administrator] | transaction = NONE | mvc = false | cacheTTL = 0
INFO | Starting server | address = 0.0.0.0 | port = 8888 | I/O workers = 4 | sync = true | accept = non-blocking
Expand Down
7 changes: 4 additions & 3 deletions docker-tests/output/admin-service-oauth.txt
Expand Up @@ -7,10 +7,11 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
INFO | GET /rapidoid/googleLogin | setup = main | roles = [administrator] | transaction = NONE | mvc = false | cacheTTL = 0
INFO | GET /rapidoid/googleOauthCallback | setup = main | roles = [administrator] | transaction = NONE | mvc = false | cacheTTL = 0
INFO | GET /rapidoid/facebookLogin | setup = main | roles = [administrator] | transaction = NONE | mvc = false | cacheTTL = 0
Expand Down
7 changes: 4 additions & 3 deletions docker-tests/output/admin-service-overview.txt
Expand Up @@ -7,10 +7,11 @@

INFO | Starting Rapidoid v<?>, built on <?> [Dockerized] [Uniform output]
INFO | System info | os = Linux | java = <?> | process = <?> | max memory = <?> | dir = /opt
INFO | Setting platform root | root = /platform | items = 0
INFO | Setting root path | root = /platform | items = 0
INFO | No production/dev/test mode was configured, inferring mode | mode = PRODUCTION
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform] | platform = multi-process
INFO | Loaded configuration | namespace = rapidoid | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | Initialized environment | mode = PRODUCTION | profiles = [production, platform]
INFO | Loaded configuration | namespace = config | files = [built-in-config.yml, built-in-config-platform.yml]
INFO | The platform has started | mode = multi-process
INFO | GET,POST /rapidoid | setup = main | roles = [administrator] | transaction = NONE | mvc = true | cacheTTL = 0
INFO | Starting server | address = 0.0.0.0 | port = 8888 | I/O workers = 4 | sync = true | accept = non-blocking
INFO | Server has started | setup = main | home = http://localhost:8888
Expand Down

0 comments on commit d0d93d9

Please sign in to comment.