Package org.ajax4jsf.tests

Source Code of org.ajax4jsf.tests.MockResourceHandler

/*
* JBoss, Home of Professional Open Source
* Copyright ${year}, Red Hat, Inc. and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/

package org.ajax4jsf.tests;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import javax.faces.application.Resource;
import javax.faces.application.ResourceHandler;
import javax.faces.context.FacesContext;

import org.ajax4jsf.resource.FacesResourceContext;
import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.InternetResourceBuilder;
import org.ajax4jsf.resource.ResourceNotFoundException;

public class MockResourceHandler extends ResourceHandler {

  @Override
  public Resource createResource(String resourceName) {
    return createResource(resourceName, null);
  }

  @Override
  public Resource createResource(String resourceName, String libraryName) {
    return createResource(resourceName, libraryName, null);
  }

  @Override
  public Resource createResource(String resourceName, String libraryName,
      String contentType) {

    StringBuilder path = new StringBuilder();
    if (libraryName != null) {
      path.append(libraryName);
    }
   
    if (libraryName.length() > 0) {
      path.append('/');
    }
   
    path.append(resourceName);
   
    InternetResourceBuilder resourceBuilder = InternetResourceBuilder.getInstance();
    try {
      final InternetResource resource = resourceBuilder.getResource(path.toString());
      return new Resource() {
       
        @Override
        public boolean userAgentNeedsUpdate(FacesContext context) {
          return true;
        }
       
        @Override
        public URL getURL() {
          throw new UnsupportedOperationException();
        }
       
        @Override
        public Map<String, String> getResponseHeaders() {
          return new HashMap<String, String>();
        }
       
        @Override
        public String getRequestPath() {
          return resource.getUri(FacesContext.getCurrentInstance(), null);
        }
       
        @Override
        public InputStream getInputStream() throws IOException {
          FacesContext facesContext = FacesContext.getCurrentInstance();
          return resource.getResourceAsStream(new FacesResourceContext(facesContext));
        }
      };
    } catch (ResourceNotFoundException e) {
      //ignore
    }
   
    return null;
  }

  @Override
  public String getRendererTypeForResourceName(String resourceName) {
    if (resourceName.endsWith(".js")) {
      return "javax.faces.resource.Script";
    }
   
    if (resourceName.endsWith(".css")) {
      return "javax.faces.resource.Stylesheet";
    }
   
    return null;
  }

  @Override
  public void handleResourceRequest(FacesContext context) throws IOException {
    throw new IllegalStateException();
  }

  @Override
  public boolean isResourceRequest(FacesContext context) {
    return false;
  }

  @Override
  public boolean libraryExists(String libraryName) {
    return true;
  }

}
TOP

Related Classes of org.ajax4jsf.tests.MockResourceHandler

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.