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
>>
> 

Reply via email to