org.spincast.plugins.routing.WebsocketRouteBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of spincast-plugins-routing Show documentation
Show all versions of spincast-plugins-routing Show documentation
The default Spincast Routing plugin
The newest version!
package org.spincast.plugins.routing;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import org.spincast.core.exchange.IRequestContext;
import org.spincast.core.routing.IHandler;
import org.spincast.core.routing.IRouter;
import org.spincast.core.websocket.IWebsocketContext;
import org.spincast.core.websocket.IWebsocketController;
import org.spincast.core.websocket.IWebsocketRoute;
import org.spincast.core.websocket.IWebsocketRouteBuilder;
import com.google.inject.assistedinject.Assisted;
import com.google.inject.assistedinject.AssistedInject;
public class WebsocketRouteBuilder, W extends IWebsocketContext>>
implements IWebsocketRouteBuilder {
private final IWebsocketRouteFactory websocketRouteFactory;
private final IRouter router;
private String path;
private String id;
private List> beforeFilters;
private IWebsocketController websocketController;
@AssistedInject
public WebsocketRouteBuilder(IWebsocketRouteFactory websocketRouteFactory) {
this(null, websocketRouteFactory);
}
@AssistedInject
public WebsocketRouteBuilder(@Assisted IRouter router,
IWebsocketRouteFactory websocketRouteFactory) {
this.router = router;
this.websocketRouteFactory = websocketRouteFactory;
}
protected IWebsocketRouteFactory getWebsocketRouteFactory() {
return this.websocketRouteFactory;
}
protected IRouter getRouter() {
return this.router;
}
public String getPath() {
return this.path;
}
public String getId() {
return this.id;
}
public IWebsocketController getWebsocketController() {
return this.websocketController;
}
@Override
public IWebsocketRouteBuilder path(String path) {
this.path = path;
return this;
}
@Override
public IWebsocketRouteBuilder id(String id) {
this.id = id;
return this;
}
@Override
public IWebsocketRouteBuilder before(IHandler beforeFilter) {
Objects.requireNonNull(beforeFilter, "beforeFilter can't be NULL");
getBeforeFilters().add(beforeFilter);
return this;
}
public List> getBeforeFilters() {
if(this.beforeFilters == null) {
this.beforeFilters = new ArrayList>();
}
return this.beforeFilters;
}
@Override
public void save(IWebsocketController websocketController) {
if(getRouter() == null) {
throw new RuntimeException("No router specified, can't save the Websocket route!");
}
IWebsocketRoute websocketRoute = create(websocketController);
getRouter().addWebsocketRoute(websocketRoute);
}
@Override
public IWebsocketRoute create(IWebsocketController websocketController) {
this.websocketController = websocketController;
IWebsocketRoute websocketRoute = getWebsocketRouteFactory().createRoute(getId(),
getPath(),
getBeforeFilters(),
websocketController);
return websocketRoute;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy