Example usage for org.apache.wicket.request Url parse

List of usage examples for org.apache.wicket.request Url parse

Introduction

In this page you can find the example usage for org.apache.wicket.request Url parse.

Prototype

public static Url parse(CharSequence _url, Charset charset) 

Source Link

Document

Parses the given URL string.

Usage

From source file:org.artifactory.webapp.wicket.application.ArtifactoryWebRequest.java

License:Apache License

/**
 * Returns base url without context or filter mapping. <p> Example: if current url is <p/>
 * <pre>/*from   w  ww . jav  a 2  s.  c  o m*/
 * http://localhost:8080/context/filter/mapping/wicket/bookmarkable/com.foo.Page?1&id=2
 * </pre>
 * <p/> the base url is <em>wicket/bookmarkable/com.foo.Page</em> </p>
 *
 * @see org.apache.wicket.request.Request#getClientUrl()
 */
@Override
public Url getClientUrl() {
    if (errorAttributes != null && !Strings.isEmpty(errorAttributes.getRequestUri())) {
        String problematicURI = Url.parse(errorAttributes.getRequestUri(), getCharset()).toString();
        return getContextRelativeUrl(problematicURI, filterPrefix);
    } else if (forwardAttributes != null && !Strings.isEmpty(forwardAttributes.getRequestUri())) {
        String forwardURI = Url.parse(forwardAttributes.getRequestUri(), getCharset()).toString();
        // -- START BUG FIX
        // [YS] because it's a forward URL, the wicket filterPrefix might not be part or the URL
        // detect it by taking the second path element (e.g., /contextPath/forwardFilterPrefix/restOfPath)
        int contextPathLength = httpServletRequest.getContextPath().length();
        int forwardFilterPrefixStart = contextPathLength + 1; // the trailing '/'
        String servletPath = forwardURI.substring(forwardFilterPrefixStart); // servlet path without leading '/'
        int forwardFilterPrefixEnd = servletPath.indexOf('/');
        if (forwardFilterPrefixEnd == -1) {
            forwardFilterPrefixEnd = servletPath.length();
        }
        String forwardFilterPrefix = forwardURI.substring(forwardFilterPrefixStart,
                forwardFilterPrefixStart + forwardFilterPrefixEnd);
        return getContextRelativeUrl(forwardURI, forwardFilterPrefix);
        // -- END BUG FIX
    } else if (!isAjax()) {
        return getContextRelativeUrl(httpServletRequest.getRequestURI(), filterPrefix);
    } else {
        String base = null;

        base = getHeader(HEADER_AJAX_BASE_URL);

        if (base == null) {
            base = getRequestParameters().getParameterValue(PARAM_AJAX_BASE_URL).toString(null);
        }

        Checks.notNull(base, "Current ajax request is missing the base url header or parameter");

        return setParameters(Url.parse(base, getCharset()));
    }
}

From source file:org.artifactory.webapp.wicket.application.ArtifactoryWebRequest.java

License:Apache License

private Url getContextRelativeUrl(String uri, String filterPrefix) {
    if (filterPrefix.length() > 0 && !filterPrefix.endsWith("/")) {
        filterPrefix += "/";
    }/*from w w  w .  ja v a 2  s  . c  om*/
    StringBuilder url = new StringBuilder();
    uri = Strings.stripJSessionId(uri);

    final int start = httpServletRequest.getContextPath().length() + filterPrefix.length() + 1;

    url.append(uri.substring(start));

    if (errorAttributes == null) {
        String query = httpServletRequest.getQueryString();
        if (!Strings.isEmpty(query)) {
            url.append('?');
            url.append(query);
        }
    }

    return setParameters(Url.parse(url.toString(), getCharset()));
}

From source file:org.artifactory.webapp.wicket.application.ArtifactoryWebRequest.java

License:Apache License

@Override
public String getPrefixToContextPath() {
    PrependingStringBuffer buffer = new PrependingStringBuffer();
    Url filterPrefixUrl = Url.parse(filterPrefix, getCharset());
    for (int i = 0; i < filterPrefixUrl.getSegments().size() - 1; ++i) {
        buffer.prepend("../");
    }/*  w  ww .  j  ava 2  s  .  co  m*/
    return buffer.toString();
}

From source file:sk.drunkenpanda.leaflet.AbstractLeafletTest.java

License:Apache License

/**
 * Prepares request that triggers AJAX behavior and contains parameter with given name and value.
 *
 * @param tester the wicket tester which triggers behavior
 * @param behavior the behavior that should be triggered
 * @param parameterName the name of parameter
 * @param parameterValue the value of parameter
 * @return mock HTTP request that triggers given behavior
 *//*w  w  w. j  av a2 s  . c  o  m*/
protected MockHttpServletRequest prepareRequest(WicketTester tester, AbstractAjaxBehavior behavior,
        String parameterName, String parameterValue) {
    MockHttpServletRequest request = new MockHttpServletRequest(tester.getApplication(),
            tester.getHttpSession(), tester.getServletContext());

    Url url = Url.parse(behavior.getCallbackUrl().toString(), Charset.forName(request.getCharacterEncoding()));

    // make url suitable for wicket tester use. usually this involves stripping any leading ..
    // segments to make the url absolute
    for (Iterator<String> segments = url.getSegments().iterator(); segments.hasNext();) {
        String segment = segments.next();
        if (segment.equals("..") || segment.equals(".")) {
            segments.remove();
        }
    }

    request.addHeader("Wicket-Ajax", "true");
    request.addHeader("Wicket-Ajax-BaseURL", url.toString());
    request.setUrl(url);

    request.setParameter(parameterName, parameterValue);

    return request;
}