From 2a9ca8c9efd55128c2a732b9f67c1c4de4e22671 Mon Sep 17 00:00:00 2001 From: Gavin Cornwell Date: Thu, 27 Jul 2006 14:09:19 +0000 Subject: [PATCH] - Incorporated build number into version number messages i.e. at server startup, in about dialog and in database. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3428 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/bootstrap/descriptor.xml | 2 + config/alfresco/import-export-context.xml | 1 + config/alfresco/model/systemModel.xml | 3 + .../java/org/alfresco/model/ContentModel.java | 1 + .../descriptor/DescriptorServiceImpl.java | 164 +++++++++++------- .../service/descriptor/Descriptor.java | 7 + 6 files changed, 120 insertions(+), 58 deletions(-) diff --git a/config/alfresco/bootstrap/descriptor.xml b/config/alfresco/bootstrap/descriptor.xml index f7836a4e8f..c4923a7c56 100644 --- a/config/alfresco/bootstrap/descriptor.xml +++ b/config/alfresco/bootstrap/descriptor.xml @@ -5,6 +5,7 @@ ${version.major} ${version.minor} ${version.revision} + ${version.build} ${version.label} ${version.schema} @@ -13,6 +14,7 @@ ${version.major} ${version.minor} ${version.revision} + ${version.build} ${version.edition} ${version.label} ${version.schema} diff --git a/config/alfresco/import-export-context.xml b/config/alfresco/import-export-context.xml index 80e746bd7e..d2b6b474d7 100644 --- a/config/alfresco/import-export-context.xml +++ b/config/alfresco/import-export-context.xml @@ -218,6 +218,7 @@ ${version.major} ${version.minor} ${version.revision} + ${version.build} ${version.label} ${version.schema} ${version.edition} diff --git a/config/alfresco/model/systemModel.xml b/config/alfresco/model/systemModel.xml index 80ee14b5d2..be70ff601e 100644 --- a/config/alfresco/model/systemModel.xml +++ b/config/alfresco/model/systemModel.xml @@ -41,6 +41,9 @@ d:text + + d:text + d:int true diff --git a/source/java/org/alfresco/model/ContentModel.java b/source/java/org/alfresco/model/ContentModel.java index 14ed3ebed0..1513509af7 100644 --- a/source/java/org/alfresco/model/ContentModel.java +++ b/source/java/org/alfresco/model/ContentModel.java @@ -73,6 +73,7 @@ public interface ContentModel static final QName PROP_SYS_VERSION_MINOR = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "versionMinor"); static final QName PROP_SYS_VERSION_REVISION = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "versionRevision"); static final QName PROP_SYS_VERSION_LABEL = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "versionLabel"); + static final QName PROP_SYS_VERSION_BUILD = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "versionBuild"); static final QName PROP_SYS_VERSION_SCHEMA = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "versionSchema"); static final QName PROP_SYS_VERSION_EDITION = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "versionEdition"); diff --git a/source/java/org/alfresco/repo/descriptor/DescriptorServiceImpl.java b/source/java/org/alfresco/repo/descriptor/DescriptorServiceImpl.java index 833885bda5..158b3fae5b 100644 --- a/source/java/org/alfresco/repo/descriptor/DescriptorServiceImpl.java +++ b/source/java/org/alfresco/repo/descriptor/DescriptorServiceImpl.java @@ -270,6 +270,7 @@ public class DescriptorServiceImpl implements DescriptorService, ApplicationList nodeService.setProperty(currentDescriptorNodeRef, ContentModel.PROP_SYS_VERSION_MINOR, serverDescriptor.getVersionMinor()); nodeService.setProperty(currentDescriptorNodeRef, ContentModel.PROP_SYS_VERSION_REVISION, serverDescriptor.getVersionRevision()); nodeService.setProperty(currentDescriptorNodeRef, ContentModel.PROP_SYS_VERSION_LABEL, serverDescriptor.getVersionLabel()); + nodeService.setProperty(currentDescriptorNodeRef, ContentModel.PROP_SYS_VERSION_BUILD, serverDescriptor.getVersionBuild()); nodeService.setProperty(currentDescriptorNodeRef, ContentModel.PROP_SYS_VERSION_SCHEMA, serverDescriptor.getSchema()); // done @@ -449,6 +450,14 @@ public class DescriptorServiceImpl implements DescriptorService, ApplicationList return "Unknown"; } + /* (non-Javadoc) + * @see org.alfresco.service.descriptor.Descriptor#getVersionBuild() + */ + public String getVersionBuild() + { + return "Unknown"; + } + /* (non-Javadoc) * @see org.alfresco.service.descriptor.Descriptor#getVersion() */ @@ -491,14 +500,99 @@ public class DescriptorServiceImpl implements DescriptorService, ApplicationList } } + /** + * Base class for Descriptor implementations, provides a + * default getVersion() implementation. + * + * @author gavinc + */ + public abstract class BaseDescriptor implements Descriptor + { + /* (non-Javadoc) + * @see org.alfresco.service.descriptor.Descriptor#getVersion() + */ + public String getVersion() + { + StringBuilder version = new StringBuilder(getVersionMajor()); + version.append("."); + version.append(getVersionMinor()); + version.append("."); + version.append(getVersionRevision()); + + String label = getVersionLabel(); + String build = getVersionBuild(); + + boolean hasLabel = (label != null && label.length() > 0); + boolean hasBuild = (build != null && build.length() > 0); + + // add opening bracket if either a label or build number is present + if (hasLabel || hasBuild) + { + version.append(" ("); + } + + // add label if present + if (hasLabel) + { + version.append(label); + } + + // add build number is present + if (hasBuild) + { + // if there is also a label we need a separating space + if (hasLabel) + { + version.append(" "); + } + + version.append(build); + } + + // add closing bracket if either a label or build number is present + if (hasLabel || hasBuild) + { + version.append(")"); + } + + return version.toString(); + } + + /** + * Returns the int representation of the given schema string + * + * @param schemaStr The schema number as a string + * @return The schema number as an int + */ + protected int getSchema(String schemaStr) + { + if (schemaStr == null) + { + return 0; + } + try + { + int schema = Integer.parseInt(schemaStr); + if (schema < 0) + { + throw new NumberFormatException(); + } + return schema; + } + catch (NumberFormatException e) + { + throw new AlfrescoRuntimeException("Schema must be a positive integer '" + schemaStr + "' is not!"); + } + } + } + /** * Repository Descriptor whose meta-data is retrieved from the repository store */ - private class RepositoryDescriptor implements Descriptor + private class RepositoryDescriptor extends BaseDescriptor { private Map properties; - /** * Construct * @@ -542,17 +636,11 @@ public class DescriptorServiceImpl implements DescriptorService, ApplicationList } /* (non-Javadoc) - * @see org.alfresco.service.descriptor.Descriptor#getVersion() + * @see org.alfresco.service.descriptor.Descriptor#getVersionBuild() */ - public String getVersion() + public String getVersionBuild() { - String version = getVersionMajor() + "." + getVersionMinor() + "." + getVersionRevision(); - String label = getVersionLabel(); - if (label != null && label.length() > 0) - { - version += " (" + label + ")"; - } - return version; + return getDescriptor("sys:versionBuild"); } /* (non-Javadoc) @@ -569,24 +657,7 @@ public class DescriptorServiceImpl implements DescriptorService, ApplicationList */ public int getSchema() { - String schemaStr = getDescriptor("sys:versionSchema"); - if (schemaStr == null) - { - return 0; - } - try - { - int schema = Integer.parseInt(schemaStr); - if (schema < 0) - { - throw new NumberFormatException(); - } - return schema; - } - catch (NumberFormatException e) - { - throw new AlfrescoRuntimeException("'version.schema' must be a positive integer"); - } + return getSchema(getDescriptor("sys:versionSchema")); } /* (non-Javadoc) @@ -618,7 +689,7 @@ public class DescriptorServiceImpl implements DescriptorService, ApplicationList /** * Server Descriptor whose meta-data is retrieved from run-time environment */ - private class ServerDescriptor implements Descriptor + private class ServerDescriptor extends BaseDescriptor { /* (non-Javadoc) * @see org.alfresco.service.descriptor.Descriptor#getVersionMajor() @@ -651,19 +722,13 @@ public class DescriptorServiceImpl implements DescriptorService, ApplicationList { return serverProperties.getProperty("version.label"); } - + /* (non-Javadoc) - * @see org.alfresco.service.descriptor.Descriptor#getVersion() + * @see org.alfresco.service.descriptor.Descriptor#getVersionBuild() */ - public String getVersion() + public String getVersionBuild() { - String version = getVersionMajor() + "." + getVersionMinor() + "." + getVersionRevision(); - String label = getVersionLabel(); - if (label != null && label.length() > 0) - { - version += " (" + label + ")"; - } - return version; + return serverProperties.getProperty("version.build"); } /* (non-Javadoc) @@ -680,24 +745,7 @@ public class DescriptorServiceImpl implements DescriptorService, ApplicationList */ public int getSchema() { - String schemaStr = serverProperties.getProperty("version.schema"); - if (schemaStr == null) - { - return 0; - } - try - { - int schema = Integer.parseInt(schemaStr); - if (schema < 0) - { - throw new NumberFormatException(); - } - return schema; - } - catch (NumberFormatException e) - { - throw new AlfrescoRuntimeException("'version.schema' must be a positive integer"); - } + return getSchema(serverProperties.getProperty("version.schema")); } /* (non-Javadoc) diff --git a/source/java/org/alfresco/service/descriptor/Descriptor.java b/source/java/org/alfresco/service/descriptor/Descriptor.java index 254aaf18d2..61be552fb1 100644 --- a/source/java/org/alfresco/service/descriptor/Descriptor.java +++ b/source/java/org/alfresco/service/descriptor/Descriptor.java @@ -52,6 +52,13 @@ public interface Descriptor */ public String getVersionLabel(); + /** + * Gets the build number + * + * @return the build number i.e. build-1 + */ + public String getVersionBuild(); + /** * Gets the full version number *