On Sun, Aug 11, 2013 at 2:49 PM, Ian Boston <[email protected]> wrote:

> Hi Dishara,
> The Resource is not being found.
>
> Things to check.
>
> 1. Check that the CassandraResourceProvider is registered with the
> ResourceResolver at the correct path.
>
> Got to
> http://localhost:8080/system/console/services    (login admin:admin)
> Locate the CassandraResourceProvider and take a note of the service ID
> (first column).
> Locate the service for
> org.apache.sling.api.resource.ResourceResolverFactory
> Click on the bundle link in the left hand column, in my case
> http://localhost:8080/system/console/bundles/146
> Check that the the service ID for the CassandraResourceProvider is
> used by this bundle.
>
Hi Ian, ResourceResolverFactory dos not include my bundle under using
bundles category. Do I need to add a dependency/import to the pom which
includes ResourceResolverFactory class ?

Refer following for more information

[org.apache.sling.api.resource.ResourceResolverFactory]
Service Description Apache Sling Resource Resolver Factory
Service Vendor The Apache Software Foundation
Using Bundles org.apache.sling.event (52)
org.apache.sling.jcr.resource (90)
org.apache.sling.auth.form (91)
org.apache.sling.servlets.resolver (71)
org.apache.sling.auth.core (86)
org.apache.sling.discovery.impl (75)

*and here is my bundle service information.*

257 [org.apache.sling.api.resource.ResourceProvider]
component.id 103
component.name
org.apache.sling.cassandra.resource.provider.CassandraResourceProvider
Service PID
org.apache.sling.cassandra.resource.provider.CassandraResourceProvider
Using Bundles org.apache.sling.bundleresource.impl (74)
org.apache.sling.resourceresolver (57)


