cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Leszek Gawron <lgaw...@mobilebox.pl>
Subject Re: [2.2] Runtime deployment
Date Sat, 04 Nov 2006 22:44:51 GMT
Daniel Fagerstrom wrote:
> Might be that it will not that easy to create a mock servlet context 
> that contain exactly what is needed for creating beans in a 
> XmlWebApplicationContext. In my experience getting the different context 
> used within Cocoon is never easy. But I can assure you that creating a 
> mock servlet context is a much simpler solution to the problem that you 
> want to solve than refactoring Cocoon so that it doesn't depend on 
> having a servlet context available.
> 
> We should of course provide a mock servlet context so that users doesn't 
> need to implement one themselves.
> 
> For the particular problem you get, I would need to see what the 
> malformed URL looks like to have any clue about what goes wrong.

It was my mistake in ServetContext.getResource().

Seems I have a running cocoon with no servlet container:
> public class Test {
> 	public static class EmptyEnumeration implements Enumeration {
> 		public boolean hasMoreElements() {
> 			return false;
> 		}
> 
> 		public Object nextElement() {
> 			return null;
> 		}
> 	}
> 
> 	public static final Enumeration	EMPTY_ENUMERATION	= new EmptyEnumeration();
> 
> 	public static class MockServletContext implements ServletContext {
> 		private static final Log	logger	= LogFactory.getLog( ServletContext.class );
> 
> 		public Object getAttribute( String name ) {
> 			if ( name.equals( "javax.servlet.context.tempdir" ) )
> 				return new File( "target" );
> 			return null;
> 		}
> 
> 		public Enumeration getAttributeNames() {
> 			return EMPTY_ENUMERATION;
> 		}
> 
> 		public ServletContext getContext( String path ) {
> 			return null;
> 		}
> 
> 		public String getInitParameter( String name ) {
> 			return null;
> 		}
> 
> 		public Enumeration getInitParameterNames() {
> 			return EMPTY_ENUMERATION;
> 		}
> 
> 		public int getMajorVersion() {
> 			return 2;
> 		}
> 
> 		public String getMimeType( String file ) {
> 			return null;
> 		}
> 
> 		public int getMinorVersion() {
> 			return 4;
> 		}
> 
> 		public RequestDispatcher getNamedDispatcher( String name ) {
> 			return null;
> 		}
> 
> 		public String getRealPath( String path ) {
> 			return null;
> 		}
> 
> 		public RequestDispatcher getRequestDispatcher( String path ) {
> 			return null;
> 		}
> 
> 		public URL getResource( String path ) throws MalformedURLException {
> 			String p = path;
> 			if ( p.startsWith( "/" ) )
> 				p = path.substring( 1 );
> 
> 			logger.info( "getResource: " + p );
> 			return new File( p ).toURL();
> 		}
> 
> 		public InputStream getResourceAsStream( String path ) {
> 			try {
> 				URL url = getResource( path );
> 				if ( url == null )
> 					return null;
> 				return url.openStream();
> 			} catch ( Exception e ) {
> 				logger.debug( e );
> 				return null;
> 			}
> 		}
> 
> 		public Set getResourcePaths( String path ) {
> 			// TODO Auto-generated method stub
> 			return null;
> 		}
> 
> 		public String getServerInfo() {
> 			return "mock";
> 		}
> 
> 		public Servlet getServlet( String name ) throws ServletException {
> 			return null;
> 		}
> 
> 		public String getServletContextName() {
> 			return null;
> 		}
> 
> 		public Enumeration getServletNames() {
> 			return EMPTY_ENUMERATION;
> 		}
> 
> 		public Enumeration getServlets() {
> 			return EMPTY_ENUMERATION;
> 		}
> 
> 		public void log( String msg ) {
> 			logger.info( msg );
> 		}
> 
> 		public void log( Exception ex, String text ) {
> 			log(	text,
> 					ex );
> 		}
> 
> 		public void log( String text, Throwable ex ) {
> 			logger.error(	text,
> 							ex );
> 		}
> 
> 		public void removeAttribute( String name ) {
> 		}
> 
> 		public void setAttribute( String name, Object value ) {
> 		}
> 	}
> 
> 	public static void main( String[] args ) {
> 		StopWatch watch = new StopWatch();
> 		watch.start();
> 		ServletContext servletContext = new MockServletContext();
> 		ConfigurableWebApplicationContext context = new XmlWebApplicationContext();
> 		context.setServletContext( servletContext );
> 		context.setConfigLocations( new String[]{ "applicationContext.xml" } );
> 		context.refresh();
> 		context.close();
> 		watch.stop();
> 		System.out.println( "running time: " + watch.toString() );
> 	}
> }

Now if somebody could show me how to build a pipeline...

-- 
Leszek Gawron                                    CTO at MobileBox Ltd.


Mime
View raw message