Fix issues with security dependencies
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 25 Nov 2009 13:42:49 +0000 (13:42 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 25 Nov 2009 13:42:49 +0000 (13:42 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@3160 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

18 files changed:
sandbox/runtime/org.argeo.sandbox.jackrabbit/src/main/java/webdav/WebDavTest.java
security/demo/pom.xml
security/runtime/org.argeo.security.core/pom.xml
server/dep/org.argeo.server.dep.jackrabbit.server/pom.xml
server/modules/org.argeo.server.jackrabbit.webapp/META-INF/MANIFEST.MF
server/modules/org.argeo.server.jackrabbit.webapp/WEB-INF/webdav-servlet.xml
server/runtime/org.argeo.server.ads/pom.xml
server/runtime/org.argeo.server.ads/src/main/java/org/argeo/server/ads/AdsContainer.java
server/runtime/org.argeo.server.core/pom.xml
server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/ArgeoServerException.java
server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/ServerAnswer.java
server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/AbstractMemoryDaoSupport.java
server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/AbstractTabularDaoSupport.java
server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/LightDaoPropertyEditor.java
server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/mvc/SerializingView.java
server/runtime/org.argeo.server.jackrabbit/pom.xml
server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/JackrabbitContainer.java
server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/SimpleWebDavServlet.java [new file with mode: 0644]

index cb8a97ad2456b0dfac1d29903b689648153f042a..5b938be0d4a1d772a538d59d956fe96a47e5217d 100644 (file)
@@ -12,9 +12,13 @@ import org.apache.commons.httpclient.auth.AuthScope;
 import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
 import org.apache.commons.httpclient.methods.RequestEntity;
 import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jackrabbit.webdav.client.methods.CheckoutMethod;
 import org.apache.jackrabbit.webdav.client.methods.PutMethod;
 
 public class WebDavTest {
+       private final static Log log = LogFactory.getLog(WebDavTest.class);
 
        /**
         * @param args
@@ -35,18 +39,22 @@ public class WebDavTest {
                        client.setHostConfiguration(hostConfig);
                        // return client;
 
+                       String baseUrl = "http://localhost:7070/org.argeo.server.jackrabbit.webapp/default/";
+
                        String fileName = "test.xml";
-                       PutMethod pm = new PutMethod(
-                                       "http://localhost:7070/org.argeo.server.jackrabbit.webapp/default/"
-                                                       + fileName);
-                       // String text = "this is the document content";
+
+                       // PUT
+                       PutMethod pm = new PutMethod(baseUrl + fileName);
                        RequestEntity requestEntity = new InputStreamRequestEntity(
                                        new FileInputStream(fileName));
-                       // pm.setRequestEntity(new StringRequestEntity(text, "text/plain",
-                       // null));
-                       // pm.setRequestBody(text);
                        pm.setRequestEntity(requestEntity);
                        client.executeMethod(pm);
+
+                       // GET
+                       CheckoutMethod gm = new CheckoutMethod(baseUrl + fileName);
+                       client.executeMethod(gm);
+                       String responseGet = gm.getResponseBodyAsString();
+                       log.debug("CHECKOUT: " + responseGet);
                } catch (Exception e) {
                        e.printStackTrace();
                }
index 67cb9c7dc37908a983e28200d145cfb721b18683..57a3b880815616b75950cb6dc8556fa0a38e252b 100644 (file)
@@ -42,6 +42,7 @@
                                                        ${basedir}/../modules;in=*;ex=pom.xml;ex=target;ex=.*,
                                                        ${basedir}/../../server/modules;in=*;ex=pom.xml;ex=target;ex=.*,
                                                </argeo.osgi.bundles>
+                                               <org.osgi.framework.bootdelegation>com.sun.jndi.ldap</org.osgi.framework.bootdelegation>
                                        </systemProperties>
                                </configuration>
                        </plugin>
index 5f9cc85c515489de17521052d6e2723097f2c555..b6edaf87d55f582e1f591c8b5d3d334dde9698bf 100644 (file)
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.argeo.commons.security</groupId>
                        <artifactId>org.argeo.dep.osgi.springframework.ldap</artifactId>
                </dependency>
 
+
                <!-- Security -->
+               <dependency>
+                       <!--
+                               Force inclusion of commons.lang to prevent v2.1.0 to be taken by
+                               Spring Security
+                       -->
+                       <groupId>org.apache.commons</groupId>
+                       <artifactId>com.springsource.org.apache.commons.lang</artifactId>
+               </dependency>
                <dependency>
                        <groupId>org.springframework.security</groupId>
                        <artifactId>org.springframework.security</artifactId>
index 3483f239770c180ef277235b0b5607a8ccc3e5e5..233e83904e9bc0524cdd752009659d1eb03999c1 100644 (file)
                        <groupId>org.argeo.dep.osgi</groupId>
                        <artifactId>org.argeo.dep.osgi.jackrabbit</artifactId>
                </dependency>
+
+               <!--  For webdav -->
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>org.springframework.web.servlet</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>javax.servlet</groupId>
+                       <artifactId>com.springsource.javax.servlet</artifactId>
+               </dependency>
        </dependencies>
 </project>
\ No newline at end of file
index 4be6e7f47af4d7129670059f498fd5ac9ae57657..ca8576ddf609e3d32929b25f6d81d5b65d58301e 100644 (file)
@@ -5,8 +5,8 @@ Import-Package: javax.jcr,
  javax.servlet,
  javax.servlet.http,
  javax.servlet.resources,
- org.apache.jackrabbit.j2ee,
+ org.argeo.server.jackrabbit.webdav,
  org.springframework.osgi.web.context.support,
  org.springframework.web.context,
- org.springframework.web.servlet.handler,
- org.springframework.web.servlet
+ org.springframework.web.servlet,
+ org.springframework.web.servlet.handler
index dfc08975315e8ebcbdfe28db5dd1d0f75226bee7..cfa47ee9ba4410a7caaf22d856944ed276a253d6 100644 (file)
@@ -7,8 +7,9 @@
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
 
-       <bean id="webdavServlet" class="org.apache.jackrabbit.j2ee.SimpleWebdavServlet">
+       <bean id="webdavServlet" class="org.argeo.server.jackrabbit.webdav.SimpleWebDavServlet">
                <property name="repository" ref="repository" />
+               <property name="resourceConfiguration" value="osgibundle:/WEB-INF/config.xml" />
        </bean>
 
        <bean
index bdb675889c37bb0b5833ea1c41c37ad1359b59b0..56d9490c1e9020ec9846b49ae09fddd83e2d1305 100644 (file)
                </plugins>
        </build>
        <dependencies>
+               <dependency>
+                       <groupId>org.argeo.commons.basic</groupId>
+                       <artifactId>org.argeo.basic.nodeps</artifactId>
+                       <version>0.1.2-SNAPSHOT</version>
+               </dependency>
+
                <!-- Apache DS -->
                <dependency>
                        <groupId>org.apache.directory</groupId>
index febc3630318bcb9b40500a71fd16153138afecf5..eab158618d0adc99a02caa360659fccdd04d67b1 100644 (file)
@@ -19,6 +19,7 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.directory.server.configuration.MutableServerStartupConfiguration;
 import org.apache.directory.server.core.configuration.ShutdownConfiguration;
 import org.apache.directory.server.jndi.ServerContextFactory;
+import org.argeo.ArgeoException;
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.core.io.Resource;
@@ -87,8 +88,8 @@ public class AdsContainer implements InitializingBean, DisposableBean {
                try {
                        new InitialDirContext(env);
                } catch (NamingException e) {
-                       throw new RuntimeException(
-                                       "Failed to start Apache Directory server", e);
+                       throw new ArgeoException("Failed to start Apache Directory server",
+                                       e);
                }
        }
 
@@ -110,8 +111,8 @@ public class AdsContainer implements InitializingBean, DisposableBean {
                try {
                        new InitialContext(env);
                } catch (NamingException e) {
-                       throw new RuntimeException(
-                                       "Failed to stop Apache Directory server", e);
+                       throw new ArgeoException("Failed to stop Apache Directory server",
+                                       e);
                }
 
                if (workingDirectory.exists() && deleteWorkingDirOnExit) {
index f9bc95cd5a86e4ed3a7a663940d406fec616ab03..7b84b7eba63b7d484ee9fa0194a85d2ee5b5c8a3 100644 (file)
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.argeo.commons.server</groupId>
                </plugins>
        </build>
        <dependencies>
+               <dependency>
+                       <groupId>org.argeo.commons.basic</groupId>
+                       <artifactId>org.argeo.basic.nodeps</artifactId>
+                       <version>0.1.2-SNAPSHOT</version>
+               </dependency>
+
+
                <!-- Apache Commons -->
                <dependency>
                        <groupId>org.apache.commons</groupId>
index f8e3fc4fc76b6449b5b74121d7ca06771b657b53..ae1d2085302e690fc214f7856b188a80d5056e03 100644 (file)
@@ -1,6 +1,9 @@
 package org.argeo.server;
 
-public class ArgeoServerException extends RuntimeException {
+import org.argeo.ArgeoException;
+
+/** @deprecated use {@link ArgeoException} instead */
+public class ArgeoServerException extends ArgeoException {
        private static final long serialVersionUID = 1L;
 
        public ArgeoServerException() {
index 9bf2634ae35ca7ab76403dc480470a981e39c41b..163cdf87fc402a4c55a2de0192fb773baa41bde0 100644 (file)
@@ -4,6 +4,7 @@ import java.io.PrintWriter;
 import java.io.StringWriter;
 
 import org.apache.commons.io.IOUtils;
+import org.argeo.ArgeoException;
 
 /** Answer to an execution of a remote service which performed changes. */
 public class ServerAnswer {
@@ -17,7 +18,7 @@ public class ServerAnswer {
        public ServerAnswer(String status, String message) {
                setStatus(status);
                if (message == null)
-                       throw new ArgeoServerException("Message cannot be null");
+                       throw new ArgeoException("Message cannot be null");
                this.message = message;
        }
 
@@ -31,7 +32,7 @@ public class ServerAnswer {
 
        public void setStatus(String status) {
                if (status == null || (!status.equals(OK) && !status.equals(ERROR)))
-                       throw new ArgeoServerException("Bad status format: " + status);
+                       throw new ArgeoException("Bad status format: " + status);
                this.status = status;
        }
 
@@ -71,7 +72,7 @@ public class ServerAnswer {
 
        @Override
        public String toString() {
-               return "ServerAnswer{status:"+status+", message:"+message+"}";
+               return "ServerAnswer{status:" + status + ", message:" + message + "}";
        }
 
 }
index 9e0881bf0243e4a8479172f7dc6f134576f74cf2..b2bb4c74c99fa27aa1dc7b21db77815db6fa51b7 100644 (file)
@@ -12,7 +12,7 @@ import java.util.TreeMap;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.argeo.server.ArgeoServerException;
+import org.argeo.ArgeoException;
 import org.springframework.beans.BeanWrapper;
 import org.springframework.beans.BeanWrapperImpl;
 import org.springframework.beans.BeansException;
@@ -64,7 +64,7 @@ public abstract class AbstractMemoryDaoSupport implements LightDaoSupport,
                                in = res.getInputStream();
                                load(in, references);
                        } catch (Exception e) {
-                               throw new ArgeoServerException("Cannot load stream", e);
+                               throw new ArgeoException("Cannot load stream", e);
                        } finally {
                                IOUtils.closeQuietly(in);
                        }
index f81135753efe35dd164ad36c1dd76a050db46e22..e3ab7cddf8ba2931b86d5ac277af893e286997c5 100644 (file)
@@ -7,7 +7,7 @@ import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.argeo.server.ArgeoServerException;
+import org.argeo.ArgeoException;
 
 public abstract class AbstractTabularDaoSupport extends
                AbstractMemoryDaoSupport {
@@ -56,7 +56,7 @@ public abstract class AbstractTabularDaoSupport extends
                }
 
                if (clss == null)
-                       throw new ArgeoServerException("Cannot find a class for table "
+                       throw new ArgeoException("Cannot find a class for table "
                                        + tableName);
 
                return clss;
index 3633ce4304403dd97e1cbbc2e8e3fc6b74f6c9a2..25e73901f3c26b6d962d41c65e16e9311bc5c5d2 100644 (file)
@@ -2,7 +2,7 @@ package org.argeo.server.dao;
 
 import java.beans.PropertyEditorSupport;
 
-import org.argeo.server.ArgeoServerException;
+import org.argeo.ArgeoException;
 
 public class LightDaoPropertyEditor extends PropertyEditorSupport implements
                LightDaoAware {
@@ -20,7 +20,7 @@ public class LightDaoPropertyEditor extends PropertyEditorSupport implements
        @Override
        public void setAsText(String text) throws IllegalArgumentException {
                if (targetClass == null)
-                       throw new ArgeoServerException("Target class cannot be null");
+                       throw new ArgeoException("Target class cannot be null");
 
                if (businessIdField != null)
                        setValue(lightDaoSupport.getByField(targetClass, businessIdField,
index 6acecf000203cfb03205f7456c33cdd861b611ef..02654e9ebf224d3928e9ff4c867649636c173d11 100644 (file)
@@ -6,7 +6,7 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.argeo.server.ArgeoServerException;
+import org.argeo.ArgeoException;
 import org.argeo.server.ServerSerializer;
 import org.springframework.web.servlet.view.AbstractView;
 
@@ -36,7 +36,7 @@ public class SerializingView extends AbstractView implements MvcConstants {
                } else if (model.containsKey(viewName)) {
                        answer = model.get(viewName);
                } else {
-                       throw new ArgeoServerException(
+                       throw new ArgeoException(
                                        "Model has a size different from 1. Specify a modelKey.");
                }
 
index d19199aef9224f4e9945800ec0fe5ebb396d18d1..0db75b520825ca95ea8b1523ee38135709718ab0 100644 (file)
                </plugins>
        </build>
        <dependencies>
+               <dependency>
+                       <groupId>org.argeo.commons.basic</groupId>
+                       <artifactId>org.argeo.basic.nodeps</artifactId>
+                       <version>0.1.2-SNAPSHOT</version>
+               </dependency>
+
+               <!-- Jack Rabbit -->
                <dependency>
                        <groupId>org.argeo.dep.osgi</groupId>
                        <artifactId>org.argeo.dep.osgi.jackrabbit</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>javax.servlet</groupId>
+                       <artifactId>com.springsource.javax.servlet</artifactId>
+               </dependency>
 
                <!-- Apache Commons -->
                <dependency>
index 2118ff1a613e20b718db350a98cb7b541b2bc93d..3132e7b2902ecfacb046168d17432408398b8f14 100644 (file)
@@ -54,23 +54,23 @@ public class JackrabbitContainer implements InitializingBean, DisposableBean,
        }
 
        public Session login() throws LoginException, RepositoryException {
-               return login();
+               return repository.login();
        }
 
        public Session login(Credentials credentials, String workspaceName)
                        throws LoginException, NoSuchWorkspaceException,
                        RepositoryException {
-               return login(credentials, workspaceName);
+               return repository.login(credentials, workspaceName);
        }
 
        public Session login(Credentials credentials) throws LoginException,
                        RepositoryException {
-               return login(credentials);
+               return repository.login(credentials);
        }
 
        public Session login(String workspaceName) throws LoginException,
                        NoSuchWorkspaceException, RepositoryException {
-               return login(workspaceName);
+               return repository.login(workspaceName);
        }
 
        // BEANS METHODS
diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/SimpleWebDavServlet.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/SimpleWebDavServlet.java
new file mode 100644 (file)
index 0000000..6d90455
--- /dev/null
@@ -0,0 +1,38 @@
+package org.argeo.server.jackrabbit.webdav;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+
+import org.apache.jackrabbit.webdav.simple.ResourceConfig;
+import org.argeo.ArgeoException;
+import org.springframework.core.io.Resource;
+
+public class SimpleWebDavServlet extends
+               org.apache.jackrabbit.j2ee.SimpleWebdavServlet {
+
+       private static final long serialVersionUID = 1L;
+
+       private Resource resourceConfiguration;
+
+       @Override
+       public void init() throws ServletException {
+               super.init();
+
+               if (resourceConfiguration != null) {
+                       ResourceConfig resourceConfig = new ResourceConfig();
+                       try {
+                               resourceConfig.parse(resourceConfiguration.getURL());
+                       } catch (IOException e) {
+                               throw new ArgeoException("Cannot parse resource configuration "
+                                               + resourceConfiguration, e);
+                       }
+                       setResourceConfig(resourceConfig);
+               }
+       }
+
+       public void setResourceConfiguration(Resource resourceConfig) {
+               this.resourceConfiguration = resourceConfig;
+       }
+
+}