public synchronized Restlet createRoot() { Router router = new Router(getContext()); router.attach("/",new Redirector(null,"/engine",Redirector.MODE_CLIENT_TEMPORARY)); router.attach("/engine",EngineResource.class) .setMatchingMode(Template.MODE_EQUALS); router.attach("/engine/",EngineResource.class) .setMatchingMode(Template.MODE_EQUALS); engine.getJobsDir().toURI().toString()); alljobsdir.setListingAllowed(true); router.attach("/engine/jobsdir",alljobsdir); anypath.setEditFilter(JobResource.EDIT_FILTER); router.attach("/engine/anypath/",anypath); jobdir.setModifiable(true); jobdir.setEditFilter(JobResource.EDIT_FILTER); router.attach("/engine/job/{job}/jobdir",jobdir); router.attach("/engine/job/{job}",JobResource.class); router.attach("/engine/job/{job}/report/{reportClass}",ReportGenResource.class); router.attach("/engine/job/{job}/beans",BeanBrowseResource.class); router.attach("/engine/job/{job}/beans/{beanPath}",BeanBrowseResource.class); router.attach("/engine/job/{job}/script",ScriptResource.class); router.attach("/engine/static/",staticDir);
/** * Attaches a target Restlet to this router with an empty URI pattern. A new * route will be added routing to the target when any call is received. * * @param target * The target Restlet to attach. * @return The created route. */ public Route attach(Restlet target) { return attach("", target); }
"defaultMatchingMode"); if (item != null) { getInternalRouter().setDefaultMatchingMode( getInt(item, getInternalRouter().getDefaultMatchingMode())); if (item != null) { getInternalRouter() .setDefaultMatchQuery( getBoolean(item, getInternalRouter() .getDefaultMatchQuery())); getInternalRouter().setMaxAttempts( getInt(item, getInternalRouter().getMaxAttempts())); getInternalRouter().setRoutingMode( getInt(item, getInternalRouter().getRoutingMode())); getInternalRouter().setRequiredScore( getFloat(item, getInternalRouter().getRequiredScore())); getInternalRouter().setRetryDelay( getLong(item, getInternalRouter().getRetryDelay()));
route = router.attach(uriPattern, resourceClass); } else { route = router.attachDefault(resourceClass); route = router.attach(uriPattern, target); } else { route = router.attachDefault(target);
/** * Attaches a target Resource class to this router based on a given URI * pattern. A new route will be added routing to the target when calls with * a URI matching the pattern will be received. * * @param uriPattern * The URI pattern that must match the relative part of the * resource URI. * @param targetClass * The target Resource class to attach. * @return The created route. */ public Route attach(String uriPattern, Class<? extends Resource> targetClass) { return attach(uriPattern, createFinder(targetClass)); }
router.attach(key, (Restlet) value); } else if (value instanceof Class) { router.attach(key, (Class<? extends Resource>) value); } else if (value instanceof String) { resourceClass = Engine.loadClass((String) value); router.attach(key, resourceClass); } else { router .getLogger() .warning( "Unknown class found in the mappings. Only subclasses of org.restlet.resource.Resource are allowed."); .getLogger() .warning( "Unknown object found in the mappings. Only instances of Restlet and subclasses of org.restlet.resource.Resource are allowed."); router.getLogger().log(Level.WARNING, "Unable to set the router mappings", e);
for (int i = 0; (result == null) && (i < getMaxAttempts()); i++) { if (i > 0) { Thread.sleep(getRetryDelay()); } catch (InterruptedException e) { switch (getRoutingMode()) { case BEST: result = getRoutes().getBest(request, response, getRequiredScore()); break; result = getRoutes().getFirst(request, response, getRequiredScore()); break; result = getRoutes().getLast(request, response, getRequiredScore()); break; result = getRoutes().getNext(request, response, getRequiredScore()); break; result = getRoutes().getRandom(request, response, getRequiredScore()); break; result = getCustom(request, response);
@Override protected Router initializeRouter(Router root, boolean isStarted) { if (useStrictChecking) { root.setDefaultMatchQuery(false); root.setDefaultMatchingMode(Template.MODE_EQUALS); } return root; }
/** * Creates a new finder instance based on the "targetClass" property. * * @param targetClass * The target Resource class to attach. * @return The new finder instance. */ protected Finder createFinder(Class<? extends Resource> targetClass) { Finder result = null; if (getFinderClass() != null) { try { final Constructor<? extends Finder> constructor = getFinderClass() .getConstructor(Context.class, Class.class); if (constructor != null) { result = constructor.newInstance(getContext(), targetClass); } } catch (Exception e) { getLogger().log(Level.WARNING, "Exception while instantiating the finder.", e); } } return result; }
/** * Detaches the target from this router. All routes routing to this target * Restlet are removed from the list of routes and the default route is set * to null. * * @param target * The target Restlet to detach. */ public void detach(Restlet target) { getRoutes().removeAll(target); if ((getDefaultRoute() != null) && (getDefaultRoute().getNext() == target)) { setDefaultRoute(null); } }
/** * Attaches a target Restlet to this router based on a given URI pattern. A * new route will be added routing to the target when calls with a URI * matching the pattern will be received. * * @param uriPattern * The URI pattern that must match the relative part of the * resource URI. * @param target * The target Restlet to attach. * @return The created route. */ public Route attach(String uriPattern, Restlet target) { final Route result = createRoute(uriPattern, target); getRoutes().add(result); return result; }
@Override protected Router initializeRouter( Router root, boolean isStarted ) { // ======== // SERVICE // service router Router applicationRouter = new Router( getContext() ); // attaching filter to a root on given URI attach( root, false, "/service/" + AbstractNexusPlexusResource.NEXUS_INSTANCE_LOCAL, applicationRouter ); // return the swapped router return applicationRouter; }
@Override public Restlet getNext(Request request, Response response) { Restlet next = super.getNext(request, response); if (next != null) { for (DispatcherCallback callback : callbacks) { callback.dispatched(request, response, next); } } return next; };
private List getLinkList() { List l = new ArrayList(); Iterator it = myRouter.getRoutes().iterator(); while (it.hasNext()) { Route r = (Route) it.next(); String pattern = r.getTemplate().getPattern(); if (!pattern.contains("{") && (pattern.length() > 1)) { l.add(pattern.substring(1)); // trim leading slash } } return l; } }
private void addRoutes(Map<String, Object> m){ Iterator<Entry<String,Object>> it = m.entrySet().iterator(); while (it.hasNext()){ Entry<String,Object> entry = it.next(); if (entry.getValue() instanceof GWCResource){ myRouter.attach(entry.getKey().toString(), ((GWCResource) entry.getValue()).getClass()); } else if (entry.getValue() instanceof Restlet){ myRouter.attach(entry.getKey().toString(), (Restlet) entry.getValue()); } else { log.error("Unexpected " + entry.getValue()); } } } }
if (target != null) { if ((uriPattern != null) && !defaultRoute) { route = router.attach(uriPattern, target); } else { route = router.attachDefault(target);
/** * Handles a call by invoking the next Restlet if it is available. * * @param request * The request to handle. * @param response * The response to update. */ @Override public void handle(Request request, Response response) { super.handle(request, response); final Restlet next = getNext(request, response); if (next != null) { next.handle(request, response); } else { response.setStatus(Status.CLIENT_ERROR_NOT_FOUND); } }
public void addRoutes(Map m, Router r){ Iterator it = m.entrySet().iterator(); while (it.hasNext()){ Map.Entry entry = (Map.Entry) it.next(); // LOG.info("Found mapping: " + entry.getKey().toString()); Restlet restlet = (getApplicationContext().getBean(entry.getValue().toString()) instanceof Resource) ? new BeanResourceFinder(getApplicationContext(), entry.getValue().toString()) : new BeanDelegatingRestlet(getApplicationContext(), entry.getValue().toString()); String path = entry.getKey().toString(); r.attach(path, restlet); if (path.indexOf("?") == -1){ r.attach(path + "?{q}", restlet); } else LOG.fine("Query string already listed in restlet mapping: " + path); } }
public synchronized Restlet createRoot() { Router router = new Router(getContext()); router.attach("/",new Redirector(null,"/engine",Redirector.MODE_CLIENT_TEMPORARY)); router.attach("/engine",EngineResource.class) .setMatchingMode(Template.MODE_EQUALS); router.attach("/engine/",EngineResource.class) .setMatchingMode(Template.MODE_EQUALS); engine.getJobsDir().toURI().toString()); alljobsdir.setListingAllowed(true); router.attach("/engine/jobsdir",alljobsdir); anypath.setEditFilter(JobResource.EDIT_FILTER); router.attach("/engine/anypath/",anypath); jobdir.setModifiable(true); jobdir.setEditFilter(JobResource.EDIT_FILTER); router.attach("/engine/job/{job}/jobdir",jobdir); router.attach("/engine/job/{job}",JobResource.class); router.attach("/engine/job/{job}/report/{reportClass}",ReportGenResource.class); router.attach("/engine/job/{job}/beans",BeanBrowseResource.class); router.attach("/engine/job/{job}/beans/{beanPath}",BeanBrowseResource.class); router.attach("/engine/job/{job}/script",ScriptResource.class); router.attach("/engine/static/",staticDir);
public RESTDispatcher() { super(); setSupportedMethods(new String[] { METHOD_GET, METHOD_POST, METHOD_PUT, METHOD_DELETE, METHOD_HEAD }); int numRoutes = 0; for (RESTMapping mapping : GeoWebCacheExtensions.extensions(RESTMapping.class)) { Map<String, Object> routes = mapping.getRoutes(); addRoutes(routes); numRoutes += routes.size(); } myRouter.attach("", new IndexRestlet(myRouter)); log.info("Created RESTDispatcher with " + numRoutes + " paths"); }