Summary:  

Using java to post a multipart form with values of "jcr:primaryType" set to 
"nt:unstructured" fails, curl to same address succeeds. 



Details:


I'm using httpcomponent/httpclient  to send submit a form to sling. 

To do this I'm creating a multi-part form, with the fields being sent using 
code like this:

        
public String insertWithAuth(String userId, String password,String url, 
List<BasicNameValuePair> slingData) {
        String retValue = null;
        HttpPost post = new HttpPost(url);
        BasicNameValuePair[] pairs = new BasicNameValuePair[slingData.size()];
        pairs = slingData.toArray(pairs);
        try {
            MultipartEntity anEntity = new MultipartEntity( 
HttpMultipartMode.BROWSER_COMPATIBLE);
            for(BasicNameValuePair entry : pairs) 
            {
                anEntity.addPart(entry.getName(), new 
StringBody(entry.getName(),Charset.forName("UTF-8")));
            }
            post.setEntity(anEntity);
            HttpResponse theResponse = client.execute(targetHost, post, 
localContext);


I've left out the declarations for targetHost and localContent I don't think 
they are significant. 

The List of BasicNameValuePairs is created based on the contents of the entity 
that's being posted.

If I don't do anything but set my own values, based on the object I'm trying to 
insert everything works fine. 

The document ends up with this property:

"jcr:primaryType":"sling:Folder"


However, when I try to set the jcr:primary value with the following code:

                key = "jcr:primaryType";
                value = "nt:unstructured";
                entry = new BasicNameValuePair(key,value);
                retValue.add(entry);
                
                return (retValue);

 I always get this error message:



Status  
500
Message 
javax.jcr.nodetype.NoSuchNodeTypeException: 
{http://www.jcp.org/jcr/1.0}primaryType


Using Curl to set that value works just fine:

curl -F"sling:resourceType=foo/bar" -F"jcr:primaryType=nt:unstructured" 
-F"userId=jsmith" 
http://admin:ad...@localhost:8080/sling/content/Documents/users/jsmith


{"sling:resourceType":"foo/bar","userId":"jsmith","jcr:primaryType":"nt:unstructured"}



Reply via email to