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

Reply via email to