public E get(PathSpec spec) { Optional<E> optionalResource = _mappings.stream() .filter(mappedResource -> mappedResource.getPathSpec().equals(spec)) .map(mappedResource -> mappedResource.getResource()) .findFirst(); if(!optionalResource.isPresent()) return null; return optionalResource.get(); }
/** * ServletHolder matching path. * * @param target Path within _context or servlet name * @return MappedResource to the ServletHolder. Named servlets have a null PathSpec */ public MappedResource<ServletHolder> getMappedServlet(String target) { if (target.startsWith("/")) { if (_servletPathMap==null) return null; return _servletPathMap.getMatch(target); } if (_servletNameMap==null) return null; ServletHolder holder = _servletNameMap.get(target); if (holder==null) return null; return new MappedResource<>(null,holder); }
@Override public String next() { return iterator.next().getPathSpec().getDeclaration(); } };
MappedResource<ServletHolder> entry = _servletHandler.getMappedServlet(path); if (entry!=null && !entry.equals(_invokerEntry)) holder=(ServletHolder)entry.getResource();
@Override public void doStop() throws Exception { mappings.removeIf((mapped) -> !(mapped.getResource() instanceof PersistedWebSocketCreator)); super.doStop(); }
@Override public String next() { return iterator.next().getPathSpec().getDeclaration(); } };
private static final ServletHolder getServletHolder(RESTConsumesConfiguration consumesConfig, ServletHandler servletHandler) { String serviceBasePath = consumesConfig.getServiceBasePath(); return servletHandler.getMappedServlet(serviceBasePath).getResource(); }
public E get(PathSpec spec) { Optional<E> optionalResource = _mappings.stream() .filter(mappedResource -> mappedResource.getPathSpec().equals(spec)) .map(mappedResource -> mappedResource.getResource()) .findFirst(); if(!optionalResource.isPresent()) return null; return optionalResource.get(); }
public MappedResource<E> getMatch(String path) { if (path.equals("/") && rootResource != null) { return rootResource; } int len = mappings.size(); for (int i = 0; i < len; i++) { MappedResource<E> mr = mappings.get(i); if (mr.getPathSpec().matches(path)) { return mr; } } return defaultResource; }
@SuppressWarnings("incomplete-switch") public void put(PathSpec pathSpec, E resource) { MappedResource<E> entry = new MappedResource<>(pathSpec,resource); switch (pathSpec.group) { case DEFAULT: defaultResource = entry; break; case ROOT: rootResource = entry; break; } // TODO: add warning when replacing an existing pathspec? mappings.add(entry); if (LOG.isDebugEnabled()) LOG.debug("Added {} to {}",entry,this); Collections.sort(mappings); }
WebSocketCreator creator = resource.getResource();
@Override public WebSocketCreator getMapping(String rawspec) { PathSpec pathSpec = toPathSpec(rawspec); for (MappedResource<WebSocketCreator> mapping : mappings) { if (mapping.getPathSpec().equals(pathSpec)) return mapping.getResource(); } return null; }
public MappedResource<E> getMatch(String path) { if (path.equals("/") && rootResource != null) { return rootResource; } int len = mappings.size(); for (int i = 0; i < len; i++) { MappedResource<E> mr = mappings.get(i); if (mr.getPathSpec().matches(path)) { return mr; } } return defaultResource; }
@SuppressWarnings("incomplete-switch") public void put(PathSpec pathSpec, E resource) { MappedResource<E> entry = new MappedResource<>(pathSpec,resource); switch (pathSpec.group) { case DEFAULT: defaultResource = entry; break; case ROOT: rootResource = entry; break; } // TODO: add warning when replacing an existing pathspec? mappings.add(entry); if (LOG.isDebugEnabled()) LOG.debug("Added {} to {}",entry,this); Collections.sort(mappings); }
@Override public String getWelcomeFile(String pathInContext) { if (_welcomes==null) return null; String welcome_servlet=null; for (int i=0;i<_welcomes.length;i++) { String welcome_in_context=URIUtil.addPaths(pathInContext,_welcomes[i]); Resource welcome=getResource(welcome_in_context); if (welcome!=null && welcome.exists()) return welcome_in_context; if ((_welcomeServlets || _welcomeExactServlets) && welcome_servlet==null) { MappedResource<ServletHolder> entry=_servletHandler.getMappedServlet(welcome_in_context); @SuppressWarnings("ReferenceEquality") boolean isDefaultHolder = (entry.getResource()!=_defaultHolder); if (entry!=null && isDefaultHolder && (_welcomeServlets || (_welcomeExactServlets && entry.getPathSpec().getDeclaration().equals(welcome_in_context)))) welcome_servlet=welcome_in_context; } } return welcome_servlet; } }
switch (mr.getPathSpec().group) break; case DEFAULT: if (matchRoot || mr.getPathSpec().matches(path)) ret.add(mr); break; default: if (mr.getPathSpec().matches(path)) ret.add(mr); break;
public boolean put(PathSpec pathSpec, E resource) { MappedResource<E> entry = new MappedResource<>(pathSpec,resource); switch (pathSpec.group) { case EXACT: String exact = pathSpec.getPrefix(); while (exact!=null && !_exactMap.put(exact,entry)) _exactMap=new ArrayTernaryTrie<>((ArrayTernaryTrie<MappedResource<E>>)_exactMap,1.5); break; case PREFIX_GLOB: String prefix = pathSpec.getPrefix(); while (prefix!=null && !_prefixMap.put(prefix,entry)) _prefixMap=new ArrayTernaryTrie<>((ArrayTernaryTrie<MappedResource<E>>)_prefixMap,1.5); break; case SUFFIX_GLOB: String suffix = pathSpec.getSuffix(); while (suffix!=null && !_suffixMap.put(suffix,entry)) _suffixMap=new ArrayTernaryTrie<>((ArrayTernaryTrie<MappedResource<E>>)_prefixMap,1.5); break; default: } boolean added =_mappings.add(entry); if (LOG.isDebugEnabled()) LOG.debug("{} {} to {}",added?"Added":"Ignored",entry,this); return added; }
WebSocketCreator creator = resource.getResource(); httpreq.setAttribute(PathSpec.class.getName(), resource.getPathSpec());
switch (mr.getPathSpec().group) break; case DEFAULT: if (matchRoot || mr.getPathSpec().matches(path)) ret.add(mr); break; default: if (mr.getPathSpec().matches(path)) ret.add(mr); break;
public boolean put(PathSpec pathSpec, E resource) { MappedResource<E> entry = new MappedResource<>(pathSpec,resource); switch (pathSpec.group) { case EXACT: String exact = pathSpec.getPrefix(); while (exact!=null && !_exactMap.put(exact,entry)) _exactMap=new ArrayTernaryTrie<>((ArrayTernaryTrie<MappedResource<E>>)_exactMap,1.5); break; case PREFIX_GLOB: String prefix = pathSpec.getPrefix(); while (prefix!=null && !_prefixMap.put(prefix,entry)) _prefixMap=new ArrayTernaryTrie<>((ArrayTernaryTrie<MappedResource<E>>)_prefixMap,1.5); break; case SUFFIX_GLOB: String suffix = pathSpec.getSuffix(); while (suffix!=null && !_suffixMap.put(suffix,entry)) _suffixMap=new ArrayTernaryTrie<>((ArrayTernaryTrie<MappedResource<E>>)_prefixMap,1.5); break; default: } boolean added =_mappings.add(entry); if (LOG.isDebugEnabled()) LOG.debug("{} {} to {}",added?"Added":"Ignored",entry,this); return added; }