jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From freak182 <eman.noll...@gmail.com>
Subject Re: UUID
Date Wed, 16 Sep 2009 07:19:53 GMT

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.


Mime
View raw message