Skip to content

Commit

Permalink
Introduced DB plugin, de-coupled GUI from rapidoid-db.
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed May 7, 2015
1 parent fb7f393 commit 7e918ce
Show file tree
Hide file tree
Showing 11 changed files with 105 additions and 76 deletions.
4 changes: 2 additions & 2 deletions rapidoid-app/src/main/java/org/rapidoid/app/AppHandler.java
Expand Up @@ -22,13 +22,13 @@


import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.db.DB;
import org.rapidoid.http.Handler; import org.rapidoid.http.Handler;
import org.rapidoid.http.HttpExchange; import org.rapidoid.http.HttpExchange;
import org.rapidoid.http.HttpExchangeImpl; import org.rapidoid.http.HttpExchangeImpl;
import org.rapidoid.http.HttpProtocol; import org.rapidoid.http.HttpProtocol;
import org.rapidoid.lambda.Callback; import org.rapidoid.lambda.Callback;
import org.rapidoid.pages.Pages; import org.rapidoid.pages.Pages;
import org.rapidoid.plugins.Plugins;
import org.rapidoid.rest.WebPojoDispatcher; import org.rapidoid.rest.WebPojoDispatcher;
import org.rapidoid.util.CustomizableClassLoader; import org.rapidoid.util.CustomizableClassLoader;


