mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Merged V2.2 to HEAD
7560: Better handling of exceptions in WCM File Picker when folder or search restriction values invalid 7567: Minor fix-up of incorrectly encoded text Fixed line endings on repository.properties 7568: Fixed AR-1812: Use hibernate.default_schema to control visibility of metadata queries git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8415 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -10,6 +10,7 @@ schema.update.msg.executing_statement= Executing statement: {0}
|
|||||||
schema.update.msg.optional_statement_failed=Optional statement execution failed:\n SQL: {0}\n Error: {1}\n File: {2}\n Line: {3}
|
schema.update.msg.optional_statement_failed=Optional statement execution failed:\n SQL: {0}\n Error: {1}\n File: {2}\n Line: {3}
|
||||||
schema.update.warn.dialect_unsupported=Alfresco should not be used with database dialect {0}.
|
schema.update.warn.dialect_unsupported=Alfresco should not be used with database dialect {0}.
|
||||||
schema.update.warn.dialect_hsql=Alfresco is using the HSQL default database. Please only use this while evaluating Alfresco, it is NOT recommended for production or deployment!
|
schema.update.warn.dialect_hsql=Alfresco is using the HSQL default database. Please only use this while evaluating Alfresco, it is NOT recommended for production or deployment!
|
||||||
|
schema.update.err.found_multiple=\nMore than one Alfresco schema was found when querying the database metadata.\n Limit the database user's permissions or set the 'hibernate.default_schema' property in 'custom-hibernate-dialect.properties'.
|
||||||
schema.update.err.previous_failed=A previous schema upgrade failed. Revert to the original database before attempting the upgrade again.
|
schema.update.err.previous_failed=A previous schema upgrade failed. Revert to the original database before attempting the upgrade again.
|
||||||
schema.update.err.statement_failed=Statement execution failed:\n SQL: {0}\n Error: {1}\n File: {2}\n Line: {3}
|
schema.update.err.statement_failed=Statement execution failed:\n SQL: {0}\n Error: {1}\n File: {2}\n Line: {3}
|
||||||
schema.update.err.update_failed=Schema auto-update failed
|
schema.update.err.update_failed=Schema auto-update failed
|
||||||
|
@@ -52,7 +52,7 @@ system.bootstrap.config_check.strict=true
|
|||||||
|
|
||||||
# Server Max Users - limit number of users with non-expired tickets
|
# Server Max Users - limit number of users with non-expired tickets
|
||||||
# note:
|
# note:
|
||||||
# -1 allows any number of users,<EFBFBD>assuming not in single-user mode
|
# -1 allows any number of users, assuming not in single-user mode
|
||||||
# 0 prevents further logins, including the ability to enter single-user mode
|
# 0 prevents further logins, including the ability to enter single-user mode
|
||||||
server.maxusers=-1
|
server.maxusers=-1
|
||||||
|
|
||||||
|
@@ -42,7 +42,6 @@ import java.util.List;
|
|||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.i18n.I18NUtil;
|
|
||||||
import org.alfresco.repo.admin.patch.impl.SchemaUpgradeScriptPatch;
|
import org.alfresco.repo.admin.patch.impl.SchemaUpgradeScriptPatch;
|
||||||
import org.alfresco.repo.content.filestore.FileContentWriter;
|
import org.alfresco.repo.content.filestore.FileContentWriter;
|
||||||
import org.alfresco.service.ServiceRegistry;
|
import org.alfresco.service.ServiceRegistry;
|
||||||
@@ -95,6 +94,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
|
|||||||
private static final String MSG_OPTIONAL_STATEMENT_FAILED = "schema.update.msg.optional_statement_failed";
|
private static final String MSG_OPTIONAL_STATEMENT_FAILED = "schema.update.msg.optional_statement_failed";
|
||||||
private static final String WARN_DIALECT_UNSUPPORTED = "schema.update.warn.dialect_unsupported";
|
private static final String WARN_DIALECT_UNSUPPORTED = "schema.update.warn.dialect_unsupported";
|
||||||
private static final String WARN_DIALECT_HSQL = "schema.update.warn.dialect_hsql";
|
private static final String WARN_DIALECT_HSQL = "schema.update.warn.dialect_hsql";
|
||||||
|
private static final String ERR_MULTIPLE_SCHEMAS = "schema.update.err.found_multiple";
|
||||||
private static final String ERR_PREVIOUS_FAILED_BOOTSTRAP = "schema.update.err.previous_failed";
|
private static final String ERR_PREVIOUS_FAILED_BOOTSTRAP = "schema.update.err.previous_failed";
|
||||||
private static final String ERR_STATEMENT_FAILED = "schema.update.err.statement_failed";
|
private static final String ERR_STATEMENT_FAILED = "schema.update.err.statement_failed";
|
||||||
private static final String ERR_UPDATE_FAILED = "schema.update.err.update_failed";
|
private static final String ERR_UPDATE_FAILED = "schema.update.err.update_failed";
|
||||||
@@ -230,30 +230,60 @@ public class SchemaBootstrap extends AbstractLifecycleBean
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Count applied patches. This fails if multiple applied patch tables are found,
|
||||||
|
* which normally indicates that the schema view needs to be limited.
|
||||||
|
*
|
||||||
|
* @param cfg The Hibernate config
|
||||||
|
* @param connection a valid database connection
|
||||||
* @return Returns the number of applied patches
|
* @return Returns the number of applied patches
|
||||||
|
* @throws NoSchemaException if the table of applied patches can't be found
|
||||||
*/
|
*/
|
||||||
private int countAppliedPatches(Connection connection) throws Exception
|
private int countAppliedPatches(Configuration cfg, Connection connection) throws Exception
|
||||||
{
|
{
|
||||||
|
String defaultSchema = cfg.getProperty("hibernate.default_schema");
|
||||||
|
if (defaultSchema != null && defaultSchema.length() == 0)
|
||||||
|
{
|
||||||
|
defaultSchema = null;
|
||||||
|
}
|
||||||
|
String defaultCatalog = cfg.getProperty("hibernate.default_catalog");
|
||||||
|
if (defaultCatalog != null && defaultCatalog.length() == 0)
|
||||||
|
{
|
||||||
|
defaultCatalog = null;
|
||||||
|
}
|
||||||
DatabaseMetaData dbMetadata = connection.getMetaData();
|
DatabaseMetaData dbMetadata = connection.getMetaData();
|
||||||
|
|
||||||
ResultSet tableRs = dbMetadata.getTables(null, null, "%", null);
|
ResultSet tableRs = dbMetadata.getTables(defaultCatalog, defaultSchema, "%", null);
|
||||||
boolean newPatchTable = false;
|
boolean newPatchTable = false;
|
||||||
boolean oldPatchTable = false;
|
boolean oldPatchTable = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
boolean multipleSchemas = false;
|
||||||
while (tableRs.next())
|
while (tableRs.next())
|
||||||
{
|
{
|
||||||
String tableName = tableRs.getString("TABLE_NAME");
|
String tableName = tableRs.getString("TABLE_NAME");
|
||||||
if (tableName.equalsIgnoreCase("applied_patch"))
|
if (tableName.equalsIgnoreCase("applied_patch"))
|
||||||
{
|
{
|
||||||
|
if (oldPatchTable || newPatchTable)
|
||||||
|
{
|
||||||
|
// Found earlier
|
||||||
|
multipleSchemas = true;
|
||||||
|
}
|
||||||
oldPatchTable = true;
|
oldPatchTable = true;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
else if (tableName.equalsIgnoreCase("alf_applied_patch"))
|
else if (tableName.equalsIgnoreCase("alf_applied_patch"))
|
||||||
{
|
{
|
||||||
newPatchTable = true;
|
if (oldPatchTable || newPatchTable)
|
||||||
break;
|
{
|
||||||
|
// Found earlier
|
||||||
|
multipleSchemas = true;
|
||||||
}
|
}
|
||||||
|
newPatchTable = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// We go through all the tables so that multiple visible schemas are detected
|
||||||
|
if (multipleSchemas)
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException(ERR_MULTIPLE_SCHEMAS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@@ -271,6 +301,11 @@ public class SchemaBootstrap extends AbstractLifecycleBean
|
|||||||
int count = rs.getInt(1);
|
int count = rs.getInt(1);
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
catch (SQLException e)
|
||||||
|
{
|
||||||
|
// This should work at least and is probably an indication of the user viewing multiple schemas
|
||||||
|
throw new AlfrescoRuntimeException(ERR_MULTIPLE_SCHEMAS);
|
||||||
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
try { stmt.close(); } catch (Throwable e) {}
|
try { stmt.close(); } catch (Throwable e) {}
|
||||||
@@ -424,7 +459,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
|
|||||||
boolean create = false;
|
boolean create = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
countAppliedPatches(connection);
|
countAppliedPatches(cfg, connection);
|
||||||
}
|
}
|
||||||
catch (NoSchemaException e)
|
catch (NoSchemaException e)
|
||||||
{
|
{
|
||||||
@@ -501,7 +536,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
|
|||||||
boolean apply) throws Exception
|
boolean apply) throws Exception
|
||||||
{
|
{
|
||||||
// first check if there have been any applied patches
|
// first check if there have been any applied patches
|
||||||
int appliedPatchCount = countAppliedPatches(connection);
|
int appliedPatchCount = countAppliedPatches(cfg, connection);
|
||||||
if (appliedPatchCount == 0)
|
if (appliedPatchCount == 0)
|
||||||
{
|
{
|
||||||
// This is a new schema, so upgrade scripts are irrelevant
|
// This is a new schema, so upgrade scripts are irrelevant
|
||||||
@@ -747,7 +782,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
|
|||||||
}
|
}
|
||||||
if (dialectClazz.equals(HSQLDialect.class))
|
if (dialectClazz.equals(HSQLDialect.class))
|
||||||
{
|
{
|
||||||
logger.info(I18NUtil.getMessage(WARN_DIALECT_HSQL));
|
LogUtil.info(logger, WARN_DIALECT_HSQL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure that our static connection provider is used
|
// Ensure that our static connection provider is used
|
||||||
|
Reference in New Issue
Block a user