Velocity File Resource Path Loading Problem

View: New views
4 Messages — Rating Filter:   Alert me  

Velocity File Resource Path Loading Problem

by Jim Cortez :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello all,
    I am working on a small MVC framework that runs on top of iJetty (a
Jetty port fot the Android platform). I am having trouble during
initialization of Velocity. Take a peek at the following code:

====
Log.info("Setting Template Directory: "+Configuration.VIEWS_LOC);
File viewsFolder = new File(Configuration.VIEWS_LOC);
if(!viewsFolder.exists() || !viewsFolder.canRead()){
    success=false;
    Log.warn("Folder "+Configuration.VIEWS_LOC+" does not exist, or
unreachable!");
} else {
    Velocity.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH,
Configuration.VIEWS_LOC);
    Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM,
"ConciergeVelocityLogger");
    try {
        Velocity.init();
    } catch (Exception e) {
        Log.warn("Error initializing Velocity: "+e.getMessage());
        e.printStackTrace();
        success = false;
    }
}
====

That code should show that the templates directory both exists and is
readable. Here is the output of the error log:

====
I/Jetty   (  709): Setting Template Directory:
/sdcard/jetty/webapps/concierge/WEB-INF/views
W/Jetty   (  709): Error initializing Velocity: null
W/System.err(  709): java.lang.NullPointerException
W/System.err(  709):    at java.io.Reader.<init>(Reader.java:72)
W/System.err(  709):    at
java.io.InputStreamReader.<init>(InputStreamReader.java:96)
W/System.err(  709):    at
org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:543)
W/System.err(  709):    at
org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:519)
W/System.err(  709):    at
org.apache.velocity.runtime.RuntimeInstance.setDefaultProperties(RuntimeInstance.java:397)
W/System.err(  709):    at
org.apache.velocity.runtime.RuntimeInstance.initializeProperties(RuntimeInstance.java:570)
W/System.err(  709):    at
org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:249)
W/System.err(  709):    at
org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:114)
W/System.err(  709):    at
org.apache.velocity.app.Velocity.init(Velocity.java:79)
W/System.err(  709):    at
org.concierge.lib.Configurator.initialize(Configurator.java:34)
W/System.err(  709):    at
org.concierge.lib.DispatchServlet.doGet(DispatchServlet.java:25)
W/System.err(  709):    at
javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
W/System.err(  709):    at
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
W/System.err(  709):    at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
W/System.err(  709):    at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:389)
W/System.err(  709):    at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
W/System.err(  709):    at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
W/System.err(  709):    at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
W/System.err(  709):    at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
W/System.err(  709):    at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
W/System.err(  709):    at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
W/System.err(  709):    at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
W/System.err(  709):    at org.mortbay.jetty.Server.handle(Server.java:320)
W/System.err(  709):    at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
W/System.err(  709):    at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
W/System.err(  709):    at
org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
W/System.err(  709):    at
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
W/System.err(  709):    at
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
W/System.err(  709):    at
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
W/System.err(  709):    at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
====

I can only assume that there is a problem reading in the template
directory. The custom logger I created merely redirects the output to a
stdout log. Does anyone have any idea how to solve this little problem?
I am using Velocity 1.6.2, iJetty 2.1, and Android 1.5.

Thank you,
Jim Cortez

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...


Re: Velocity File Resource Path Loading Problem

by Nathan Bubna :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Have you tried using the WebappResourceLoader from the VelocityTools
project? The FileResourceLoader is difficult to use and not very
portable in webapp environments.  It also won't work at all in
unexploded WAR deployments.

On Mon, Jul 20, 2009 at 9:48 PM, Jim Cortez<jim@...> wrote:

> Hello all,
>   I am working on a small MVC framework that runs on top of iJetty (a Jetty
> port fot the Android platform). I am having trouble during initialization of
> Velocity. Take a peek at the following code:
>
> ====
> Log.info("Setting Template Directory: "+Configuration.VIEWS_LOC);
> File viewsFolder = new File(Configuration.VIEWS_LOC);
> if(!viewsFolder.exists() || !viewsFolder.canRead()){
>   success=false;
>   Log.warn("Folder "+Configuration.VIEWS_LOC+" does not exist, or
> unreachable!");
> } else {
>   Velocity.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH,
> Configuration.VIEWS_LOC);
>   Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM,
> "ConciergeVelocityLogger");
>   try {
>       Velocity.init();
>   } catch (Exception e) {
>       Log.warn("Error initializing Velocity: "+e.getMessage());
>       e.printStackTrace();
>       success = false;
>   }
> }
> ====
>
> That code should show that the templates directory both exists and is
> readable. Here is the output of the error log:
>
> ====
> I/Jetty   (  709): Setting Template Directory:
> /sdcard/jetty/webapps/concierge/WEB-INF/views
> W/Jetty   (  709): Error initializing Velocity: null
> W/System.err(  709): java.lang.NullPointerException
> W/System.err(  709):    at java.io.Reader.<init>(Reader.java:72)
> W/System.err(  709):    at
> java.io.InputStreamReader.<init>(InputStreamReader.java:96)
> W/System.err(  709):    at
> org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:543)
> W/System.err(  709):    at
> org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:519)
> W/System.err(  709):    at
> org.apache.velocity.runtime.RuntimeInstance.setDefaultProperties(RuntimeInstance.java:397)
> W/System.err(  709):    at
> org.apache.velocity.runtime.RuntimeInstance.initializeProperties(RuntimeInstance.java:570)
> W/System.err(  709):    at
> org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:249)
> W/System.err(  709):    at
> org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:114)
> W/System.err(  709):    at
> org.apache.velocity.app.Velocity.init(Velocity.java:79)
> W/System.err(  709):    at
> org.concierge.lib.Configurator.initialize(Configurator.java:34)
> W/System.err(  709):    at
> org.concierge.lib.DispatchServlet.doGet(DispatchServlet.java:25)
> W/System.err(  709):    at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
> W/System.err(  709):    at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> W/System.err(  709):    at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
> W/System.err(  709):    at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:389)
> W/System.err(  709):    at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> W/System.err(  709):    at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> W/System.err(  709):    at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
> W/System.err(  709):    at
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
> W/System.err(  709):    at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
> W/System.err(  709):    at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> W/System.err(  709):    at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> W/System.err(  709):    at org.mortbay.jetty.Server.handle(Server.java:320)
> W/System.err(  709):    at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
> W/System.err(  709):    at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
> W/System.err(  709):    at
> org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
> W/System.err(  709):    at
> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> W/System.err(  709):    at
> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> W/System.err(  709):    at
> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
> W/System.err(  709):    at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
> ====
>
> I can only assume that there is a problem reading in the template directory.
> The custom logger I created merely redirects the output to a stdout log.
> Does anyone have any idea how to solve this little problem? I am using
> Velocity 1.6.2, iJetty 2.1, and Android 1.5.
>
> Thank you,
> Jim Cortez
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@...
> For additional commands, e-mail: user-help@...
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...


Re: Velocity File Resource Path Loading Problem

by Jim Cortez :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Turns out that that the WebappResourceLoader does not fix the problem.

When you deploy an application to Android, you must run all the .class
files through the dalvik converter. This changes the java bytecodes from
stack-based to register based and puts them in a flat file. In turn, it
also strips out any non-class files, such as textual config files.
Velocity looks for a default velocity.properties file within it's jar,
which does not exist.

Is there any way to force Velocity to look at a different default
velocity.properties? I have attempted this below, but failed. Any help
is appreciated!
Thanks,
Jim

====
Properties p = new Properties();
        InputStream iStream = null;
        try {
        iStream = new FileInputStream(context
            .getRealPath(Configuration.VELOCITY_PROPERTIES_FOLDER)
            + "/velocity.properties");
        } catch (FileNotFoundException e2) {
        Log.debug("Error loading velocity properties file: "
            + context.getRealPath(Configuration.VELOCITY_PROPERTIES_FOLDER)
            + "/velocity.properties");
        success = false;
        e2.printStackTrace();
        }

        try {
        p.load(iStream);
        } catch (IOException e1) {
        Log.debug("Error loading velocity.properties");
        e1.printStackTrace();
        }
       
        p.setProperty(Velocity.RESOURCE_LOADER, "webapp");
        p.setProperty("webapp.resource.loader.class",
            "org.apache.velocity.tools.view.WebappResourceLoader");
        p.setProperty("webapp.resource.loader.path",
Configuration.VIEWS_LOC);
        Velocity.setApplicationAttribute("javax.servlet.ServletContext",
context);

        Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM,
"ConciergeVelocityLogger");
       
        try {
        Velocity.init(p);
        } catch (Exception e) {
        Log.debug("Error initializing Velocity: " + e.getMessage());
        e.printStackTrace();
        success = false;
        }
====
 yields

====
D/Jetty   (  710): Error initializing Velocity: null
W/System.err(  710): java.lang.NullPointerException
W/System.err(  710):    at java.io.Reader.<init>(Reader.java:72)
W/System.err(  710):    at
java.io.InputStreamReader.<init>(InputStreamReader.java:96)
W/System.err(  710):    at
org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:543)
W/System.err(  710):    at
org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:519)
W/System.err(  710):    at
org.apache.velocity.runtime.RuntimeInstance.setDefaultProperties(RuntimeInstance.java:397)
W/System.err(  710):    at
org.apache.velocity.runtime.RuntimeInstance.initializeProperties(RuntimeInstance.java:570)
W/System.err(  710):    at
org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:249)
W/System.err(  710):    at
org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:589)
W/System.err(  710):    at
org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:229)
W/System.err(  710):    at
org.apache.velocity.app.Velocity.init(Velocity.java:107)
W/System.err(  710):    at
org.concierge.lib.Configurator.initialize(Configurator.java:64)
W/System.err(  710):    at
org.concierge.lib.DispatchServlet.doGet(DispatchServlet.java:25)
W/System.err(  710):    at
javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
W/System.err(  710):    at
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
W/System.err(  710):    at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
W/System.err(  710):    at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:389)
W/System.err(  710):    at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
W/System.err(  710):    at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
W/System.err(  710):    at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
W/System.err(  710):    at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
W/System.err(  710):    at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
W/System.err(  710):    at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
W/System.err(  710):    at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
W/System.err(  710):    at org.mortbay.jetty.Server.handle(Server.java:320)
W/System.err(  710):    at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
W/System.err(  710):    at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
W/System.err(  710):    at
org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
W/System.err(  710):    at
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
W/System.err(  710):    at
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
W/System.err(  710):    at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
W/System.err(  710):    at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
====

Nathan Bubna wrote:

> Have you tried using the WebappResourceLoader from the VelocityTools
> project? The FileResourceLoader is difficult to use and not very
> portable in webapp environments.  It also won't work at all in
> unexploded WAR deployments.
>
> On Mon, Jul 20, 2009 at 9:48 PM, Jim Cortez<jim@...> wrote:
>  
>> Hello all,
>>   I am working on a small MVC framework that runs on top of iJetty (a Jetty
>> port fot the Android platform). I am having trouble during initialization of
>> Velocity. Take a peek at the following code:
>>
>> ====
>> Log.info("Setting Template Directory: "+Configuration.VIEWS_LOC);
>> File viewsFolder = new File(Configuration.VIEWS_LOC);
>> if(!viewsFolder.exists() || !viewsFolder.canRead()){
>>   success=false;
>>   Log.warn("Folder "+Configuration.VIEWS_LOC+" does not exist, or
>> unreachable!");
>> } else {
>>   Velocity.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH,
>> Configuration.VIEWS_LOC);
>>   Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM,
>> "ConciergeVelocityLogger");
>>   try {
>>       Velocity.init();
>>   } catch (Exception e) {
>>       Log.warn("Error initializing Velocity: "+e.getMessage());
>>       e.printStackTrace();
>>       success = false;
>>   }
>> }
>> ====
>>
>> That code should show that the templates directory both exists and is
>> readable. Here is the output of the error log:
>>
>> ====
>> I/Jetty   (  709): Setting Template Directory:
>> /sdcard/jetty/webapps/concierge/WEB-INF/views
>> W/Jetty   (  709): Error initializing Velocity: null
>> W/System.err(  709): java.lang.NullPointerException
>> W/System.err(  709):    at java.io.Reader.<init>(Reader.java:72)
>> W/System.err(  709):    at
>> java.io.InputStreamReader.<init>(InputStreamReader.java:96)
>> W/System.err(  709):    at
>> org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:543)
>> W/System.err(  709):    at
>> org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:519)
>> W/System.err(  709):    at
>> org.apache.velocity.runtime.RuntimeInstance.setDefaultProperties(RuntimeInstance.java:397)
>> W/System.err(  709):    at
>> org.apache.velocity.runtime.RuntimeInstance.initializeProperties(RuntimeInstance.java:570)
>> W/System.err(  709):    at
>> org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:249)
>> W/System.err(  709):    at
>> org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:114)
>> W/System.err(  709):    at
>> org.apache.velocity.app.Velocity.init(Velocity.java:79)
>> W/System.err(  709):    at
>> org.concierge.lib.Configurator.initialize(Configurator.java:34)
>> W/System.err(  709):    at
>> org.concierge.lib.DispatchServlet.doGet(DispatchServlet.java:25)
>> W/System.err(  709):    at
>> javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
>> W/System.err(  709):    at
>> javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>> W/System.err(  709):    at
>> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
>> W/System.err(  709):    at
>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:389)
>> W/System.err(  709):    at
>> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>> W/System.err(  709):    at
>> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>> W/System.err(  709):    at
>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
>> W/System.err(  709):    at
>> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
>> W/System.err(  709):    at
>> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
>> W/System.err(  709):    at
>> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>> W/System.err(  709):    at
>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>> W/System.err(  709):    at org.mortbay.jetty.Server.handle(Server.java:320)
>> W/System.err(  709):    at
>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
>> W/System.err(  709):    at
>> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
>> W/System.err(  709):    at
>> org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
>> W/System.err(  709):    at
>> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
>> W/System.err(  709):    at
>> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>> W/System.err(  709):    at
>> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
>> W/System.err(  709):    at
>> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
>> ====
>>
>> I can only assume that there is a problem reading in the template directory.
>> The custom logger I created merely redirects the output to a stdout log.
>> Does anyone have any idea how to solve this little problem? I am using
>> Velocity 1.6.2, iJetty 2.1, and Android 1.5.
>>
>> Thank you,
>> Jim Cortez
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@...
>> For additional commands, e-mail: user-help@...
>>
>>
>>    
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@...
> For additional commands, e-mail: user-help@...
>
>  


