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 {<elapsed > > msec>,<timer name>} <optional message> > > 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