> 2. Put some Log statements in the CassandraResourceProvider to prove
> that the ResourceResolver is calling it.
>
>
> 3. Make certain that the Resource that the CassandrResourceProvider is
> returning is properly formed. It has resource metadata with a
> resourceType and path.
>
> You can use http://localhost:8080/system/console/jcrresolver to check
> how URLs are resolved, or use a curl command.
>
> HTH
> Ian
>
> On 11 August 2013 01:08, Dishara Wijewardana <[email protected]>
> wrote:
> > On Sat, Aug 10, 2013 at 1:47 PM, Bertrand Delacretaz <
> [email protected]
> >> wrote:
> >
> >> Hi,
> >>
> >> On Sat, Aug 10, 2013 at 7:02 AM, Dishara Wijewardana
> >> <[email protected]> wrote:
> >> > ...The integration tests
> >> > calls to HTTP REST endpoints. So there should be a place that I
> should be
> >> > writing something like JAX-RS using sling APIs...
> >>
> >> You don't need JAX-RS, Sling provides RESTful HTTP APIs out of the box.
> >>
> >> > ...Apparently what I should be
> >> > writing is something similar to PlanetsResourceProviderTest....
> >>
> >> Yeah can be a good starting point - setup a Sling instance with your
> >> resource provider active and create, retrieve, update and delete
> >> resources via Sling's HTTP API.
> >>
> >> You can also probably test your ResourceProvider without a Sling
> >> instance, either with unit tests or pax exam integration tests. If you
> >> can demonstrate there that it works according to the ResourceProvider
> >> semantics, integration tests can be minimal and just verify that your
> >> provider hooks up in the right way when activated.
> >>
> >
> > Hi Bertrand
> > You are quite right. My provider works standalone and wants to make sure
> > whether my provider picked up by the sling engine. Where should I specify
> > my provider when calling the HTTP endpoint. Or if  I call to a correct
> > resource path, will it picked it up ?
> >
> > I tried writing something similar to PlanetsResourceProviderTest and did
> a
> > HTTP GET call to the endpoint "
> > http://localhost:8080/content/cassandra/movies/foo"; and when I remotely
> > debug the test, the http client of HTTPTestBase receives a 404 for that
> GET
> > call..
> >
> > NOTE: /content/cassandra/movies/foo is an existing resource node in
> > cassandra and my provider capable of returning it in standalone mode.
> >
> > This is the BE error log..
> >
> > unning
> >
> org.apache.sling.launchpad.webapp.integrationtest.resourceprovider.CassandraResourceProviderTest
> > Checking if the required Sling services are started (timeout 62
> seconds)...
> > (base URLs=http://localhost:8080 and http://localhost:8080; servlet
> > context=)
> > Sling services seem to be started, continuing with integration tests.
> > Listening for transport dt_socket at address: 5006
> > Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.472 sec
> > <<< FAILURE!
> >
> testMovieResource(org.apache.sling.launchpad.webapp.integrationtest.resourceprovider.CassandraResourceProviderTest)
> >  Time elapsed: 0.437 sec  <<< FAILURE!
> > junit.framework.AssertionFailedError: Expected status 200 for
> > http://localhost:8080/content/cassandra/movies/foo (content=<!DOCTYPE
> HTML
> > PUBLIC "-//IETF//DTD HTML 2.0//EN">
> > <html>
> > <head>
> > <title>404 No resource found</title>
> > </head>
> > <body>
> > <h1>No resource found (404)</h1>
> > <p>The requested URL /content/cassandra/movies/foo resulted in an error
> in
> >
> org.apache.sling.servlets.resolver.internal.defaults.DefaultErrorHandlerServlet.</p>
> > <h3>Request Progress:</h3>
> > <pre>
> >       0 (2013-08-11 05:25:39) TIMER_START{Request Processing}
> >       0 (2013-08-11 05:25:39) COMMENT timer_end format is {&lt;elapsed
> > msec&gt;,&lt;timer name&gt;} &lt;optional message&gt;
> >       0 (2013-08-11 05:25:39) LOG Method=GET,
> > PathInfo=/content/cassandra/movies/foo
> >       0 (2013-08-11 05:25:39) TIMER_START{ResourceResolution}
> >       2 (2013-08-11 05:25:39) TIMER_END{2,ResourceResolution}
> > URI=/content/cassandra/movies/foo resolves to
> Resource=NonExistingResource,
> > path=/content/cassandra/movies/foo
> >       3 (2013-08-11 05:25:39) LOG Resource Path Info:
> SlingRequestPathInfo:
> > path='/content/cassandra/movies/foo', selectorString='null',
> > extension='null', suffix='null'
> >       3 (2013-08-11 05:25:39) TIMER_START{ServletResolution}
> >       3 (2013-08-11 05:25:39)
> > TIMER_START{resolveServlet(NonExistingResource,
> > path=/content/cassandra/movies/foo)}
> >       3 (2013-08-11 05:25:39)
> > TIMER_END{0,resolveServlet(NonExistingResource,
> > path=/content/cassandra/movies/foo)} Using servlet
> > org.apache.sling.servlets.get.DefaultGetServlet
> >       3 (2013-08-11 05:25:39) TIMER_END{0,ServletResolution}
> > URI=/content/cassandra/movies/foo handled by
> > Servlet=org.apache.sling.servlets.get.DefaultGetServlet
> >       3 (2013-08-11 05:25:39) LOG Applying Requestfilters
> >       3 (2013-08-11 05:25:39) LOG Calling filter:
> > org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter
> >       3 (2013-08-11 05:25:39)
> > TIMER_START{org.apache.sling.servlets.get.DefaultGetServlet#0}
> >       3 (2013-08-11 05:25:39)
> > TIMER_END{0,org.apache.sling.servlets.get.DefaultGetServlet#0}
> >       3 (2013-08-11 05:25:39) TIMER_START{handleError:status=404}
> >       4 (2013-08-11 05:25:39) TIMER_END{1,handleError:status=404} Using
> > handler
> >
> org.apache.sling.servlets.resolver.internal.defaults.DefaultErrorHandlerServlet
> >       5 (2013-08-11 05:25:39) TIMER_END{5,Request Processing} Dumping
> > SlingRequestProgressTracker Entries
> > </pre>
> > <hr>
> > <address>ApacheSling/2.2 (jetty/6.1.x, OpenJDK 64-Bit Server VM 1.6.0_27,
> > Linux 3.0.0-12-generic amd64)</address>
> > </body>
> > </html>
> > ) expected:<200> but was:<404>
> > at junit.framework.Assert.fail(Assert.java:47)
> > at junit.framework.Assert.failNotEquals(Assert.java:277)
> > at junit.framework.Assert.assertEquals(Assert.java:64)
> > at junit.framework.Assert.assertEquals(Assert.java:195)
> > at
> >
> org.apache.sling.commons.testing.integration.HttpTestBase.getContent(HttpTestBase.java:380)
> > at
> >
> org.apache.sling.commons.testing.integration.HttpTestBase.getContent(HttpTestBase.java:355)
> > at
> >
> org.apache.sling.commons.testing.integration.HttpTestBase.getContent(HttpTestBase.java:347)
> > at
> >
> org.apache.sling.commons.testing.integration.HttpTestBase.getContent(HttpTestBase.java:342)
> > at
> >
> org.apache.sling.launchpad.webapp.integrationtest.resourceprovider.CassandraResourceProviderTest.assertStrings(CassandraResourceProviderTest.java:27)
> > at
> >
> org.apache.sling.launchpad.webapp.integrationtest.resourceprovider.CassandraResourceProviderTest.testMovieResource(CassandraResourceProviderTest.java:64)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > at java.lang.reflect.Method.invoke(Method.java:597)
> > at junit.framework.TestCase.runTest(TestCase.java:168)
> > at junit.framework.TestCase.runBare(TestCase.java:134)
> > at junit.framework.TestResult$1.protect(TestResult.java:110)
> > at junit.framework.TestResult.runProtected(TestResult.java:128)
> > at junit.framework.TestResult.run(TestResult.java:113)
> > at junit.framework.TestCase.run(TestCase.java:124)
> > at junit.framework.TestSuite.runTest(TestSuite.java:232)
> > at junit.framework.TestSuite.run(TestSuite.java:227)
> > at
> >
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
> > at
> >
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
> > at
> >
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
> > at
> >
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > at java.lang.reflect.Method.invoke(Method.java:597)
> > at
> >
> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
> > at
> >
> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
> > at
> >
> org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
> > at
> >
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
> > at
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
> >
> >
> > Results :
> >
> > Failed tests:
> >
> testMovieResource(org.apache.sling.launchpad.webapp.integrationtest.resourceprovider.CassandraResourceProviderTest):
> > Expected status 200 for
> > http://localhost:8080/content/cassandra/movies/foo(content=<!DOCTYPE
> > HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">(..)
> >
> > Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
> >
> > [INFO]
> > ------------------------------------------------------------------------
> > [INFO] BUILD FAILURE
> > [
> >
> >
> >
> >>
> >> -Bertrand
> >>
> >
> >
> >
> > --
> > Thanks
> > /Dishara
>



-- 
Thanks
/Dishara

Reply via email to