Re: Velocity File Resource Path Loading Problem

by Nathan Bubna :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, Jul 22, 2009 at 10:12 AM, Jim Cortez<jim@...> wrote:
> Turns out that that the WebappResourceLoader does not fix the problem.
>
> When you deploy an application to Android, you must run all the .class files
> through the dalvik converter. This changes the java bytecodes from
> stack-based to register based and puts them in a flat file. In turn, it also
> strips out any non-class files, such as textual config files. Velocity looks
> for a default velocity.properties file within it's jar, which does not
> exist.

woah.  that's a nasty trick.

> Is there any way to force Velocity to look at a different default
> velocity.properties? I have attempted this below, but failed. Any help is
> appreciated!

aside from hacking the code, none comes to mind at the moment.
perhaps if you just duplicate all those defaults in your own
velocity.properties, it may not need the default file?

> Thanks,
> Jim
>
> ====
> Properties p = new Properties();
>       InputStream iStream = null;
>       try {
>       iStream = new FileInputStream(context
>           .getRealPath(Configuration.VELOCITY_PROPERTIES_FOLDER)
>           + "/velocity.properties");
>       } catch (FileNotFoundException e2) {
>       Log.debug("Error loading velocity properties file: "
>           + context.getRealPath(Configuration.VELOCITY_PROPERTIES_FOLDER)
>           + "/velocity.properties");
>       success = false;
>       e2.printStackTrace();
>       }
>
>       try {
>       p.load(iStream);
>       } catch (IOException e1) {
>       Log.debug("Error loading velocity.properties");
>       e1.printStackTrace();
>       }
>             p.setProperty(Velocity.RESOURCE_LOADER, "webapp");
>       p.setProperty("webapp.resource.loader.class",
>           "org.apache.velocity.tools.view.WebappResourceLoader");
>       p.setProperty("webapp.resource.loader.path", Configuration.VIEWS_LOC);
>       Velocity.setApplicationAttribute("javax.servlet.ServletContext",
> context);
>
>       Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM,
> "ConciergeVelocityLogger");
>             try {
>       Velocity.init(p);
>       } catch (Exception e) {
>       Log.debug("Error initializing Velocity: " + e.getMessage());
>       e.printStackTrace();
>       success = false;
>       }
> ====
> yields
>
> ====
> D/Jetty   (  710): Error initializing Velocity: null
> W/System.err(  710): java.lang.NullPointerException
> W/System.err(  710):    at java.io.Reader.<init>(Reader.java:72)
> W/System.err(  710):    at
> java.io.InputStreamReader.<init>(InputStreamReader.java:96)
> W/System.err(  710):    at
> org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:543)
> W/System.err(  710):    at
> org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:519)
> W/System.err(  710):    at
> org.apache.velocity.runtime.RuntimeInstance.setDefaultProperties(RuntimeInstance.java:397)
> W/System.err(  710):    at
> org.apache.velocity.runtime.RuntimeInstance.initializeProperties(RuntimeInstance.java:570)
> W/System.err(  710):    at
> org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:249)
> W/System.err(  710):    at
> org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:589)
> W/System.err(  710):    at
> org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:229)
> W/System.err(  710):    at
> org.apache.velocity.app.Velocity.init(Velocity.java:107)
> W/System.err(  710):    at
> org.concierge.lib.Configurator.initialize(Configurator.java:64)
> W/System.err(  710):    at
> org.concierge.lib.DispatchServlet.doGet(DispatchServlet.java:25)
> W/System.err(  710):    at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
> W/System.err(  710):    at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> W/System.err(  710):    at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
> W/System.err(  710):    at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:389)
> W/System.err(  710):    at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> W/System.err(  710):    at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> W/System.err(  710):    at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
> W/System.err(  710):    at
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
> W/System.err(  710):    at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
> W/System.err(  710):    at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> W/System.err(  710):    at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> W/System.err(  710):    at org.mortbay.jetty.Server.handle(Server.java:320)
> W/System.err(  710):    at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
> W/System.err(  710):    at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
> W/System.err(  710):    at
> org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
> W/System.err(  710):    at
> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> W/System.err(  710):    at
> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> W/System.err(  710):    at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
> W/System.err(  710):    at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
> ====
>
> Nathan Bubna wrote:
>>
>> Have you tried using the WebappResourceLoader from the VelocityTools
>> project? The FileResourceLoader is difficult to use and not very
>> portable in webapp environments.  It also won't work at all in
>> unexploded WAR deployments.
>>
>> On Mon, Jul 20, 2009 at 9:48 PM, Jim Cortez<jim@...> wrote:
>>
>>>
>>> Hello all,
>>>  I am working on a small MVC framework that runs on top of iJetty (a
>>> Jetty
>>> port fot the Android platform). I am having trouble during initialization
>>> of
>>> Velocity. Take a peek at the following code:
>>>
>>> ====
>>> Log.info("Setting Template Directory: "+Configuration.VIEWS_LOC);
>>> File viewsFolder = new File(Configuration.VIEWS_LOC);
>>> if(!viewsFolder.exists() || !viewsFolder.canRead()){
>>>  success=false;
>>>  Log.warn("Folder "+Configuration.VIEWS_LOC+" does not exist, or
>>> unreachable!");
>>> } else {
>>>  Velocity.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH,
>>> Configuration.VIEWS_LOC);
>>>  Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM,
>>> "ConciergeVelocityLogger");
>>>  try {
>>>      Velocity.init();
>>>  } catch (Exception e) {
>>>      Log.warn("Error initializing Velocity: "+e.getMessage());
>>>      e.printStackTrace();
>>>      success = false;
>>>  }
>>> }
>>> ====
>>>
>>> That code should show that the templates directory both exists and is
>>> readable. Here is the output of the error log:
>>>
>>> ====
>>> I/Jetty   (  709): Setting Template Directory:
>>> /sdcard/jetty/webapps/concierge/WEB-INF/views
>>> W/Jetty   (  709): Error initializing Velocity: null
>>> W/System.err(  709): java.lang.NullPointerException
>>> W/System.err(  709):    at java.io.Reader.<init>(Reader.java:72)
>>> W/System.err(  709):    at
>>> java.io.InputStreamReader.<init>(InputStreamReader.java:96)
>>> W/System.err(  709):    at
>>>
>>> org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:543)
>>> W/System.err(  709):    at
>>>
>>> org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:519)
>>> W/System.err(  709):    at
>>>
>>> org.apache.velocity.runtime.RuntimeInstance.setDefaultProperties(RuntimeInstance.java:397)
>>> W/System.err(  709):    at
>>>
>>> org.apache.velocity.runtime.RuntimeInstance.initializeProperties(RuntimeInstance.java:570)
>>> W/System.err(  709):    at
>>>
>>> org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:249)
>>> W/System.err(  709):    at
>>>
>>> org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:114)
>>> W/System.err(  709):    at
>>> org.apache.velocity.app.Velocity.init(Velocity.java:79)
>>> W/System.err(  709):    at
>>> org.concierge.lib.Configurator.initialize(Configurator.java:34)
>>> W/System.err(  709):    at
>>> org.concierge.lib.DispatchServlet.doGet(DispatchServlet.java:25)
>>> W/System.err(  709):    at
>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
>>> W/System.err(  709):    at
>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:389)
>>> W/System.err(  709):    at
>>>
>>> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
>>> W/System.err(  709):    at
>>>
>>> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
>>> W/System.err(  709):    at
>>>
>>> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.Server.handle(Server.java:320)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
>>> W/System.err(  709):    at
>>>
>>> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
>>> W/System.err(  709):    at
>>> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>>> W/System.err(  709):    at
>>>
>>> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
>>> W/System.err(  709):    at
>>>
>>> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
>>> ====
>>>
>>> I can only assume that there is a problem reading in the template
>>> directory.
>>> The custom logger I created merely redirects the output to a stdout log.
>>> Does anyone have any idea how to solve this little problem? I am using
>>> Velocity 1.6.2, iJetty 2.1, and Android 1.5.
>>>
>>> Thank you,
>>> Jim Cortez
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@...
>>> For additional commands, e-mail: user-help@...
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@...
>> For additional commands, e-mail: user-help@...
>>
>>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...