Package org.apache.wicket.resource

Source Code of org.apache.wicket.resource.ResourceUtil

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.wicket.resource;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;

import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.resource.aggregation.ResourceReferenceAndStringData;
import org.apache.wicket.resource.dependencies.AbstractResourceDependentResourceReference.ResourceType;
import org.apache.wicket.util.io.IOUtils;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
import org.apache.wicket.util.string.Strings;

/**
* Utilities for resources.
*
* @author Jeremy Thomerson
*/
public class ResourceUtil
{

  private ResourceUtil()
  {
    // no-op
  }

  /**
   * Helper that calls the proper IHeaderResponse.render*Reference method based on the input.
   *
   * @param resp
   *            the response to call render*Reference methods on
   * @param ref
   *            the reference to render
   * @param css
   *            true if this is a css reference
   * @param string
   *            the string argument to pass to those methods that accept it (js = id / css =
   *            media)
   * @deprecated Will be removed in the next major release
   */
  @Deprecated
  public static void renderTo(IHeaderResponse resp, ResourceReference ref, boolean css,
    String string)
  {
    if (css)
    {
      if (Strings.isEmpty(string))
      {
        resp.renderCSSReference(ref);
      }
      else
      {
        resp.renderCSSReference(ref, string);
      }
    }
    else
    {
      if (Strings.isEmpty(string))
      {
        resp.renderJavaScriptReference(ref);
      }
      else
      {
        resp.renderJavaScriptReference(ref, string);
      }
    }
  }

  /**
   * Helper that calls the proper IHeaderResponse.render*Reference method based on the input.
   *
   * @param resp
   *            the response to call render*Reference methods on
   * @param data
   */
  // TODO Wicket.next - make this method work with an improved version of
// ResourceReferenceAndStringData
  public static void renderTo(IHeaderResponse resp, ResourceReferenceAndStringData data)
  {
    ResourceType resourceType = data.getResourceType();
    ResourceReference reference = data.getReference();
    PageParameters parameters = data.getParameters();
    String idOrMedia = data.getIdOrMedia();
    CharSequence content = data.getContent();

    switch (resourceType)
    {
      case CSS :
        String condition = data.getCssCondition();

        if (Strings.isEmpty(content) == false)
        {
          resp.renderCSS(content, idOrMedia);
        }
        else if (reference == null)
        {
          resp.renderCSSReference(data.getUrl(), idOrMedia, condition);
        }
        else
        {
          resp.renderCSSReference(reference, parameters, idOrMedia, condition);
        }
        break;
      case JS :
        boolean defer = data.isJsDefer();
        String charset = data.getCharset();

        if (Strings.isEmpty(content) == false)
        {
          resp.renderJavaScript(content, idOrMedia);
        }
        else if (reference == null)
        {
          resp.renderJavaScriptReference(data.getUrl(), idOrMedia, defer, charset);
        }
        else
        {
          resp.renderJavaScriptReference(reference, parameters, idOrMedia, defer, charset);
        }
        break;
      case PLAIN :
        resp.renderString(content);
    }
  }

  /**
   * read string with platform default encoding from resource stream
   *
   * @param resourceStream
   * @return string read from resource stream
   *
   * @see #readString(org.apache.wicket.util.resource.IResourceStream, java.nio.charset.Charset)
   */
  public static String readString(IResourceStream resourceStream)
  {
    return readString(resourceStream, null);
  }

  /**
   * read string with specified encoding from resource stream
   *
   * @param resourceStream
   *            string source
   * @param charset
   *            charset for the string encoding (use <code>null</code> for platform default)
   * @return string read from resource stream
   */
  public static String readString(IResourceStream resourceStream, Charset charset)
  {
    try
    {
      InputStream stream = resourceStream.getInputStream();

      try
      {
        byte[] bytes = IOUtils.toByteArray(stream);

        if (charset == null)
          charset = Charset.defaultCharset();

        return new String(bytes, charset.name());
      }
      finally
      {
        resourceStream.close();
      }
    }
    catch (IOException e)
    {
      throw new WicketRuntimeException("failed to read string from " + resourceStream, e);
    }
    catch (ResourceStreamNotFoundException e)
    {
      throw new WicketRuntimeException("failed to locate stream from " + resourceStream, e);
    }
  }
}
TOP

Related Classes of org.apache.wicket.resource.ResourceUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.