X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=jcr%2Forg.argeo.cms.jcr%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjcr%2Facr%2FJcrContent.java;h=116e45c7bf09fc0d546aeadc216a7239bcab4b9b;hb=da9d144b6b241e1526a3bd255dff905a7969a5bc;hp=dab41979498957a91a3906eb0402acfe4c85b57d;hpb=279880f110272df643cee670aa976ae5ab9ec396;p=lgpl%2Fargeo-commons.git
diff --git a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java
index dab419794..116e45c7b 100644
--- a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java
+++ b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java
@@ -27,11 +27,12 @@ import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import org.argeo.api.acr.Content;
-import org.argeo.api.acr.ContentUtils;
import org.argeo.api.acr.NamespaceUtils;
-import org.argeo.api.acr.spi.AbstractContent;
+import org.argeo.api.acr.spi.ContentProvider;
import org.argeo.api.acr.spi.ProvidedSession;
import org.argeo.api.cms.CmsConstants;
+import org.argeo.cms.acr.AbstractContent;
+import org.argeo.cms.acr.ContentUtils;
import org.argeo.jcr.Jcr;
import org.argeo.jcr.JcrException;
import org.argeo.jcr.JcrUtils;
@@ -179,6 +180,8 @@ public class JcrContent extends AbstractContent {
@Override
public Content getParent() {
+ if (Jcr.isRoot(getJcrNode())) // root
+ return null;
return new JcrContent(session, provider, jcrWorkspace, Jcr.getParentPath(getJcrNode()));
}
@@ -219,9 +222,18 @@ public class JcrContent extends AbstractContent {
}
+ boolean exists() {
+ try {
+ return provider.getJcrSession(session, jcrWorkspace).itemExists(jcrPath);
+ } catch (RepositoryException e) {
+ throw new JcrException("Cannot check whether " + jcrPath + " exists", e);
+ }
+ }
+
/*
* ADAPTERS
*/
+ @SuppressWarnings("unchecked")
public A adapt(Class clss) {
if (Source.class.isAssignableFrom(clss)) {
// try {
@@ -245,6 +257,7 @@ public class JcrContent extends AbstractContent {
return super.adapt(clss);
}
+ @SuppressWarnings("unchecked")
@Override
public C open(Class clss) throws IOException, IllegalArgumentException {
if (InputStream.class.isAssignableFrom(clss)) {
@@ -260,31 +273,25 @@ public class JcrContent extends AbstractContent {
return super.open(clss);
}
-// class JcrKeyIterator implements Iterator {
-// private final PropertyIterator propertyIterator;
-//
-// protected JcrKeyIterator(PropertyIterator propertyIterator) {
-// this.propertyIterator = propertyIterator;
-// }
-//
-// @Override
-// public boolean hasNext() {
-// return propertyIterator.hasNext();
-// }
-//
-// @Override
-// public QName next() {
-// Property property = null;
-// try {
-// property = propertyIterator.nextProperty();
-// // TODO map standard property names
-// return NamespaceUtils.parsePrefixedName(provider, property.getName());
-// } catch (RepositoryException e) {
-// throw new JcrException("Cannot retrieve property " + property, null);
-// }
-// }
-//
-// }
+ @Override
+ public ProvidedSession getSession() {
+ return session;
+ }
+
+ @Override
+ public ContentProvider getProvider() {
+ return provider;
+ }
+
+ @Override
+ public String getSessionLocalId() {
+ try {
+ return getJcrNode().getIdentifier();
+ } catch (RepositoryException e) {
+ throw new JcrException("Cannot get identifier for " + getJcrNode(), e);
+ }
+ }
+
/*
* STATIC UTLITIES
*/