sorry... i responded to the wrong email! this was not intended for wicket-develop. my bad!

Jonathan Locke wrote:


let's go with spaces instead of tabs in source files. we both have really different habits (i do 4 space tabs)...

  jon

Eelco Hillenius wrote:

I also patched it for 1.1. Could the people using OSGi/ Oscar try their stuff against HEAD and see if there is a need for the Wicket OSGiPath at all?

Also, I'm not totally sure about packaged resource (find it attached). I keep a reference to the class of the package (as package isn't serializable), but I am not sure what happens if that class is deserialized in another environment... will it be loaded by the class loader we need, or could that be a wrong one?

Eelco

Martijn Dashorst wrote:

This approach seems to work. At least my problem has gone, after Eelco's patch. If anyone needs this functionality in 1.0, I will be releasing a 1.0.2 later this week. This bug/feature will be in there, as well as some other backported bugfixes.

Martijn




------------------------------------------------------------------------

/*
* $Id: PackageResource.java,v 1.4 2005/08/15 17:12:04 eelco12 Exp $
* $Revision: 1.4 $
* $Date: 2005/08/15 17:12:04 $
* * ============================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of
* the License at
* * http://www.apache.org/licenses/LICENSE-2.0
* * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under
* the License.
*/
package wicket.markup.html;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import wicket.Application;
import wicket.Resource;
import wicket.SharedResources;
import wicket.WicketRuntimeException;
import wicket.util.lang.Packages;
import wicket.util.resource.IResourceStream;

/**
* Represents a localizable static resource.
* <p>
* Use like eg:
* <pre>
* private static final PackageResource IMG_UNKNOWN =
* PackageResource.get(EditPage.class.getPackage(), "questionmark.gif");
* </pre>
* where the static resource references image 'questionmark.gif' from the
* the package that EditPage is in. * </p>
* * @author Jonathan Locke
*/
public class PackageResource extends WebResource
{
    /** Map from key to resource */
    private static Map resourceMap = new HashMap();

    /** The path to the resource */
    final String absolutePath;

    /** The resource's locale */
    final Locale locale;

    /** The resource's style */
    final String style;

    /** The package's class, used for class loading. */
    final Class packageClass;

    /**
     * Binds a the resource to the given application object
* Will create the resource if not already in the shared resources of the application object.
     *      * @param application
     *             The application to bind to.
     * @param scope
     *             The scope of the resource.
     * @param name
     *             The name of the resource.
     * @param locale
     *             The locale of the resource.
     * @param style
     *             The style of the resource.
     */
public static void bind(Application application, Class scope, String name, Locale locale, String style)
    {
Resource resource = application.getSharedResources().get(scope, name, locale, style);
        // Not available yet?
        if (resource == null)
        {
            // Share through application
            resource = get(scope.getPackage(), name, locale, style);
application.getSharedResources().add(scope, name, locale, style, resource);
        }
    }

    /**
     * Binds a the resource to the given application object
* Will create the resource if not already in the shared resources of the application object.
     *      * @param application
     *             The application to bind to.
     * @param scope
     *             The scope of the resource.
     * @param name
     *             The name of the resource.
     */
public static void bind(Application application, Class scope, String name)
    {
        bind(application, scope, name, null, null);
    }
/** * Gets a non-localized resource for a given set of criteria. Only one resource
     * will be loaded for the same criteria.
     *      * @param basePackage
     *            The base package to search from
     * @param path
     *            The path to the resource
     * @return The resource
     */
public static PackageResource get(final Package basePackage, final String path)
    {
        return get(basePackage, path, null, null);
    }

    /**
* Gets the resource for a given set of criteria. Only one resource will be
     * loaded for the same criteria.
     *      * @param basePackage
     *            The base package to search from
     * @param path
     *            The path to the resource
     * @param locale
     *            The locale of the resource
     * @param style
     *            The style of the resource (see [EMAIL PROTECTED] 
wicket.Session})
     * @return The resource
     */
public static PackageResource get(final Package basePackage, final String path,
            final Locale locale, final String style)
    {
final String key = basePackage.getName() + '/' + SharedResources.path(path, locale, style);
        synchronized (resourceMap)
        {
PackageResource resource = (PackageResource)resourceMap.get(key);
            if (resource == null)
            {
resource = new PackageResource(basePackage, path, locale, style);
                resourceMap.put(key, resource);
            }
            return resource;
        }
    }

    /**
     * private constructor
     * @param basePackage
     *            The base package to search from
     * @param path
     *            The path to the resource
     * @param locale
     *            The locale of the resource
     * @param style
     *            The style of the resource
     */
private PackageResource(final Package basePackage, final String path, final Locale locale,
            final String style)
    {
        packageClass = basePackage.getClass();
// Convert resource path to absolute path relative to base package
        this.absolutePath = Packages.absolutePath(basePackage, path);
        this.locale = locale;
        this.style = style;
    }

    /**
     * @return Gets the resource for the component.
     */
    public IResourceStream getResourceStream()
    {
        if (resourceStream == null)
        {
            // Locate resource
this.resourceStream = Application.get().getResourceStreamLocator().locate( packageClass.getClassLoader(), absolutePath, style, locale, null);

            // Check that resource was found
            if (this.resourceStream == null)
            {
throw new WicketRuntimeException("Unable to find package resource [path = " + absolutePath + ", style = " + style + ", locale = " + locale + "]");
            }
        }
        return resourceStream;
    }
}


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop



-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop

Reply via email to