Hello,

I have problem retreiving the uuid? 
here is the scenario:

when i save the file, here is the code:

.................................

Node file = folder.addNode(name, "nt:file");
            Node fileContent = file.addNode("jcr:content", "nt:resource");
            fileContent.addMixin(JcrConstants.MIX_REFERENCEABLE);

            session.save();
            uuid = fileContent.getUUID();

..this save fine and some metadata save in DB also including the uuid.

Now i want to delete the file:

Node nodeToRemove = session.getRootNode().getNode(path.substring(1));
 String uuid = nodeToRemove.getUUID(); ---> error here
                        if (nodeToRemove != null)
                        {
                            nodeToRemove.remove();
                            session.save();
                            
                          // 
jcrFileStorageDao.delete(jcrFileStorageDao.loadByUUID(uuid));
                        }

javax.jcr.UnsupportedRepositoryOperationException
        at org.apache.jackrabbit.core.NodeImpl.getUUID(NodeImpl.java:3040)

how can i resolve this?

thanks a lot.
cheers.


Christoph Kiehl-3 wrote:
> 
> Michal Hybler wrote:
> 
>> I have this method 
>> 
>>                      ws = session.getWorkspace();
>>                      manager = ws.getQueryManager();
>>                      query = manager.createQuery("select * from 
>> nt:unstructured where
>> jcr:uuid
>> = '"+id+"'",Query.SQL);
>>                      QueryResult result = query.execute();
>>                      NodeIterator it = result.getNodes();
>>                      return it.nextNode(); 
>> with Id which I remembered when I insert file into jackrabbit.
>> 
>> after that I run this code
>> 
>> HashMap<String,String> properties = new HashMap<String,String>();
>>              try {
>>                      PropertyIterator iter = node.getProperties();
>>                      while(iter.hasNext()){
>>                              Property prop = iter.nextProperty();
>>                              if (!prop.getDefinition().isMultiple()) {
>>                                      properties.put(prop.getName(), 
>> prop.getValue().getString());
>>                              }
>>                              
>>                      }
>>                      if (getResNode(node) != null) {
>>                              Node resNode = getResNode(node);
>>                              iter = resNode.getProperties();
>>                              while(iter.hasNext()){
>>                                      Property prop = iter.nextProperty();
>>                                      if (!prop.getDefinition().isMultiple()) 
>> {
>>                                              properties.put(prop.getName(), 
>> prop.getValue().getString());
>>                                      }
>>                              }
>>                      }
> 
> I don't know what getResNode(node) does, but I suppose it loads some other
> node 
> which is different to the one retrieved by the query. If you remove this 
> if-block the uuids should be equal as far as I can see.
> And as Brian already wrote: you should be better off using 
> session.getNodeByUUID() instead of using a query. This method performs
> much 
> faster than a query.
> 
> Cheers,
> Christoph
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/UUID-tp9616867p25467222.html
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.

Reply via email to