diff --git a/conf/application.conf b/conf/application.conf
index 2a01862..d97d14d 100644
--- a/conf/application.conf
+++ b/conf/application.conf
@@ -1,15 +1,11 @@
application {
-
env = dev
version = "1.0"
- name="Wurrly API"
-
-
-
+ name="Wurrly API"
# tmpdir
tmpdir = ${java.io.tmpdir}/${application.name}
@@ -31,7 +27,9 @@ application {
# date format
dateFormat = dd-MMM-yyyy
- defaultResponseListener = "com.wurrly.server.handlers.ServerDefaultResponseListener"
+ fallbackHandler = "io.proteus.server.handlers.ServerFallbackHandler"
+
+ defaultResponseListener = "io.proteus.server.handlers.ServerDefaultResponseListener"
# number format, system default. set it at runtime
# numberFormat = DecimalFormat.getInstance(${application.lang})).toPattern()
@@ -44,13 +42,20 @@ application {
# redirect to/force https
# example: https://my.domain.com/{0}
redirect_https = ""
-
-
+
}
api.version="v1"
+globalHeaders
+{
+# Access-Control-Allow-Origin: "*"
+# Access-Control-Allow-Methods: "*"
+# Access-Control-Allow-Headers: "*"
+ Server: ${application.name}
+}
+
assets {
path = "/public"
@@ -60,193 +65,6 @@ assets {
}
}
-# images
-image.size.min=120
-image.size.max=3200
-image.quality.max=80
-
-# cassandra
-
-
-cassandra.keyspace="wurrly"
-cassandra.queryLimit=100
-cassandra.connections.max=100
-cassandra.connections.min=5
-
-#redis
-
-redis.port=6379
-redis.password=null
-redis.maxTotal=1024
-redis.maxIdle=10
-redis.minIdle=5
-
-#elasticsearch
-
-es.index.name="wurrly"
-
-
-
-#graph
-
-graph.enabled = true
-
-# analytics
-
-events.batch.size=10
-
-# okhttp
-
-okhttp.timeout=10
-
-# azure
-
-azure.accountName="wurrly"
-azure.accessKey.primary="lQyT2OeOYeNoYh/NX58LKCMFue6YYp7gjWLvH+2c5oq1s/jE0ur6kkN25oWn5vGDYdQgREmaZZHI6qpjs/FlnA=="
-azure.accessKey.secondary="qYB2MkSrgsEAiXfFCVfG0xK7DDkmRCI8Y1KH0iWaQz+k+OdbLyOO8jax+ZqStWg0XIQL1SA099eUEcWGtCjRIA=="
-
-#ebean models
-
-ebean.default=[ "models.MediaContent", "models.VideoOverlay", "models.Mask", "models.ContentResource", "models.Content", "models.Hero", "models.Battle", "models.Tip", "models.PlaylistCategory", "models.Collaboration", "models.Review", "models.Collaborator", "models.CollaboratorComment", "models.MediaPurchase","models.AdminActivity","models.Playlist","models.SongTrack","models.Feature","models.Publisher","models.Label","models.Credentials","models.WurrlyModel","models.ArtistFact","models.ArtistQuestion","models.Property","models.Artist","models.Wurrly","models.Song","models.Report","models.Competition","models.Event","models.Comment", "models.User","models.adapter.UserEntityListener","models.adapter.SongEntityListener","models.adapter.WurrlyEntityListener"]
-
-# akka
-
-subsystem.worker.count=12
-subsystem.worker.timeout=60000
-
-# netty
-
-play.http.parser.maxMemoryBuffer=256000K
-play.http.parser.maxDiskBuffer=256000K
-
-# location
-
-location.country.db.path="support/geo/Country.mmdb"
-location.city.db.path="support/geo/City.mmdb"
-location.iso.codes.path="support/geo/territories.json"
-location.default.region="GB"
-
-# hashids
-
-hashids.salt="3C0B0AEF-794F-4D89-9EEE-476CE9A89DFB"
-
-# newrelic
-
-newrelic.license.key="a9bfbe086c5964de4617fa0280077dd2273d3a6b"
-
-# users
-
-user.feed.item.limit=1500
-user.default.avatarPath="4c/50/b8/36/e7e2bf69ca.png"
-user.default.bannerPath="57/60/9b/8f/61341a91f0.png"
-user.password.backdoor="happyasaclamindecember"
-
-
-# google cloud messaging
-
-gcm.senderId=1095155988888
-gcm.apiKey="AIzaSyDbHS8u7LEZQcr3_WooM5Ib-DUEU8HTCfU"
-
-
-# twilio
-
-twilio.number="+16467987759"
-twilio.sid="AC8a33a9fc51927ccd980ac919cdadcba5"
-twilio.token="de44558f9a980b337512eb60b812f31a"
-
-
-
-#api
-
-api.authentication.header="X-Wurrly-Auth"
-api.authentication.key="213fe69502445ed67ae8b99d22838802"
-
-# hfa
-hfa.royaltyId.length=10
-
-# shopify
-shopify.api.key=769375b638f4a6132df62f3c10fdab21
-shopify.api.password=7f950bbb21cf43c0afe8c050907993b3
-shopify.api.secret=a9c0ebee8d529e05ded128c1738afbcb
-shopify.login="josh@wurrly.com"
-shopify.password="wuRR1y"
-shopify.authorization="Basic NzY5Mzc1YjYzOGY0YTYxMzJkZjYyZjNjMTBmZGFiMjE6N2Y5NTBiYmIyMWNmNDNjMGFmZThjMDUwOTA3OTkzYjM="
-shopify.shop.url="https://wurrly.myshopify.com/admin"
-shopify.expiration.days=6
-shopify.product.image.prefix="http://cdn1.wurrly.co/images/w550/"
-shopify.domain="wurrly.myshopify.com"
-shopify.channel.mobile="23087876"
-shopify.product.price="1.99"
-
-#migration
-migration.baseUrl="http://imaging.wurrly.co:4444/wurrlies?"
-
-#itms
-itms.secret="a1f89c67d6e34599b1056b3f42f1c735"
-itms.verification.production.url="https://buy.itunes.apple.com/verifyReceipt"
-itms.verification.sandbox.url="https://sandbox.itunes.apple.com/verifyReceipt"
-
-#subscriptions
-
-user.max.wurrlies=20
-
-#notifications
-
-notifications.enabled=1
-
-#collaborations
-
-collaborations.maxUsers=4
-
-#mailchimp
-
-
-mailchimp.base.url="https://us9.api.mailchimp.com/3.0/"
-
-#password
-
-user.default.password="$2a$10$6T5QVxo16r7qoSdwm9Hx/.rJzWuMQEFoJ6X/VL0DKY0uxaO.XSjBa"
-
-#battles
-
-battle.voting.duration=48
-
-#sift
-
-sift.api.key="GT4cFVEZegH4N5jxq5rj"
-sift.api.url="https://wur28vu8.pottymouthfilter.com/v1/"
include "swagger.conf"
-
-# The application languages
-# ~~~~~
-
-
-# Router
-# ~~~~~
-# Define the Router object to use for this application.
-# This router will be looked up first when the application is starting up,
-# so make sure this is the entry point.
-# Furthermore, it's assumed your route file is named properly.
-# So for an application router like `my.application.Router`,
-# you may need to define a router file `conf/my.application.routes`.
-# Default to Routes in the root package (and conf/routes)
-# play.http.router = my.application.Routes
-
-# Database configuration
-# ~~~~~
-# You can declare as many datasources as you want.
-# By convention, the default datasource is named `default`
-#
-# db.default.driver=org.h2.Driver
-# db.default.url="jdbc:h2:mem:play"
-# db.default.username=sa
-# db.default.password=""
-
-# Evolutions
-# ~~~~~
-# You can disable evolutions if needed
-# play.evolutions.enabled=false
-
-# You can disable evolutions for a specific datasource if necessary
-# play.evolutions.db.default.enabled=false
+
\ No newline at end of file
diff --git a/conf/logback.xml b/conf/logback.xml
index 2c628ce..71c7db4 100644
--- a/conf/logback.xml
+++ b/conf/logback.xml
@@ -20,8 +20,8 @@
-
-
+
+
diff --git a/pom.xml b/pom.xml
index 7a840ec..05caa4f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -249,7 +249,7 @@
- com.wurrly
+ io.proteus
jsoniter
0.9.8
diff --git a/wurrly-undertow.iml b/proteus.iml
similarity index 100%
rename from wurrly-undertow.iml
rename to proteus.iml
diff --git a/src/main/java/com/wurrly/Application.java b/src/main/java/io/proteus/Application.java
similarity index 66%
rename from src/main/java/com/wurrly/Application.java
rename to src/main/java/io/proteus/Application.java
index 3e4b309..03beb2f 100644
--- a/src/main/java/com/wurrly/Application.java
+++ b/src/main/java/io/proteus/Application.java
@@ -1,15 +1,9 @@
/**
*
*/
-package com.wurrly;
+package io.proteus;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.nio.ByteBuffer;
-import java.util.Collections;
import java.util.HashSet;
-import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -31,30 +25,24 @@
import com.jsoniter.DecodingMode;
import com.jsoniter.JsonIterator;
import com.jsoniter.annotation.JsoniterAnnotationSupport;
-import com.jsoniter.output.Codegen;
import com.jsoniter.output.EncodingMode;
import com.jsoniter.output.JsonStream;
-import com.jsoniter.spi.Encoder;
-import com.jsoniter.spi.TypeLiteral;
import com.typesafe.config.Config;
-import com.wurrly.controllers.Users;
-import com.wurrly.modules.ConfigModule;
-import com.wurrly.modules.RoutingModule;
-import com.wurrly.server.endpoints.EndpointInfo;
-import com.wurrly.server.handlers.HandlerGenerator;
-import com.wurrly.server.handlers.benchmark.BenchmarkHandlers;
-import com.wurrly.services.AssetsService;
-import com.wurrly.services.SwaggerService;
-
-import io.undertow.Handlers;
+
+import io.proteus.controllers.Benchmarks;
+import io.proteus.controllers.Users;
+import io.proteus.modules.ConfigModule;
+import io.proteus.server.endpoints.EndpointInfo;
+import io.proteus.server.handlers.BaseHttpHandler;
+import io.proteus.server.handlers.GlobalHeaderHttpHandler;
+import io.proteus.server.handlers.HandlerGenerator;
+import io.proteus.services.AssetsService;
+import io.proteus.services.SwaggerService;
import io.undertow.Undertow;
import io.undertow.UndertowOptions;
import io.undertow.server.DefaultResponseListener;
import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
import io.undertow.server.RoutingHandler;
-import io.undertow.util.Headers;
-import io.undertow.util.HttpString;
/**
* @author jbauer
*/
@@ -144,26 +132,39 @@ public Undertow buildServer()
final RoutingHandler router = injector.getInstance(RoutingHandler.class);
final DefaultResponseListener defaultResponseListener = injector.getInstance(DefaultResponseListener.class);
-
- HandlerGenerator generator = new HandlerGenerator("com.wurrly.controllers.handlers","RouteHandlers");
- injector.injectMembers(generator);
-
- Supplier generatedRouteSupplier = injector.getInstance(generator.compileClass());
- router.addAll(generatedRouteSupplier.get());
-
- router.addAll(new BenchmarkHandlers().get());
+ for(Class> controllerClass : registeredControllers)
+ {
+ HandlerGenerator generator = new HandlerGenerator("io.proteus.controllers.handlers",controllerClass);
+
+ injector.injectMembers(generator);
- StringBuilder sb = new StringBuilder();
+ Supplier generatedRouteSupplier = injector.getInstance(generator.compileClass());
+
+ router.addAll(generatedRouteSupplier.get());
+ }
+
+ Config globalHeaders = rootConfig.getConfig("globalHeaders");
+ Map globalHeadersParameters = globalHeaders.entrySet().stream().collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue().render()));
+
+ HttpHandler baseHandler = new BaseHttpHandler(router, defaultResponseListener);
+
+ final GlobalHeaderHttpHandler globalHeaderHandler = injector.getInstance(GlobalHeaderHttpHandler.class);
+
+ //baseHandler = globalHeaderHandler.wrap(baseHandler);
+
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("\n\nUsing the following global headers: \n\n");
+ sb.append(globalHeadersParameters.entrySet().stream().map( e -> "\t" + e.getKey() + " = " + e.getValue() ).collect(Collectors.joining("\n")));
+ sb.append("\n\nRegistered the following endpoints: \n\n");
+ sb.append(this.registeredEndpoints.stream().sorted().map(EndpointInfo::toString).collect(Collectors.joining("\n")));
+ sb.append("\n");
- this.registeredEndpoints.stream().forEachOrdered( r -> sb.append(r.toString()).append("\n"));
-
- log.info("\n\nRegistered the following endpoints: \n\n" + sb.toString());
-
-
-
+ log.info(sb.toString());
+
webServer = Undertow.builder()
.addHttpListener(rootConfig.getInt("application.port"),rootConfig.getString("application.host"))
.setBufferSize(1024 * 16)
@@ -176,34 +177,8 @@ public Undertow buildServer()
.setServerOption(UndertowOptions.RECORD_REQUEST_START_TIME, false)
.setServerOption(UndertowOptions.MAX_ENTITY_SIZE, 1000000L * 200 )
.setWorkerThreads(Runtime.getRuntime().availableProcessors()*8)
- .setHandler(
- new HttpHandler()
- {
-
- @Override
- public void handleRequest(final HttpServerExchange exchange) throws Exception
- {
-
- exchange.addDefaultResponseListener(defaultResponseListener);
-
-// exchange.getResponseHeaders().put(HttpString.tryFromString("Access-Control-Allow-Origin"), "*");
-// exchange.getResponseHeaders().put(HttpString.tryFromString("Access-Control-Allow-Methods"), "*");
-// exchange.getResponseHeaders().put(HttpString.tryFromString("Access-Control-Allow-Headers"), "*");
- //exchange.getResponseHeaders().put(Headers.SERVER, "Bowser");
-
- try {
- router.handleRequest(exchange);
- } catch (Exception e)
- {
- if(exchange.isResponseChannelAvailable()) {
- log.error(e.getMessage());
- exchange.endExchange();
- }
- }
-
- }
- }
- ).build();
+ .setHandler( baseHandler )
+ .build();
@@ -240,6 +215,8 @@ public static void main(String[] args)
app.useController(Users.class);
+ app.useController(Benchmarks.class);
+
app.start();
} catch (Exception e)
@@ -251,13 +228,6 @@ public static void main(String[] args)
}
- public static class BaseHandlers
- {
- public static void notFoundHandler(HttpServerExchange exchange) {
- exchange.setStatusCode(404);
- exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
- exchange.getResponseSender().send("Page Not Found!!");
- }
- }
+
}
diff --git a/src/main/java/io/proteus/controllers/Benchmarks.java b/src/main/java/io/proteus/controllers/Benchmarks.java
new file mode 100644
index 0000000..c16d52c
--- /dev/null
+++ b/src/main/java/io/proteus/controllers/Benchmarks.java
@@ -0,0 +1,100 @@
+/**
+ *
+ */
+package io.proteus.controllers;
+
+import static io.proteus.server.ServerResponse.response;
+
+import java.io.ByteArrayOutputStream;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.inject.Singleton;
+import com.jsoniter.output.JsonStream;
+
+import io.proteus.models.World;
+import io.proteus.server.ServerResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.undertow.server.HttpServerExchange;
+
+/**
+ * @author jbauer
+ *
+ */
+@Api(tags="benchmark")
+@Path("/benchmark")
+@Produces((MediaType.APPLICATION_JSON))
+@Consumes((MediaType.MEDIA_TYPE_WILDCARD))
+@Singleton
+public class Benchmarks
+{
+
+
+ @GET
+ @Path("/json")
+ @ApiOperation(value = "Json serialization endpoint", httpMethod = "GET" )
+ public void json(HttpServerExchange exchange)
+ {
+ response( JsonStream.serialize(ImmutableMap.of("message", "Hello, World!")) ).send(exchange);
+ }
+
+ @GET
+ @Path("/world")
+ @ApiOperation(value = "World serialization endpoint", httpMethod = "GET" )
+ public void world(HttpServerExchange exchange)
+ {
+ JsonStream stream = JsonStream.localStream();
+ World world = new World(123,123);
+ try
+ {
+ world.serialize(stream);
+ response( stream.toString() ).applicationJson().send(exchange);
+
+ stream.close();
+
+ } catch (Exception e)
+ {
+
+ }
+
+ }
+
+ @GET
+ @Path("/world2")
+ @ApiOperation(value = "World serialization endpoint", httpMethod = "GET" )
+ public ServerResponse world2()
+ {
+ World world = new World(123,123);
+
+ return response( world ).applicationJson();
+ }
+
+ @GET
+ @Path("/world3")
+ @ApiOperation(value = "World serialization endpoint", httpMethod = "GET" )
+ public void world3(HttpServerExchange exchange)
+ {
+ World world = new World(123,123);
+
+ response( JsonStream.serialize(world) ).applicationJson().send(exchange);
+
+
+ }
+
+
+ @GET
+ @Path("/plaintext")
+ @Produces((MediaType.TEXT_PLAIN))
+ @ApiOperation(value = "Plaintext endpoint", httpMethod = "GET" )
+ public void plaintext(HttpServerExchange exchange)
+ {
+ response("Hello, World!").textPlain().send(exchange);
+
+ }
+}
diff --git a/src/main/java/com/wurrly/controllers/Users.java b/src/main/java/io/proteus/controllers/Users.java
similarity index 84%
rename from src/main/java/com/wurrly/controllers/Users.java
rename to src/main/java/io/proteus/controllers/Users.java
index 5bed6df..5000c93 100644
--- a/src/main/java/com/wurrly/controllers/Users.java
+++ b/src/main/java/io/proteus/controllers/Users.java
@@ -1,9 +1,9 @@
/**
*
*/
-package com.wurrly.controllers;
+package io.proteus.controllers;
-import static com.wurrly.server.ServerResponse.response;
+import static io.proteus.server.ServerResponse.response;
import java.nio.ByteBuffer;
import java.util.Date;
@@ -33,10 +33,10 @@
import com.jsoniter.any.Any;
import com.jsoniter.output.JsonStream;
import com.typesafe.config.Config;
-import com.wurrly.models.User;
-import com.wurrly.server.ServerRequest;
-import com.wurrly.server.ServerResponse;
+import io.proteus.models.User;
+import io.proteus.server.ServerRequest;
+import io.proteus.server.ServerResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -52,13 +52,9 @@
@Singleton
public class Users
{
-
- @Inject
- @Named("es.index.name")
- protected String esIndexName;
-
+
@Inject
- protected Config configuration;
+ protected Config config;
private static Logger log = LoggerFactory.getLogger(Users.class.getCanonicalName());
@@ -103,9 +99,8 @@ public ServerResponse userType(
log.debug("optionalDate: " + optionalDate);
- return response(User.class)
- .ok()
- .entity(new User(232343L))
+ return response(new User(232343L))
+ .ok()
.header(HttpString.tryFromString("TestHeader"), "57475475");
}
@@ -128,7 +123,7 @@ public ServerResponse userForm( final ServerRequest serverRequest,
log.debug("testFile: " + testFile);
//
//
- return response(Any.class).ok().entity(Any.wrap(new User(userId,type)));
+ return response(Any.wrap(new User(userId,type))).ok();
}
@@ -136,7 +131,7 @@ public ServerResponse userForm( final ServerRequest serverRequest,
@GET
@Path("/{userId}")
@ApiOperation(value = "Find users by id", httpMethod = "GET", response = User.class)
- public ServerResponse user( final ServerRequest serverRequest,
+ public ServerResponse user( final ServerRequest serverRequest,
@ApiParam(name="userId", required=true) @PathParam("userId") final Long userId,
@ApiParam(name="context", required=false) @QueryParam("context") Optional context
)
@@ -148,7 +143,7 @@ public ServerResponse user( final ServerRequest serverRequest,
// log.debug("context: " + context);
//
//
- return response(String.class)
+ return response(User.class)
.ok()
.applicationJson()
.body(JsonStream.serialize(new User(userId)));
@@ -157,12 +152,13 @@ public ServerResponse user( final ServerRequest serverRequest,
}
+ @SuppressWarnings("rawtypes")
@POST
@Path("/")
//@Consumes("multipart/form-data")
// @ApiImplicitParams({ @ApiImplicitParam(dataType = "com.wurrly.models.User", name = "user", paramType = "body", required = false, allowMultiple = false) })
@ApiOperation(value = "Create a user", httpMethod = "POST", response = User.class)
- public ServerResponse> createUser( final ServerRequest serverRequest,
+ public ServerResponse createUser( final ServerRequest serverRequest,
@QueryParam("context") Optional context,
final User user,
List stringArgs,
@@ -170,20 +166,19 @@ public ServerResponse> createUser( final ServerRequest serverRequest,
)
{
- ServerResponse> response = null;
+ ServerResponse response = null;
if( user != null )
{
- response = response(User.class).ok().entity(user) ;
+ return response(User.class).ok().entity(user) ;
}
else
{
- response = response().exception(new Exception("No user found")) ;
+ return response().throwable(new Exception("No user found")) ;
}
-
- return response;
+
}
@PUT
@@ -194,8 +189,7 @@ public ServerResponse> createUser( final ServerRequest serverRequest,
@ApiOperation(value = "Update a user's name", httpMethod = "PUT", response = User.class)
public CompletableFuture>> updateUsername(@ApiParam(hidden=true)final ServerRequest serverRequest, @QueryParam("context") Optional context, final List users )
{
-//
- log.debug("esIndexName: " + esIndexName);
+//
log.debug("context: " + context);
log.debug("request: " + serverRequest);
log.debug("file: " + users);
@@ -217,22 +211,6 @@ public CompletableFuture> empty()
}
- @GET
- @Path("/raw")
- @ApiOperation(value = "Test a raw control endpoint", httpMethod = "GET" )
- public void raw(HttpServerExchange exchange)
- {
- exchange.getResponseSender().send("end");
-
- }
-
- @GET
- @Path("/raw2")
- @ApiOperation(value = "Test a raw control endpoint", httpMethod = "GET" )
- public void raw2(HttpServerExchange exchange)
- {
- response("end").textPlain().send(exchange);
- }
}
diff --git a/src/main/java/com/wurrly/models/User.java b/src/main/java/io/proteus/models/User.java
similarity index 97%
rename from src/main/java/com/wurrly/models/User.java
rename to src/main/java/io/proteus/models/User.java
index 82e36cd..d38bfda 100644
--- a/src/main/java/com/wurrly/models/User.java
+++ b/src/main/java/io/proteus/models/User.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.models;
+package io.proteus.models;
import com.jsoniter.annotation.JsonIgnore;
import com.jsoniter.annotation.JsonWrapper;
diff --git a/src/main/java/io/proteus/models/World.java b/src/main/java/io/proteus/models/World.java
new file mode 100644
index 0000000..93d6358
--- /dev/null
+++ b/src/main/java/io/proteus/models/World.java
@@ -0,0 +1,40 @@
+/**
+ *
+ */
+package io.proteus.models;
+
+import com.jsoniter.output.JsonStream;
+import com.jsoniter.output.StreamImplNumber;
+import com.jsoniter.output.StreamImplString;
+
+/**
+ * @author jbauer
+ *
+ */
+public final class World {
+ public int id;
+ public int randomNumber;
+
+ /**
+ * Constructs a new world object with the given parameters.
+ *
+ * @param id the ID of the world
+ * @param randomNumber the random number of the world
+ */
+ public World(int id, int randomNumber) {
+ this.id = id;
+ this.randomNumber = randomNumber;
+ }
+
+
+ public void serialize(JsonStream stream) throws Exception {
+ stream.writeByte(JsonStream.OBJECT_START);
+ StreamImplString.writeStringWithoutQuote(stream,"\"id\":");
+ StreamImplNumber.writeInt(stream,this.id);
+ stream.writeByte(JsonStream.COMMA);
+
+ StreamImplString.writeStringWithoutQuote(stream,",\"randomNumber\":");
+ StreamImplNumber.writeInt(stream,this.randomNumber);
+ stream.writeByte(JsonStream.OBJECT_END);
+ }
+}
diff --git a/src/main/java/com/wurrly/modules/ConfigModule.java b/src/main/java/io/proteus/modules/ConfigModule.java
similarity index 99%
rename from src/main/java/com/wurrly/modules/ConfigModule.java
rename to src/main/java/io/proteus/modules/ConfigModule.java
index 052201b..68bf27d 100644
--- a/src/main/java/com/wurrly/modules/ConfigModule.java
+++ b/src/main/java/io/proteus/modules/ConfigModule.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.modules;
+package io.proteus.modules;
import java.io.File;
import java.lang.reflect.Type;
diff --git a/src/main/java/com/wurrly/modules/RoutingModule.java b/src/main/java/io/proteus/modules/RoutingModule.java
similarity index 66%
rename from src/main/java/com/wurrly/modules/RoutingModule.java
rename to src/main/java/io/proteus/modules/RoutingModule.java
index 7465028..596651d 100644
--- a/src/main/java/com/wurrly/modules/RoutingModule.java
+++ b/src/main/java/io/proteus/modules/RoutingModule.java
@@ -1,9 +1,8 @@
/**
*
*/
-package com.wurrly.modules;
+package io.proteus.modules;
-import java.nio.file.Paths;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
@@ -17,16 +16,11 @@
import com.google.inject.TypeLiteral;
import com.google.inject.name.Names;
import com.typesafe.config.Config;
-import com.wurrly.Application.BaseHandlers;
-import com.wurrly.server.endpoints.EndpointInfo;
-import io.undertow.predicate.TruePredicate;
+import io.proteus.server.endpoints.EndpointInfo;
import io.undertow.server.DefaultResponseListener;
import io.undertow.server.HttpHandler;
import io.undertow.server.RoutingHandler;
-import io.undertow.server.handlers.resource.FileResourceManager;
-import io.undertow.server.handlers.resource.ResourceHandler;
-import io.undertow.util.Methods;
/**
* @author jbauer
@@ -56,9 +50,19 @@ protected void configure()
this.binder().requestInjection(this);
- RoutingHandler router = new RoutingHandler()
- .setFallbackHandler(BaseHandlers::notFoundHandler);
+
+ RoutingHandler router = new RoutingHandler();
+ try
+ {
+ String className = config.getString("application.fallbackHandler");
+ log.info("Installing FallbackListener " + className);
+ Class extends HttpHandler> clazz = (Class extends HttpHandler>) Class.forName(className);
+ router.setFallbackHandler(clazz.newInstance());
+ } catch (Exception e)
+ {
+ log.error(e.getMessage(),e);
+ }
this.bind(RoutingHandler.class).toInstance(router);
@@ -67,15 +71,16 @@ protected void configure()
try
{
- String defaultResponseListenerClassName = config.getString("application.defaultResponseListener");
- Class extends DefaultResponseListener> defaultResponseListenerClass = (Class extends DefaultResponseListener>) Class.forName(defaultResponseListenerClassName);
- this.bind(DefaultResponseListener.class).to(defaultResponseListenerClass).in(Singleton.class);
+ String className = config.getString("application.defaultResponseListener");
+ log.info("Installing DefaultResponseListener " + className);
+ Class extends DefaultResponseListener> clazz = (Class extends DefaultResponseListener>) Class.forName(className);
+ this.bind(DefaultResponseListener.class).to(clazz).in(Singleton.class);
} catch (Exception e)
{
log.error(e.getMessage(),e);
}
-
+
this.bind(new TypeLiteral>>() {}).annotatedWith(Names.named("registeredControllers")).toInstance(registeredControllers);
this.bind(new TypeLiteral>() {}).annotatedWith(Names.named("registeredEndpoints")).toInstance(registeredEndpoints);
diff --git a/src/main/java/com/wurrly/server/Extractors.java b/src/main/java/io/proteus/server/Extractors.java
similarity index 95%
rename from src/main/java/com/wurrly/server/Extractors.java
rename to src/main/java/io/proteus/server/Extractors.java
index 4a4eac1..a305cc3 100644
--- a/src/main/java/com/wurrly/server/Extractors.java
+++ b/src/main/java/io/proteus/server/Extractors.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server;
+package io.proteus.server;
import java.io.IOException;
import java.lang.reflect.Method;
@@ -23,8 +23,8 @@
import com.jsoniter.JsonIterator;
import com.jsoniter.any.Any;
import com.jsoniter.spi.TypeLiteral;
-import com.wurrly.server.predicates.ServerPredicates;
+import io.proteus.server.predicates.ServerPredicates;
import io.undertow.server.HttpServerExchange;
import io.undertow.server.handlers.form.FormData.FormValue;
import io.undertow.server.handlers.form.FormDataParser;
@@ -43,7 +43,12 @@ public class Extractors
public static class Optional
{
-
+
+ public static java.util.Optional extractWithFunction(final HttpServerExchange exchange, final String name, Function function)
+ {
+ return string(exchange, name).map(function);
+ }
+
public static java.util.Optional jsonIterator(final HttpServerExchange exchange)
{
return java.util.Optional.ofNullable(exchange.getAttachment(ServerRequest.BYTE_BUFFER_KEY)).map(ByteBuffer::array).map(JsonIterator::parse);
@@ -126,14 +131,12 @@ public static java.util.Optional xmlModel(final HttpServerExchange excha
});
}
-
-
+
public static java.util.Optional date(final HttpServerExchange exchange,final String name) {
-
return string(exchange, name).map( ZonedDateTime::parse ).map(ZonedDateTime::toInstant).map(Date::from);
-
+
}
public static java.util.Optional any(final HttpServerExchange exchange )
@@ -166,7 +169,7 @@ public static java.util.Optional longValue(final HttpServerExchange excha
{
return string(exchange, name).map(Long::parseLong);
}
-
+
public static java.util.Optional booleanValue(final HttpServerExchange exchange, final String name)
{
return string(exchange, name).map(Boolean::parseBoolean);
@@ -304,6 +307,17 @@ public static ByteBuffer fileBytes(final HttpServerExchange exchange, final Str
}
+
+ public static String string(final HttpServerExchange exchange, final String name)
+ {
+ return exchange.getQueryParameters().get(name).getFirst();
+ }
+
+ public static T extractWithFunction(final HttpServerExchange exchange, final String name, Function function)
+ {
+ return function.apply(exchange.getQueryParameters().get(name).getFirst());
+ }
+
public static Float floatValue(final HttpServerExchange exchange, final String name)
{
return Float.parseFloat(string(exchange, name));
@@ -313,15 +327,11 @@ public static Double doubleValue(final HttpServerExchange exchange, final Strin
{
return Double.parseDouble(string(exchange, name));
}
-
- public static String string(final HttpServerExchange exchange, final String name)
- {
- return exchange.getQueryParameters().get(name).getFirst();
- }
+
public static Long longValue(final HttpServerExchange exchange, final String name)
{
- return Long.parseLong(string(exchange, name));
+ return Long.parseLong( string(exchange, name) );
}
public static Integer integerValue(final HttpServerExchange exchange, final String name)
diff --git a/src/main/java/com/wurrly/server/MediaType.java b/src/main/java/io/proteus/server/MediaType.java
similarity index 99%
rename from src/main/java/com/wurrly/server/MediaType.java
rename to src/main/java/io/proteus/server/MediaType.java
index 3a395bd..5fef26c 100644
--- a/src/main/java/com/wurrly/server/MediaType.java
+++ b/src/main/java/io/proteus/server/MediaType.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server;
+package io.proteus.server;
/**
* @author jbauer
diff --git a/src/main/java/com/wurrly/server/MimeTypes.java b/src/main/java/io/proteus/server/MimeTypes.java
similarity index 95%
rename from src/main/java/com/wurrly/server/MimeTypes.java
rename to src/main/java/io/proteus/server/MimeTypes.java
index c06becf..6d5d82b 100644
--- a/src/main/java/com/wurrly/server/MimeTypes.java
+++ b/src/main/java/io/proteus/server/MimeTypes.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server;
+package io.proteus.server;
/**
* @author jbauer
diff --git a/src/main/java/com/wurrly/server/ServerRequest.java b/src/main/java/io/proteus/server/ServerRequest.java
similarity index 97%
rename from src/main/java/com/wurrly/server/ServerRequest.java
rename to src/main/java/io/proteus/server/ServerRequest.java
index 1e0f790..9fe4ed9 100644
--- a/src/main/java/com/wurrly/server/ServerRequest.java
+++ b/src/main/java/io/proteus/server/ServerRequest.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server;
+package io.proteus.server;
import java.io.File;
import java.io.IOException;
@@ -16,8 +16,7 @@
import org.slf4j.LoggerFactory;
import org.xnio.channels.StreamSourceChannel;
-import com.wurrly.server.predicates.ServerPredicates;
-
+import io.proteus.server.predicates.ServerPredicates;
import io.undertow.connector.PooledByteBuffer;
import io.undertow.server.HttpServerExchange;
import io.undertow.server.handlers.form.FormData;
@@ -60,7 +59,7 @@ public ServerRequest()
public ServerRequest(HttpServerExchange exchange) throws IOException
{
this.method = exchange.getRequestMethod().toString();
- this.path = URLDecoder.decode(exchange.getRequestPath(), CHARSET);
+ this.path = exchange.getRequestPath();
this.exchange = exchange;
this.contentType = exchange.getRequestHeaders().getFirst(Headers.CONTENT_TYPE);
@@ -84,10 +83,6 @@ else if ( ServerPredicates.STRING_BODY_PREDICATE.resolve(exchange) )
}
- public void respond(ServerResponse response)
- {
-
- }
public Deque files(final String name)
{
diff --git a/src/main/java/com/wurrly/server/ServerResponse.java b/src/main/java/io/proteus/server/ServerResponse.java
similarity index 84%
rename from src/main/java/com/wurrly/server/ServerResponse.java
rename to src/main/java/io/proteus/server/ServerResponse.java
index 8da1602..184adb0 100644
--- a/src/main/java/com/wurrly/server/ServerResponse.java
+++ b/src/main/java/io/proteus/server/ServerResponse.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server;
+package io.proteus.server;
import java.nio.ByteBuffer;
import java.util.HashMap;
@@ -15,8 +15,8 @@
import com.jsoniter.output.JsonContext;
import com.jsoniter.output.JsonStream;
import com.jsoniter.spi.Encoder;
-import com.wurrly.server.predicates.ServerPredicates;
+import io.proteus.server.predicates.ServerPredicates;
import io.undertow.attribute.ExchangeAttributes;
import io.undertow.io.IoCallback;
import io.undertow.predicate.Predicate;
@@ -53,8 +53,9 @@ public class ServerResponse
protected boolean hasCookies = false;
protected boolean hasHeaders = false;
protected boolean hasIoCallback = false;
- protected boolean isXml = false;
- protected boolean isJson = false;
+ protected boolean processXml = false;
+ protected boolean processJson = false;
+ protected boolean preprocessed = false;
public ServerResponse()
{
@@ -134,37 +135,49 @@ public void setContentType(String contentType)
if (this.contentType.equals(MimeTypes.APPLICATION_JSON_TYPE))
{
- this.isJson = true;
+ if(!this.preprocessed)
+ {
+ this.processJson = true;
+ }
}
else if (this.contentType.equals(MimeTypes.APPLICATION_XML_TYPE))
{
- this.isXml = true;
+ if(!this.preprocessed)
+ {
+ this.processXml = true;
+ }
}
}
public ServerResponse body(ByteBuffer body)
{
this.body = body;
+ this.preprocessed = true;
return this;
}
+
+
+ public ServerResponse body(String body)
+ {
+ return this.body( ByteBuffer.wrap(body.getBytes()) );
+ }
public ServerResponse entity(T entity)
{
this.entity = entity;
return this;
- }
+ }
public ServerResponse throwable(Throwable throwable)
{
this.throwable = throwable;
+ if (this.status == StatusCodes.ACCEPTED)
+ {
+ badRequest();
+ }
return this;
}
-
- public ServerResponse body(String body)
- {
- this.body = ByteBuffer.wrap(body.getBytes());
- return this;
- }
+
public ServerResponse status(int status)
{
@@ -182,8 +195,7 @@ public ServerResponse header(HttpString headerName, String value)
public ServerResponse cookie(String cookieName, Cookie cookie)
{
this.cookies.put(cookieName, cookie);
- this.hasCookies = true;
-
+ this.hasCookies = true;
return this;
}
@@ -195,9 +207,11 @@ public ServerResponse contentType(String contentType)
public ServerResponse applicationJson()
{
+ if(!this.preprocessed)
+ {
+ this.processJson = true;
+ }
this.contentType = MimeTypes.APPLICATION_JSON_TYPE;
- this.isJson = true;
-
return this;
}
@@ -209,8 +223,10 @@ public ServerResponse textHtml()
public ServerResponse applicationXml()
{
- this.contentType = MimeTypes.APPLICATION_XML_TYPE;
- this.isXml = true;
+ if(!this.preprocessed)
+ {
+ this.processXml = true;
+ } this.contentType = MimeTypes.APPLICATION_XML_TYPE;
return this;
}
@@ -288,15 +304,7 @@ public ServerResponse withIoCallback(IoCallback ioCallback)
return this;
}
- public ServerResponse exception(Throwable t)
- {
- if (this.status == StatusCodes.ACCEPTED)
- {
- badRequest();
- }
- return this.throwable(t);
- }
-
+
public void send( final HttpServerExchange exchange) throws RuntimeException
{
send(null,exchange);
@@ -332,7 +340,7 @@ public void send(final HttpHandler handler, final HttpServerExchange exchange) t
{
exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, this.contentType);
}
- else if (!this.isJson && !this.isXml)
+ else if (!this.processJson && !this.processXml)
{
if (ServerPredicates.ACCEPT_JSON_PREDICATE.resolve(exchange))
{
@@ -362,33 +370,41 @@ else if (hasEntity)
try
{
- if (this.isXml)
+ if (this.processXml)
{
exchange.getResponseSender().send(ByteBuffer.wrap(XML_MAPPER.writeValueAsBytes(this.entity)));
}
else
{
- if (exchange.isInIoThread() && handler != null)
- {
- exchange.dispatch(handler);
- return;
- }
-
- exchange.startBlocking();
-
- final int bufferSize = exchange.getConnection().getBufferSize();
+// if (exchange.isInIoThread() && handler != null)
+// {
+// exchange.dispatch(handler);
+// return;
+// }
+//
+// exchange.startBlocking();
+//
+// final int bufferSize = exchange.getConnection().getBufferSize();
+//
+// /**
+// * @TODO Test that this is faster than a thread local JsonStream with the TypeLiteral relevant encoder
+// **/
+//
+// try (final JsonStream stream = new JsonStream(exchange.getOutputStream(), bufferSize))
+// {
+// stream.writeViewVal(this.entity,this.jsonContext);
+// }
+//
+// exchange.endExchange();
- /**
- * @TODO Test that this is faster than a thread local JsonStream with the TypeLiteral relevant encoder
- **/
-
- try (final JsonStream stream = new JsonStream(exchange.getOutputStream(), bufferSize))
+ try
{
- stream.writeViewVal(this.entity,this.jsonContext);
+ exchange.getResponseSender().send(JsonStream.serialize(this.entity, this.jsonContext));
+ } catch (Exception e)
+ {
+
}
- exchange.endExchange();
-
}
} catch (Exception e)
diff --git a/src/main/java/com/wurrly/server/endpoints/EndpointInfo.java b/src/main/java/io/proteus/server/endpoints/EndpointInfo.java
similarity index 99%
rename from src/main/java/com/wurrly/server/endpoints/EndpointInfo.java
rename to src/main/java/io/proteus/server/endpoints/EndpointInfo.java
index 679812f..210fbff 100644
--- a/src/main/java/com/wurrly/server/endpoints/EndpointInfo.java
+++ b/src/main/java/io/proteus/server/endpoints/EndpointInfo.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server.endpoints;
+package io.proteus.server.endpoints;
import org.apache.commons.lang3.builder.CompareToBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
diff --git a/src/main/java/io/proteus/server/handlers/BaseHttpHandler.java b/src/main/java/io/proteus/server/handlers/BaseHttpHandler.java
new file mode 100644
index 0000000..f8f9810
--- /dev/null
+++ b/src/main/java/io/proteus/server/handlers/BaseHttpHandler.java
@@ -0,0 +1,57 @@
+/**
+ *
+ */
+package io.proteus.server.handlers;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.undertow.server.DefaultResponseListener;
+import io.undertow.server.HttpHandler;
+import io.undertow.server.HttpServerExchange;
+
+/**
+ * @author jbauer
+ */
+public class BaseHttpHandler implements HttpHandler
+{
+ private static Logger log = LoggerFactory.getLogger(BaseHttpHandler.class.getCanonicalName());
+
+ protected DefaultResponseListener defaultResponseListener;
+ protected HttpHandler rootHandler;
+
+ /**
+ * @param defaultResponseListener
+ * @param rootHandler
+ */
+ public BaseHttpHandler(HttpHandler rootHandler,DefaultResponseListener defaultResponseListener)
+ {
+ this.defaultResponseListener = defaultResponseListener;
+ this.rootHandler = rootHandler;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see io.undertow.server.HttpHandler#handleRequest(io.undertow.server.HttpServerExchange)
+ */
+ @Override
+ public void handleRequest(HttpServerExchange exchange) throws Exception
+ {
+
+ //exchange.addDefaultResponseListener(defaultResponseListener);
+
+ try
+ {
+ rootHandler.handleRequest(exchange);
+ } catch (Exception e)
+ {
+ if (exchange.isResponseChannelAvailable())
+ {
+ log.error(e.getMessage());
+ exchange.endExchange();
+ }
+ }
+
+ }
+
+}
diff --git a/src/main/java/io/proteus/server/handlers/GlobalHeaderHttpHandler.java b/src/main/java/io/proteus/server/handlers/GlobalHeaderHttpHandler.java
new file mode 100644
index 0000000..c84e317
--- /dev/null
+++ b/src/main/java/io/proteus/server/handlers/GlobalHeaderHttpHandler.java
@@ -0,0 +1,71 @@
+/**
+ *
+ */
+package io.proteus.server.handlers;
+
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import com.google.inject.Inject;
+import com.typesafe.config.Config;
+
+import io.undertow.server.HandlerWrapper;
+import io.undertow.server.HttpHandler;
+import io.undertow.server.HttpServerExchange;
+import io.undertow.util.HeaderMap;
+import io.undertow.util.HeaderValues;
+import io.undertow.util.HttpString;
+
+/**
+ * @author jbauer
+ *
+ */
+public class GlobalHeaderHttpHandler implements HttpHandler, HandlerWrapper
+{
+ protected HttpHandler next;
+ protected final HeaderMap headers = new HeaderMap();
+
+
+ @Inject
+ public GlobalHeaderHttpHandler(Config config )
+ {
+ Config globalHeaders = config.getConfig("globalHeaders");
+
+ Map globalHeaderParameters = globalHeaders.entrySet().stream().collect(Collectors.toMap(e -> HttpString.tryFromString(e.getKey()), e ->e.getValue().render()));
+
+ for( Map.Entry e : globalHeaderParameters.entrySet() )
+ {
+ headers.add(e.getKey(), e.getValue());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see io.undertow.server.HandlerWrapper#wrap(io.undertow.server.HttpHandler)
+ */
+ @Override
+ public HttpHandler wrap(final HttpHandler handler)
+ {
+ this.next = handler;
+ return this;
+ }
+
+ /* (non-Javadoc)
+ * @see io.undertow.server.HttpHandler#handleRequest(io.undertow.server.HttpServerExchange)
+ */
+ @Override
+ public void handleRequest(final HttpServerExchange exchange) throws Exception
+ {
+
+ long fiGlobal = this.headers.fastIterateNonEmpty();
+ while (fiGlobal != -1) {
+
+ final HeaderValues headerValues = headers.fiCurrent(fiGlobal);
+ exchange.getResponseHeaders().addAll(headerValues.getHeaderName(), headerValues);
+ fiGlobal = headers.fiNextNonEmpty(fiGlobal);
+ }
+
+ next.handleRequest(exchange);
+
+ }
+
+}
diff --git a/src/main/java/com/wurrly/server/handlers/HandlerGenerator.java b/src/main/java/io/proteus/server/handlers/HandlerGenerator.java
similarity index 90%
rename from src/main/java/com/wurrly/server/handlers/HandlerGenerator.java
rename to src/main/java/io/proteus/server/handlers/HandlerGenerator.java
index 7523e68..4e7907c 100644
--- a/src/main/java/com/wurrly/server/handlers/HandlerGenerator.java
+++ b/src/main/java/io/proteus/server/handlers/HandlerGenerator.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server.handlers;
+package io.proteus.server.handlers;
import java.io.File;
import java.lang.reflect.Method;
@@ -50,11 +50,11 @@
import com.squareup.javapoet.ParameterSpec;
import com.squareup.javapoet.ParameterizedTypeName;
import com.squareup.javapoet.TypeSpec;
-import com.wurrly.server.Extractors;
-import com.wurrly.server.ServerRequest;
-import com.wurrly.server.ServerResponse;
-import com.wurrly.server.endpoints.EndpointInfo;
+import io.proteus.server.Extractors;
+import io.proteus.server.ServerRequest;
+import io.proteus.server.ServerResponse;
+import io.proteus.server.endpoints.EndpointInfo;
import io.swagger.annotations.Api;
import io.undertow.server.HttpServerExchange;
import io.undertow.server.RoutingHandler;
@@ -85,56 +85,56 @@ public enum StatementParameterType
public enum TypeHandler
{
- LongType("Long $L = $T.longValue(exchange,$S)", false, StatementParameterType.LITERAL,com.wurrly.server.Extractors.class, StatementParameterType.STRING),
- IntegerType("Integer $L = $T.integerValue(exchange,$S)", false, StatementParameterType.LITERAL,com.wurrly.server.Extractors.class, StatementParameterType.STRING),
- StringType("String $L = $T.string(exchange,$S)", false, StatementParameterType.LITERAL,com.wurrly.server.Extractors.class, StatementParameterType.STRING),
- BooleanType("Boolean $L = $T.booleanValue(exchange,$S)", false, StatementParameterType.LITERAL, com.wurrly.server.Extractors.class, StatementParameterType.STRING),
- FilePathType("$T $L = $T.filePath(exchange,$S)", true, java.nio.file.Path.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.class, StatementParameterType.STRING),
- AnyType("$T $L = $T.any(exchange)", true, com.jsoniter.any.Any.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.class),
- JsonIteratorType("$T $L = $T.jsonIterator(exchange)", true, com.jsoniter.JsonIterator.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.class),
- ModelType("$T $L = com.wurrly.server.Extractors.model(exchange,$L)", true, StatementParameterType.TYPE, StatementParameterType.LITERAL, StatementParameterType.LITERAL),
+ LongType("Long $L = $T.longValue(exchange,$S)", false, StatementParameterType.LITERAL,io.proteus.server.Extractors.class, StatementParameterType.STRING),
+ IntegerType("Integer $L = $T.integerValue(exchange,$S)", false, StatementParameterType.LITERAL,io.proteus.server.Extractors.class, StatementParameterType.STRING),
+ StringType("String $L = $T.string(exchange,$S)", false, StatementParameterType.LITERAL,io.proteus.server.Extractors.class, StatementParameterType.STRING),
+ BooleanType("Boolean $L = $T.booleanValue(exchange,$S)", false, StatementParameterType.LITERAL, io.proteus.server.Extractors.class, StatementParameterType.STRING),
+ FilePathType("$T $L = $T.filePath(exchange,$S)", true, java.nio.file.Path.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.class, StatementParameterType.STRING),
+ AnyType("$T $L = $T.any(exchange)", true, com.jsoniter.any.Any.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.class),
+ JsonIteratorType("$T $L = $T.jsonIterator(exchange)", true, com.jsoniter.JsonIterator.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.class),
+ ModelType("$T $L = io.proteus.server.Extractors.model(exchange,$L)", true, StatementParameterType.TYPE, StatementParameterType.LITERAL, StatementParameterType.LITERAL),
- //EnumType("$T $L = $T.enumValue(exchange,$T.class,$S)", true, StatementParameterType.TYPE, StatementParameterType.LITERAL,com.wurrly.server.Extractors.class, StatementParameterType.TYPE, StatementParameterType.STRING),
- ByteBufferType("$T $L = $T.fileBytes(exchange,$S)", false, java.nio.ByteBuffer.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.class, StatementParameterType.STRING),
- DateType("$T $L = $T.date(exchange,$S)", false, java.util.Date.class, StatementParameterType.LITERAL, com.wurrly.server.Extractors.class, StatementParameterType.STRING),
- FloatType("Integer $L = $T.floatValue(exchange,$S)", false, StatementParameterType.LITERAL, com.wurrly.server.Extractors.class, StatementParameterType.STRING),
- DoubleType("Integer $L = $T.doubleValue(exchange,$S)", false, StatementParameterType.LITERAL, com.wurrly.server.Extractors.class, StatementParameterType.STRING),
+ //EnumType("$T $L = $T.enumValue(exchange,$T.class,$S)", true, StatementParameterType.TYPE, StatementParameterType.LITERAL,io.proteus.server.Extractors.class, StatementParameterType.TYPE, StatementParameterType.STRING),
+ ByteBufferType("$T $L = $T.fileBytes(exchange,$S)", false, java.nio.ByteBuffer.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.class, StatementParameterType.STRING),
+ DateType("$T $L = $T.date(exchange,$S)", false, java.util.Date.class, StatementParameterType.LITERAL, io.proteus.server.Extractors.class, StatementParameterType.STRING),
+ FloatType("Integer $L = $T.floatValue(exchange,$S)", false, StatementParameterType.LITERAL, io.proteus.server.Extractors.class, StatementParameterType.STRING),
+ DoubleType("Integer $L = $T.doubleValue(exchange,$S)", false, StatementParameterType.LITERAL, io.proteus.server.Extractors.class, StatementParameterType.STRING),
- ValueOfType("$T $L = $T.valueOf($T.string(exchange,$S))", false, StatementParameterType.TYPE, StatementParameterType.LITERAL, StatementParameterType.TYPE, com.wurrly.server.Extractors.class, StatementParameterType.STRING),
- FromStringType("$T $L = $T.fromString($T.string(exchange,$S))", false, StatementParameterType.TYPE, StatementParameterType.LITERAL,StatementParameterType.TYPE, com.wurrly.server.Extractors.class, StatementParameterType.STRING),
+ ValueOfType("$T $L = $T.valueOf($T.string(exchange,$S))", false, StatementParameterType.TYPE, StatementParameterType.LITERAL, StatementParameterType.TYPE, io.proteus.server.Extractors.class, StatementParameterType.STRING),
+ FromStringType("$T $L = $T.fromString($T.string(exchange,$S))", false, StatementParameterType.TYPE, StatementParameterType.LITERAL,StatementParameterType.TYPE, io.proteus.server.Extractors.class, StatementParameterType.STRING),
ListValueOfType("$T<$T> $L = exchange.getQueryParameters().get($S).stream().map($T::valueOf).collect(java.util.stream.Collectors.toList())",false, java.util.List.class,StatementParameterType.RAW, StatementParameterType.LITERAL, StatementParameterType.STRING, StatementParameterType.RAW ),
ListFromStringType("$T<$T> $L = exchange.getQueryParameters().get($S).stream().map($T::fromString).collect(java.util.stream.Collectors.toList())",false, java.util.List.class,StatementParameterType.RAW, StatementParameterType.LITERAL, StatementParameterType.STRING, StatementParameterType.RAW ),
- HeaderValueOfType("$T $L = $T.valueOf($T.string(exchange,$S))", false, StatementParameterType.TYPE, StatementParameterType.LITERAL, StatementParameterType.TYPE, com.wurrly.server.Extractors.Header.class, StatementParameterType.STRING),
- HeaderFromStringType("$T $L = $T.fromString($T.string(exchange,$S))", false, StatementParameterType.TYPE, StatementParameterType.LITERAL, StatementParameterType.TYPE,com.wurrly.server.Extractors.Header.class, StatementParameterType.STRING),
- HeaderStringType("$T $L = $T.string(exchange,$S)", false, java.lang.String.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.Header.class, StatementParameterType.STRING),
+ HeaderValueOfType("$T $L = $T.valueOf($T.string(exchange,$S))", false, StatementParameterType.TYPE, StatementParameterType.LITERAL, StatementParameterType.TYPE, io.proteus.server.Extractors.Header.class, StatementParameterType.STRING),
+ HeaderFromStringType("$T $L = $T.fromString($T.string(exchange,$S))", false, StatementParameterType.TYPE, StatementParameterType.LITERAL, StatementParameterType.TYPE,io.proteus.server.Extractors.Header.class, StatementParameterType.STRING),
+ HeaderStringType("$T $L = $T.string(exchange,$S)", false, java.lang.String.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.Header.class, StatementParameterType.STRING),
- OptionalHeaderValueOfType("$T<$T> $L = $T.string(exchange,$S).map($T::valueOf)", false,Optional.class, StatementParameterType.RAW, StatementParameterType.LITERAL, com.wurrly.server.Extractors.Header.Optional.class, StatementParameterType.STRING,StatementParameterType.RAW),
- OptionalHeaderFromStringType("$T<$T> $L = $T.string(exchange,$S).map($T::fromString)", false, Optional.class, StatementParameterType.RAW, StatementParameterType.LITERAL, com.wurrly.server.Extractors.Header.Optional.class, StatementParameterType.STRING,StatementParameterType.RAW),
- OptionalHeaderStringType("$T<$T> $L = $T.string(exchange,$S)", false, Optional.class, java.lang.String.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.Header.Optional.class, StatementParameterType.STRING),
+ OptionalHeaderValueOfType("$T<$T> $L = $T.string(exchange,$S).map($T::valueOf)", false,Optional.class, StatementParameterType.RAW, StatementParameterType.LITERAL, io.proteus.server.Extractors.Header.Optional.class, StatementParameterType.STRING,StatementParameterType.RAW),
+ OptionalHeaderFromStringType("$T<$T> $L = $T.string(exchange,$S).map($T::fromString)", false, Optional.class, StatementParameterType.RAW, StatementParameterType.LITERAL, io.proteus.server.Extractors.Header.Optional.class, StatementParameterType.STRING,StatementParameterType.RAW),
+ OptionalHeaderStringType("$T<$T> $L = $T.string(exchange,$S)", false, Optional.class, java.lang.String.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.Header.Optional.class, StatementParameterType.STRING),
OptionalListValueOfType("$T $L = java.util.Optional.ofNullable(exchange.getQueryParameters().get($S)).map(java.util.Deque::stream).map( p -> p.map($T::valueOf).collect(java.util.stream.Collectors.toList()))",false, StatementParameterType.RAW, StatementParameterType.LITERAL, StatementParameterType.STRING, StatementParameterType.RAW ),
OptionalListFromStringType("$T $L = java.util.Optional.ofNullable(exchange.getQueryParameters().get($S)).map(java.util.Deque::stream).map( p -> p.map($T::fromString).collect(java.util.stream.Collectors.toList()))",false, StatementParameterType.RAW, StatementParameterType.LITERAL, StatementParameterType.STRING, StatementParameterType.RAW ),
- OptionalJsonIteratorType("$T<$T> $L = $T.jsonIterator(exchange)", true, Optional.class, com.jsoniter.JsonIterator.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.Optional.class),
- OptionalAnyType("$T<$T> $L = $T.any(exchange)", true, Optional.class, com.jsoniter.any.Any.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.Optional.class),
- OptionalStringType("$T $L = $T.string(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.Optional.class, StatementParameterType.STRING),
- OptionalLongType("$T $L = $T.longValue(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL, com.wurrly.server.Extractors.Optional.class, StatementParameterType.STRING),
- OptionalIntegerType("$T $L = $T.integerValue(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL, com.wurrly.server.Extractors.Optional.class, StatementParameterType.STRING),
- OptionalBooleanType("$T $L = $T.booleanValue(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.Optional.class, StatementParameterType.STRING),
- OptionalPathType("$T<$T> $L = $T.filePath(exchange,$S)", true, Optional.class, java.nio.file.Path.class, StatementParameterType.LITERAL,com.wurrly.server.Extractors.Optional.class, StatementParameterType.STRING),
- OptionalFloatType("$T $L = $T.floatValue(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL, com.wurrly.server.Extractors.Optional.class, StatementParameterType.STRING),
- OptionalDoubleType("$T $L = $T.doubleValue(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL, com.wurrly.server.Extractors.Optional.class, StatementParameterType.STRING),
+ OptionalJsonIteratorType("$T<$T> $L = $T.jsonIterator(exchange)", true, Optional.class, com.jsoniter.JsonIterator.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.Optional.class),
+ OptionalAnyType("$T<$T> $L = $T.any(exchange)", true, Optional.class, com.jsoniter.any.Any.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.Optional.class),
+ OptionalStringType("$T $L = $T.string(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.Optional.class, StatementParameterType.STRING),
+ OptionalLongType("$T $L = $T.longValue(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL, io.proteus.server.Extractors.Optional.class, StatementParameterType.STRING),
+ OptionalIntegerType("$T $L = $T.integerValue(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL, io.proteus.server.Extractors.Optional.class, StatementParameterType.STRING),
+ OptionalBooleanType("$T $L = $T.booleanValue(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.Optional.class, StatementParameterType.STRING),
+ OptionalPathType("$T<$T> $L = $T.filePath(exchange,$S)", true, Optional.class, java.nio.file.Path.class, StatementParameterType.LITERAL,io.proteus.server.Extractors.Optional.class, StatementParameterType.STRING),
+ OptionalFloatType("$T $L = $T.floatValue(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL, io.proteus.server.Extractors.Optional.class, StatementParameterType.STRING),
+ OptionalDoubleType("$T $L = $T.doubleValue(exchange,$S)", false, Optional.class, StatementParameterType.LITERAL, io.proteus.server.Extractors.Optional.class, StatementParameterType.STRING),
- OptionalDateType("$T<$T> $L = $T.date(exchange,$S)", false, Optional.class, java.util.Date.class, StatementParameterType.LITERAL, com.wurrly.server.Extractors.Optional.class, StatementParameterType.STRING),
+ OptionalDateType("$T<$T> $L = $T.date(exchange,$S)", false, Optional.class, java.util.Date.class, StatementParameterType.LITERAL, io.proteus.server.Extractors.Optional.class, StatementParameterType.STRING),
- OptionalModelType("java.util.Optional<$L> $L = $T.model(exchange,$L)", true, StatementParameterType.LITERAL, StatementParameterType.LITERAL, com.wurrly.server.Extractors.Optional.class, StatementParameterType.LITERAL),
+ OptionalModelType("java.util.Optional<$L> $L = $T.model(exchange,$L)", true, StatementParameterType.LITERAL, StatementParameterType.LITERAL, io.proteus.server.Extractors.Optional.class, StatementParameterType.LITERAL),
- OptionalValueOfType("$T<$T> $L = $T.string(exchange,$S).map($T::valueOf)", false, Optional.class, StatementParameterType.RAW, StatementParameterType.LITERAL,com.wurrly.server.Extractors.Optional.class, StatementParameterType.STRING, StatementParameterType.RAW),
- OptionalFromStringType("$T<$T> $L = $T.string(exchange,$S).map($T::fromString)", false, Optional.class, StatementParameterType.RAW, StatementParameterType.LITERAL, com.wurrly.server.Extractors.Optional.class, StatementParameterType.STRING, StatementParameterType.RAW),
+ OptionalValueOfType("$T<$T> $L = $T.string(exchange,$S).map($T::valueOf)", false, Optional.class, StatementParameterType.RAW, StatementParameterType.LITERAL,io.proteus.server.Extractors.Optional.class, StatementParameterType.STRING, StatementParameterType.RAW),
+ OptionalFromStringType("$T<$T> $L = $T.string(exchange,$S).map($T::fromString)", false, Optional.class, StatementParameterType.RAW, StatementParameterType.LITERAL, io.proteus.server.Extractors.Optional.class, StatementParameterType.STRING, StatementParameterType.RAW),
- //OptionalEnumType("$T $L = $T.enumValue(exchange,$T.class,$S)", true, StatementParameterType.TYPE, StatementParameterType.LITERAL, com.wurrly.server.Extractors.Optional.class, StatementParameterType.RAW, StatementParameterType.STRING),
+ //OptionalEnumType("$T $L = $T.enumValue(exchange,$T.class,$S)", true, StatementParameterType.TYPE, StatementParameterType.LITERAL, io.proteus.server.Extractors.Optional.class, StatementParameterType.RAW, StatementParameterType.STRING),
;
@@ -469,18 +469,17 @@ else if (hasFromString)
@Inject
@Named("registeredEndpoints")
protected Set registeredEndpoints;
-
- @Inject
- @Named("registeredControllers")
- protected Set> registeredControllers;
+
+ protected Class> controllerClass;
+
// public static void main(String[] args)
// {
// try
// {
- // RouteGenerator generator = new RouteGenerator("com.wurrly.controllers.handlers","RouteHandlers");
+ // RouteGenerator generator = new RouteGenerator("io.proteus.controllers.handlers","RouteHandlers");
//
- // Set> classes = getApiClasses("com.wurrly.controllers",null);
+ // Set> classes = getApiClasses("io.proteus.controllers",null);
//
// generator.generateRoutes(classes);
//
@@ -499,11 +498,11 @@ else if (hasFromString)
//
// }
- public HandlerGenerator(String packageName, String className)
+ public HandlerGenerator(String packageName, Class> controllerClass)
{
this.packageName = packageName;
- this.className = className;
-
+ this.controllerClass = controllerClass;
+ this.className = controllerClass.getSimpleName() + "RouteSupplier";
}
public Class extends Supplier> compileClass()
@@ -529,24 +528,22 @@ protected void generateRoutes()
TypeSpec.Builder typeBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC).addSuperinterface(ParameterizedTypeName.get(Supplier.class, RoutingHandler.class));
- ClassName extractorClass = ClassName.get("com.wurrly.server", "Extractors");
+ ClassName extractorClass = ClassName.get("io.proteus.server", "Extractors");
ClassName injectClass = ClassName.get("com.google.inject", "Inject");
MethodSpec.Builder constructor = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC).addAnnotation(injectClass);
- for (Class> clazz : this.registeredControllers)
- {
- String className = clazz.getSimpleName().toLowerCase() + "Controller";
+ String className = this.controllerClass.getSimpleName().toLowerCase() + "Controller";
- typeBuilder.addField(clazz, className, Modifier.PROTECTED);
+ typeBuilder.addField(this.controllerClass, className, Modifier.PROTECTED);
- constructor.addParameter(clazz, className);
+ constructor.addParameter(this.controllerClass, className);
constructor.addStatement("this.$N = $N", className, className);
- addClassMethodHandlers(typeBuilder, clazz);
- }
+ addClassMethodHandlers(typeBuilder, this.controllerClass);
+
typeBuilder.addMethod(constructor.build());
@@ -930,7 +927,7 @@ else if (t.equals(TypeHandler.OptionalListFromStringType) || t.equals(TypeHandle
}
else
{
- functionBlockBuilder.add("$T $L = $L.$L($L);", m.getReturnType(), "response", controllerName, m.getName(), controllerMethodArgs);
+ functionBlockBuilder.add("$T $L = $L.$L($L);", m.getGenericReturnType(), "response", controllerName, m.getName(), controllerMethodArgs);
}
methodBuilder.addCode(functionBlockBuilder.build());
diff --git a/src/main/java/com/wurrly/server/handlers/ServerDefaultResponseListener.java b/src/main/java/io/proteus/server/handlers/ServerDefaultResponseListener.java
similarity index 95%
rename from src/main/java/com/wurrly/server/handlers/ServerDefaultResponseListener.java
rename to src/main/java/io/proteus/server/handlers/ServerDefaultResponseListener.java
index 538af97..a78f051 100644
--- a/src/main/java/com/wurrly/server/handlers/ServerDefaultResponseListener.java
+++ b/src/main/java/io/proteus/server/handlers/ServerDefaultResponseListener.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server.handlers;
+package io.proteus.server.handlers;
import java.nio.ByteBuffer;
import java.util.HashMap;
@@ -15,9 +15,9 @@
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.jsoniter.output.JsonStream;
-import com.wurrly.server.MimeTypes;
-import com.wurrly.server.predicates.ServerPredicates;
+import io.proteus.server.MimeTypes;
+import io.proteus.server.predicates.ServerPredicates;
import io.undertow.server.DefaultResponseListener;
import io.undertow.server.HttpServerExchange;
import io.undertow.util.Headers;
@@ -33,6 +33,7 @@ public class ServerDefaultResponseListener implements DefaultResponseListener
@Inject
protected XmlMapper xmlMapper;
+
@Override
public boolean handleDefaultResponse(HttpServerExchange exchange)
diff --git a/src/main/java/io/proteus/server/handlers/ServerFallbackHandler.java b/src/main/java/io/proteus/server/handlers/ServerFallbackHandler.java
new file mode 100644
index 0000000..1ef9a36
--- /dev/null
+++ b/src/main/java/io/proteus/server/handlers/ServerFallbackHandler.java
@@ -0,0 +1,25 @@
+/**
+ *
+ */
+package io.proteus.server.handlers;
+
+import io.undertow.server.HttpHandler;
+import io.undertow.server.HttpServerExchange;
+import io.undertow.util.Headers;
+
+/**
+ * @author jbauer
+ *
+ */
+public class ServerFallbackHandler implements HttpHandler
+{
+
+ @Override
+ public void handleRequest(HttpServerExchange exchange) throws Exception
+ {
+ exchange.setStatusCode(404);
+ exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
+ exchange.getResponseSender().send("Page Not Found!!");
+
+ }
+}
diff --git a/src/main/java/com/wurrly/server/handlers/benchmark/BenchmarkHandlers.java b/src/main/java/io/proteus/server/handlers/benchmark/BenchmarkHandlers.java
similarity index 98%
rename from src/main/java/com/wurrly/server/handlers/benchmark/BenchmarkHandlers.java
rename to src/main/java/io/proteus/server/handlers/benchmark/BenchmarkHandlers.java
index ede4c7d..4022404 100644
--- a/src/main/java/com/wurrly/server/handlers/benchmark/BenchmarkHandlers.java
+++ b/src/main/java/io/proteus/server/handlers/benchmark/BenchmarkHandlers.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server.handlers.benchmark;
+package io.proteus.server.handlers.benchmark;
import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer;
@@ -22,9 +22,9 @@
import com.google.common.io.Files;
import com.j256.simplemagic.ContentType;
import com.jsoniter.output.JsonStream;
-import com.wurrly.server.ServerResponse;
-import com.wurrly.server.handlers.HandlerGenerator.StatementParameterType;
+import io.proteus.server.ServerResponse;
+import io.proteus.server.handlers.HandlerGenerator.StatementParameterType;
import io.undertow.attribute.ExchangeAttributes;
import io.undertow.predicate.Predicates;
import io.undertow.server.HttpHandler;
diff --git a/src/main/java/com/wurrly/server/predicates/MaxRequestContentLengthPredicate.java b/src/main/java/io/proteus/server/predicates/MaxRequestContentLengthPredicate.java
similarity index 97%
rename from src/main/java/com/wurrly/server/predicates/MaxRequestContentLengthPredicate.java
rename to src/main/java/io/proteus/server/predicates/MaxRequestContentLengthPredicate.java
index b3a1245..a522908 100644
--- a/src/main/java/com/wurrly/server/predicates/MaxRequestContentLengthPredicate.java
+++ b/src/main/java/io/proteus/server/predicates/MaxRequestContentLengthPredicate.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server.predicates;
+package io.proteus.server.predicates;
import java.util.Collections;
import java.util.Map;
diff --git a/src/main/java/com/wurrly/server/predicates/ServerPredicates.java b/src/main/java/io/proteus/server/predicates/ServerPredicates.java
similarity index 96%
rename from src/main/java/com/wurrly/server/predicates/ServerPredicates.java
rename to src/main/java/io/proteus/server/predicates/ServerPredicates.java
index 7156223..12f17fc 100644
--- a/src/main/java/com/wurrly/server/predicates/ServerPredicates.java
+++ b/src/main/java/io/proteus/server/predicates/ServerPredicates.java
@@ -1,12 +1,11 @@
/**
*
*/
-package com.wurrly.server.predicates;
+package io.proteus.server.predicates;
import java.util.Collections;
-import com.wurrly.server.MimeTypes;
-
+import io.proteus.server.MimeTypes;
import io.undertow.attribute.ExchangeAttributes;
import io.undertow.predicate.Predicate;
import io.undertow.predicate.Predicates;
diff --git a/src/main/java/com/wurrly/server/swagger/AnnotationHelper.java b/src/main/java/io/proteus/server/swagger/AnnotationHelper.java
similarity index 98%
rename from src/main/java/com/wurrly/server/swagger/AnnotationHelper.java
rename to src/main/java/io/proteus/server/swagger/AnnotationHelper.java
index b444d60..a09b0d0 100644
--- a/src/main/java/com/wurrly/server/swagger/AnnotationHelper.java
+++ b/src/main/java/io/proteus/server/swagger/AnnotationHelper.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server.swagger;
+package io.proteus.server.swagger;
import java.lang.annotation.Annotation;
import java.lang.reflect.Parameter;
diff --git a/src/main/java/com/wurrly/server/swagger/Reader.java b/src/main/java/io/proteus/server/swagger/Reader.java
similarity index 99%
rename from src/main/java/com/wurrly/server/swagger/Reader.java
rename to src/main/java/io/proteus/server/swagger/Reader.java
index 6d08a4f..d1fcab5 100644
--- a/src/main/java/com/wurrly/server/swagger/Reader.java
+++ b/src/main/java/io/proteus/server/swagger/Reader.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server.swagger;
+package io.proteus.server.swagger;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
@@ -37,8 +37,8 @@
import com.fasterxml.jackson.databind.introspect.AnnotatedParameter;
import com.fasterxml.jackson.databind.type.SimpleType;
import com.fasterxml.jackson.databind.type.TypeFactory;
-import com.wurrly.server.ServerRequest;
+import io.proteus.server.ServerRequest;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
diff --git a/src/main/java/com/wurrly/server/swagger/ServerParameterExtension.java b/src/main/java/io/proteus/server/swagger/ServerParameterExtension.java
similarity index 97%
rename from src/main/java/com/wurrly/server/swagger/ServerParameterExtension.java
rename to src/main/java/io/proteus/server/swagger/ServerParameterExtension.java
index 10c1520..2bd383b 100644
--- a/src/main/java/com/wurrly/server/swagger/ServerParameterExtension.java
+++ b/src/main/java/io/proteus/server/swagger/ServerParameterExtension.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.server.swagger;
+package io.proteus.server.swagger;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
diff --git a/src/main/java/com/wurrly/services/AssetsService.java b/src/main/java/io/proteus/services/AssetsService.java
similarity index 95%
rename from src/main/java/com/wurrly/services/AssetsService.java
rename to src/main/java/io/proteus/services/AssetsService.java
index b6e5800..c87f4c5 100644
--- a/src/main/java/com/wurrly/services/AssetsService.java
+++ b/src/main/java/io/proteus/services/AssetsService.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.services;
+package io.proteus.services;
import java.nio.file.Paths;
import java.util.Set;
@@ -12,8 +12,8 @@
import com.google.inject.Inject;
import com.google.inject.name.Named;
import com.typesafe.config.Config;
-import com.wurrly.server.endpoints.EndpointInfo;
+import io.proteus.server.endpoints.EndpointInfo;
import io.undertow.predicate.TruePredicate;
import io.undertow.server.RoutingHandler;
import io.undertow.server.handlers.resource.FileResourceManager;
diff --git a/src/main/java/com/wurrly/services/BaseService.java b/src/main/java/io/proteus/services/BaseService.java
similarity index 93%
rename from src/main/java/com/wurrly/services/BaseService.java
rename to src/main/java/io/proteus/services/BaseService.java
index 192985f..149bc44 100644
--- a/src/main/java/com/wurrly/services/BaseService.java
+++ b/src/main/java/io/proteus/services/BaseService.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.services;
+package io.proteus.services;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -9,7 +9,8 @@
import com.google.common.util.concurrent.AbstractIdleService;
import com.google.inject.Inject;
import com.typesafe.config.Config;
-import com.wurrly.modules.ConfigModule;
+
+import io.proteus.modules.ConfigModule;
/**
* @author jbauer
diff --git a/src/main/java/com/wurrly/services/SwaggerService.java b/src/main/java/io/proteus/services/SwaggerService.java
similarity index 96%
rename from src/main/java/com/wurrly/services/SwaggerService.java
rename to src/main/java/io/proteus/services/SwaggerService.java
index dbef59b..5a44a83 100644
--- a/src/main/java/com/wurrly/services/SwaggerService.java
+++ b/src/main/java/io/proteus/services/SwaggerService.java
@@ -1,5 +1,5 @@
-package com.wurrly.services;
+package io.proteus.services;
import java.io.StringWriter;
import java.io.Writer;
@@ -20,11 +20,11 @@
import com.mitchellbosecke.pebble.PebbleEngine;
import com.mitchellbosecke.pebble.template.PebbleTemplate;
import com.typesafe.config.Config;
-import com.wurrly.server.MimeTypes;
-import com.wurrly.server.endpoints.EndpointInfo;
-import com.wurrly.server.swagger.ServerParameterExtension;
-import com.wurrly.utilities.JsonMapper;
+import io.proteus.server.MimeTypes;
+import io.proteus.server.endpoints.EndpointInfo;
+import io.proteus.server.swagger.ServerParameterExtension;
+import io.proteus.utilities.JsonMapper;
import io.swagger.jaxrs.ext.SwaggerExtension;
import io.swagger.jaxrs.ext.SwaggerExtensions;
import io.swagger.models.Info;
@@ -46,7 +46,7 @@ public class SwaggerService extends BaseService implements Supplier this.reader.read(c));
diff --git a/src/main/java/com/wurrly/tests/JsonViewTest.java b/src/main/java/io/proteus/tests/JsonViewTest.java
similarity index 98%
rename from src/main/java/com/wurrly/tests/JsonViewTest.java
rename to src/main/java/io/proteus/tests/JsonViewTest.java
index d2cf723..d992da6 100644
--- a/src/main/java/com/wurrly/tests/JsonViewTest.java
+++ b/src/main/java/io/proteus/tests/JsonViewTest.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.tests;
+package io.proteus.tests;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -22,7 +22,8 @@
import com.jsoniter.spi.Encoder;
import com.jsoniter.spi.JsoniterSpi;
import com.jsoniter.spi.TypeLiteral;
-import com.wurrly.tests.JsonViewTest.Views;
+
+import io.proteus.tests.JsonViewTest.Views;
/**
* @author jbauer
diff --git a/src/main/java/com/wurrly/tests/TestInvoker.java b/src/main/java/io/proteus/tests/TestInvoker.java
similarity index 98%
rename from src/main/java/com/wurrly/tests/TestInvoker.java
rename to src/main/java/io/proteus/tests/TestInvoker.java
index aaf2e7d..18f5625 100644
--- a/src/main/java/com/wurrly/tests/TestInvoker.java
+++ b/src/main/java/io/proteus/tests/TestInvoker.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.tests;
+package io.proteus.tests;
import static java.lang.invoke.MethodHandles.lookup;
@@ -22,8 +22,9 @@
import org.slf4j.LoggerFactory;
import com.google.common.base.Throwables;
-import com.wurrly.controllers.Users;
-import com.wurrly.server.ServerRequest;
+
+import io.proteus.controllers.Users;
+import io.proteus.server.ServerRequest;
/**
* @author jbauer
diff --git a/src/main/java/com/wurrly/tests/TestJsoniterViews.java b/src/main/java/io/proteus/tests/TestJsoniterViews.java
similarity index 98%
rename from src/main/java/com/wurrly/tests/TestJsoniterViews.java
rename to src/main/java/io/proteus/tests/TestJsoniterViews.java
index 041ed98..fc504da 100644
--- a/src/main/java/com/wurrly/tests/TestJsoniterViews.java
+++ b/src/main/java/io/proteus/tests/TestJsoniterViews.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.tests;
+package io.proteus.tests;
import java.io.IOException;
@@ -17,7 +17,8 @@
import com.jsoniter.spi.EmptyExtension;
import com.jsoniter.spi.Encoder;
import com.jsoniter.spi.JsoniterSpi;
-import com.wurrly.models.User;
+
+import io.proteus.models.User;
/**
* @author jbauer
diff --git a/src/main/java/com/wurrly/tests/TestTypes.java b/src/main/java/io/proteus/tests/TestTypes.java
similarity index 97%
rename from src/main/java/com/wurrly/tests/TestTypes.java
rename to src/main/java/io/proteus/tests/TestTypes.java
index c43a941..87b2143 100644
--- a/src/main/java/com/wurrly/tests/TestTypes.java
+++ b/src/main/java/io/proteus/tests/TestTypes.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.tests;
+package io.proteus.tests;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
@@ -10,7 +10,7 @@
import java.util.function.Supplier;
import java.util.function.UnaryOperator;
-import com.wurrly.server.ServerResponse;
+import io.proteus.server.ServerResponse;
/**
* @author jbauer
diff --git a/src/main/java/com/wurrly/utilities/ChunkedStream.java b/src/main/java/io/proteus/utilities/ChunkedStream.java
similarity index 99%
rename from src/main/java/com/wurrly/utilities/ChunkedStream.java
rename to src/main/java/io/proteus/utilities/ChunkedStream.java
index 0340112..73fdad8 100644
--- a/src/main/java/com/wurrly/utilities/ChunkedStream.java
+++ b/src/main/java/io/proteus/utilities/ChunkedStream.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package com.wurrly.utilities;
+package io.proteus.utilities;
import java.io.IOException;
import java.nio.ByteBuffer;
diff --git a/src/main/java/com/wurrly/utilities/JsonMapper.java b/src/main/java/io/proteus/utilities/JsonMapper.java
similarity index 99%
rename from src/main/java/com/wurrly/utilities/JsonMapper.java
rename to src/main/java/io/proteus/utilities/JsonMapper.java
index bde7522..4d11c6e 100644
--- a/src/main/java/com/wurrly/utilities/JsonMapper.java
+++ b/src/main/java/io/proteus/utilities/JsonMapper.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.utilities;
+package io.proteus.utilities;
import java.util.Collection;
import java.util.HashSet;
diff --git a/src/main/java/com/wurrly/utilities/ReapableQueue.java b/src/main/java/io/proteus/utilities/ReapableQueue.java
similarity index 99%
rename from src/main/java/com/wurrly/utilities/ReapableQueue.java
rename to src/main/java/io/proteus/utilities/ReapableQueue.java
index e002d25..e5cd601 100644
--- a/src/main/java/com/wurrly/utilities/ReapableQueue.java
+++ b/src/main/java/io/proteus/utilities/ReapableQueue.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.utilities;
+package io.proteus.utilities;
import java.util.concurrent.atomic.*;
diff --git a/src/main/java/com/wurrly/utilities/SecurityOps.java b/src/main/java/io/proteus/utilities/SecurityOps.java
similarity index 98%
rename from src/main/java/com/wurrly/utilities/SecurityOps.java
rename to src/main/java/io/proteus/utilities/SecurityOps.java
index a60c4fe..c6fac29 100644
--- a/src/main/java/com/wurrly/utilities/SecurityOps.java
+++ b/src/main/java/io/proteus/utilities/SecurityOps.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.wurrly.utilities;
+package io.proteus.utilities;
import java.io.InputStream;
import java.nio.file.Files;
diff --git a/src/main/resources/META-INF/empty/com.wurrly.server.swagger.ServerExtension b/src/main/resources/META-INF/empty/com.wurrly.server.swagger.ServerExtension
deleted file mode 100644
index 8d4cebd..0000000
--- a/src/main/resources/META-INF/empty/com.wurrly.server.swagger.ServerExtension
+++ /dev/null
@@ -1 +0,0 @@
-com.wurrly.server.swagger.ServerExtension
\ No newline at end of file
diff --git a/src/main/resources/META-INF/empty/com.wurrly.server.swagger.ServerModelResolver b/src/main/resources/META-INF/empty/com.wurrly.server.swagger.ServerModelResolver
deleted file mode 100644
index cfbb108..0000000
--- a/src/main/resources/META-INF/empty/com.wurrly.server.swagger.ServerModelResolver
+++ /dev/null
@@ -1 +0,0 @@
-com.wurrly.server.swagger.ServerModelResolver
\ No newline at end of file