You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2013/03/01 17:18:55 UTC
svn commit: r1451631 - in /sling/trunk/bundles:
api/src/main/java/org/apache/sling/api/request/
engine/src/main/java/org/apache/sling/engine/impl/request/
Author: cziegeler
Date: Fri Mar 1 16:18:55 2013
New Revision: 1451631
URL: http://svn.apache.org/r1451631
Log:
SLING-2670 : Add support for suffix addressed resources
Modified:
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/request/RequestPathInfo.java
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/request/package-info.java
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestPathInfo.java
Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/request/RequestPathInfo.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/request/RequestPathInfo.java?rev=1451631&r1=1451630&r2=1451631&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/request/RequestPathInfo.java (original)
+++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/request/RequestPathInfo.java Fri Mar 1 16:18:55 2013
@@ -16,6 +16,8 @@
*/
package org.apache.sling.api.request;
+import org.apache.sling.api.resource.Resource;
+
/**
* Sling breaks the request URI into four parts: the path itself, optional
* dot-separated selectors and extension that follow it, and an optional path
@@ -201,4 +203,16 @@ public interface RequestPathInfo {
*/
String getSuffix();
+ /**
+ * Returns the resource addressed by the suffix or null if the request does
+ * not have a suffix or the suffix does not address an accessible resource.
+ * <p>
+ * The suffix is expected to be the absolute path to the resource suitable
+ * as an argument to the
+ * {@link org.apache.sling.api.resource.ResourceResolver#getResource(String)}
+ * method.
+ *
+ * @since 2.3 (Sling API 2.3.2)
+ */
+ Resource getSuffixResource();
}
Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/request/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/request/package-info.java?rev=1451631&r1=1451630&r2=1451631&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/request/package-info.java (original)
+++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/request/package-info.java Fri Mar 1 16:18:55 2013
@@ -17,7 +17,7 @@
* under the License.
*/
-@Version("2.2")
+@Version("2.3")
package org.apache.sling.api.request;
import aQute.bnd.annotation.Version;
Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestPathInfo.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestPathInfo.java?rev=1451631&r1=1451630&r2=1451631&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestPathInfo.java (original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestPathInfo.java Fri Mar 1 16:18:55 2013
@@ -43,6 +43,8 @@ public class SlingRequestPathInfo implem
private final String resourcePath;
+ private final Resource resource;
+
private final static String[] NO_SELECTORS = new String[0];
/** break requestPath as required by SlingRequestPathInfo */
@@ -53,7 +55,8 @@ public class SlingRequestPathInfo implem
throw new NullPointerException("resource");
}
- resourcePath = r.getResourceMetadata().getResolutionPath();
+ this.resource = r;
+ this.resourcePath = r.getResourceMetadata().getResolutionPath();
// the extra path in the request URI
String pathToParse = r.getResourceMetadata().getResolutionPathInfo();
@@ -95,8 +98,9 @@ public class SlingRequestPathInfo implem
: null;
}
- private SlingRequestPathInfo(String resourcePath, String selectorString,
- String extension, String suffix) {
+ private SlingRequestPathInfo(Resource resource, String resourcePath, String selectorString, String extension,
+ String suffix) {
+ this.resource = resource;
this.resourcePath = resourcePath;
this.selectorString = selectorString;
this.selectors = (selectorString != null)
@@ -108,9 +112,8 @@ public class SlingRequestPathInfo implem
public SlingRequestPathInfo merge(RequestPathInfo baseInfo) {
if (getExtension() == null) {
- return new SlingRequestPathInfo(getResourcePath(),
- baseInfo.getSelectorString(), baseInfo.getExtension(),
- baseInfo.getSuffix());
+ return new SlingRequestPathInfo(getResource(), getResourcePath(), baseInfo.getSelectorString(),
+ baseInfo.getExtension(), baseInfo.getSuffix());
}
return this;
@@ -155,8 +158,7 @@ public class SlingRequestPathInfo implem
}
if (needCreate) {
- return new SlingRequestPathInfo(getResourcePath(), selectors,
- getExtension(), suffix);
+ return new SlingRequestPathInfo(getResource(), getResourcePath(), selectors, getExtension(), suffix);
}
}
@@ -186,6 +188,18 @@ public class SlingRequestPathInfo implem
return suffix;
}
+ public Resource getSuffixResource() {
+ if (this.suffix != null) {
+ return getResource().getResourceResolver().getResource(this.suffix);
+ }
+
+ return null;
+ }
+
+ private Resource getResource() {
+ return resource;
+ }
+
public String getResourcePath() {
return resourcePath;
}