Skip to content
This repository was archived by the owner on Dec 4, 2017. It is now read-only.

Commit baa3a82

Browse files
committed
add MessageHandler interface
1 parent e97fbc5 commit baa3a82

37 files changed

+1176
-75
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package elasta.composer;
2+
3+
import elasta.pipeline.converter.Converter;
4+
5+
import java.util.Map;
6+
7+
/**
8+
* Created by sohan on 5/14/2017.
9+
*/
10+
public interface ConvertersMap {
11+
Map<Class, Converter> getMap();
12+
}
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package elasta.composer;
22

33
import elasta.core.flow.Flow;
4+
import io.vertx.core.Vertx;
45

56
/**
67
* Created by sohan on 5/10/2017.
78
*/
89
public interface Main {
910
static void main(String[] asdf) {
1011
System.out.println("ok");
12+
Vertx.vertx().eventBus().consumer("", event -> {});
1113
}
1214
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package elasta.composer.impl;
2+
3+
import com.google.common.collect.ImmutableList;
4+
import com.google.common.collect.ImmutableMap;
5+
import elasta.composer.ConvertersMap;
6+
import elasta.pipeline.converter.Converter;
7+
8+
import java.util.Map;
9+
import java.util.Objects;
10+
11+
/**
12+
* Created by sohan on 5/14/2017.
13+
*/
14+
final public class ConvertersMapImpl implements ConvertersMap {
15+
final Map<Class, Converter> converterMap;
16+
17+
public ConvertersMapImpl(Map<Class, Converter> converterMap) {
18+
Objects.requireNonNull(converterMap);
19+
this.converterMap = ImmutableMap.copyOf(converterMap);
20+
}
21+
22+
@Override
23+
public Map<Class, Converter> getMap() {
24+
return converterMap;
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package elasta.composer.message.handlers;
2+
3+
import io.vertx.core.eventbus.Message;
4+
import io.vertx.core.json.JsonArray;
5+
6+
/**
7+
* Created by sohan on 5/14/2017.
8+
*/
9+
public interface JsonArrayMessageHandler extends MessageHandler<JsonArray> {
10+
@Override
11+
void handle(Message<JsonArray> event);
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package elasta.composer.message.handlers;
2+
3+
import io.vertx.core.eventbus.Message;
4+
import io.vertx.core.json.JsonObject;
5+
6+
/**
7+
* Created by sohan on 5/14/2017.
8+
*/
9+
public interface JsonObjectMessageHandler extends MessageHandler<JsonObject> {
10+
@Override
11+
void handle(Message<JsonObject> event);
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package elasta.composer.message.handlers;
2+
3+
/**
4+
* Created by sohan on 5/14/2017.
5+
*/
6+
public interface JsonObjectMessageHandlerBuilder {
7+
JsonObjectMessageHandler build();
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package elasta.composer.message.handlers;
2+
3+
import io.vertx.core.Handler;
4+
import io.vertx.core.eventbus.Message;
5+
6+
/**
7+
* Created by sohan on 5/14/2017.
8+
*/
9+
public interface MessageHandler<T> extends Handler<Message<T>> {
10+
@Override
11+
void handle(Message<T> event);
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package elasta.composer.message.handlers.builder;
2+
3+
import elasta.composer.message.handlers.MessageHandler;
4+
5+
/**
6+
* Created by sohan on 5/14/2017.
7+
*/
8+
public interface DeleteMessageHandlerBuilder<T> {
9+
MessageHandler<T> build();
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package elasta.composer.message.handlers.builder;
2+
3+
import elasta.composer.message.handlers.JsonObjectMessageHandler;
4+
import elasta.composer.message.handlers.JsonObjectMessageHandlerBuilder;
5+
6+
/**
7+
* Created by sohan on 5/14/2017.
8+
*/
9+
public interface FindAllMessageHandlerBuilder extends JsonObjectMessageHandlerBuilder {
10+
@Override
11+
JsonObjectMessageHandler build();
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package elasta.composer.message.handlers.builder;
2+
3+
import elasta.composer.message.handlers.MessageHandler;
4+
import elasta.core.flow.Flow;
5+
6+
/**
7+
* Created by sohan on 5/14/2017.
8+
*/
9+
public interface FindOneMessageHandlerBuilder {
10+
MessageHandler<Object> build();
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package elasta.composer.message.handlers.builder;
2+
3+
import elasta.composer.message.handlers.JsonObjectMessageHandler;
4+
import elasta.composer.message.handlers.JsonObjectMessageHandlerBuilder;
5+
import io.vertx.core.Handler;
6+
import io.vertx.core.eventbus.Message;
7+
import io.vertx.core.json.JsonObject;
8+
9+
/**
10+
* Created by sohan on 5/14/2017.
11+
*/
12+
public interface InsertMessageHandlerBuilder extends JsonObjectMessageHandlerBuilder {
13+
@Override
14+
JsonObjectMessageHandler build();
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package elasta.composer.message.handlers.builder;
2+
3+
import elasta.composer.message.handlers.JsonObjectMessageHandler;
4+
import elasta.composer.message.handlers.JsonObjectMessageHandlerBuilder;
5+
import io.vertx.core.eventbus.Message;
6+
import io.vertx.core.json.JsonObject;
7+
8+
/**
9+
* Created by sohan on 5/14/2017.
10+
*/
11+
public interface UpdateMessageHandlerBuilder extends JsonObjectMessageHandlerBuilder {
12+
@Override
13+
JsonObjectMessageHandler build();
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
package elasta.composer.message.handlers.builder.impl;
2+
3+
import elasta.authorization.Authorizer;
4+
import elasta.composer.ConvertersMap;
5+
import elasta.composer.RequestContext;
6+
import elasta.composer.flow.builder.impl.DeleteFlowBuilderImpl;
7+
import elasta.composer.impl.ContextHolderImpl;
8+
import elasta.composer.impl.RequestContextImpl;
9+
import elasta.composer.message.handlers.MessageHandler;
10+
import elasta.composer.message.handlers.builder.DeleteMessageHandlerBuilder;
11+
import elasta.composer.model.response.builder.AuthorizationErrorModelBuilder;
12+
import elasta.composer.state.handlers.UserIdConverter;
13+
import elasta.composer.state.handlers.impl.*;
14+
import elasta.composer.state.handlers.response.generator.ResponseGenerator;
15+
import elasta.core.flow.EnterEventHandlerP;
16+
import elasta.core.flow.Flow;
17+
import elasta.eventbus.SimpleEventBus;
18+
import elasta.orm.Orm;
19+
20+
import java.util.Objects;
21+
22+
/**
23+
* Created by sohan on 5/14/2017.
24+
*/
25+
final public class DeleteMessageHandlerBuilderImpl<T> implements DeleteMessageHandlerBuilder<T> {
26+
final ResponseGenerator responseGenerator;
27+
final SimpleEventBus simpleEventBus;
28+
final String broadcastAddress;
29+
final Orm orm;
30+
final String entity;
31+
final String action;
32+
final Authorizer authorizer;
33+
final UserIdConverter userIdConverter;
34+
final AuthorizationErrorModelBuilder authorizationErrorModelBuilder;
35+
final ConvertersMap convertersMap;
36+
37+
public DeleteMessageHandlerBuilderImpl(ResponseGenerator responseGenerator, SimpleEventBus simpleEventBus, String broadcastAddress, Orm orm, String entity, String action, Authorizer authorizer, UserIdConverter userIdConverter, AuthorizationErrorModelBuilder authorizationErrorModelBuilder, ConvertersMap convertersMap) {
38+
Objects.requireNonNull(responseGenerator);
39+
Objects.requireNonNull(simpleEventBus);
40+
Objects.requireNonNull(broadcastAddress);
41+
Objects.requireNonNull(orm);
42+
Objects.requireNonNull(entity);
43+
Objects.requireNonNull(action);
44+
Objects.requireNonNull(authorizer);
45+
Objects.requireNonNull(userIdConverter);
46+
Objects.requireNonNull(authorizationErrorModelBuilder);
47+
Objects.requireNonNull(convertersMap);
48+
this.responseGenerator = responseGenerator;
49+
this.simpleEventBus = simpleEventBus;
50+
this.broadcastAddress = broadcastAddress;
51+
this.orm = orm;
52+
this.entity = entity;
53+
this.action = action;
54+
this.authorizer = authorizer;
55+
this.userIdConverter = userIdConverter;
56+
this.authorizationErrorModelBuilder = authorizationErrorModelBuilder;
57+
this.convertersMap = convertersMap;
58+
}
59+
60+
@Override
61+
public MessageHandler<T> build() {
62+
63+
ContextHolderImpl contextHolder = new ContextHolderImpl();
64+
65+
final RequestContext requestContext = new RequestContextImpl(contextHolder, convertersMap.getMap());
66+
67+
Flow flow = new DeleteFlowBuilderImpl(
68+
startHandler(),
69+
authorizationHandler(requestContext),
70+
deleteHandler(),
71+
broadcastHandler(),
72+
generateResponseHandler(),
73+
endHandler()
74+
).build();
75+
76+
return message -> flow.start(message.body());
77+
}
78+
79+
private EnterEventHandlerP endHandler() {
80+
return new EndStateHandlerBuilderImpl().build();
81+
}
82+
83+
private EnterEventHandlerP generateResponseHandler() {
84+
return new GenerateResponseStateHandlerImpl(
85+
responseGenerator
86+
).build();
87+
}
88+
89+
private EnterEventHandlerP broadcastHandler() {
90+
return new BroadcastStateHandlerBuilderImpl(
91+
simpleEventBus,
92+
broadcastAddress
93+
).build();
94+
}
95+
96+
private EnterEventHandlerP deleteHandler() {
97+
return new DeleteStateHandlerBuilderImpl(
98+
orm,
99+
entity
100+
).build();
101+
}
102+
103+
private EnterEventHandlerP authorizationHandler(RequestContext requestContext) {
104+
return new AuthorizationStateHandlerBuilderImpl(
105+
authorizer,
106+
requestContext,
107+
userIdConverter,
108+
action,
109+
authorizationErrorModelBuilder
110+
).build();
111+
}
112+
113+
private EnterEventHandlerP startHandler() {
114+
return new StartStateHandlerBuilderImpl().build();
115+
}
116+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
package elasta.composer.message.handlers.builder.impl;
2+
3+
import elasta.authorization.Authorizer;
4+
import elasta.composer.ConvertersMap;
5+
import elasta.composer.converter.JsonObjectToPageRequestConverter;
6+
import elasta.composer.converter.JsonObjectToQueryParamsConverter;
7+
import elasta.composer.flow.builder.impl.FindAllFlowBuilderImpl;
8+
import elasta.composer.impl.ContextHolderImpl;
9+
import elasta.composer.impl.RequestContextImpl;
10+
import elasta.composer.message.handlers.JsonObjectMessageHandler;
11+
import elasta.composer.message.handlers.builder.FindAllMessageHandlerBuilder;
12+
import elasta.composer.model.response.builder.AuthorizationErrorModelBuilder;
13+
import elasta.composer.model.response.builder.PageModelBuilder;
14+
import elasta.composer.state.handlers.UserIdConverter;
15+
import elasta.composer.state.handlers.impl.AuthorizationStateHandlerBuilderImpl;
16+
import elasta.composer.state.handlers.impl.EndStateHandlerBuilderImpl;
17+
import elasta.composer.state.handlers.impl.FindAllStateHandlerBuilderImpl;
18+
import elasta.composer.state.handlers.impl.StartStateHandlerBuilderImpl;
19+
import elasta.core.flow.EnterEventHandlerP;
20+
import elasta.core.flow.Flow;
21+
import elasta.orm.Orm;
22+
import elasta.orm.query.expression.FieldExpression;
23+
24+
import java.util.Collection;
25+
import java.util.Objects;
26+
27+
/**
28+
* Created by sohan on 5/14/2017.
29+
*/
30+
final public class FindAllMessageHandlerBuilderImpl implements FindAllMessageHandlerBuilder {
31+
final String entity;
32+
final Orm orm;
33+
final Authorizer authorizer;
34+
final String action;
35+
final AuthorizationErrorModelBuilder authorizationErrorModelBuilder;
36+
final UserIdConverter userIdConverter;
37+
final ConvertersMap convertersMap;
38+
final FieldExpression paginationKey;
39+
final JsonObjectToPageRequestConverter jsonObjectToPageRequestConverter;
40+
final JsonObjectToQueryParamsConverter jsonObjectToQueryParamsConverter;
41+
final PageModelBuilder pageModelBuilder;
42+
43+
public FindAllMessageHandlerBuilderImpl(String entity, Orm orm, Authorizer authorizer, String action, AuthorizationErrorModelBuilder authorizationErrorModelBuilder, UserIdConverter userIdConverter, ConvertersMap convertersMap, FieldExpression paginationKey, JsonObjectToPageRequestConverter jsonObjectToPageRequestConverter, JsonObjectToQueryParamsConverter jsonObjectToQueryParamsConverter, PageModelBuilder pageModelBuilder) {
44+
Objects.requireNonNull(entity);
45+
Objects.requireNonNull(orm);
46+
Objects.requireNonNull(authorizer);
47+
Objects.requireNonNull(action);
48+
Objects.requireNonNull(authorizationErrorModelBuilder);
49+
Objects.requireNonNull(userIdConverter);
50+
Objects.requireNonNull(convertersMap);
51+
Objects.requireNonNull(paginationKey);
52+
Objects.requireNonNull(jsonObjectToPageRequestConverter);
53+
Objects.requireNonNull(jsonObjectToQueryParamsConverter);
54+
Objects.requireNonNull(pageModelBuilder);
55+
this.entity = entity;
56+
this.orm = orm;
57+
this.authorizer = authorizer;
58+
this.action = action;
59+
this.authorizationErrorModelBuilder = authorizationErrorModelBuilder;
60+
this.userIdConverter = userIdConverter;
61+
this.convertersMap = convertersMap;
62+
this.paginationKey = paginationKey;
63+
this.jsonObjectToPageRequestConverter = jsonObjectToPageRequestConverter;
64+
this.jsonObjectToQueryParamsConverter = jsonObjectToQueryParamsConverter;
65+
this.pageModelBuilder = pageModelBuilder;
66+
}
67+
68+
@Override
69+
public JsonObjectMessageHandler build() {
70+
71+
final ContextHolderImpl contextHolder = new ContextHolderImpl();
72+
final RequestContextImpl requestContext = new RequestContextImpl(contextHolder, convertersMap.getMap());
73+
74+
final Flow flow = new FindAllFlowBuilderImpl(
75+
startHandler(),
76+
authorizationHandler(requestContext),
77+
findAllHandler(),
78+
endHandler()
79+
).build();
80+
return message -> flow.start(message.body());
81+
}
82+
83+
private EnterEventHandlerP endHandler() {
84+
return new EndStateHandlerBuilderImpl().build();
85+
}
86+
87+
private EnterEventHandlerP findAllHandler() {
88+
return new FindAllStateHandlerBuilderImpl(
89+
entity,
90+
paginationKey,
91+
orm,
92+
jsonObjectToPageRequestConverter,
93+
jsonObjectToQueryParamsConverter,
94+
pageModelBuilder
95+
).build();
96+
}
97+
98+
private EnterEventHandlerP authorizationHandler(RequestContextImpl requestContext) {
99+
return new AuthorizationStateHandlerBuilderImpl(
100+
authorizer,
101+
requestContext,
102+
userIdConverter,
103+
action,
104+
authorizationErrorModelBuilder
105+
).build();
106+
}
107+
108+
private EnterEventHandlerP startHandler() {
109+
return new StartStateHandlerBuilderImpl().build();
110+
}
111+
}

0 commit comments

Comments
 (0)