Hi Ian , Thanks for the clarification. Each PlanetResource value map has two predefined properties (keys) in its Map. "name" and "distance". I looked in to the code of PlanetResource/Provider end to end. I am trying the understand the rationale behind this so that I can incooperate this to CassandraResource.
- To obtain a PlanetResource, the implementation always returns a PlanetResource on the availability of the Map it maintains "PLANETS". (can see in getResource/listResource) - The content of the planet map ONLY has a Pre-Defined number of key/values. (some planet names and its distances). Because PLANETS map only populated from the static code block from the provider. - After server starts the ONLY keys "PLANETS" map have is i.e /planets/mercury/ /planets/earth/ and etc. Also for some test there is also /planets/earth/moon. And its corresponding PlanetValueMap. - As per current code in planet resource; if I do a PlanetResouceProvide#getResource(/planets/myplanet/moon1) this returns NULL. It returns something only when we pass those pre defined paths. i.e /planets/mercury/. In CassandraResourceProvider I do not refer any map, but rather directly deals with the Cassandra DB, after decoding the path to column family key. Is this PlanetResource provider behavior correct ? If so how my Cassandra Provider/Resource should map to this? Should I define pre defined column families like this. Thanks On Sun, Aug 18, 2013 at 1:43 PM, Ian Boston <i...@tfd.co.uk> wrote: > Hi, > The annotations in PlanetResource add OSGi properties and code that > registers the class as adatable from a PlanetResource to a ValueMap. > You need to do the same for CassandraResource. The contents of the > ValueMap (backed by a Map), should be selected properties of the > Cassandra row. (ie the names and values of the columns). > > Ian > > On 17 August 2013 06:16, Dishara Wijewardana <ddwijeward...@gmail.com> > wrote: > > Hi all, > > Seems the error I have posted is wrong. The above error is correct, > because > > I am trying to acquire a non existing resource. (I saw in the doc, the > way > > jcr resources get resolved, there it defines a resourcePathInfo as > > .html/.json where if you add a node as "/foo/bar") you can view the > content > > of it through /foo/bar.html or /foo/bar.json. > > > > In my case If I do the same, the resource that I have stored is > > "/content/cassandra/1K/0" , but above NPE comes when I tried * > > http://localhost:8080/content/cassandra/1K/0.html*. (NOTE: I have also > set > > resourcePathInfo =.html in resource meta data). I am getting following > when > > I do the correct sample path * > http://localhost:8080/content/cassandra/1K/0. > > *The unsupported exception is thrown by me on resource.adaptTo since I > > did not see any requirement of implementing that. Is it required to > > implement adaptTo method ? What does it suppose to do ? ( I believe now > up > > to this error point, my request has come in the correct path > > , and this is something I should fix) > > > > I checked on PlanetResource impl class. There I found following which I > do > > not have in my CassandraResource class. What these annotations means ? > > @Adaptable(adaptableClass=Resource.class, adapters={ > > @Adapter({ValueMap.class}) > > }) * * > > > > Internal Server Error (500) > > > > The requested URL /content/cassandra/num4K/0 resulted in an error in > > org.apache.sling.servlets.get.DefaultGetServlet. > > Exception: > > > > java.lang.UnsupportedOperationException > > at > org.apache.sling.cassandra.resource.provider.CassandraResource.adaptTo(CassandraResource.java:186) > > at > org.apache.sling.servlets.get.impl.helpers.HtmlRendererServlet.doGet(HtmlRendererServlet.java:63) > > at > org.apache.sling.api.servlets.SlingSafeMethodsServlet.mayService(SlingSafeMethodsServlet.java:268) > > at > org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:344) > > at > org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:375) > > at > org.apache.sling.servlets.get.impl.DefaultGetServlet.doGet(DefaultGetServlet.java:252) > > at > org.apache.sling.api.servlets.SlingSafeMethodsServlet.mayService(SlingSafeMethodsServlet.java:268) > > at > org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:344) > > at > org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:375) > > at > org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:508) > > at > org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:261) > > at > org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:49) > > at > org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:64) > > at > org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:64) > > at > org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) > > at > org.apache.sling.engine.impl.SlingRequestProcessorImpl.processRequest(SlingRequestProcessorImpl.java:151) > > at > org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:207) > > at > org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96) > > at > org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79) > > at > org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42) > > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49) > > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) > > at > org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:75) > > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) > > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) > > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) > > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) > > at > org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48) > > at > org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39) > > at > org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) > > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) > > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) > > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) > > 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:926) > > 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) > > > > Request Progress: > > > > 0 (2013-08-17 10:25:10) TIMER_START{Request Processing} > > 0 (2013-08-17 10:25:10) COMMENT timer_end format is {<elapsed > > msec>,<timer name>} <optional message> > > 0 (2013-08-17 10:25:10) LOG Method=GET, > > PathInfo=/content/cassandra/num4K/0 > > 0 (2013-08-17 10:25:10) TIMER_START{ResourceResolution} > > 11 (2013-08-17 10:25:10) TIMER_END{11,ResourceResolution} > > URI=/content/cassandra/num4K/0 resolves to > > > Resource=org.apache.sling.cassandra.resource.provider.CassandraResource@52ecb5eb > > 17 (2013-08-17 10:25:10) LOG Resource Path Info: > > SlingRequestPathInfo: path='/content/cassandra/num4K/0', > > selectorString='null', extension='html', suffix='null' > > 17 (2013-08-17 10:25:10) TIMER_START{ServletResolution} > > 17 (2013-08-17 10:25:10) > > > TIMER_START{resolveServlet(org.apache.sling.cassandra.resource.provider.CassandraResource@52ecb5eb > )} > > 26 (2013-08-17 10:25:10) > > > TIMER_END{9,resolveServlet(org.apache.sling.cassandra.resource.provider.CassandraResource@52ecb5eb > )} > > Using servlet org.apache.sling.servlets.get.DefaultGetServlet > > 26 (2013-08-17 10:25:10) TIMER_END{9,ServletResolution} > > URI=/content/cassandra/num4K/0 handled by > > Servlet=org.apache.sling.servlets.get.DefaultGetServlet > > 26 (2013-08-17 10:25:10) LOG Applying Requestfilters > > 26 (2013-08-17 10:25:10) LOG Calling filter: > > org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter > > 26 (2013-08-17 10:25:10) > > TIMER_START{org.apache.sling.servlets.get.DefaultGetServlet#0} > > 29 (2013-08-17 10:25:10) LOG Using > > org.apache.sling.servlets.get.impl.helpers.HtmlRendererServlet to > > render for extension=html > > 32 (2013-08-17 10:25:10) > > TIMER_END{6,org.apache.sling.servlets.get.DefaultGetServlet#0} > > 33 (2013-08-17 10:25:10) > > > TIMER_START{handleError:throwable=java.lang.UnsupportedOperationException} > > 72 (2013-08-17 10:25:10) > > > TIMER_END{39,handleError:throwable=java.lang.UnsupportedOperationException} > > Using handler > org.apache.sling.servlets.resolver.internal.defaults.DefaultErrorHandlerServlet > > 73 (2013-08-17 10:25:10) TIMER_END{73,Request Processing} Dumping > > SlingRequestProgressTracker Entries > > > > > > > > On Fri, Aug 16, 2013 at 11:58 AM, Bertrand Delacretaz < > > bdelacre...@apache.org> wrote: > > > >> On Fri, Aug 16, 2013 at 4:12 AM, Dishara Wijewardana > >> <ddwijeward...@gmail.com> wrote: > >> > ...java.lang.NullPointerException > >> > at > >> > org.apache.sling.servlets.resolver.internal.SlingServletResolver.resolveServlet(SlingServletResolver.java:581)... > >> > >> duplicated question...I replied in the other thread. > >> -Bertrand > >> > > > > > > > > -- > > Thanks > > /Dishara > -- Thanks /Dishara