Skip to content

Commit

Permalink
Refactored the context management and redesigned multi-web-app compon…
Browse files Browse the repository at this point in the history
…ents.
  • Loading branch information
nmihajlovski committed Jul 23, 2015
1 parent 97b1153 commit 0e943e4
Show file tree
Hide file tree
Showing 54 changed files with 463 additions and 360 deletions.
1 change: 0 additions & 1 deletion pom.xml
Expand Up @@ -106,7 +106,6 @@
<module>rapidoid-test-appctx-helper</module>
<module>rapidoid-buffer</module>
<module>rapidoid-net</module>
<module>rapidoid-appctx</module>
<module>rapidoid-http-api</module>
<module>rapidoid-http</module>
<module>rapidoid-measure</module>
Expand Down
27 changes: 10 additions & 17 deletions rapidoid-app/src/main/java/org/rapidoid/app/Apps.java
Expand Up @@ -31,7 +31,8 @@
import org.rapidoid.annotation.Since;
import org.rapidoid.annotation.Transaction;
import org.rapidoid.aop.AOP;
import org.rapidoid.apps.Scan;
import org.rapidoid.appctx.Application;
import org.rapidoid.appctx.Scan;
import org.rapidoid.beany.Beany;
import org.rapidoid.cls.Cls;
import org.rapidoid.config.Conf;
Expand Down Expand Up @@ -60,20 +61,12 @@ public class Apps {

private static AppClasses APP_CLASSES;

public static void main(String[] args) {
run((Object[]) args);
public static void run(Application app, Object... args) {
bootstrap(app, args);
serve(app, args);
}

public static void run(String[] args) {
run((Object[]) args);
}

public static void run(Object... args) {
bootstrap(args);
serve(args);
}

public static void bootstrap(Object... args) {
public static void bootstrap(Application app, Object... args) {
Set<String> config = U.set();

for (Object arg : args) {
Expand All @@ -89,13 +82,13 @@ public static void bootstrap(Object... args) {
Lifecycle.onStart(args);
}

public static HTTPServer serve(Object... args) {
public static HTTPServer serve(Application app, Object... args) {
HTTPServer server = HTTP.server().build();

OAuth.register(server);
HttpBuiltins.register(server);
OAuth.register(app);
HttpBuiltins.register(app);

server.serve(new AppHandler());
app.getRouter().serve(new AppHandler());

return server.start();
}
Expand Down
2 changes: 1 addition & 1 deletion rapidoid-app/src/main/java/org/rapidoid/app/UsersTool.java
Expand Up @@ -22,7 +22,7 @@

import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
import org.rapidoid.apps.AppCtx;
import org.rapidoid.appctx.AppCtx;
import org.rapidoid.ctx.UserInfo;
import org.rapidoid.plugins.users.Users;

Expand Down
Expand Up @@ -36,8 +36,8 @@
import org.rapidoid.app.AppScreens;
import org.rapidoid.app.Apps;
import org.rapidoid.app.Scaffolding;
import org.rapidoid.apps.AppCtx;
import org.rapidoid.apps.Scan;
import org.rapidoid.appctx.AppCtx;
import org.rapidoid.appctx.Scan;
import org.rapidoid.beany.Beany;
import org.rapidoid.cls.Cls;
import org.rapidoid.config.Conf;
Expand Down
Expand Up @@ -23,7 +23,7 @@
import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
import org.rapidoid.app.GUI;
import org.rapidoid.apps.AppCtx;
import org.rapidoid.appctx.AppCtx;
import org.rapidoid.html.Tag;
import org.rapidoid.security.Secure;
import org.rapidoid.security.annotation.DevMode;
Expand Down
Expand Up @@ -23,7 +23,7 @@
import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Session;
import org.rapidoid.annotation.Since;
import org.rapidoid.apps.AppCtx;
import org.rapidoid.appctx.AppCtx;
import org.rapidoid.cls.Cls;
import org.rapidoid.html.Tag;
import org.rapidoid.plugins.entities.Entities;
Expand Down
Expand Up @@ -22,7 +22,7 @@

import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
import org.rapidoid.apps.AppCtx;
import org.rapidoid.appctx.AppCtx;
import org.rapidoid.cls.Cls;
import org.rapidoid.html.Tag;
import org.rapidoid.plugins.db.DB;
Expand Down
33 changes: 0 additions & 33 deletions rapidoid-appctx/pom.xml

This file was deleted.

Expand Up @@ -24,6 +24,8 @@

import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
import org.rapidoid.appctx.Application;
import org.rapidoid.appctx.Applications;
import org.rapidoid.config.Conf;
import org.rapidoid.http.HTTP;
import org.rapidoid.http.HTTPServer;
Expand All @@ -36,12 +38,13 @@ public class HttpDemo {

public static void main(String[] args) {
Conf.args(args);
Application app = Applications.openRootContext();

final AtomicLong n = new AtomicLong();

HTTPServer server = HTTP.server().build();

server.get("/hi", new Handler() {
app.getRouter().get("/hi", new Handler() {
@Override
public Object handle(HttpExchange x) {
return "[" + n.incrementAndGet() + "] Hi: " + x.uri();
Expand Down
18 changes: 11 additions & 7 deletions rapidoid-docs/src/main/java/org/rapidoid/docs/Examples.java
Expand Up @@ -31,9 +31,11 @@
import org.rapidoid.annotation.Since;
import org.rapidoid.app.AppHandler;
import org.rapidoid.app.Apps;
import org.rapidoid.apps.AppMode;
import org.rapidoid.apps.Application;
import org.rapidoid.apps.Scan;
import org.rapidoid.appctx.AppMode;
import org.rapidoid.appctx.Application;
import org.rapidoid.appctx.Applications;
import org.rapidoid.appctx.Scan;
import org.rapidoid.appctx.WebApp;
import org.rapidoid.cls.Cls;
import org.rapidoid.config.Conf;
import org.rapidoid.ctx.Classes;
Expand Down Expand Up @@ -65,10 +67,12 @@ public static void main(String[] args) {
String path = "../../rapidoid.github.io/";
U.must(new File(path).exists());

Application app = Applications.openRootContext();

HTTPServer server = HTTP.server().build();
OAuth.register(server);
HttpBuiltins.register(server);
server.serve(new AppHandler());
OAuth.register(app);
HttpBuiltins.register(app);
app.getRouter().serve(new AppHandler());
server.start();

// FIXME For each example a server is created internally, trying to bind
Expand Down Expand Up @@ -184,7 +188,7 @@ private static String cleanSnippet(String s) {
public static void generate(HTTPServer server, String path, String id, List<Class<?>> classes) {

Classes appClasses = Classes.from(classes);
Application app = new Application(id, "app", null, null, U.set("/"), AppMode.DEVELOPMENT, appClasses);
Application app = new WebApp(id, "app", null, null, U.set("/"), AppMode.DEVELOPMENT, null, appClasses);
Ctxs.ctx().setApp(app);

Class<?> appCls = appClasses.get("Main");
Expand Down
6 changes: 0 additions & 6 deletions rapidoid-html/pom.xml
Expand Up @@ -32,12 +32,6 @@
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.rapidoid</groupId>
<artifactId>rapidoid-test-appctx-helper</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

</project>
9 changes: 7 additions & 2 deletions rapidoid-http/pom.xml
Expand Up @@ -29,12 +29,17 @@
</dependency>
<dependency>
<groupId>org.rapidoid</groupId>
<artifactId>rapidoid-appctx</artifactId>
<artifactId>rapidoid-security</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.rapidoid</groupId>
<artifactId>rapidoid-test-appctx-helper</artifactId>
<artifactId>rapidoid-plugins</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.rapidoid</groupId>
<artifactId>rapidoid-test-commons</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
Expand Down
@@ -1,4 +1,4 @@
package org.rapidoid.apps;
package org.rapidoid.appctx;

import java.lang.reflect.Proxy;
import java.util.Map;
Expand All @@ -15,7 +15,7 @@

/*
* #%L
* rapidoid-appctx
* rapidoid-http
* %%
* Copyright (C) 2014 - 2015 Nikolche Mihajlovski and contributors
* %%
Expand Down
@@ -1,4 +1,4 @@
package org.rapidoid.apps;
package org.rapidoid.appctx;

import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
Expand All @@ -8,7 +8,7 @@

/*
* #%L
* rapidoid-appctx
* rapidoid-http
* %%
* Copyright (C) 2014 - 2015 Nikolche Mihajlovski and contributors
* %%
Expand Down
@@ -1,11 +1,11 @@
package org.rapidoid.apps;
package org.rapidoid.appctx;

import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;

/*
* #%L
* rapidoid-appctx
* rapidoid-http
* %%
* Copyright (C) 2014 - 2015 Nikolche Mihajlovski and contributors
* %%
Expand Down
52 changes: 52 additions & 0 deletions rapidoid-http/src/main/java/org/rapidoid/appctx/Application.java
@@ -0,0 +1,52 @@
package org.rapidoid.appctx;

/*
* #%L
* rapidoid-http
* %%
* Copyright (C) 2014 - 2015 Nikolche Mihajlovski and contributors
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/

import java.util.Set;

import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
import org.rapidoid.ctx.Classes;
import org.rapidoid.http.Router;

@Authors("Nikolche Mihajlovski")
@Since("4.1.0")
public interface Application {

String getId();

String getTitle();

Set<String> getOwners();

Set<String> getHostnames();

Set<String> getUriContexts();

AppMode getMode();

Router getRouter();

Classes getClasses();

boolean dev();

}
@@ -1,14 +1,16 @@
package org.rapidoid.apps;
package org.rapidoid.appctx;

import java.util.Map;

import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
import org.rapidoid.ctx.Ctxs;
import org.rapidoid.plugins.Plugins;
import org.rapidoid.util.U;

/*
* #%L
* rapidoid-appctx
* rapidoid-http
* %%
* Copyright (C) 2014 - 2015 Nikolche Mihajlovski and contributors
* %%
Expand Down Expand Up @@ -71,4 +73,16 @@ public static RootApplication root() {
return new RootApplication();
}

public static Application openRootContext() {
Application app = Applications.root();
Applications.main().setDefaultApp(app);

Ctxs.open();
Ctxs.ctx().setApp(app);

Plugins.register(new AppClasspathEntitiesPlugin());

return app;
}

}

0 comments on commit 0e943e4

Please sign in to comment.