package org.webpieces.router.impl.model; import org.webpieces.router.api.dto.RouteType; import org.webpieces.router.impl.Route; import org.webpieces.router.impl.RouteImpl; import org.webpieces.router.impl.RouteMeta; import org.webpieces.util.logging.Logger; import org.webpieces.util.logging.LoggerFactory; public abstract class AbstractDomainBuilder extends AbstractRouteBuilder{ protected L2DomainRoutes domainRoutes; public AbstractDomainBuilder(RouterInfo routerInfo, L2DomainRoutes domainRoutes, L3PrefixedRouting routes, LogicHolder holder, boolean isHttpsOnlyRoutes) { super(routerInfo, routes, holder, isHttpsOnlyRoutes); this.domainRoutes = domainRoutes; } private static final Logger log = LoggerFactory.getLogger(AbstractDomainBuilder.class); @Override public void setPageNotFoundRoute(String controllerMethod) { Route route = new RouteImpl(controllerMethod, RouteType.NOT_FOUND); setNotFoundRoute(route); } private void setNotFoundRoute(Route r) { if(!"".equals(this.routerInfo.getPath())) throw new UnsupportedOperationException("setNotFoundRoute can only be called on the root Router, not a scoped router"); log.info("scope:'"+routerInfo+"' adding PAGE_NOT_FOUND route="+r.getFullPath()+" method="+r.getControllerMethodString()); RouteMeta meta = new RouteMeta(r, holder.getInjector(), currentPackage.get(), holder.getUrlEncoding()); holder.getFinder().loadControllerIntoMetaObject(meta, true); domainRoutes.setPageNotFoundRoute(meta); } @Override public void setInternalErrorRoute(String controllerMethod) { Route route = new RouteImpl(controllerMethod, RouteType.INTERNAL_SERVER_ERROR); setInternalSvrErrorRoute(route); } private void setInternalSvrErrorRoute(Route r) { if(!"".equals(this.routerInfo.getPath())) throw new UnsupportedOperationException("setInternalSvrErrorRoute can only be called on the root Router, not a scoped router"); log.info("scope:'"+routerInfo+"' adding INTERNAL_SVR_ERROR route="+r.getFullPath()+" method="+r.getControllerMethodString()); RouteMeta meta = new RouteMeta(r, holder.getInjector(), currentPackage.get(), holder.getUrlEncoding()); holder.getFinder().loadControllerIntoMetaObject(meta, true); domainRoutes.setInternalSvrErrorRoute(meta); } }