X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjcr%2FJcrResourceAdapter.java;h=fd0786f70ed80f0e7c3ed88db6657c8b5dbbb59f;hb=1d5afdce3e91054f07ddd3c98309c363b4cf1d46;hp=583995057ad614d3160c8344739aca0fe4c8d1e1;hpb=7fe4a16dad045373bb014724733c1bbb175d44b5;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrResourceAdapter.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrResourceAdapter.java index 583995057..fd0786f70 100644 --- a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrResourceAdapter.java +++ b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrResourceAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Mathieu Baudier + * Copyright (C) 2007-2012 Mathieu Baudier * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,19 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.argeo.jcr; -import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Calendar; import java.util.List; +import javax.jcr.Binary; import javax.jcr.Node; import javax.jcr.Property; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.jcr.nodetype.NodeType; import javax.jcr.version.Version; import javax.jcr.version.VersionHistory; import javax.jcr.version.VersionIterator; @@ -33,7 +33,6 @@ import javax.jcr.version.VersionIterator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.ArgeoException; -import org.springframework.core.io.Resource; /** * Bridge Spring resources and JCR folder / files semantics (nt:folder / @@ -57,15 +56,8 @@ public class JcrResourceAdapter { } public void mkdirs(String path) { - JcrUtils.mkdirs(session(), path, "nt:folder", "nt:folder", versioning); - } - - public void create(String path, Resource file, String mimeType) { - try { - create(path, file.getInputStream(), mimeType); - } catch (IOException e) { - throw new ArgeoException("Cannot read " + file, e); - } + JcrUtils.mkdirs(session(), path, NodeType.NT_FOLDER, + NodeType.NT_FOLDER, versioning); } public void create(String path, InputStream in, String mimeType) { @@ -86,14 +78,17 @@ public class JcrResourceAdapter { Node folderNode = (Node) session().getItem(parentPath); Node fileNode = folderNode.addNode(fileName, "nt:file"); - Node contentNode = fileNode.addNode("jcr:content", "nt:resource"); + Node contentNode = fileNode.addNode(Property.JCR_CONTENT, + "nt:resource"); if (mimeType != null) - contentNode.setProperty("jcr:mimeType", mimeType); - contentNode.setProperty("jcr:encoding", defaultEncoding); - contentNode.setProperty("jcr:data", in); + contentNode.setProperty(Property.JCR_MIMETYPE, mimeType); + contentNode.setProperty(Property.JCR_ENCODING, defaultEncoding); + Binary binary = session().getValueFactory().createBinary(in); + contentNode.setProperty(Property.JCR_DATA, binary); + JcrUtils.closeQuietly(binary); Calendar lastModified = Calendar.getInstance(); // lastModified.setTimeInMillis(file.lastModified()); - contentNode.setProperty("jcr:lastModified", lastModified); + contentNode.setProperty(Property.JCR_LAST_MODIFIED, lastModified); // resNode.addMixin("mix:referenceable"); if (versioning) @@ -102,7 +97,8 @@ public class JcrResourceAdapter { session().save(); if (versioning) - fileNode.checkin(); + session().getWorkspace().getVersionManager() + .checkin(fileNode.getPath()); if (log.isDebugEnabled()) log.debug("Created " + path); @@ -112,14 +108,6 @@ public class JcrResourceAdapter { } - public void update(String path, Resource file) { - try { - update(path, file.getInputStream()); - } catch (IOException e) { - throw new ArgeoException("Cannot read " + file, e); - } - } - public void update(String path, InputStream in) { try { @@ -134,17 +122,21 @@ public class JcrResourceAdapter { } Node fileNode = (Node) session().getItem(path); - Node contentNode = fileNode.getNode("jcr:content"); + Node contentNode = fileNode.getNode(Property.JCR_CONTENT); if (versioning) - fileNode.checkout(); - contentNode.setProperty("jcr:data", in); + session().getWorkspace().getVersionManager() + .checkout(fileNode.getPath()); + Binary binary = session().getValueFactory().createBinary(in); + contentNode.setProperty(Property.JCR_DATA, binary); + JcrUtils.closeQuietly(binary); Calendar lastModified = Calendar.getInstance(); // lastModified.setTimeInMillis(file.lastModified()); - contentNode.setProperty("jcr:lastModified", lastModified); + contentNode.setProperty(Property.JCR_LAST_MODIFIED, lastModified); session().save(); if (versioning) - fileNode.checkin(); + session().getWorkspace().getVersionManager() + .checkin(fileNode.getPath()); if (log.isDebugEnabled()) log.debug("Updated " + path); @@ -160,7 +152,8 @@ public class JcrResourceAdapter { try { List versions = new ArrayList(); Node fileNode = (Node) session().getItem(path); - VersionHistory history = fileNode.getVersionHistory(); + VersionHistory history = session().getWorkspace() + .getVersionManager().getVersionHistory(fileNode.getPath()); for (VersionIterator it = history.getAllVersions(); it.hasNext();) { Version version = (Version) it.next(); versions.add(version.getCreated()); @@ -177,9 +170,10 @@ public class JcrResourceAdapter { public InputStream retrieve(String path) { try { - Node node = (Node) session().getItem(path + "/jcr:content"); - Property property = node.getProperty("jcr:data"); - return property.getStream(); + Node node = (Node) session().getItem( + path + "/" + Property.JCR_CONTENT); + Property property = node.getProperty(Property.JCR_DATA); + return property.getBinary().getStream(); } catch (Exception e) { throw new ArgeoException("Cannot retrieve " + path, e); } @@ -191,7 +185,8 @@ public class JcrResourceAdapter { try { Node fileNode = (Node) session().getItem(path); - VersionHistory history = fileNode.getVersionHistory(); + VersionHistory history = session().getWorkspace() + .getVersionManager().getVersionHistory(fileNode.getPath()); int count = 0; Version version = null; for (VersionIterator it = history.getAllVersions(); it.hasNext();) { @@ -217,8 +212,8 @@ public class JcrResourceAdapter { protected InputStream fromVersion(Version version) throws RepositoryException { Node frozenNode = version.getNode("jcr:frozenNode"); - InputStream in = frozenNode.getNode("jcr:content") - .getProperty("jcr:data").getStream(); + InputStream in = frozenNode.getNode(Property.JCR_CONTENT) + .getProperty(Property.JCR_DATA).getBinary().getStream(); return in; }