I've just read a link you sent before, this link: http://apache-tapestry-mailing-list-archives.1045711.n5.nabble.com/META-INF-assets-in-5-4-td5714677.html
I understood that Tapestry should throw an exception explaining that I should place my asset in "META-INF/assets" folder but this isn't the case. I also don't think that's clear enough though because META-INF folders are usually placed next to WEB-INF folder in the webapp directory, not in the classpath. *---------------------* *Muhammad Gelbana* http://www.linkedin.com/in/mgelbana On Mon, Jun 9, 2014 at 10:59 PM, Muhammad Gelbana <m.gelb...@gmail.com> wrote: > I had these images references this way *<img src="img/avatar.png" />* > while I should've had them referenced this way *<img > src="${asset:img/avatar.png}" />* > > Thank you Geoff > > *---------------------* > *Muhammad Gelbana* > http://www.linkedin.com/in/mgelbana > > > On Mon, Jun 9, 2014 at 9:33 PM, Muhammad Gelbana <m.gelb...@gmail.com> > wrote: > >> Sorry I couldn't reply earlier. This is the statement at line 116: >> (BTW, I created a new maven project using the quickstart archetype for >> 5.4-beta-10 and didn't modify anything in the code except that: >> >> 1. I commented an event handler in the *Index.java* file >> 2. Removed all the content in *Index.tml* except the basic tags (i.e. >> html) since all the static content is displayed in the *Layout.tml* >> file because I'm still testing. I tend to move forward bit by bit with >> tapestry so when I weird exception is thrown, I can at least guess what >> exactly did I do wrong. >> >> >> /** >>> * This is a service definition, the service will be named >>> "TimingFilter". The interface, >>> * RequestFilter, is used within the RequestHandler service >>> pipeline, which is built from the >>> * RequestHandler service configuration. Tapestry IoC is responsible >>> for passing in an >>> * appropriate Logger instance. Requests for static resources are >>> handled at a higher level, so >>> * this filter will only be invoked for Tapestry related requests. >>> * <p/> >>> * <p/> >>> * Service builder methods are useful when the implementation is >>> inline as an inner class >>> * (as here) or require some other kind of special initialization. >>> In most cases, >>> * use the static bind() method instead. >>> * <p/> >>> * <p/> >>> * If this method was named "build", then the service id would be >>> taken from the >>> * service interface and would be "RequestFilter". Since Tapestry >>> already defines >>> * a service named "RequestFilter" we use an explicit service id >>> that we can reference >>> * inside the contribution method. >>> */ >>> public RequestFilter buildTimingFilter(final Logger log) >>> { >>> return new RequestFilter() >>> { >>> public boolean service(Request request, Response response, >>> RequestHandler handler) >>> throws IOException >>> { >>> long startTime = System.currentTimeMillis(); >>> try >>> { >>> // The responsibility of a filter is to invoke the >>> corresponding method >>> // in the handler. When you chain multiple filters >>> together, each filter >>> // received a handler that is a bridge to the next >>> filter. >>> return handle >>> >>> r.service(request, response); >>> //Line 116 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>> >>> } finally >>> { >>> long elapsed = System.currentTimeMillis() - >>> startTime; >>> log.info(String.format("Request time: %d ms", >>> elapsed)); >>> } >>> } >>> }; >>> } >> >> >> *---------------------* >> *Muhammad Gelbana* >> http://www.linkedin.com/in/mgelbana >> >> >> On Mon, Jun 9, 2014 at 10:17 AM, Geoff Callender < >> geoff.callender.jumpst...@gmail.com> wrote: >> >>> What's it doing at AppModule.java:116? >>> >>> On 9 Jun 2014, at 5:09 pm, Muhammad Gelbana <m.gelb...@gmail.com> wrote: >>> >>> > I'm trying to use a complicated bootstrap template that has numerous >>> dependencies. So its possible that I'm missing one. I've put my asssets in >>> META-INF/assets folders under my resources directory (i.e. source folder >>> for TML files.) >>> > >>> > Now I'm facing this exception and many more (The full console output >>> is attached). For instance consider the following stacktrace. First I see a >>> warning with the message "/lte/img/avatar2.png" then a strange exception >>> that I can't make anything out of. I checked that the file >>> "/lte/img/avatar2.png" exists in the mentioned path and it is. So how can I >>> resolve/trace this ? >>> > >>> > 2014-06-09 08:58:21.913:WARN::/lte/img/avatar2.png >>> > java.lang.NullPointerException: Unable to delegate method invocation >>> to property 'response' of <Proxy for >>> RequestGlobals(org.apache.tapestry5.services.RequestGlobals)>, because the >>> property is null. >>> > at $Response_4c546f5b4e8.readProperty(Unknown Source) >>> > at $Response_4c546f5b4e8.setStatus(Unknown Source) >>> > at $Response_4c546f5b424.setStatus(Unknown Source) >>> > at >>> org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.renderException(DefaultRequestExceptionHandler.java:241) >>> > at >>> org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:144) >>> > at >>> $RequestExceptionHandler_4c546f5b441.handleRequestException(Unknown Source) >>> > at >>> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42) >>> > at $RequestHandler_4c546f5b443.service(Unknown Source) >>> > at >>> org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.java:847) >>> > at $RequestHandler_4c546f5b443.service(Unknown Source) >>> > at >>> org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:837) >>> > at $RequestHandler_4c546f5b443.service(Unknown Source) >>> > at >>> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89) >>> > at $RequestHandler_4c546f5b443.service(Unknown Source) >>> > at >>> com.sc.ip.portal.lte.services.AppModule$1.service(AppModule.java:116) >>> > at $RequestFilter_4c546f5b43d.service(Unknown Source) >>> > at $RequestHandler_4c546f5b443.service(Unknown Source) >>> > at >>> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105) >>> > at >>> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95) >>> > at >>> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) >>> > at >>> org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119) >>> > at $RequestHandler_4c546f5b443.service(Unknown Source) >>> > at $RequestHandler_4c546f5b437.service(Unknown Source) >>> > at >>> org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:250) >>> > at >>> org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59) >>> > at $HttpServletRequestHandler_4c546f5b439.service(Unknown Source) >>> > at >>> org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) >>> > at $HttpServletRequestFilter_4c546f5b434.service(Unknown Source) >>> > at $HttpServletRequestHandler_4c546f5b439.service(Unknown Source) >>> > at >>> org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:797) >>> > at $HttpServletRequestHandler_4c546f5b439.service(Unknown Source) >>> > at $HttpServletRequestHandler_4c546f5b433.service(Unknown Source) >>> > at >>> org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:166) >>> > at >>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212) >>> > at >>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399) >>> > at >>> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) >>> > at >>> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) >>> > at >>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) >>> > at >>> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) >>> > at >>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) >>> > at org.mortbay.jetty.Server.handle(Server.java:326) >>> > at >>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) >>> > at >>> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928) >>> > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549) >>> > at >>> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) >>> > at >>> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) >>> > at >>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) >>> > at >>> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) >>> > --------------------- >>> > Muhammad Gelbana >>> > http://www.linkedin.com/in/mgelbana >>> > <full-exception.txt> >>> > --------------------------------------------------------------------- >>> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>> > For additional commands, e-mail: users-h...@tapestry.apache.org >>> >>> >> >