/*
* JBoss, Home of Professional Open Source
* Copyright 2013, 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.richfaces.resource.optimizer.faces;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.Principal;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import javax.activation.MimetypesFileTypeMap;
import javax.faces.context.ExternalContext;
import com.google.common.collect.Sets;
/**
* @author Nick Belaevski
*
*/
public class ExternalContextImpl extends ExternalContext {
private String webRoot;
private Map<String, String> initParamsMap = new HashMap<String, String>();
private Map<String, Object> requestMap = new HashMap<String, Object>();
protected void setWebRoot(String webroot) {
this.webRoot = webroot;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#dispatch(java.lang.String)
*/
@Override
public void dispatch(String path) throws IOException {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#encodeActionURL(java.lang.String)
*/
@Override
public String encodeActionURL(String url) {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#encodeNamespace(java.lang.String)
*/
@Override
public String encodeNamespace(String name) {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#encodeResourceURL(java.lang.String)
*/
@Override
public String encodeResourceURL(String url) {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getApplicationMap()
*/
@Override
public Map<String, Object> getApplicationMap() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getAuthType()
*/
@Override
public String getAuthType() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getContext()
*/
@Override
public Object getContext() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getInitParameter(java.lang.String)
*/
@Override
public String getInitParameter(String name) {
// TODO Auto-generated method stub
return initParamsMap.get(name);
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getInitParameterMap()
*/
@Override
public Map getInitParameterMap() {
// TODO Auto-generated method stub
return initParamsMap;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRemoteUser()
*/
@Override
public String getRemoteUser() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequest()
*/
@Override
public Object getRequest() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestContextPath()
*/
@Override
public String getRequestContextPath() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestCookieMap()
*/
@Override
public Map<String, Object> getRequestCookieMap() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestHeaderMap()
*/
@Override
public Map<String, String> getRequestHeaderMap() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestHeaderValuesMap()
*/
@Override
public Map<String, String[]> getRequestHeaderValuesMap() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestLocale()
*/
@Override
public Locale getRequestLocale() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestLocales()
*/
@Override
public Iterator<Locale> getRequestLocales() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestMap()
*/
@Override
public Map<String, Object> getRequestMap() {
return requestMap;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestParameterMap()
*/
@Override
public Map<String, String> getRequestParameterMap() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestParameterNames()
*/
@Override
public Iterator<String> getRequestParameterNames() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestParameterValuesMap()
*/
@Override
public Map<String, String[]> getRequestParameterValuesMap() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestPathInfo()
*/
@Override
public String getRequestPathInfo() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getRequestServletPath()
*/
@Override
public String getRequestServletPath() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getResource(java.lang.String)
*/
@Override
public URL getResource(String path) throws MalformedURLException {
return new URL("file:" + webRoot + path);
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getResourceAsStream(java.lang.String)
*/
@Override
public InputStream getResourceAsStream(String path) {
File file = new File(webRoot, path);
if (file.exists()) {
try {
return new FileInputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
@Override
public Set<String> getResourcePaths(String path) {
File root = new File(webRoot, path);
Set<String> result = Sets.newHashSet();
if (root.exists()) {
String[] list = root.list();
for (String childName : list) {
String name = childName;
File child = new File(root, name);
if (child.isDirectory()) {
name += '/';
}
result.add(path + '/' + name);
}
}
return result;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getResponse()
*/
@Override
public Object getResponse() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getSession(boolean)
*/
@Override
public Object getSession(boolean create) {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getSessionMap()
*/
@Override
public Map<String, Object> getSessionMap() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#getUserPrincipal()
*/
@Override
public Principal getUserPrincipal() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#isUserInRole(java.lang.String)
*/
@Override
public boolean isUserInRole(String role) {
// TODO Auto-generated method stub
return false;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#log(java.lang.String)
*/
@Override
public void log(String message) {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#log(java.lang.String, java.lang.Throwable)
*/
@Override
public void log(String message, Throwable exception) {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContext#redirect(java.lang.String)
*/
@Override
public void redirect(String url) throws IOException {
// TODO Auto-generated method stub
}
@Override
public String getResponseCharacterEncoding() {
return "UTF-8";
}
/**
* Returns mime-type for known resorce file types
*
* @param file the full name of file
* @return mime-type for known resorce file types
*
* TODO load supported mime-types from mime.types file in this project
*/
@Override
public String getMimeType(String file) {
return MimetypesFileTypeMap.getDefaultFileTypeMap().getContentType(file);
}
}