From 2980adcfb0c8778426cd0f2176b86ba00e9697ab Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 5 Feb 2018 11:05:24 +0100 Subject: [PATCH] Introduce org.argeo.maintenance Slim down CMS dependencies --- org.argeo.cms/bnd.bnd | 7 +++-- .../cms/auth/HttpSessionLoginModule.java | 8 ++++-- .../cms/internal/http/HttpConstants.java | 21 ++++++++++++++ .../argeo/cms/internal/kernel/FirstInit.java | 28 +++++++++---------- .../cms/internal/kernel/KernelConstants.java | 3 ++ .../cms/internal/kernel/NodeUserAdmin.java | 9 ++---- org.argeo.maintenance/.classpath | 7 +++++ org.argeo.maintenance/.gitignore | 2 ++ org.argeo.maintenance/.project | 28 +++++++++++++++++++ org.argeo.maintenance/META-INF/.gitignore | 1 + org.argeo.maintenance/bnd.bnd | 0 org.argeo.maintenance/build.properties | 4 +++ org.argeo.maintenance/pom.xml | 26 +++++++++++++++++ .../maintenance/MaintenanceException.java | 13 +++++++++ .../backup/vfs}/AbstractAtomicBackup.java | 12 ++++---- .../maintenance/backup/vfs}/AtomicBackup.java | 2 +- .../backup/vfs}/BackupContext.java | 2 +- .../backup/vfs}/BackupFileSystemManager.java | 6 ++-- .../maintenance/backup/vfs}/BackupPurge.java | 2 +- .../maintenance/backup/vfs}/BackupUtils.java | 2 +- .../maintenance/backup/vfs}/MySqlBackup.java | 2 +- .../backup/vfs}/OpenLdapBackup.java | 6 ++-- .../maintenance/backup/vfs}/OsCallBackup.java | 8 +++--- .../backup/vfs}/PostgreSqlBackup.java | 2 +- .../backup/vfs}/SimpleBackupContext.java | 2 +- .../backup/vfs}/SimpleBackupPurge.java | 6 ++-- .../maintenance/backup/vfs}/SvnBackup.java | 2 +- .../maintenance/backup/vfs}/SystemBackup.java | 10 +++---- pom.xml | 1 + 29 files changed, 164 insertions(+), 58 deletions(-) create mode 100644 org.argeo.cms/src/org/argeo/cms/internal/http/HttpConstants.java create mode 100644 org.argeo.maintenance/.classpath create mode 100644 org.argeo.maintenance/.gitignore create mode 100644 org.argeo.maintenance/.project create mode 100644 org.argeo.maintenance/META-INF/.gitignore create mode 100644 org.argeo.maintenance/bnd.bnd create mode 100644 org.argeo.maintenance/build.properties create mode 100644 org.argeo.maintenance/pom.xml create mode 100644 org.argeo.maintenance/src/org/argeo/maintenance/MaintenanceException.java rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/AbstractAtomicBackup.java (87%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/AtomicBackup.java (96%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/BackupContext.java (96%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/BackupFileSystemManager.java (91%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/BackupPurge.java (96%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/BackupUtils.java (95%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/MySqlBackup.java (97%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/OpenLdapBackup.java (91%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/OsCallBackup.java (92%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/PostgreSqlBackup.java (98%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/SimpleBackupContext.java (97%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/SimpleBackupPurge.java (94%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/SvnBackup.java (97%) rename {org.argeo.cms/src/org/argeo/cms/internal/backup => org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs}/SystemBackup.java (95%) diff --git a/org.argeo.cms/bnd.bnd b/org.argeo.cms/bnd.bnd index 9d4c3bb50..3061a0e51 100644 --- a/org.argeo.cms/bnd.bnd +++ b/org.argeo.cms/bnd.bnd @@ -5,9 +5,10 @@ org.h2;resolution:=optional,\ org.postgresql;resolution:=optional,\ org.apache.jackrabbit.webdav.server,\ org.apache.jackrabbit.webdav.jcr,\ -org.eclipse.equinox.http.jetty,\ -org.springframework.context,\ -org.springframework.core.io,\ +org.springframework.context;resolution:=optional,\ +org.springframework.core.io;resolution:=optional,\ +org.springframework.*;resolution:=optional,\ +org.eclipse.gemini.blueprint.*;resolution:=optional\ org.apache.commons.httpclient.cookie;resolution:=optional,\ org.osgi.*;version=0.0.0,\ * diff --git a/org.argeo.cms/src/org/argeo/cms/auth/HttpSessionLoginModule.java b/org.argeo.cms/src/org/argeo/cms/auth/HttpSessionLoginModule.java index d2f0fe738..ccd02b5b2 100644 --- a/org.argeo.cms/src/org/argeo/cms/auth/HttpSessionLoginModule.java +++ b/org.argeo.cms/src/org/argeo/cms/auth/HttpSessionLoginModule.java @@ -2,6 +2,7 @@ package org.argeo.cms.auth; import java.io.IOException; import java.security.cert.X509Certificate; +import java.util.Base64; import java.util.Collection; import java.util.Map; import java.util.StringTokenizer; @@ -16,7 +17,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import org.apache.commons.codec.binary.Base64; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.cms.CmsException; @@ -154,7 +154,8 @@ public class HttpSessionLoginModule implements LoginModule { if (basic.equalsIgnoreCase("Basic")) { try { // TODO manipulate char[] - String credentials = new String(Base64.decodeBase64(st.nextToken()), "UTF-8"); + Base64.Decoder decoder = Base64.getDecoder(); + String credentials = new String(decoder.decode(st.nextToken()), "UTF-8"); // log.debug("Credentials: " + credentials); int p = credentials.indexOf(":"); if (p != -1) { @@ -170,7 +171,8 @@ public class HttpSessionLoginModule implements LoginModule { } } else if (basic.equalsIgnoreCase("Negotiate")) { String spnegoToken = st.nextToken(); - byte[] authToken = Base64.decodeBase64(spnegoToken); + Base64.Decoder decoder = Base64.getDecoder(); + byte[] authToken = decoder.decode(spnegoToken); sharedState.put(CmsAuthUtils.SHARED_STATE_SPNEGO_TOKEN, authToken); } } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/http/HttpConstants.java b/org.argeo.cms/src/org/argeo/cms/internal/http/HttpConstants.java new file mode 100644 index 000000000..5fe57b7c2 --- /dev/null +++ b/org.argeo.cms/src/org/argeo/cms/internal/http/HttpConstants.java @@ -0,0 +1,21 @@ +package org.argeo.cms.internal.http; + +/** Compatible with Jetty. */ +public interface HttpConstants { + public static final String HTTP_ENABLED = "http.enabled"; + public static final String HTTP_PORT = "http.port"; + public static final String HTTP_HOST = "http.host"; + public static final String HTTPS_ENABLED = "https.enabled"; + public static final String HTTPS_HOST = "https.host"; + public static final String HTTPS_PORT = "https.port"; + public static final String SSL_KEYSTORE = "ssl.keystore"; + public static final String SSL_PASSWORD = "ssl.password"; + public static final String SSL_KEYPASSWORD = "ssl.keypassword"; + public static final String SSL_NEEDCLIENTAUTH = "ssl.needclientauth"; + public static final String SSL_WANTCLIENTAUTH = "ssl.wantclientauth"; + public static final String SSL_PROTOCOL = "ssl.protocol"; + public static final String SSL_ALGORITHM = "ssl.algorithm"; + public static final String SSL_KEYSTORETYPE = "ssl.keystoretype"; + public static final String JETTY_PROPERTY_PREFIX = "org.eclipse.equinox.http.jetty."; + +} diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/FirstInit.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/FirstInit.java index 6175e4d03..98c2483cc 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/FirstInit.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/FirstInit.java @@ -22,10 +22,10 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.cms.CmsException; +import org.argeo.cms.internal.http.HttpConstants; import org.argeo.cms.internal.jcr.RepoConf; import org.argeo.node.NodeConstants; import org.argeo.osgi.useradmin.UserAdminConf; -import org.eclipse.equinox.http.jetty.JettyConstants; /** * Interprets framework properties in order to generate the initial deploy @@ -56,35 +56,35 @@ class FirstInit { String httpPort = getFrameworkProp("org.osgi.service.http.port"); String httpsPort = getFrameworkProp("org.osgi.service.http.port.secure"); /// TODO make it more generic - String httpHost = getFrameworkProp(JettyConstants.PROPERTY_PREFIX + JettyConstants.HTTP_HOST); - String httpsHost = getFrameworkProp(JettyConstants.PROPERTY_PREFIX + JettyConstants.HTTPS_HOST); + String httpHost = getFrameworkProp(HttpConstants.JETTY_PROPERTY_PREFIX + HttpConstants.HTTP_HOST); + String httpsHost = getFrameworkProp(HttpConstants.JETTY_PROPERTY_PREFIX + HttpConstants.HTTPS_HOST); final Hashtable props = new Hashtable(); // try { if (httpPort != null || httpsPort != null) { if (httpPort != null) { - props.put(JettyConstants.HTTP_PORT, httpPort); - props.put(JettyConstants.HTTP_ENABLED, true); + props.put(HttpConstants.HTTP_PORT, httpPort); + props.put(HttpConstants.HTTP_ENABLED, true); } if (httpsPort != null) { - props.put(JettyConstants.HTTPS_PORT, httpsPort); - props.put(JettyConstants.HTTPS_ENABLED, true); + props.put(HttpConstants.HTTPS_PORT, httpsPort); + props.put(HttpConstants.HTTPS_ENABLED, true); Path keyStorePath = KernelUtils.getOsgiInstancePath(KernelConstants.DEFAULT_KEYSTORE_PATH); String keyStorePassword = getFrameworkProp( - JettyConstants.PROPERTY_PREFIX + JettyConstants.SSL_PASSWORD); + HttpConstants.JETTY_PROPERTY_PREFIX + HttpConstants.SSL_PASSWORD); if (keyStorePassword == null) keyStorePassword = "changeit"; if (!Files.exists(keyStorePath)) createSelfSignedKeyStore(keyStorePath, keyStorePassword); - props.put(JettyConstants.SSL_KEYSTORETYPE, "PKCS12"); - props.put(JettyConstants.SSL_KEYSTORE, keyStorePath.toString()); - props.put(JettyConstants.SSL_PASSWORD, keyStorePassword); - props.put(JettyConstants.SSL_WANTCLIENTAUTH, true); + props.put(HttpConstants.SSL_KEYSTORETYPE, "PKCS12"); + props.put(HttpConstants.SSL_KEYSTORE, keyStorePath.toString()); + props.put(HttpConstants.SSL_PASSWORD, keyStorePassword); + props.put(HttpConstants.SSL_WANTCLIENTAUTH, true); } if (httpHost != null) - props.put(JettyConstants.HTTP_HOST, httpHost); + props.put(HttpConstants.HTTP_HOST, httpHost); if (httpsHost != null) - props.put(JettyConstants.HTTPS_HOST, httpHost); + props.put(HttpConstants.HTTPS_HOST, httpHost); props.put(NodeConstants.CN, NodeConstants.DEFAULT); } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelConstants.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelConstants.java index 45f3354b8..f8bce9cf6 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelConstants.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelConstants.java @@ -28,6 +28,9 @@ public interface KernelConstants { String DEFAULT_USERS_BASE_PATH = "/users"; String DEFAULT_GROUPS_BASE_PATH = "/groups"; + // HTTP client + String COOKIE_POLICY_BROWSER_COMPATIBILITY = "compatibility"; + // RWT / RAP // String PATH_WORKBENCH = "/ui"; // String PATH_WORKBENCH_PUBLIC = PATH_WORKBENCH + "/public"; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeUserAdmin.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeUserAdmin.java index f1132a642..236585e1b 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeUserAdmin.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeUserAdmin.java @@ -29,7 +29,6 @@ import javax.transaction.TransactionManager; import org.apache.commons.httpclient.auth.AuthPolicy; import org.apache.commons.httpclient.auth.CredentialsProvider; -import org.apache.commons.httpclient.cookie.CookiePolicy; import org.apache.commons.httpclient.params.DefaultHttpParams; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.httpclient.params.HttpParams; @@ -162,14 +161,12 @@ class NodeUserAdmin extends AggregatingUserAdmin implements ManagedServiceFactor public String getName() { return "Node User Admin"; } - - @Override protected void addAbstractSystemRoles(Authorization rawAuthorization, Set sysRoles) { - if(rawAuthorization.getName()==null) { + if (rawAuthorization.getName() == null) { sysRoles.add(NodeConstants.ROLE_ANONYMOUS); - }else { + } else { sysRoles.add(NodeConstants.ROLE_USER); } } @@ -215,7 +212,7 @@ class NodeUserAdmin extends AggregatingUserAdmin implements ManagedServiceFactor // schemes.add(AuthPolicy.BASIC);// incompatible with Basic params.setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, schemes); params.setParameter(CredentialsProvider.PROVIDER, new HttpCredentialProvider()); - params.setParameter(HttpMethodParams.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); + params.setParameter(HttpMethodParams.COOKIE_POLICY, KernelConstants.COOKIE_POLICY_BROWSER_COMPATIBILITY); // params.setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); } } diff --git a/org.argeo.maintenance/.classpath b/org.argeo.maintenance/.classpath new file mode 100644 index 000000000..eca7bdba8 --- /dev/null +++ b/org.argeo.maintenance/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/org.argeo.maintenance/.gitignore b/org.argeo.maintenance/.gitignore new file mode 100644 index 000000000..09e3bc9b2 --- /dev/null +++ b/org.argeo.maintenance/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/target/ diff --git a/org.argeo.maintenance/.project b/org.argeo.maintenance/.project new file mode 100644 index 000000000..d1c87c7b3 --- /dev/null +++ b/org.argeo.maintenance/.project @@ -0,0 +1,28 @@ + + + org.argeo.maintenance + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/org.argeo.maintenance/META-INF/.gitignore b/org.argeo.maintenance/META-INF/.gitignore new file mode 100644 index 000000000..4854a41b9 --- /dev/null +++ b/org.argeo.maintenance/META-INF/.gitignore @@ -0,0 +1 @@ +/MANIFEST.MF diff --git a/org.argeo.maintenance/bnd.bnd b/org.argeo.maintenance/bnd.bnd new file mode 100644 index 000000000..e69de29bb diff --git a/org.argeo.maintenance/build.properties b/org.argeo.maintenance/build.properties new file mode 100644 index 000000000..34d2e4d2d --- /dev/null +++ b/org.argeo.maintenance/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/org.argeo.maintenance/pom.xml b/org.argeo.maintenance/pom.xml new file mode 100644 index 000000000..8c4abf3be --- /dev/null +++ b/org.argeo.maintenance/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + org.argeo.commons + argeo-commons + 2.1.71-SNAPSHOT + .. + + org.argeo.maintenance + Maintenance + jar + + + org.argeo.commons + org.argeo.jcr + 2.1.71-SNAPSHOT + + + org.argeo.commons + org.argeo.enterprise + 2.1.71-SNAPSHOT + + + \ No newline at end of file diff --git a/org.argeo.maintenance/src/org/argeo/maintenance/MaintenanceException.java b/org.argeo.maintenance/src/org/argeo/maintenance/MaintenanceException.java new file mode 100644 index 000000000..dc4243edb --- /dev/null +++ b/org.argeo.maintenance/src/org/argeo/maintenance/MaintenanceException.java @@ -0,0 +1,13 @@ +package org.argeo.maintenance; + +public class MaintenanceException extends RuntimeException { + private static final long serialVersionUID = -4571088120514827735L; + + public MaintenanceException(String message) { + super(message); + } + + public MaintenanceException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/AbstractAtomicBackup.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/AbstractAtomicBackup.java similarity index 87% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/AbstractAtomicBackup.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/AbstractAtomicBackup.java index d8824ba4e..ae587ea2d 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/AbstractAtomicBackup.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/AbstractAtomicBackup.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import org.apache.commons.vfs2.FileObject; import org.apache.commons.vfs2.FileSystemManager; import org.apache.commons.vfs2.FileSystemOptions; import org.apache.commons.vfs2.provider.sftp.SftpFileSystemConfigBuilder; -import org.argeo.cms.CmsException; +import org.argeo.maintenance.MaintenanceException; /** * Simplify atomic backups implementation, especially by managing VFS. @@ -39,7 +39,7 @@ public abstract class AbstractAtomicBackup implements AtomicBackup { public void init() { if (name == null) - throw new CmsException("Atomic backup name must be set"); + throw new MaintenanceException("Atomic backup name must be set"); } public void destroy() { @@ -51,7 +51,7 @@ public abstract class AbstractAtomicBackup implements AtomicBackup { String backupsBase, BackupContext backupContext, FileSystemOptions opts) { if (name == null) - throw new CmsException("Atomic backup name must be set"); + throw new MaintenanceException("Atomic backup name must be set"); FileObject targetFo = null; try { @@ -70,14 +70,14 @@ public abstract class AbstractAtomicBackup implements AtomicBackup { + '/' + backupContext.getRelativeFolder() + '/' + name + ".gz" + "!" + name, opts); else - throw new CmsException("Unsupported compression " + throw new MaintenanceException("Unsupported compression " + compression); writeBackup(targetFo); return targetFo.toString(); } catch (Exception e) { - throw new CmsException("Cannot backup " + name + " to " + throw new MaintenanceException("Cannot backup " + name + " to " + targetFo, e); } finally { BackupUtils.closeFOQuietly(targetFo); diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/AtomicBackup.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/AtomicBackup.java similarity index 96% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/AtomicBackup.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/AtomicBackup.java index e14344c8f..e8c3ded11 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/AtomicBackup.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/AtomicBackup.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import org.apache.commons.vfs2.FileSystemManager; import org.apache.commons.vfs2.FileSystemOptions; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/BackupContext.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupContext.java similarity index 96% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/BackupContext.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupContext.java index 14e7eb41a..cc1391fe8 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/BackupContext.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupContext.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import java.text.DateFormat; import java.util.Date; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/BackupFileSystemManager.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupFileSystemManager.java similarity index 91% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/BackupFileSystemManager.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupFileSystemManager.java index d8d626ad5..3053f0a91 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/BackupFileSystemManager.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupFileSystemManager.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import org.apache.commons.vfs2.FileSystemException; import org.apache.commons.vfs2.impl.DefaultFileSystemManager; @@ -24,7 +24,7 @@ import org.apache.commons.vfs2.provider.local.DefaultLocalFileProvider; import org.apache.commons.vfs2.provider.ram.RamFileProvider; import org.apache.commons.vfs2.provider.sftp.SftpFileProvider; import org.apache.commons.vfs2.provider.url.UrlFileProvider; -import org.argeo.cms.CmsException; +import org.argeo.maintenance.MaintenanceException; /** * Programatically configured VFS file system manager which can be declared as a @@ -46,7 +46,7 @@ public class BackupFileSystemManager extends DefaultFileSystemManager { addProvider("ram", new RamFileProvider()); setDefaultProvider(new UrlFileProvider()); } catch (FileSystemException e) { - throw new CmsException("Cannot configure backup file provider", e); + throw new MaintenanceException("Cannot configure backup file provider", e); } } } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/BackupPurge.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupPurge.java similarity index 96% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/BackupPurge.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupPurge.java index 75a6b164b..face8a128 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/BackupPurge.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupPurge.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import java.text.DateFormat; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/BackupUtils.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupUtils.java similarity index 95% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/BackupUtils.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupUtils.java index 9a4e91c1f..94e8a1d49 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/BackupUtils.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/BackupUtils.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import org.apache.commons.vfs2.FileObject; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/MySqlBackup.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/MySqlBackup.java similarity index 97% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/MySqlBackup.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/MySqlBackup.java index 765c56495..7ab2d6a85 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/MySqlBackup.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/MySqlBackup.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import org.apache.commons.vfs2.FileObject; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/OpenLdapBackup.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/OpenLdapBackup.java similarity index 91% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/OpenLdapBackup.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/OpenLdapBackup.java index 96c2f3a77..415bc24d9 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/OpenLdapBackup.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/OpenLdapBackup.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import org.apache.commons.vfs2.FileObject; -import org.argeo.cms.CmsException; +import org.argeo.maintenance.MaintenanceException; /** Backups an OpenLDAP server using slapcat */ public class OpenLdapBackup extends OsCallBackup { @@ -36,7 +36,7 @@ public class OpenLdapBackup extends OsCallBackup { @Override public void writeBackup(FileObject targetFo) { if (baseDn == null) - throw new CmsException("Base DN must be set"); + throw new MaintenanceException("Base DN must be set"); if (getCommand() == null) setCommand(slapcatLocation diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/OsCallBackup.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/OsCallBackup.java similarity index 92% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/OsCallBackup.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/OsCallBackup.java index ad8ffe861..07589d305 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/OsCallBackup.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/OsCallBackup.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import java.io.ByteArrayOutputStream; import java.util.HashMap; @@ -30,7 +30,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.vfs2.FileContent; import org.apache.commons.vfs2.FileObject; -import org.argeo.cms.CmsException; +import org.argeo.maintenance.MaintenanceException; /** * Runs an OS command and save its standard output as a file. Typically used for @@ -87,11 +87,11 @@ public class OsCallBackup extends AbstractAtomicBackup { } catch (ExecuteException e) { byte[] err = errBos.toByteArray(); String errStr = new String(err); - throw new CmsException("Process " + commandLine + " failed (" + e.getExitValue() + "): " + errStr, e); + throw new MaintenanceException("Process " + commandLine + " failed (" + e.getExitValue() + "): " + errStr, e); } catch (Exception e) { byte[] err = errBos.toByteArray(); String errStr = new String(err); - throw new CmsException("Process " + commandLine + " failed: " + errStr, e); + throw new MaintenanceException("Process " + commandLine + " failed: " + errStr, e); } finally { IOUtils.closeQuietly(errBos); } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/PostgreSqlBackup.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/PostgreSqlBackup.java similarity index 98% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/PostgreSqlBackup.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/PostgreSqlBackup.java index dbc3624fb..da3ea38b3 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/PostgreSqlBackup.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/PostgreSqlBackup.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import org.apache.commons.vfs2.FileObject; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/SimpleBackupContext.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SimpleBackupContext.java similarity index 97% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/SimpleBackupContext.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SimpleBackupContext.java index 8e9e418f0..bef6f65cf 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/SimpleBackupContext.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SimpleBackupContext.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import java.text.DateFormat; import java.text.SimpleDateFormat; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/SimpleBackupPurge.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SimpleBackupPurge.java similarity index 94% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/SimpleBackupPurge.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SimpleBackupPurge.java index 33b5b5ebe..042070f5c 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/SimpleBackupPurge.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SimpleBackupPurge.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import java.text.DateFormat; import java.time.Period; @@ -29,7 +29,7 @@ import org.apache.commons.vfs2.FileObject; import org.apache.commons.vfs2.FileSystemManager; import org.apache.commons.vfs2.FileSystemOptions; import org.apache.commons.vfs2.Selectors; -import org.argeo.cms.CmsException; +import org.argeo.maintenance.MaintenanceException; /** Simple backup purge which keeps backups only for a given number of days */ public class SimpleBackupPurge implements BackupPurge { @@ -80,7 +80,7 @@ public class SimpleBackupPurge implements BackupPurge { log.debug("Deleted backup " + backupFo); } } catch (Exception e) { - throw new CmsException("Could not purge previous backups", e); + throw new MaintenanceException("Could not purge previous backups", e); } } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/SvnBackup.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SvnBackup.java similarity index 97% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/SvnBackup.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SvnBackup.java index 7367c04c6..b725a3ee5 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/SvnBackup.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SvnBackup.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import java.io.File; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/SystemBackup.java b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SystemBackup.java similarity index 95% rename from org.argeo.cms/src/org/argeo/cms/internal/backup/SystemBackup.java rename to org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SystemBackup.java index 36d3e0b2d..480f6dc4c 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/SystemBackup.java +++ b/org.argeo.maintenance/src/org/argeo/maintenance/backup/vfs/SystemBackup.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.backup; +package org.argeo.maintenance.backup.vfs; import java.util.ArrayList; import java.util.HashMap; @@ -29,7 +29,7 @@ import org.apache.commons.vfs2.FileSystemOptions; import org.apache.commons.vfs2.Selectors; import org.apache.commons.vfs2.UserAuthenticator; import org.apache.commons.vfs2.impl.DefaultFileSystemConfigBuilder; -import org.argeo.cms.CmsException; +import org.argeo.maintenance.MaintenanceException; import org.argeo.util.LangUtils; /** @@ -53,7 +53,7 @@ public class SystemBackup implements Runnable { @Override public void run() { if (atomicBackups.size() == 0) - throw new CmsException("No atomic backup listed"); + throw new MaintenanceException("No atomic backup listed"); List failures = new ArrayList(); SimpleBackupContext backupContext = new SimpleBackupContext(fileSystemManager, backupsBase, systemName); @@ -63,7 +63,7 @@ public class SystemBackup implements Runnable { try { DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, userAuthenticator); } catch (FileSystemException e) { - throw new CmsException("Cannot create authentication", e); + throw new MaintenanceException("Cannot create authentication", e); } try { @@ -130,7 +130,7 @@ public class SystemBackup implements Runnable { buf.append('\n').append(failureCount).append(" - ").append(failure); failureCount++; } - throw new CmsException(failureCount + " error(s) when running the backup," + throw new MaintenanceException(failureCount + " error(s) when running the backup," + " check the logs and the backups as soon as possible." + buf); } } diff --git a/pom.xml b/pom.xml index 361161015..4da560d15 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,7 @@ org.argeo.eclipse.ui.rap org.argeo.node.api + org.argeo.maintenance org.argeo.cms org.argeo.cms.ui -- 2.30.2