diff --git a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java
index fbf5fa885d..58aeb73ce6 100644
--- a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java
+++ b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java
@@ -1638,8 +1638,10 @@ public class SchemaBootstrap extends AbstractLifecycleBean
/**
* Collate differences and validation problems with the schema with respect to an appropriate
* reference schema.
+ *
+ * @return the number of potential problems found.
*/
- private void validateSchema(String outputFileNameTemplate)
+ public int validateSchema(String outputFileNameTemplate)
{
Date startTime = new Date();
@@ -1648,7 +1650,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
{
String resourceUrl = schemaReferenceUrl.replaceAll(PLACEHOLDER_DIALECT, dialect.getClass().getName());
LogUtil.debug(logger, DEBUG_SCHEMA_COMP_NO_REF_FILE, resourceUrl);
- return;
+ return 0;
}
InputStream is = null;
@@ -1716,6 +1718,8 @@ public class SchemaBootstrap extends AbstractLifecycleBean
Date endTime = new Date();
long durationMillis = endTime.getTime() - startTime.getTime();
LogUtil.debug(logger, DEBUG_SCHEMA_COMP_TIME_TAKEN, durationMillis);
+
+ return results.size();
}
/**
diff --git a/source/java/org/alfresco/util/schemacomp/SchemaReferenceFileTest.java b/source/java/org/alfresco/util/schemacomp/SchemaReferenceFileTest.java
new file mode 100644
index 0000000000..55fbfb7c92
--- /dev/null
+++ b/source/java/org/alfresco/util/schemacomp/SchemaReferenceFileTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2005-2011 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see
+ * Schema reference files are created using the {@link DbToXML} tool. + *
+ * Note: if no reference file exists then the test will pass, this is to allow piece meal + * introduction of schmea reference files. + * + * @see DbToXML + * @author Matt Ward + */ +public class SchemaReferenceFileTest +{ + private ClassPathXmlApplicationContext ctx; + private SchemaBootstrap schemaBootstrap; + + @Before + public void setUp() throws Exception + { + ctx = (ClassPathXmlApplicationContext) ApplicationContextHelper.getApplicationContext(); + schemaBootstrap = (SchemaBootstrap) ctx.getBean("schemaBootstrap"); + } + + @After + public void tearDown() + { + ctx.close(); + } + + @Test + public void checkReferenceFile() + { + String filePrefix = getClass().getSimpleName() + "-"; + int numProblems = schemaBootstrap.validateSchema(filePrefix); + + if (numProblems > 0) + { + fail("Schema check failed with " + numProblems + + " potential problems. Do you need to generate a" + + " new schema reference file? Results are in temp file prefixed with " + filePrefix); + } + } +}