You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2011/09/01 13:39:58 UTC

svn commit: r1164023 - in /sling/trunk/launchpad/test-services: ./ src/main/java/org/apache/sling/launchpad/testservices/handlers/

Author: fmeschbe
Date: Thu Sep  1 11:39:58 2011
New Revision: 1164023

URL: http://svn.apache.org/viewvc?rev=1164023&view=rev
Log:
SLING-2185 Test Services to support IOHandler and PropertyHandler services to extend the Jackrabbit WebDAV functionality (thanks Timothee Maret for the patch)

Added:
    sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/
    sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/AbstractHandler.java   (with props)
    sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler1.java   (with props)
    sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler2.java   (with props)
    sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler3.java   (with props)
Modified:
    sling/trunk/launchpad/test-services/pom.xml

Modified: sling/trunk/launchpad/test-services/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/test-services/pom.xml?rev=1164023&r1=1164022&r2=1164023&view=diff
==============================================================================
--- sling/trunk/launchpad/test-services/pom.xml (original)
+++ sling/trunk/launchpad/test-services/pom.xml Thu Sep  1 11:39:58 2011
@@ -78,6 +78,18 @@
     </build>
     <dependencies>
         <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-jcr-server</artifactId>
+            <version>2.2.8</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-webdav</artifactId>
+            <version>2.2.8</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr.annotations</artifactId>
             <scope>provided</scope>

Added: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/AbstractHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/AbstractHandler.java?rev=1164023&view=auto
==============================================================================
--- sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/AbstractHandler.java (added)
+++ sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/AbstractHandler.java Thu Sep  1 11:39:58 2011
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.launchpad.testservices.handlers;
+
+import org.apache.jackrabbit.server.io.ExportContext;
+import org.apache.jackrabbit.server.io.IOManager;
+import org.apache.jackrabbit.server.io.ImportContext;
+import org.apache.jackrabbit.server.io.PropertyExportContext;
+import org.apache.jackrabbit.server.io.PropertyImportContext;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.property.PropEntry;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * This handler can export only if the path given in the context contains the handler name.
+ */
+public abstract class AbstractHandler implements
+        org.apache.jackrabbit.server.io.IOHandler,
+        org.apache.jackrabbit.server.io.PropertyHandler {
+
+    private static final String HANDLER_IDENTIFIER = "handler-identifier";
+
+    private IOManager ioManager ;
+
+    // IOHandler
+
+    public IOManager getIOManager() {
+        return ioManager;
+    }
+
+    public void setIOManager(IOManager ioManager) {
+        this.ioManager = ioManager;
+    }
+
+    public String getName() {
+        return getClass().getName();
+    }
+
+    public boolean canImport(ImportContext context, DavResource davResource) {
+        return canImport(context, davResource.isCollection());
+    }
+
+    public boolean canImport(ImportContext context, boolean b) {
+        return false;
+    }
+
+    public boolean importContent(ImportContext context, DavResource davResource) throws IOException {
+        return importContent(context, davResource.isCollection());
+    }
+
+    public boolean importContent(ImportContext context, boolean b) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean canExport(ExportContext context, boolean b) {
+        try {
+            final Node node = (Node) context.getExportRoot();
+            return matches(node.getPath());
+        } catch (RepositoryException e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+
+    public boolean canExport(ExportContext context, DavResource davResource) {
+        return canExport(context, davResource.isCollection());
+    }
+
+    public boolean exportContent(ExportContext context, DavResource davResource) throws IOException {
+        return exportContent(context, davResource.isCollection());
+    }
+
+    public boolean exportContent(ExportContext context, boolean b) throws IOException {
+        context.setProperty(HANDLER_IDENTIFIER, getIdentifier());
+        return true;
+    }
+
+    // PropertyHandler
+
+    public boolean canExport(PropertyExportContext context, boolean b) {
+        try {
+            final Node node = (Node) context.getExportRoot();
+            return matches(node.getPath());
+        } catch (RepositoryException e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+
+    public boolean exportProperties(PropertyExportContext context, boolean b) throws RepositoryException {
+        context.setProperty(HANDLER_IDENTIFIER, getIdentifier());
+        return true;
+    }
+
+    public boolean canImport(PropertyImportContext context, boolean b) {
+        return false;
+    }
+
+    public Map<? extends PropEntry, ?> importProperties(PropertyImportContext context, boolean b) throws RepositoryException {
+        throw new UnsupportedOperationException();
+    }
+
+    //
+
+    public String getIdentifier() {
+        return getHandlerName() + "-";
+    }
+
+    public boolean matches(String path) {
+        return path != null && path.contains(getHandlerName());
+    }
+
+    //
+
+    public abstract String getHandlerName() ;
+
+}
\ No newline at end of file

Propchange: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/AbstractHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/AbstractHandler.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev Url

Added: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler1.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler1.java?rev=1164023&view=auto
==============================================================================
--- sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler1.java (added)
+++ sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler1.java Thu Sep  1 11:39:58 2011
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.launchpad.testservices.handlers;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.osgi.framework.Constants;
+
+@Component(metatype = true)
+@Property(name = Constants.SERVICE_RANKING, intValue = 3, propertyPrivate = false)
+@Service(value = {
+        org.apache.jackrabbit.server.io.IOHandler.class,
+        org.apache.jackrabbit.server.io.PropertyHandler.class})
+public class TestHandler1 extends AbstractHandler {
+
+    @Override
+    public String getHandlerName(){
+        return "test-io-handler-1";
+    }
+
+}

Propchange: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler1.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler1.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev Url

Added: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler2.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler2.java?rev=1164023&view=auto
==============================================================================
--- sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler2.java (added)
+++ sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler2.java Thu Sep  1 11:39:58 2011
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.launchpad.testservices.handlers;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.osgi.framework.Constants;
+
+@Component(metatype = true)
+@Property(name = Constants.SERVICE_RANKING, intValue = 2, propertyPrivate = false)
+@Service(value = {
+        org.apache.jackrabbit.server.io.IOHandler.class,
+        org.apache.jackrabbit.server.io.PropertyHandler.class})
+public class TestHandler2 extends AbstractHandler {
+
+    @Override
+    public String getHandlerName(){
+        return "test-io-handler-11";
+    }
+}

Propchange: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler2.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler2.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev Url

Added: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler3.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler3.java?rev=1164023&view=auto
==============================================================================
--- sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler3.java (added)
+++ sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler3.java Thu Sep  1 11:39:58 2011
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.launchpad.testservices.handlers;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.osgi.framework.Constants;
+
+@Component(metatype = true)
+@Property(name = Constants.SERVICE_RANKING, intValue = 1, propertyPrivate = false)
+@Service(value = {
+        org.apache.jackrabbit.server.io.IOHandler.class,
+        org.apache.jackrabbit.server.io.PropertyHandler.class})
+public class TestHandler3 extends AbstractHandler {
+
+    @Override
+    public String getHandlerName(){
+        return "test-io-handler-111";
+    }
+}

Propchange: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler3.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/handlers/TestHandler3.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev Url