Search in sources :

Example 1 with ResourceBundleReference

use of org.apache.wicket.resource.bundles.ResourceBundleReference in project wicket by apache.

the class UrlResourceReferenceMapper method mapHandler.

@Override
public Url mapHandler(IRequestHandler requestHandler) {
    Url url = null;
    if (requestHandler instanceof ResourceReferenceRequestHandler) {
        ResourceReferenceRequestHandler resourceReferenceRequestHandler = (ResourceReferenceRequestHandler) requestHandler;
        ResourceReference resourceReference = resourceReferenceRequestHandler.getResourceReference();
        while (resourceReference instanceof ResourceBundleReference) {
            // unwrap the bundle to render the url for the actual reference
            resourceReference = ((ResourceBundleReference) resourceReference).getBundleReference();
        }
        if (resourceReference instanceof UrlResourceReference) {
            UrlResourceReference urlResourceReference = (UrlResourceReference) resourceReference;
            url = urlResourceReference.getUrl();
        }
    }
    return url;
}
Also used : ResourceReferenceRequestHandler(org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler) UrlResourceReference(org.apache.wicket.request.resource.UrlResourceReference) ResourceBundleReference(org.apache.wicket.resource.bundles.ResourceBundleReference) UrlResourceReference(org.apache.wicket.request.resource.UrlResourceReference) ResourceReference(org.apache.wicket.request.resource.ResourceReference) Url(org.apache.wicket.request.Url)

Example 2 with ResourceBundleReference

use of org.apache.wicket.resource.bundles.ResourceBundleReference in project wicket by apache.

the class BasicResourceReferenceMapper method mapHandler.

@Override
public Url mapHandler(IRequestHandler requestHandler) {
    if (requestHandler instanceof ResourceReferenceRequestHandler) {
        ResourceReferenceRequestHandler referenceRequestHandler = (ResourceReferenceRequestHandler) requestHandler;
        ResourceReference reference = referenceRequestHandler.getResourceReference();
        Url url;
        while (reference instanceof ResourceBundleReference) {
            // unwrap the bundle to render the url for the actual reference
            reference = ((ResourceBundleReference) reference).getBundleReference();
        }
        if (reference instanceof MetaInfStaticResourceReference) {
            url = ((MetaInfStaticResourceReference) reference).mapHandler(referenceRequestHandler);
            // if running on Servlet 3.0 engine url is not null
            if (url != null) {
                return url;
            }
        // otherwise it has to be served by the standard wicket way
        }
        if (reference.canBeRegistered()) {
            ResourceReferenceRegistry resourceReferenceRegistry = getContext().getResourceReferenceRegistry();
            resourceReferenceRegistry.registerResourceReference(reference);
        }
        url = new Url();
        List<String> segments = url.getSegments();
        segments.add(getContext().getNamespace());
        segments.add(getContext().getResourceIdentifier());
        segments.add(getClassName(reference.getScope()));
        // setup resource parameters
        PageParameters parameters = new PageParameters(referenceRequestHandler.getPageParameters());
        // need to remove indexed parameters otherwise the URL won't be able to decode
        parameters.clearIndexed();
        ResourceUtil.encodeResourceReferenceAttributes(url, reference);
        StringTokenizer tokens = new StringTokenizer(reference.getName(), "/");
        while (tokens.hasMoreTokens()) {
            String token = tokens.nextToken();
            // on the last component of the resource path
            if (tokens.hasMoreTokens() == false && Strings.isEmpty(token) == false) {
                final IResource resource = reference.getResource();
                // is resource supposed to be cached?
                if (resource instanceof IStaticCacheableResource) {
                    final IStaticCacheableResource cacheable = (IStaticCacheableResource) resource;
                    // is caching enabled?
                    if (cacheable.isCachingEnabled()) {
                        // apply caching scheme to resource url
                        final ResourceUrl resourceUrl = new ResourceUrl(token, parameters);
                        getCachingStrategy().decorateUrl(resourceUrl, cacheable);
                        token = resourceUrl.getFileName();
                        Checks.notEmpty(token, "Caching strategy returned empty name for '%s'", resource);
                    }
                }
            }
            segments.add(token);
        }
        if (parameters.isEmpty() == false) {
            url = encodePageParameters(url, parameters, pageParametersEncoder);
        }
        return url;
    }
    return null;
}
Also used : IStaticCacheableResource(org.apache.wicket.request.resource.caching.IStaticCacheableResource) ResourceReferenceRequestHandler(org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler) ResourceReferenceRegistry(org.apache.wicket.request.resource.ResourceReferenceRegistry) ResourceBundleReference(org.apache.wicket.resource.bundles.ResourceBundleReference) PageParameters(org.apache.wicket.request.mapper.parameter.PageParameters) ResourceUrl(org.apache.wicket.request.resource.caching.ResourceUrl) Url(org.apache.wicket.request.Url) StringTokenizer(java.util.StringTokenizer) MetaInfStaticResourceReference(org.apache.wicket.request.resource.MetaInfStaticResourceReference) MetaInfStaticResourceReference(org.apache.wicket.request.resource.MetaInfStaticResourceReference) ResourceReference(org.apache.wicket.request.resource.ResourceReference) IResource(org.apache.wicket.request.resource.IResource) ResourceUrl(org.apache.wicket.request.resource.caching.ResourceUrl)

Example 3 with ResourceBundleReference

use of org.apache.wicket.resource.bundles.ResourceBundleReference in project wicket by apache.

the class ResouceBundleTest method externalBundle.

/**
 * Tests an external resource bundle
 *
 * @throws Exception
 */
@Test
public void externalBundle() throws Exception {
    ResourceBundleReference bundle = new ResourceBundleReference(new UrlResourceReference(Url.parse("http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js")));
    bundle.addProvidedResources(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(ResouceBundleTest.class, "a.js")), JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(ResouceBundleTest.class, "b.js")));
    tester.getApplication().getResourceBundles().addBundle(JavaScriptHeaderItem.forReference(bundle));
    executeTest(BundlesPage.class, "BundlesPage_ext_result.html");
}
Also used : ResourceBundleReference(org.apache.wicket.resource.bundles.ResourceBundleReference) Test(org.junit.Test)

Aggregations

ResourceBundleReference (org.apache.wicket.resource.bundles.ResourceBundleReference)3 Url (org.apache.wicket.request.Url)2 ResourceReferenceRequestHandler (org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler)2 ResourceReference (org.apache.wicket.request.resource.ResourceReference)2 StringTokenizer (java.util.StringTokenizer)1 PageParameters (org.apache.wicket.request.mapper.parameter.PageParameters)1 IResource (org.apache.wicket.request.resource.IResource)1 MetaInfStaticResourceReference (org.apache.wicket.request.resource.MetaInfStaticResourceReference)1 ResourceReferenceRegistry (org.apache.wicket.request.resource.ResourceReferenceRegistry)1 UrlResourceReference (org.apache.wicket.request.resource.UrlResourceReference)1 IStaticCacheableResource (org.apache.wicket.request.resource.caching.IStaticCacheableResource)1 ResourceUrl (org.apache.wicket.request.resource.caching.ResourceUrl)1 Test (org.junit.Test)1