@Override public NavigationCase getNavigationCase(final FacesContext context, final String fromAction, final String outcome) { // TODO integrate rewrite with navigation (See PrettyNavigationHandler) if (REWRITE_PREFIX.equals(outcome)) { String viewId = context.getViewRoot().getViewId(); NavigationCase navigationCase = parent.getNavigationCase(context, fromAction, viewId); return navigationCase; } else if (outcome != null && outcome.startsWith(REDIRECT_PREFIX)) { String url = outcome.substring(REDIRECT_PREFIX.length()); String viewId = AddressBuilder.create(url).getPath(); return parent.getNavigationCase(context, fromAction, viewId); } else { NavigationCase navigationCase = parent.getNavigationCase(context, fromAction, outcome); return navigationCase; } }
@Override public NavigationCase getNavigationCase(final FacesContext context, final String fromAction, final String outcome) { // TODO integrate rewrite with navigation (See PrettyNavigationHandler) if (REWRITE_PREFIX.equals(outcome)) { String viewId = context.getViewRoot().getViewId(); NavigationCase navigationCase = parent.getNavigationCase(context, fromAction, viewId); return navigationCase; } else if (outcome != null && outcome.startsWith(REDIRECT_PREFIX)) { String url = outcome.substring(REDIRECT_PREFIX.length()); String viewId = AddressBuilder.create(url).getPath(); return parent.getNavigationCase(context, fromAction, viewId); } else { NavigationCase navigationCase = parent.getNavigationCase(context, fromAction, outcome); return navigationCase; } }
@Override public String encodeRedirectURL(final String url) { Address address = AddressBuilder.create(url); OutboundServletRewrite<ServletRequest, ServletResponse, Address> event = rewrite(address); if (event.getFlow().is(ServletRewriteFlow.ABORT_REQUEST)) { return event.getOutboundAddress().toString(); } return super.encodeRedirectURL(event.getOutboundAddress().toString()); }
@Override public String encodeRedirectURL(final String url) { Address address = AddressBuilder.create(url); OutboundServletRewrite<ServletRequest, ServletResponse, Address> event = rewrite(address); if (event.getFlow().is(ServletRewriteFlow.ABORT_REQUEST)) { return event.getOutboundAddress().toString(); } return super.encodeRedirectURL(event.getOutboundAddress().toString()); }
@Override public String encodeRedirectURL(final String url) { Address address = AddressBuilder.create(url); OutboundServletRewrite<ServletRequest, ServletResponse, Address> event = rewrite(address); if (event.getFlow().is(ServletRewriteFlow.ABORT_REQUEST)) { return event.getOutboundAddress().toString(); } return super.encodeRedirectURL(event.getOutboundAddress().toString()); }
@Override public void perform(final Rewrite event, final EvaluationContext context) { RewriteEngine engine = new RewriteEngine(); HttpOutboundServletRewrite outbound = (HttpOutboundServletRewrite) event; String url = outbound.getOutboundAddress().toString(); String strippedUrl = stripContextPath(outbound.getContextPath(), url); String result = ""; if (!strippedUrl.equals(url)) { result = outbound.getContextPath(); } strippedUrl = engine.processOutbound(((HttpServletRewrite) event).getRequest(), ((HttpServletRewrite) event).getResponse(), rule, strippedUrl); result += strippedUrl; outbound.setOutboundAddress(AddressBuilder.create(result)); }
@Override public void performHttp(final HttpServletRewrite event, final EvaluationContext context) { if (event instanceof HttpInboundServletRewrite) { String target = location.getBuilder().build(event, context, Transpositions.encodePath()); ((HttpInboundServletRewrite) event).forward(target); } else if (event instanceof HttpOutboundServletRewrite) { ParameterizedPatternBuilder builder = location.getBuilder(); String target = builder.build(event, context, Transpositions.encodePath()); if (((HttpOutboundServletRewrite) event).getOutboundAddress().getPath().startsWith(event.getContextPath()) && target.startsWith("/") && !target.startsWith("//") && !target.startsWith(event.getContextPath())) { target = event.getContextPath() + target; } ((HttpOutboundServletRewrite) event).setOutboundAddress(AddressBuilder.create(target)); } }
@Override public String encodeURL(final String url) { /* * In some situations "url" may be not valid according to the rules defined in the RFC. * In this case AddressBuilder.create() will fail. In these situations we basically * skip outbound rewriting and just return the result of the super class. */ Address address; try { address = AddressBuilder.create(url); } catch (IllegalArgumentException e) { log.warn("Skipping outbound rewriting of invalid URL: " + url); return super.encodeURL(url); } OutboundServletRewrite<ServletRequest, ServletResponse, Address> event = rewrite(address); if (event.getFlow().is(ServletRewriteFlow.ABORT_REQUEST)) { return event.getOutboundAddress().toString(); } return super.encodeURL(event.getOutboundAddress().toString()); }
@Override public String encodeURL(final String url) { /* * In some situations "url" may be not valid according to the rules defined in the RFC. * In this case AddressBuilder.create() will fail. In these situations we basically * skip outbound rewriting and just return the result of the super class. */ Address address; try { address = AddressBuilder.create(url); } catch (IllegalArgumentException e) { log.warn("Skipping outbound rewriting of invalid URL: " + url); return super.encodeURL(url); } OutboundServletRewrite<ServletRequest, ServletResponse, Address> event = rewrite(address); if (event.getFlow().is(ServletRewriteFlow.ABORT_REQUEST)) { return event.getOutboundAddress().toString(); } return super.encodeURL(event.getOutboundAddress().toString()); }
@Override public String encodeURL(final String url) { /* * In some situations "url" may be not valid according to the rules defined in the RFC. * In this case AddressBuilder.create() will fail. In these situations we basically * skip outbound rewriting and just return the result of the super class. */ Address address; try { address = AddressBuilder.create(url); } catch (IllegalArgumentException e) { log.warn("Skipping outbound rewriting of invalid URL: " + url); return super.encodeURL(url); } OutboundServletRewrite<ServletRequest, ServletResponse, Address> event = rewrite(address); if (event.getFlow().is(ServletRewriteFlow.ABORT_REQUEST)) { return event.getOutboundAddress().toString(); } return super.encodeURL(event.getOutboundAddress().toString()); }
@Override public void performHttp(final HttpServletRewrite event, final EvaluationContext context) { if (event instanceof HttpInboundServletRewrite) { String target = location.getBuilder().build(event, context, Transpositions.encodePath()); ((HttpInboundServletRewrite) event).forward(target); } else if (event instanceof HttpOutboundServletRewrite) { ParameterizedPatternBuilder builder = location.getBuilder(); String target = builder.build(event, context, Transpositions.encodePath()); if (((HttpOutboundServletRewrite) event).getOutboundAddress().getPath().startsWith(event.getContextPath()) && target.startsWith("/") && !target.startsWith("//") && !target.startsWith(event.getContextPath())) { target = event.getContextPath() + target; } ((HttpOutboundServletRewrite) event).setOutboundAddress(AddressBuilder.create(target)); } }
@Override public void performHttp(final HttpServletRewrite event, final EvaluationContext context) { if (event instanceof HttpInboundServletRewrite) { String target = location.getBuilder().build(event, context, Transpositions.encodePath()); ((HttpInboundServletRewrite) event).forward(target); } else if (event instanceof HttpOutboundServletRewrite) { ParameterizedPatternBuilder builder = location.getBuilder(); String target = builder.build(event, context, Transpositions.encodePath()); if (((HttpOutboundServletRewrite) event).getOutboundAddress().getPath().startsWith(event.getContextPath()) && target.startsWith("/") && !target.startsWith("//") && !target.startsWith(event.getContextPath())) { target = event.getContextPath() + target; } ((HttpOutboundServletRewrite) event).setOutboundAddress(AddressBuilder.create(target)); } }
out.setOutboundAddress(AddressBuilder.create(url.toPath() + newQuery.toQueryString()));
String newUrl = rewritePrettyMappings(context.getConfig(), httpServletRewrite.getContextPath(), outboundRewrite.getOutboundAddress().toString()); outboundRewrite.setOutboundAddress(AddressBuilder.create(newUrl));
out.setOutboundAddress(AddressBuilder.create(url.toPath() + newQuery.toQueryString()));
out.setOutboundAddress(AddressBuilder.create(url.toPath() + newQuery.toQueryString()));