package de.axone.web; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.EventListener; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.servlet.Filter; import javax.servlet.FilterRegistration; import javax.servlet.MultipartConfigElement; import javax.servlet.RequestDispatcher; import javax.servlet.Servlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration; import javax.servlet.ServletRegistration.Dynamic; import javax.servlet.ServletSecurityElement; import javax.servlet.SessionCookieConfig; import javax.servlet.SessionTrackingMode; import javax.servlet.descriptor.JspConfigDescriptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestServletContext implements ServletContext { public static final Logger log = LoggerFactory.getLogger( TestServletContext.class ); /* --- Attributes --- */ @Override public Object getAttribute( String name ) { return attributes.get( name ); } private Map<String, Object> attributes = new HashMap<String, Object>(); public void setAttributes( Map<String, Object> attributes ){ this.attributes = attributes; } @Override public void removeAttribute( String name ) { attributes.remove( name ); } @Override public void setAttribute( String name, Object object ) { attributes.put( name, object ); } @Override public Enumeration<String> getAttributeNames() { return Collections.enumeration( attributes.keySet() ); } /* --- Contexts --- */ @Override public ServletContext getContext( String uripath ) { return servletContext; } private ServletContext servletContext; public void setServletContext( ServletContext servletContext ){ this.servletContext = servletContext; } @Override public String getContextPath() { return contextPath; } private String contextPath; public void setContextPath( String contextPath ){ this.contextPath = contextPath; } /* --- Parameters --- */ @Override public String getInitParameter( String name ) { return initParameters.get( name ); } Map<String,String> initParameters = new HashMap<String,String>(); public void setInitParameters( Map<String,String> initParameters ){ this.initParameters = initParameters; } @Override public Enumeration<String> getInitParameterNames() { return Collections.enumeration( initParameters.keySet() ); } /* --- Dispatcher (whatever...) --- */ @Override public RequestDispatcher getNamedDispatcher( String name ) { return namedDispatchers.get( name ); } private Map<String,RequestDispatcher> namedDispatchers = new HashMap<String,RequestDispatcher>(); public void setNamedDispatchers( Map<String,RequestDispatcher> namedDispatchers ){ this.namedDispatchers = namedDispatchers; } @Override public RequestDispatcher getRequestDispatcher( String path ) { return requestDispatchers.get( path ); } private Map<String,RequestDispatcher> requestDispatchers = new HashMap<String,RequestDispatcher>(); public void setRequestDispatchers( Map<String,RequestDispatcher> requestDispatchers ){ this.requestDispatchers = requestDispatchers; } /* --- Resources --- */ @Override public String getRealPath( String path ) { return path; } @Override public URL getResource( String path ) throws MalformedURLException { return new URL( path ); } @Override public InputStream getResourceAsStream( String path ) { try { return new FileInputStream( new File( path ) ); } catch( FileNotFoundException e ) { e.printStackTrace(); } return null; } @Override public Set<String> getResourcePaths( String path ) { File dir = new File( path ); if( dir.isDirectory() ){ HashSet<String> paths = new HashSet<String>(); for( File file : dir.listFiles() ){ paths.add( file.getPath() ); } return paths; } else { return null; } } /* --- Servlets --- */ @Override public Servlet getServlet( String name ) throws ServletException { return servlets.get( name ); } private Map<String,Servlet> servlets = new HashMap<String,Servlet>(); public void setServlets( Map<String,Servlet> servlets ){ this.servlets = servlets; } @Override public Enumeration<String> getServletNames() { return Collections.enumeration( servlets.keySet() ); } @Override public Enumeration<Servlet> getServlets() { return Collections.enumeration( servlets.values() ); } /* --- Log --- */ @Override public void log( String msg ) { log.info( msg ); } @Override public void log( Exception exception, String msg ) { log.info( msg, exception ); } @Override public void log( String message, Throwable throwable ) { log.info( message, throwable ); } /* --- Stuff --- */ @Override public String getServerInfo() { return "AXON-E Test. But no server!"; } @Override public String getServletContextName() { return "AXON-E Test Servlet Context"; } @Override public int getMajorVersion() { return majorVersion; } private int majorVersion=-1; public void setMajorVersion( int majorVersion ){ this.majorVersion = majorVersion; } @Override public int getMinorVersion() { return minorVersion; } private int minorVersion = -1; public void setMiniorVersion( int minorVersion ){ this.minorVersion = minorVersion; } @Override public String getMimeType( String file ) { return mimeType; } private String mimeType; public void setMimeType( String mimeType ){ this.mimeType = mimeType; } /* Since 3.0 -------------------------------------------- */ @Override public int getEffectiveMajorVersion() { return effectiveMajorVersion; } private int effectiveMajorVersion; public void setEffectiveMajorVersion( int effectiveMajorVersion ){ this.effectiveMajorVersion = effectiveMajorVersion; } @Override public int getEffectiveMinorVersion() { return effectiveMinorVersion; } private int effectiveMinorVersion; public void setEffectiveMinorVersion( int effectiveMinorVersion ){ this.effectiveMinorVersion = effectiveMinorVersion; } @Override public boolean setInitParameter( String name, String value ) { initParameters.put( name, value ); return true; } @Override public Dynamic addServlet( String servletName, Servlet servlet ) { servlets.put( servletName, servlet ); return new DynamicDummy( servletName, servlet.getClass().getName() ); } @Override public Dynamic addServlet( String servletName, String className ) { Servlet servlet; try { servlet = (Servlet)Class.forName( className ).newInstance(); } catch( InstantiationException | IllegalAccessException | ClassNotFoundException e ) { throw new RuntimeException( e ); } return addServlet( servletName, servlet ); } @Override public Dynamic addServlet( String servletName, Class<? extends Servlet> servletClass ) { Servlet servlet; try { servlet = servletClass.newInstance(); } catch( InstantiationException | IllegalAccessException e ) { throw new RuntimeException( e ); } return addServlet( servletName, servlet ); } @Override public <T extends Servlet> T createServlet( Class<T> c ) throws ServletException { throw new UnsupportedOperationException(); } @Override public ServletRegistration getServletRegistration( String servletName ) { throw new UnsupportedOperationException(); } @Override public Map<String, ? extends ServletRegistration> getServletRegistrations() { throw new UnsupportedOperationException(); } @Override public javax.servlet.FilterRegistration.Dynamic addFilter( String filterName, String className ) { throw new UnsupportedOperationException(); } @Override public javax.servlet.FilterRegistration.Dynamic addFilter( String filterName, Filter filter ) { throw new UnsupportedOperationException(); } @Override public javax.servlet.FilterRegistration.Dynamic addFilter( String filterName, Class<? extends Filter> filterClass ) { throw new UnsupportedOperationException(); } @Override public <T extends Filter> T createFilter( Class<T> c ) throws ServletException { throw new UnsupportedOperationException(); } @Override public FilterRegistration getFilterRegistration( String filterName ) { throw new UnsupportedOperationException(); } @Override public Map<String, ? extends FilterRegistration> getFilterRegistrations() { throw new UnsupportedOperationException(); } @Override public SessionCookieConfig getSessionCookieConfig() { throw new UnsupportedOperationException(); } @Override public void setSessionTrackingModes( Set<SessionTrackingMode> sessionTrackingModes ) throws IllegalStateException, IllegalArgumentException { throw new UnsupportedOperationException(); } @Override public Set<SessionTrackingMode> getDefaultSessionTrackingModes() { throw new UnsupportedOperationException(); } @Override public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() { throw new UnsupportedOperationException(); } @Override public void addListener( Class<? extends EventListener> listenerClass ) { throw new UnsupportedOperationException(); } @Override public void addListener( String className ) { throw new UnsupportedOperationException(); } @Override public <T extends EventListener> void addListener( T t ) { throw new UnsupportedOperationException(); } @Override public <T extends EventListener> T createListener( Class<T> c ) throws ServletException { throw new UnsupportedOperationException(); } @Override public void declareRoles( String ... roleNames ) { throw new UnsupportedOperationException(); } @Override public ClassLoader getClassLoader() { throw new UnsupportedOperationException(); } @Override public JspConfigDescriptor getJspConfigDescriptor() { throw new UnsupportedOperationException(); } private static class DynamicDummy implements Dynamic { @SuppressWarnings( "unused" ) private final String servletName, className; DynamicDummy( String servletName, String className ){ this.servletName = servletName; this.className = className; } @Override public Set<String> addMapping( String ... arg0 ) { return null; } @Override public Collection<String> getMappings() { return null; } @Override public String getRunAsRole() { return null; } @Override public String getClassName() { return null; } @Override public String getInitParameter( String arg0 ) { return null; } @Override public Map<String, String> getInitParameters() { return null; } @Override public String getName() { return null; } @Override public boolean setInitParameter( String arg0, String arg1 ) { return false; } @Override public Set<String> setInitParameters( Map<String, String> arg0 ) { return null; } @Override public void setAsyncSupported( boolean arg0 ) { } @Override public void setLoadOnStartup( int arg0 ) { } @Override public void setMultipartConfig( MultipartConfigElement arg0 ) { } @Override public void setRunAsRole( String arg0 ) { } @Override public Set<String> setServletSecurity( ServletSecurityElement arg0 ) { return null; } } }