Hi, If you are using the @scr.* tags you have to use the maven-scr-plugin to generate the SCR descriptor file. Otherwise the component will not be known and registered....
This is what I interpret from the log actually. Regards Felix On 29.01.2010 15:08, Ben Short wrote: > Seems to deploy fine.. > > 29.01.2010 14:06:52.747 *INFO* [FelixDispatchQueue] > com.daisytechnologies.spike.website-spike BundleEvent STOPPED > 29.01.2010 14:06:52.762 *INFO* [FelixDispatchQueue] > com.daisytechnologies.spike.website-spike BundleEvent UNRESOLVED > 29.01.2010 14:06:52.762 *INFO* [FelixDispatchQueue] > com.daisytechnologies.spike.website-spike BundleEvent UPDATED > 29.01.2010 14:06:52.762 *INFO* [FelixDispatchQueue] > org.apache.felix.framework FrameworkEvent PACKAGES REFRESHED > 29.01.2010 14:06:52.762 *INFO* [FelixDispatchQueue] > com.daisytechnologies.spike.website-spike BundleEvent RESOLVED > 29.01.2010 14:06:52.856 *INFO* [Background Update > com.daisytechnologies.spike.website-spike (52)] > org.apache.sling.jcr.contentloader.internal.ContentLoaderService createFile: > Cannot find content type > for GET.jsp, using application/octet-stream > 29.01.2010 14:06:52.856 *INFO* [Background Update > com.daisytechnologies.spike.website-spike (52)] > org.apache.sling.jcr.contentloader.internal.ContentLoaderService createFile: > Cannot find content type > for xml.jsp, using application/octet-stream > 29.01.2010 14:06:52.856 *INFO* [Background Update > com.daisytechnologies.spike.website-spike (52)] > org.apache.sling.jcr.contentloader.internal.ContentLoaderService createFile: > Cannot find content type > for GET.jsp, using application/octet-stream > 29.01.2010 14:06:53.012 *INFO* [FelixDispatchQueue] > com.daisytechnologies.spike.website-spike BundleEvent STARTED > > And the logging when I perform the post > > 29.01.2010 14:08:16.419 *INFO* [127.0.0.1 [1264774096419] POST > /mollycupcakes/baskets HTTP/1.1] logs/request.log 29/Jan/2010:14:08:16 +0000 > [102] -> POST /mollycupcakes/baskets HTTP/1.1 > 29.01.2010 14:08:16.434 *INFO* [127.0.0.1 [1264774096419] POST > /mollycupcakes/baskets HTTP/1.1] logs/request.log 29/Jan/2010:14:08:16 +0000 > [102] <- 500 text/html 15ms > 29.01.2010 14:08:16.434 *INFO* [127.0.0.1 [1264774096419] POST > /mollycupcakes/baskets HTTP/1.1] logs/access.log 127.0.0.1 - anonymous > 29/Jan/2010:14:08:16 +0000 "POST /mollycupcakes/baskets HTTP/1.1" > 500 1992 "-" "curl/7.19.5 (i586-pc-mingw32msvc) libcurl/7.19.5 > OpenSSL/0.9.8j zlib/1.2.3" > > 2010/1/29 Vidar Ramdal <[email protected]> > >> On Fri, Jan 29, 2010 at 2:51 PM, Ben Short <[email protected]> wrote: >>> Thank you for the response. >>> >>> I have the following rough class. >>> >>> package com.daisytechnologies.basket; >>> >>> import org.apache.sling.api.SlingHttpServletRequest; >>> import org.apache.sling.api.servlets.HtmlResponse; >>> import org.apache.sling.servlets.post.SlingPostOperation; >>> import org.apache.sling.servlets.post.SlingPostProcessor; >>> >>> import javax.jcr.Node; >>> import javax.jcr.RepositoryException; >>> import javax.jcr.Session; >>> import javax.jcr.SimpleCredentials; >>> >>> /** >>> * >>> * @scr.component metatype="no" immediate="true" >>> * @scr.service >>> interface="org.apache.sling.servlets.post.SlingPostOperation" >>> * @scr.property name="sling.post.operation" value="createBasket" >>> */ >>> public class CreateBasketPostOperation implements SlingPostOperation { >>> public void run(SlingHttpServletRequest request, HtmlResponse >>> htmlResponse, SlingPostProcessor[] slingPostProcessors) { >>> >>> Session session = >>> request.getResourceResolver().adaptTo(Session.class); >>> >>> try { >>> Session superSession = session.getRepository().login(new >>> SimpleCredentials("admin", "admin".toCharArray())); >>> >>> final String path = request.getResource().getPath(); >>> >>> Node basketsNode = (Node)superSession.getItem(path); >>> >>> Node basketNode = >>> basketsNode.addNode(Long.toString(System.currentTimeMillis())); >>> >>> htmlResponse.onCreated(basketNode.getPath()); >>> >>> superSession.save(); >>> superSession.logout(); >>> } catch (RepositoryException e) { >>> e.printStackTrace(); >>> } >>> >>> } >>> } >>> >>> And the following in my pom >>> >>> <plugin> >>> <groupId>org.apache.felix</groupId> >>> <artifactId>maven-bundle-plugin</artifactId> >>> <extensions>true</extensions> >>> <configuration> >>> <instructions> >>> >>> >> >> <Sling-Initial-Content>initial-content;overwrite:=true;uninstall=true</Sling-Initial-Content> >>> <Private-Package>> >>> com.daisytechnologies.basket >>> </Private-Package>> >>> </instructions> >>> </configuration> >>> </plugin> >>> >>> the bundle deploys ok but when I execute the following command >>> >>> curl -F":operation=addBasket" >> http://127.0.0.1:8080/mollycupcakes/baskets >>> >>> I get the following error.. >>> >>> Status >>> 500 >>> Message >>> Invalid operation specified for POST request >>> Location <http://127.0.0.1:8080/mollycupcakes/baskets>Parent >>> Location<http://127.0.0.1:8080/mollycupcakes/baskets> >>> Path >>> Refererhttp://127.0.0.1:8080/mollycupcakesChangeLog >>> >>> >>> any ideas where im going wrong? >> >> Check the Felix web console >> (http://localhost:8080/system/console/bundles) and see that your >> bundle is listed there, and is "active". If it is not, click to expand >> it and check if any of the imports are listed in red. >> You can also tail your sling.log, and see what is output when you >> start your bundle. >> >>> Also how do i inject the SlingRepository into the post operation? >> >> You just declare it with a /** @scr.reference */ annotation: >> >> /** @scr.reference */ >> private SlingRepository repository; >> >> -- >> Vidar S. Ramdal <[email protected]> - http://www.idium.no >> Sommerrogata 13-15, N-0255 Oslo, Norway >> + 47 22 00 84 00 / +47 21 531941, ext 2070 >> >
