From cdfd09387221a87b3a36f54fd3d5e8a6f4279baf Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 25 Nov 2009 13:42:49 +0000 Subject: [PATCH] Fix issues with security dependencies git-svn-id: https://svn.argeo.org/commons/trunk@3160 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../src/main/java/webdav/WebDavTest.java | 22 +++++++---- security/demo/pom.xml | 1 + .../runtime/org.argeo.security.core/pom.xml | 12 +++++- .../pom.xml | 6 +++ .../META-INF/MANIFEST.MF | 6 +-- .../WEB-INF/webdav-servlet.xml | 3 +- server/runtime/org.argeo.server.ads/pom.xml | 6 +++ .../org/argeo/server/ads/AdsContainer.java | 9 +++-- server/runtime/org.argeo.server.core/pom.xml | 10 ++++- .../argeo/server/ArgeoServerException.java | 5 ++- .../java/org/argeo/server/ServerAnswer.java | 7 ++-- .../server/dao/AbstractMemoryDaoSupport.java | 4 +- .../server/dao/AbstractTabularDaoSupport.java | 4 +- .../server/dao/LightDaoPropertyEditor.java | 4 +- .../org/argeo/server/mvc/SerializingView.java | 4 +- .../org.argeo.server.jackrabbit/pom.xml | 11 ++++++ .../jackrabbit/JackrabbitContainer.java | 8 ++-- .../webdav/SimpleWebDavServlet.java | 38 +++++++++++++++++++ 18 files changed, 127 insertions(+), 33 deletions(-) create mode 100644 server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/SimpleWebDavServlet.java diff --git a/sandbox/runtime/org.argeo.sandbox.jackrabbit/src/main/java/webdav/WebDavTest.java b/sandbox/runtime/org.argeo.sandbox.jackrabbit/src/main/java/webdav/WebDavTest.java index cb8a97ad2..5b938be0d 100644 --- a/sandbox/runtime/org.argeo.sandbox.jackrabbit/src/main/java/webdav/WebDavTest.java +++ b/sandbox/runtime/org.argeo.sandbox.jackrabbit/src/main/java/webdav/WebDavTest.java @@ -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(); } diff --git a/security/demo/pom.xml b/security/demo/pom.xml index 67cb9c7dc..57a3b8808 100644 --- a/security/demo/pom.xml +++ b/security/demo/pom.xml @@ -42,6 +42,7 @@ ${basedir}/../modules;in=*;ex=pom.xml;ex=target;ex=.*, ${basedir}/../../server/modules;in=*;ex=pom.xml;ex=target;ex=.*, + com.sun.jndi.ldap diff --git a/security/runtime/org.argeo.security.core/pom.xml b/security/runtime/org.argeo.security.core/pom.xml index 5f9cc85c5..b6edaf87d 100644 --- a/security/runtime/org.argeo.security.core/pom.xml +++ b/security/runtime/org.argeo.security.core/pom.xml @@ -1,4 +1,5 @@ - + 4.0.0 org.argeo.commons.security @@ -47,7 +48,16 @@ org.argeo.dep.osgi.springframework.ldap + + + + org.apache.commons + com.springsource.org.apache.commons.lang + org.springframework.security org.springframework.security diff --git a/server/dep/org.argeo.server.dep.jackrabbit.server/pom.xml b/server/dep/org.argeo.server.dep.jackrabbit.server/pom.xml index 3483f2397..233e83904 100644 --- a/server/dep/org.argeo.server.dep.jackrabbit.server/pom.xml +++ b/server/dep/org.argeo.server.dep.jackrabbit.server/pom.xml @@ -15,9 +15,15 @@ org.argeo.dep.osgi org.argeo.dep.osgi.jackrabbit + + org.springframework org.springframework.web.servlet + + javax.servlet + com.springsource.javax.servlet + \ No newline at end of file diff --git a/server/modules/org.argeo.server.jackrabbit.webapp/META-INF/MANIFEST.MF b/server/modules/org.argeo.server.jackrabbit.webapp/META-INF/MANIFEST.MF index 4be6e7f47..ca8576ddf 100644 --- a/server/modules/org.argeo.server.jackrabbit.webapp/META-INF/MANIFEST.MF +++ b/server/modules/org.argeo.server.jackrabbit.webapp/META-INF/MANIFEST.MF @@ -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 diff --git a/server/modules/org.argeo.server.jackrabbit.webapp/WEB-INF/webdav-servlet.xml b/server/modules/org.argeo.server.jackrabbit.webapp/WEB-INF/webdav-servlet.xml index dfc089753..cfa47ee9b 100644 --- a/server/modules/org.argeo.server.jackrabbit.webapp/WEB-INF/webdav-servlet.xml +++ b/server/modules/org.argeo.server.jackrabbit.webapp/WEB-INF/webdav-servlet.xml @@ -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"> - + + + + org.argeo.commons.basic + org.argeo.basic.nodeps + 0.1.2-SNAPSHOT + + org.apache.directory diff --git a/server/runtime/org.argeo.server.ads/src/main/java/org/argeo/server/ads/AdsContainer.java b/server/runtime/org.argeo.server.ads/src/main/java/org/argeo/server/ads/AdsContainer.java index febc36303..eab158618 100644 --- a/server/runtime/org.argeo.server.ads/src/main/java/org/argeo/server/ads/AdsContainer.java +++ b/server/runtime/org.argeo.server.ads/src/main/java/org/argeo/server/ads/AdsContainer.java @@ -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) { diff --git a/server/runtime/org.argeo.server.core/pom.xml b/server/runtime/org.argeo.server.core/pom.xml index f9bc95cd5..7b84b7eba 100644 --- a/server/runtime/org.argeo.server.core/pom.xml +++ b/server/runtime/org.argeo.server.core/pom.xml @@ -1,4 +1,5 @@ - + 4.0.0 org.argeo.commons.server @@ -37,6 +38,13 @@ + + org.argeo.commons.basic + org.argeo.basic.nodeps + 0.1.2-SNAPSHOT + + + org.apache.commons diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/ArgeoServerException.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/ArgeoServerException.java index f8e3fc4fc..ae1d20853 100644 --- a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/ArgeoServerException.java +++ b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/ArgeoServerException.java @@ -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() { diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/ServerAnswer.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/ServerAnswer.java index 9bf2634ae..163cdf87f 100644 --- a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/ServerAnswer.java +++ b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/ServerAnswer.java @@ -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 + "}"; } } diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/AbstractMemoryDaoSupport.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/AbstractMemoryDaoSupport.java index 9e0881bf0..b2bb4c74c 100644 --- a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/AbstractMemoryDaoSupport.java +++ b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/AbstractMemoryDaoSupport.java @@ -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); } diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/AbstractTabularDaoSupport.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/AbstractTabularDaoSupport.java index f81135753..e3ab7cddf 100644 --- a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/AbstractTabularDaoSupport.java +++ b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/AbstractTabularDaoSupport.java @@ -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; diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/LightDaoPropertyEditor.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/LightDaoPropertyEditor.java index 3633ce430..25e73901f 100644 --- a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/LightDaoPropertyEditor.java +++ b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/dao/LightDaoPropertyEditor.java @@ -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, diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/mvc/SerializingView.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/mvc/SerializingView.java index 6acecf000..02654e9eb 100644 --- a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/mvc/SerializingView.java +++ b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/mvc/SerializingView.java @@ -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."); } diff --git a/server/runtime/org.argeo.server.jackrabbit/pom.xml b/server/runtime/org.argeo.server.jackrabbit/pom.xml index d19199aef..0db75b520 100644 --- a/server/runtime/org.argeo.server.jackrabbit/pom.xml +++ b/server/runtime/org.argeo.server.jackrabbit/pom.xml @@ -38,10 +38,21 @@ + + org.argeo.commons.basic + org.argeo.basic.nodeps + 0.1.2-SNAPSHOT + + + org.argeo.dep.osgi org.argeo.dep.osgi.jackrabbit + + javax.servlet + com.springsource.javax.servlet + diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/JackrabbitContainer.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/JackrabbitContainer.java index 2118ff1a6..3132e7b29 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/JackrabbitContainer.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/JackrabbitContainer.java @@ -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 index 000000000..6d90455be --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/SimpleWebDavServlet.java @@ -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; + } + +} -- 2.30.2