package ameba.mvc.route; import com.google.common.collect.Lists; import org.glassfish.jersey.server.ExtendedResourceContext; import org.glassfish.jersey.server.model.Resource; import javax.inject.Singleton; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Context; import java.util.List; import java.util.stream.Collectors; /** * 路由器帮助类 * * @author icode * @since 13-8-9 下午7:45 */ @Singleton @Path("route") public class RouteHelper { @Context private ExtendedResourceContext resourceContext; /** * <p>getRoutes.</p> * * @return a {@link java.util.List} object. */ @GET public List<String> getRoutes() { List<Resource> resourceList = resourceContext.getResourceModel().getResources(); List<String> routeList = Lists.newArrayList(); for (Resource resource : resourceList) { String path = resource.getPath().startsWith("/") ? "" : "/" + resource.getPath(); if (resource.getAllMethods().size() > 0) { routeList.add(path); } routeList.addAll( resource.getChildResources() .stream() .map(res -> path + (res.getPath().startsWith("/") ? "" : "/") + res.getPath()) .collect(Collectors.toList()) ); } return routeList; } }