Author: cziegeler
Date: Thu Apr 13 14:42:02 2017
New Revision: 1791262
URL: http://svn.apache.org/viewvc?rev=1791262&view=rev
Log:
SLING-6723 : Make dependency to javax.jcr, jcr.contentloader and jcr.api
optional
Modified:
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JCRSupport.java
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JCRSupportImpl.java
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/AbstractCreateOperation.java
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ModifyOperation.java
Modified:
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JCRSupport.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JCRSupport.java?rev=1791262&r1=1791261&r2=1791262&view=diff
==============================================================================
---
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JCRSupport.java
(original)
+++
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JCRSupport.java
Thu Apr 13 14:42:02 2017
@@ -187,4 +187,13 @@ public class JCRSupport {
}
return null;
}
+
+ public void setPrimaryNodeType(final Object node, final String type)
+ throws PersistenceException {
+ if ( node != null && supportImpl != null ) {
+ ((JCRSupportImpl)supportImpl).setPrimaryNodeType(node, type);
+ } else {
+ throw new PersistenceException("Node type should be set but JCR
support is not available");
+ }
+ }
}
Modified:
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JCRSupportImpl.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JCRSupportImpl.java?rev=1791262&r1=1791261&r2=1791262&view=diff
==============================================================================
---
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JCRSupportImpl.java
(original)
+++
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/JCRSupportImpl.java
Thu Apr 13 14:42:02 2017
@@ -394,4 +394,13 @@ public class JCRSupportImpl {
public Object getNode(final Resource rsrc) {
return rsrc.adaptTo(Node.class);
}
+
+ public void setPrimaryNodeType(final Object node, final String type)
+ throws PersistenceException {
+ try {
+ ((Node)node).setPrimaryType(type);
+ } catch ( final RepositoryException re) {
+ throw new PersistenceException(re.getMessage(), re);
+ }
+ }
}
Modified:
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/AbstractCreateOperation.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/AbstractCreateOperation.java?rev=1791262&r1=1791261&r2=1791262&view=diff
==============================================================================
---
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/AbstractCreateOperation.java
(original)
+++
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/AbstractCreateOperation.java
Thu Apr 13 14:42:02 2017
@@ -25,10 +25,6 @@ import java.util.Map;
import java.util.Random;
import java.util.regex.Pattern;
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-import javax.servlet.ServletException;
-
import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.request.RequestParameter;
@@ -141,7 +137,7 @@ abstract class AbstractCreateOperation e
final PostResponse response,
final List<Modification> changes,
final VersioningConfiguration versioningConfiguration)
- throws PersistenceException, RepositoryException {
+ throws PersistenceException {
final String path = response.getPath();
final Resource resource = resolver.getResource(path);
@@ -161,18 +157,18 @@ abstract class AbstractCreateOperation e
final Map<String, RequestProperty> reqProperties,
final List<Modification> changes,
final VersioningConfiguration versioningConfiguration)
- throws PersistenceException, RepositoryException {
+ throws PersistenceException {
final String nodeType = getPrimaryType(reqProperties, path);
if (nodeType != null) {
final Resource rsrc = resolver.getResource(path);
final ModifiableValueMap mvm =
rsrc.adaptTo(ModifiableValueMap.class);
if ( mvm != null ) {
- final Node node = rsrc.adaptTo(Node.class);
+ final Object node = this.jcrSsupport.getNode(rsrc);
final boolean wasVersionable = (node == null ? false :
this.jcrSsupport.isVersionable(rsrc));
if ( node != null ) {
this.jcrSsupport.checkoutIfNecessary(rsrc, changes,
versioningConfiguration);
- node.setPrimaryType(nodeType);
+ this.jcrSsupport.setPrimaryNodeType(node, nodeType);
} else {
mvm.put(JcrConstants.JCR_PRIMARYTYPE, nodeType);
}
@@ -220,9 +216,6 @@ abstract class AbstractCreateOperation e
/**
* Collects the properties that form the content to be written back to the
* resource tree.
- *
- * @throws RepositoryException if a repository error occurs
- * @throws ServletException if an internal error occurs
*/
protected Map<String, RequestProperty> collectContent(
final SlingHttpServletRequest request,
@@ -530,7 +523,7 @@ abstract class AbstractCreateOperation e
final Map<String, RequestProperty> reqProperties,
final List<Modification> changes,
final VersioningConfiguration versioningConfiguration)
- throws PersistenceException, RepositoryException {
+ throws PersistenceException {
if (log.isDebugEnabled()) {
log.debug("Deep-creating resource '{}'", path);
}
@@ -642,7 +635,7 @@ abstract class AbstractCreateOperation e
protected String generateName(SlingHttpServletRequest request, String
basePath)
- throws RepositoryException {
+ throws PersistenceException {
// SLING-1091: If a :name parameter is supplied, the (first)
value of this parameter is used unmodified as the name
// for the new node. If the name is illegally formed with
respect to JCR name requirements, an exception will be
@@ -658,7 +651,7 @@ abstract class AbstractCreateOperation e
// if the resulting path already exists then report an
error
if (request.getResourceResolver().getResource(basePath) !=
null) {
- throw new RepositoryException(
+ throw new PersistenceException(
"Collision in node names for path=" +
basePath);
}
@@ -692,7 +685,7 @@ abstract class AbstractCreateOperation e
}
/** Generate a unique path in case the node name generator didn't */
- private String ensureUniquePath(SlingHttpServletRequest request, String
basePath) throws RepositoryException {
+ private String ensureUniquePath(SlingHttpServletRequest request, String
basePath) throws PersistenceException {
// if resulting path exists, add a suffix until it's not the
case
// anymore
final ResourceResolver resolver = request.getResourceResolver();
@@ -713,7 +706,7 @@ abstract class AbstractCreateOperation e
// Give up after MAX_TRIES
if (resolver.getResource(basePath) != null ) {
- throw new RepositoryException(
+ throw new PersistenceException(
"Collision in generated node names under " + basePath +
", generated path " + basePath + " already exists");
}
}
Modified:
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ModifyOperation.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ModifyOperation.java?rev=1791262&r1=1791261&r2=1791262&view=diff
==============================================================================
---
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ModifyOperation.java
(original)
+++
sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ModifyOperation.java
Thu Apr 13 14:42:02 2017
@@ -164,7 +164,7 @@ public class ModifyOperation extends Abs
if (doGenerateName) {
try {
path = generateName(request, path);
- } catch (RepositoryException re) {
+ } catch (PersistenceException re) {
throw new SlingException("Failed to generate name", re);
}
}