Expand Down Expand Up @@ -63,7 +63,7 @@ public void onDone(Void result, Throwable error) {


x.async(); x.async();


DB.transaction(new Runnable() { Plugins.db().transaction(new Runnable() {
@Override @Override
public void run() { public void run() {
Object result = processReq(x, appCls); Object result = processReq(x, appCls);
Expand Down
Expand Up @@ -33,7 +33,6 @@
import org.rapidoid.beany.Beany; import org.rapidoid.beany.Beany;
import org.rapidoid.beany.Metadata; import org.rapidoid.beany.Metadata;
import org.rapidoid.config.Conf; import org.rapidoid.config.Conf;
import org.rapidoid.db.DB;
import org.rapidoid.html.Cmd; import org.rapidoid.html.Cmd;
import org.rapidoid.html.Tag; import org.rapidoid.html.Tag;
import org.rapidoid.html.tag.ATag; import org.rapidoid.html.tag.ATag;
Expand All @@ -46,6 +45,7 @@
import org.rapidoid.pages.HttpExchangeHolder; import org.rapidoid.pages.HttpExchangeHolder;
import org.rapidoid.pages.Pages; import org.rapidoid.pages.Pages;
import org.rapidoid.pages.impl.ComplexView; import org.rapidoid.pages.impl.ComplexView;
import org.rapidoid.plugins.Plugins;
import org.rapidoid.security.Secure; import org.rapidoid.security.Secure;
import org.rapidoid.util.Cls; import org.rapidoid.util.Cls;
import org.rapidoid.util.English; import org.rapidoid.util.English;
Expand Down Expand Up @@ -193,7 +193,7 @@ protected Object genericScreen() {
String type = m.group(1); String type = m.group(1);
long id = Long.parseLong(m.group(2)); long id = Long.parseLong(m.group(2));


Object entity = DB.getIfExists(id); Object entity = Plugins.db().getIfExists(id);
if (entity == null || !Metadata.isAnnotated(entity.getClass(), Scaffold.class)) { if (entity == null || !Metadata.isAnnotated(entity.getClass(), Scaffold.class)) {
return null; return null;
} }
Expand Down Expand Up @@ -225,7 +225,7 @@ protected Object genericScreen() {
String type = m.group(1); String type = m.group(1);
long id = Long.parseLong(m.group(2)); long id = Long.parseLong(m.group(2));


Object entity = DB.getIfExists(id); Object entity = Plugins.db().getIfExists(id);
if (entity == null || !Metadata.isAnnotated(entity.getClass(), Scaffold.class)) { if (entity == null || !Metadata.isAnnotated(entity.getClass(), Scaffold.class)) {
return null; return null;
} }
Expand Down
Expand Up @@ -22,9 +22,9 @@


import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.db.DB;
import org.rapidoid.html.Tag; import org.rapidoid.html.Tag;
import org.rapidoid.log.Log; import org.rapidoid.log.Log;
import org.rapidoid.plugins.Plugins;
import org.rapidoid.security.annotation.DevMode; import org.rapidoid.security.annotation.DevMode;


@DevMode @DevMode
Expand All @@ -49,7 +49,7 @@ public Tag confirmDelete() {
public void onYesDelete() { public void onYesDelete() {
Log.info("yes"); Log.info("yes");
hideModal(); hideModal();
DB.sudo().clear(); Plugins.db().deleteAllData();
ctx().goBack(1); ctx().goBack(1);
} }


Expand Down
Expand Up @@ -23,8 +23,8 @@
import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Session; import org.rapidoid.annotation.Session;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.db.DB;
import org.rapidoid.html.Tag; import org.rapidoid.html.Tag;
import org.rapidoid.plugins.Plugins;
import org.rapidoid.util.U; import org.rapidoid.util.U;
import org.rapidoid.widget.FormWidget; import org.rapidoid.widget.FormWidget;


Expand All @@ -45,7 +45,7 @@ public Object content() {
} }


public void onSave() { public void onSave() {
DB.update(target); Plugins.db().update(target);
ctx().goBack(1); ctx().goBack(1);
} }


Expand Down
Expand Up @@ -51,7 +51,7 @@ public Object content() {
} }


public void onSave() { public void onSave() {
DB.insert(target); Plugins.db().insert(target);
ctx().goBack(1); ctx().goBack(1);
} }


Expand Down
4 changes: 2 additions & 2 deletions rapidoid-app/src/main/java/org/rapidoid/app/Screen.java
Expand Up @@ -23,9 +23,9 @@
import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Session; import org.rapidoid.annotation.Session;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.db.DB;
import org.rapidoid.http.HttpExchange; import org.rapidoid.http.HttpExchange;
import org.rapidoid.pages.HttpExchangeHolder; import org.rapidoid.pages.HttpExchangeHolder;
import org.rapidoid.plugins.Plugins;
import org.rapidoid.util.U; import org.rapidoid.util.U;


@Authors("Nikolche Mihajlovski") @Authors("Nikolche Mihajlovski")
Expand Down Expand Up @@ -79,7 +79,7 @@ protected HttpExchange ctx() {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
protected <T> T entity() { protected <T> T entity() {
long id = Long.parseLong(ctx().pathSegment(1)); long id = Long.parseLong(ctx().pathSegment(1));
Object entity = DB.getIfExists(id); Object entity = Plugins.db().getIfExists(id);


if (entity == null) { if (entity == null) {
throw ctx().notFound(); throw ctx().notFound();
Expand Down
Expand Up @@ -25,10 +25,10 @@


import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.db.DB;
import org.rapidoid.html.Tag; import org.rapidoid.html.Tag;
import org.rapidoid.http.HttpExchange; import org.rapidoid.http.HttpExchange;
import org.rapidoid.model.Items; import org.rapidoid.model.Items;
import org.rapidoid.plugins.Plugins;
import org.rapidoid.util.U; import org.rapidoid.util.U;
import org.rapidoid.widget.GridWidget; import org.rapidoid.widget.GridWidget;
import org.rapidoid.widget.HighlightedGridWidget; import org.rapidoid.widget.HighlightedGridWidget;
Expand All @@ -40,7 +40,7 @@ public class SearchScreenBuiltIn extends Screen {
public Object content(HttpExchange x) { public Object content(HttpExchange x) {


final String query = x.param("q", ""); final String query = x.param("q", "");
List<Object> found = DB.find(query); List<?> found = Plugins.db().find(query);
Items items = beanItems(Object.class, found.toArray()); Items items = beanItems(Object.class, found.toArray());


Tag queryInfo = !U.isEmpty(query) ? span(" for ", b(highlight(query))) : null; Tag queryInfo = !U.isEmpty(query) ? span(" for ", b(highlight(query))) : null;
Expand Down
60 changes: 0 additions & 60 deletions rapidoid-app/src/main/java/org/rapidoid/app/TxInterceptor.java

This file was deleted.

Expand Up @@ -23,8 +23,8 @@
import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Session; import org.rapidoid.annotation.Session;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.db.DB;
import org.rapidoid.html.Tag; import org.rapidoid.html.Tag;
import org.rapidoid.plugins.Plugins;
import org.rapidoid.security.Secure; import org.rapidoid.security.Secure;
import org.rapidoid.util.Cls; import org.rapidoid.util.Cls;
import org.rapidoid.util.U; import org.rapidoid.util.U;
Expand Down Expand Up @@ -63,7 +63,7 @@ public void onDelete() {


public void onYesDelete() { public void onYesDelete() {
long id = Long.parseLong(ctx().pathSegment(1)); long id = Long.parseLong(ctx().pathSegment(1));
DB.delete(id); Plugins.db().delete(id);


hideModal(); hideModal();
ctx().goBack(1); ctx().goBack(1);
Expand Down
54 changes: 54 additions & 0 deletions rapidoid-plugins/src/main/java/org/rapidoid/plugins/DbPlugin.java
@@ -0,0 +1,54 @@
package org.rapidoid.plugins;

/*
* #%L
* rapidoid-plugins
* %%
* Copyright (C) 2014 - 2015 Nikolche Mihajlovski
* %%
* 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.List;

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

@Authors("Nikolche Mihajlovski")
@Since("3.0.0")
public interface DbPlugin {

<T> T get(long id);

<T> T getIfExists(long id);

<T> List<T> getAll(Class<T> clazz);

void update(Object entity);

void insert(Object entity);

void delete(long id);

<T> List<T> find(String query);

void transaction(Runnable tx, boolean readonly, Callback<Void> callback);

/**
* WARNING: Deletes ALL data in the database! Use with care!
*/
void deleteAllData();

}
35 changes: 35 additions & 0 deletions rapidoid-plugins/src/main/java/org/rapidoid/plugins/Plugins.java
@@ -0,0 +1,35 @@
package org.rapidoid.plugins;

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

/*
* #%L
* rapidoid-plugins
* %%
* Copyright (C) 2014 - 2015 Nikolche Mihajlovski
* %%
* 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%
*/

@Authors("Nikolche Mihajlovski")
@Since("3.0.0")
public class Plugins {

public static DbPlugin db() {
return null;
}


}

0 comments on commit 7e918ce

Please sign in to comment.