mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V3.4-BUG-FIX to HEAD
28741: Merged DEV/TEMPORARY to V3.4-BUG-FIX 28740: ALF-8993: IMAP favourite star is not visible if imap is enabled via JMX The org.alfresco.repo.imap.ImapService interface was extended to expose getEnabled() and made the webscript to call ImapService.getEnabled(). 28742: ALF-8801: Broken French strings 28745: ALF-6470: French string correction 28746: ALF-5607: Installer deletion of directories on installation cancel. 28756: ALF-9211: Install fails when path selected that contains accents or double byte chars (e.g. Japanese) - Fix from Bitrock - Not internationalized yet 28758: Merged DEV to V3.4-BUG-FIX 28743: ALF-8029: JSON returned by some audit queries not valide Quote user in query.get.json.ftl if it has value. 28761: Merged DEV to V3.4-BUG-FIX 28739: ALF-9123 : "Content URL conversion failed" error being thrown Note: Actually changed the implementation but the principle remains. In future, use a thread-safe boolean e.g. AtomicBoolean to carry data around about the running state; don't use a class member variable as it can be manipulated by competing threads, etc. 28762: Fix ALF-9376: Typo in Version2Model 28763: Merged DEV to V3.4-BUG-FIX 28754: ALF-8461: Invalid property cm:source (cm:copiedFrom) causes not be become sys:incomplete Configurable property called 'propertiesToIgnore' was added to IncompleteNodeTagger,and configured to ignore "cm:source". Merge note: I fixed the stored 'propertiesToIgnore' to be a Set<QName> to prevent unnecessary conversions 28764: ALF-9036: Fix NPE on XForm session timeout 28765: ALF-9211: Externalized new installer message - Needs localizing 28789: ALF-9407: Single quote characters in messages containing {} need to be doubled git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28793 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# AVM related messages
|
||||
|
||||
expiredcontent.workflow.title=Contenuto scaduto in ''{0}''
|
||||
avmlockservice.locked=Non si dispone dell'accesso a ''{0}''; attualmente \u00e8 bloccato dall'utente ''{1}''.
|
||||
avmlockservice.locked=Non si dispone dell''accesso a ''{0}''; attualmente \u00e8 bloccato dall''utente ''{1}''.
|
||||
testserver.taken=Il server di test ''{0}'' selezionato \u00e8 stato assegnato a un altro utente, se possibile, selezionare un server diverso e riprovare.
|
||||
|
||||
avm.cycle.create=Verrebbe creato un ciclo.
|
||||
|
@@ -23,4 +23,4 @@ metadata.extraction.err.type_conversion=Metadata extraction failed because an ex
|
||||
|
||||
transform.err.format_or_password=Failed to convert content, possibly due to an incorrectly formatted or password protected file.
|
||||
|
||||
content.routing.err.invalid_default_store=The 'defaultStoreName', ''{0}'' does not refer to a store in 'storesByName' ({1}).
|
||||
content.routing.err.invalid_default_store=The ''defaultStoreName'', ''{0}'' does not refer to a store in ''storesByName'' ({1}).
|
@@ -23,4 +23,4 @@ metadata.extraction.err.type_conversion=Metadata extraction failed because an ex
|
||||
|
||||
transform.err.format_or_password=Failed to convert content, possibly due to an incorrectly formatted or password protected file.
|
||||
|
||||
content.routing.err.invalid_default_store=The 'defaultStoreName', ''{0}'' does not refer to a store in 'storesByName' ({1}).
|
||||
content.routing.err.invalid_default_store=The ''defaultStoreName'', ''{0}'' does not refer to a store in ''storesByName'' ({1}).
|
||||
|
@@ -23,4 +23,4 @@ metadata.extraction.err.type_conversion=Metadata extraction failed because an ex
|
||||
|
||||
transform.err.format_or_password=Failed to convert content, possibly due to an incorrectly formatted or password protected file.
|
||||
|
||||
content.routing.err.invalid_default_store=The 'defaultStoreName', ''{0}'' does not refer to a store in 'storesByName' ({1}).
|
||||
content.routing.err.invalid_default_store=The ''defaultStoreName'', ''{0}'' does not refer to a store in ''storesByName'' ({1}).
|
||||
|
@@ -23,4 +23,4 @@ metadata.extraction.err.type_conversion=Metadata extraction failed because an ex
|
||||
|
||||
transform.err.format_or_password=Failed to convert content, possibly due to an incorrectly formatted or password protected file.
|
||||
|
||||
content.routing.err.invalid_default_store=The 'defaultStoreName', ''{0}'' does not refer to a store in 'storesByName' ({1}).
|
||||
content.routing.err.invalid_default_store=The ''defaultStoreName'', ''{0}'' does not refer to a store in ''storesByName'' ({1}).
|
||||
|
@@ -23,4 +23,4 @@ metadata.extraction.err.type_conversion=Metadata extraction failed because an ex
|
||||
|
||||
transform.err.format_or_password=Failed to convert content, possibly due to an incorrectly formatted or password protected file.
|
||||
|
||||
content.routing.err.invalid_default_store=The 'defaultStoreName', ''{0}'' does not refer to a store in 'storesByName' ({1}).
|
||||
content.routing.err.invalid_default_store=The ''defaultStoreName'', ''{0}'' does not refer to a store in ''storesByName'' ({1}).
|
||||
|
@@ -23,4 +23,4 @@ metadata.extraction.err.type_conversion=Metadata extraction failed because an ex
|
||||
|
||||
transform.err.format_or_password=Failed to convert content, possibly due to an incorrectly formatted or password protected file.
|
||||
|
||||
content.routing.err.invalid_default_store=The 'defaultStoreName', ''{0}'' does not refer to a store in 'storesByName' ({1}).
|
||||
content.routing.err.invalid_default_store=The ''defaultStoreName'', ''{0}'' does not refer to a store in ''storesByName'' ({1}).
|
||||
|
@@ -5,19 +5,19 @@ email.server.err.sender_blocked=''{0}'' has been denied access.
|
||||
email.server.err.inbound_mail_disabled=The Alfresco server is not configured to accept inbound emails.
|
||||
email.server.err.access_denied=''{0}'' has been denied access to ''{1}''.
|
||||
email.server.err.invalid_subject=The subject line must be a valid file name.
|
||||
email.server.err.unknown_source_address=The 'from' email address was not recognised: {0}.
|
||||
email.server.err.unknown_source_address=The ''from'' email address was not recognised: {0}.
|
||||
email.server.err.user_not_email_contributor=The user ''{0}'' in not in the email contributor group.
|
||||
email.server.err.no_email_contributor_group=The Email Contributor Group doesn't exist.
|
||||
email.server.err.invalid_node_address=The email address ''{0}'' does not reference a valid accessible node.
|
||||
email.server.err.handler_not_found=Email message handler was not found for node type ''{0}''.
|
||||
email.server.err.mail_read_error=An error occurred while reading the mail message: {0}
|
||||
email.server.err.failed_to_create_mime_message=Failed to create MIME message from input stream: {0}
|
||||
email.server.err.extracting_from_address=Failed to extract the 'from' address: {0}
|
||||
email.server.err.extracting_from_address=Failed to extract the ''from'' address: {0}
|
||||
email.server.err.no_from_address=The message has no 'from' address.
|
||||
email.server.err.extracting_to_address=Failed to extract the 'to' address: {0}
|
||||
email.server.err.extracting_to_address=Failed to extract the ''to'' address: {0}
|
||||
email.server.err.no_to_address=The message has no 'to' address.
|
||||
email.server.err.extracting_subject=Failed to extract the message subject: {0}
|
||||
email.server.err.extracting_sent_date=Failed to extract the 'sent on' date: {0}
|
||||
email.server.err.extracting_sent_date=Failed to extract the ''sent on'' date: {0}
|
||||
email.server.err.parse_message=Failed to parse the email message: {0}
|
||||
email.server.err.usupported_encoding=Encoding ''{0}'' is not supported
|
||||
email.server.err.failed_to_read_content_stream=Failed to read the message part content: {0}
|
||||
|
@@ -5,19 +5,19 @@ email.server.err.sender_blocked=A ''{0}'' le fue denegado el acceso.
|
||||
email.server.err.inbound_mail_disabled=El servidor Alfresco no est\u00e1 configurado para aceptar correos entrantes.
|
||||
email.server.err.access_denied=El acceso a ''{1}'' le fue denegado a ''{0}''.
|
||||
email.server.err.invalid_subject=La l\u00ednea de asunto debe ser un nombre de fichero v\u00e1lido.
|
||||
email.server.err.unknown_source_address=La direcci\u00f3n de correo electr\u00f3nico 'desde' no fue reconocida: {0}.
|
||||
email.server.err.unknown_source_address=La direcci\u00f3n de correo electr\u00f3nico ''desde'' no fue reconocida: {0}.
|
||||
email.server.err.user_not_email_contributor=El usuario ''{0}'' no est\u00e1 en el grupo contribuidor de correos.
|
||||
email.server.err.no_email_contributor_group=El grupo Contribuidor de correos no existe.
|
||||
email.server.err.invalid_node_address=La direcci\u00f3n correo electr\u00f3nico ''{0}'' no hace referencia a un nodo de acceso v\u00e1lido.
|
||||
email.server.err.handler_not_found=No se ha encontrado el controlador de mensajes de correo para el tipo de nodo ''{0}''.
|
||||
email.server.err.mail_read_error=Se produjo un error al leer el mensaje de correo: {0}
|
||||
email.server.err.failed_to_create_mime_message=No se pudo crear el mensaje MIME desde la corriente de entrada: {0}
|
||||
email.server.err.extracting_from_address=No se pudo extraer la direcci\u00f3n 'desde': {0}
|
||||
email.server.err.extracting_from_address=No se pudo extraer la direcci\u00f3n ''desde'': {0}
|
||||
email.server.err.no_from_address=El mensaje no tiene direcci\u00f3n 'desde'.
|
||||
email.server.err.extracting_to_address=No se pudo extraer la direcci\u00f3n 'a': {0}
|
||||
email.server.err.extracting_to_address=No se pudo extraer la direcci\u00f3n ''a'': {0}
|
||||
email.server.err.no_to_address=El mensaje no tiene direcci\u00f3n 'a'.
|
||||
email.server.err.extracting_subject=No se pudo extraer el asunto del mensaje: {0}
|
||||
email.server.err.extracting_sent_date=No se pudo extraer la fecha 'enviado el': {0}
|
||||
email.server.err.extracting_sent_date=No se pudo extraer la fecha ''enviado el'': {0}
|
||||
email.server.err.parse_message=No se pudo analizar sint\u00e1cticamente el mensaje correo: {0}
|
||||
email.server.err.usupported_encoding=Codificaci\u00f3n ''{0}'' no soportada
|
||||
email.server.err.failed_to_read_content_stream=No se pudo leer el contenido de la parte de mensaje: {0}
|
||||
|
@@ -6,9 +6,9 @@ email.server.err.inbound_mail_disabled=La configuration du serveur Alfresco ne p
|
||||
email.server.err.access_denied=''{0}'' s''est vu refuser l''acc\u00e8s \u00e0 ''{1}''.
|
||||
email.server.err.invalid_subject=La ligne d'objet doit \u00eatre un nom de fichier valide.
|
||||
email.server.err.unknown_source_address=L''adresse E-mail ''from'' n''est pas reconnue\u00a0: {0}.
|
||||
email.server.err.user_not_email_contributor=L'utilisateur ''{0}'' ne fait pas partie du groupe des contributeurs par E-mail.
|
||||
email.server.err.user_not_email_contributor=L''utilisateur ''{0}'' ne fait pas partie du groupe des contributeurs par E-mail.
|
||||
email.server.err.no_email_contributor_group=Le groupe de contributeurs par E-mail n'existe pas.
|
||||
email.server.err.invalid_node_address=L'adresse E-mail ''{0}'' ne fait pas r\u00e9f\u00e9rence \u00e0 un n\u009cud accessible valide.
|
||||
email.server.err.invalid_node_address=L''adresse E-mail ''{0}'' ne fait pas r\u00e9f\u00e9rence \u00e0 un n\u009cud accessible valide.
|
||||
email.server.err.handler_not_found=Le gestionnaire des E-mails est introuvable pour le type de n\u009cud ''{0}''.
|
||||
email.server.err.mail_read_error=Une erreur s''est produite lors de la lecture de l''E-mail\u00a0: {0}
|
||||
email.server.err.failed_to_create_mime_message=Impossible de cr\u00e9er le message\u00a0MIME \u00e0 partir du flux en entr\u00e9e\u00a0: {0}
|
||||
|
@@ -14,7 +14,7 @@ email.server.err.mail_read_error=Si \u00e8 verificato un errore durante la lettu
|
||||
email.server.err.failed_to_create_mime_message=Impossibile creare il messaggio MIME dal flusso di input: {0}
|
||||
email.server.err.extracting_from_address=Impossibile estrarre l''indirizzo del mittente: {0}
|
||||
email.server.err.no_from_address=Il messaggio non contiene un indirizzo del mittente:
|
||||
email.server.err.extracting_to_address=Impossibile estrarre l'indirizzo del destinatario: {0}
|
||||
email.server.err.extracting_to_address=Impossibile estrarre l''indirizzo del destinatario: {0}
|
||||
email.server.err.no_to_address=Il messaggio non contiene un indirizzo del destinatario.
|
||||
email.server.err.extracting_subject=Impossibile estrarre l''oggetto del messaggio: {0}
|
||||
email.server.err.extracting_sent_date=Impossibile estrarre la data di invio: {0}
|
||||
|
@@ -5,19 +5,19 @@ email.server.err.sender_blocked=''{0}''\u306e\u30a2\u30af\u30bb\u30b9\u304c\u62d
|
||||
email.server.err.inbound_mail_disabled=Alfresco\u30b5\u30fc\u30d0\u304c\u7740\u4fe1E\u30e1\u30fc\u30eb\u3092\u53d7\u3051\u5165\u308c\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
|
||||
email.server.err.access_denied=''{0}''\u306e''{1}''\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002
|
||||
email.server.err.invalid_subject=\u4ef6\u540d\u884c\u306f\u6709\u52b9\u306a\u30d5\u30a1\u30a4\u30eb\u540d\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
|
||||
email.server.err.unknown_source_address='\u9001\u4fe1\u5143'E\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304c\u8a8d\u8b58\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f: {0}\u3002
|
||||
email.server.err.unknown_source_address=''\u9001\u4fe1\u5143''E\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304c\u8a8d\u8b58\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f: {0}\u3002
|
||||
email.server.err.user_not_email_contributor=\u30e6\u30fc\u30b6''{0}''\u306fE\u30e1\u30fc\u30eb\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30bf\u30b0\u30eb\u30fc\u30d7\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002
|
||||
email.server.err.no_email_contributor_group=E\u30e1\u30fc\u30eb\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30bf\u30b0\u30eb\u30fc\u30d7\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
|
||||
email.server.err.invalid_node_address=E\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9''{0}''\u306f\u6709\u52b9\u306a\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u30ce\u30fc\u30c9\u3092\u53c2\u7167\u3057\u3066\u3044\u307e\u305b\u3093\u3002
|
||||
email.server.err.handler_not_found=\u30ce\u30fc\u30c9\u30bf\u30a4\u30d7''{0}''\u306eE\u30e1\u30fc\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u30cf\u30f3\u30c9\u30e9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
|
||||
email.server.err.mail_read_error=E\u30e1\u30fc\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8aad\u53d6\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}
|
||||
email.server.err.failed_to_create_mime_message=\u5165\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u304b\u3089MIME\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u751f\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
|
||||
email.server.err.extracting_from_address='\u9001\u4fe1\u5143'\u30a2\u30c9\u30ec\u30b9\u306e\u62bd\u51fa\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
|
||||
email.server.err.extracting_from_address=''\u9001\u4fe1\u5143''\u30a2\u30c9\u30ec\u30b9\u306e\u62bd\u51fa\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
|
||||
email.server.err.no_from_address=\u30e1\u30c3\u30bb\u30fc\u30b8\u306b'\u9001\u4fe1\u5143'\u30a2\u30c9\u30ec\u30b9\u304c\u3042\u308a\u307e\u305b\u3093\u3002
|
||||
email.server.err.extracting_to_address=\u5b9b\u5148'\u30a2\u30c9\u30ec\u30b9\u306e\u62bd\u51fa\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
|
||||
email.server.err.extracting_to_address=\u5b9b\u5148''\u30a2\u30c9\u30ec\u30b9\u306e\u62bd\u51fa\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
|
||||
email.server.err.no_to_address=\u30e1\u30c3\u30bb\u30fc\u30b8\u306b'\u5b9b\u5148'\u30a2\u30c9\u30ec\u30b9\u304c\u3042\u308a\u307e\u305b\u3093\u3002
|
||||
email.server.err.extracting_subject=\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u4ef6\u540d\u306e\u62bd\u51fa\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
|
||||
email.server.err.extracting_sent_date='\u9001\u4fe1\u65e5'\u306e\u65e5\u4ed8\u306e\u62bd\u51fa\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
|
||||
email.server.err.extracting_sent_date=''\u9001\u4fe1\u65e5''\u306e\u65e5\u4ed8\u306e\u62bd\u51fa\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
|
||||
email.server.err.parse_message=E\u30e1\u30fc\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u30d1\u30fc\u30b9\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
|
||||
email.server.err.usupported_encoding=\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0''{0}''\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093
|
||||
email.server.err.failed_to_read_content_stream=\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u8aad\u8fbc\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
|
||||
|
@@ -8,7 +8,7 @@ invitation.error.invalid_inviteId_format="Invitation Id not valid format, valid
|
||||
invitation.invite.already_member="The user, {0} is already a member of {1} and cannot be invited again"
|
||||
invitation.cancel.not_site_manager="Current user, {0}, cannot cancel invitation: {1} because they are not a Site Manager for site: {2}"
|
||||
invitation.invite.not_site_manager="Current user, {0}, is not a Site Manager for site: {1}"
|
||||
invitation.invite.unable_generate_id="Unable to generate a user name for invitee, which doesn't already belong to someone else firstName:{0} lastName:{1} email:{2}"
|
||||
invitation.invite.unable_generate_id="Unable to generate a user name for invitee, which doesn''t already belong to someone else firstName:{0} lastName:{1} email:{2}"
|
||||
invitation.invite.already_finished="Invitation, {0} has already been accepted, cancelled or rejected"
|
||||
invitation.invite.authentication_chain="Authentication chain does not allow creation of new accounts"
|
||||
|
||||
|
@@ -41,11 +41,11 @@ patch.savedSearchesFolder.result.exists=The saved searches folder already exists
|
||||
patch.savedSearchesFolder.result.created=The saved searches folder was successfully created: {0}
|
||||
|
||||
patch.savedSearchesPermission.description=Sets required permissions on 'Saved Searches' folder.
|
||||
patch.savedSearchesPermission.result.applied=Granted CONTRIBUTOR role to EVERYONE on 'Saved Searches' folder: {0}.
|
||||
patch.savedSearchesPermission.result.applied=Granted CONTRIBUTOR role to EVERYONE on ''Saved Searches'' folder: {0}.
|
||||
patch.savedSearchesPermission.err.not_found='Saved Searches' folder could not be found.
|
||||
|
||||
patch.updatePermissionData.description=Update permissions from 'folder' to 'cmobject' [JIRA: AR-344].
|
||||
patch.updatePermissionData.result=Changed {0} 'folder' access control entries to 'cmobject'.
|
||||
patch.updatePermissionData.result=Changed {0} ''folder'' access control entries to ''cmobject''.
|
||||
|
||||
patch.authoritiesFolder.description=Ensures the existence of the user authorities folder [JIRA: AR-497].
|
||||
|
||||
@@ -58,11 +58,11 @@ patch.fixNodeSerializableValues.description=Ensure that property values are not
|
||||
patch.fixNodeSerializableValues.result=Fixed {0} node property serialized values
|
||||
|
||||
patch.updateGuestPermission.description=Rename guest permission from 'Guest' to 'Consumer'
|
||||
patch.updateGuestPermission.result=Changed {0} 'Guest' access control entries to 'Consumer'.
|
||||
patch.updateGuestPermission.result=Changed {0} ''Guest'' access control entries to ''Consumer''.
|
||||
|
||||
patch.categoryRootPermission.description=Sets required permissions on 'Category Root' folder.
|
||||
patch.categoryRootPermission.result=Granted CONSUMER role to GUEST on 'Category Root' folder: {0}.
|
||||
patch.categoryRootPermission.err.not_found='Category Root' folder ({0}) could not be found.
|
||||
patch.categoryRootPermission.result=Granted CONSUMER role to GUEST on ''Category Root'' folder: {0}.
|
||||
patch.categoryRootPermission.err.not_found=''Category Root'' folder ({0}) could not be found.
|
||||
|
||||
patch.guestPersonPermission.description=Change Guest Person permission from 'Consumer' to 'Read'
|
||||
patch.guestPersonPermission.result=Updated Guest Person permission from 'Consumer' to 'Read'
|
||||
@@ -71,7 +71,7 @@ patch.spacesRootPermission.description=Change Spaces store root permission from
|
||||
patch.spacesRootPermission.result=Updated Spaces store root permission from 'Consumer' to 'Read'
|
||||
|
||||
patch.contentPermission.description=Update permission entries from 'cm:content' to 'sys:base'.
|
||||
patch.contentPermission.result=Changed {0} 'cm:content' access control entries to 'sys:base'.
|
||||
patch.contentPermission.result=Changed {0} ''cm:content'' access control entries to ''sys:base''.
|
||||
|
||||
patch.forumsIcons.description=Updates forums icon references
|
||||
patch.forumsIcons.result=Updated {0} icon references
|
||||
@@ -170,7 +170,7 @@ patch.userAndPersonUserNamesAsIdentifiers.description=Reindex usr:user and cm:pe
|
||||
patch.userAndPersonUserNamesAsIdentifiers.result=Reindexed user:user and cm:person uids as identifiers
|
||||
|
||||
patch.contentFormFolderType.description=Update WCM Content Form folder type.
|
||||
patch.contentFormFolderType.result=Updated {0} WCM Content Form objects to 'wcm:formfolder' type.
|
||||
patch.contentFormFolderType.result=Updated {0} WCM Content Form objects to ''wcm:formfolder'' type.
|
||||
|
||||
patch.groupNamesAsIdentifiers.description=Reindex usr:authorityContainer gids as identifiers
|
||||
patch.groupNamesAsIdentifiers.result=Reindexed usr:authorityContainer with identifiers
|
||||
@@ -235,7 +235,7 @@ patch.deploymentMigration.reportMigrated=Deployment report for ''{0}'' from web
|
||||
patch.deploymentMigration.result=Deployment data has been migrated.
|
||||
|
||||
patch.updateAvmPermissionData.description=Update avm permissions from 'webfolder' to 'cmobject'.
|
||||
patch.updateAvmPermissionData.result=Changed {0} 'webfolder' access control entries to 'cmobject'.
|
||||
patch.updateAvmPermissionData.result=Changed {0} ''webfolder'' access control entries to ''cmobject''.
|
||||
|
||||
patch.updateAvmPermissions.description=Update ACLs on all avm objects to the new 2.2 permission model
|
||||
patch.updateAvmPermissions.result=Updated ACLs. Created {0} defining and {1} layered ACLs.
|
||||
@@ -319,7 +319,7 @@ patch.fixNameCrcValues.associationTypeNotDefined=Association type ''{0}'' has no
|
||||
patch.fixNameCrcValues.associationTypeNotChild=Association type ''{0}'' does not represent a child association but is used as one; for child association ID {1}.
|
||||
|
||||
patch.personUsagePatch.description=Add person 'cm:sizeCurrent' property (if missing).
|
||||
patch.personUsagePatch.result1=Added 'cm:sizeCurrent' property to {0} people that were missing this property.
|
||||
patch.personUsagePatch.result1=Added ''cm:sizeCurrent'' property to {0} people that were missing this property.
|
||||
patch.personUsagePatch.result2=No people were missing the 'cm:sizeCurrent' property.
|
||||
|
||||
patch.redeployNominatedInvitationProcessWithPropsForShare.description=Redeploy nominated invitation workflow
|
||||
@@ -353,7 +353,7 @@ patch.convertContentUrls.store.done=This job is complete. Deactivate the schedu
|
||||
|
||||
patch.fixAuthoritiesCrcValues.description=Fixes authority CRC32 values to match UTF-8 encoding.
|
||||
patch.fixAuthoritiesCrcValues.result=Fixed CRC32 values for UTF-8 encoding for {0} authorities. See file {1} for details.
|
||||
patch.fixAuthoritiesCrcValues.fixed=Updated CRC32 values for authority '{0}'.
|
||||
patch.fixAuthoritiesCrcValues.fixed=Updated CRC32 values for authority ''{0}''.
|
||||
patch.fixAuthoritiesCrcValues.unableToChange=Failed to update the CRC32 value for authority: \n Authority: {0} \n Error: {1}
|
||||
|
||||
patch.updateMimetypes1.description=Fix mimetypes for Excel and Powerpoint.
|
||||
|
@@ -24,7 +24,7 @@ schema.update.err.update_failed=Schema auto-update failed
|
||||
schema.update.err.validation_failed=Schema validation failed
|
||||
schema.update.err.update_script_not_run=The following schema upgrade script needs to be executed manually: {0}
|
||||
schema.update.err.script_not_found=The schema script could not be found at location {0}
|
||||
schema.update.err.statement_include_before_sql=Script include '--INCLUDE:' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with '--ASSIGN:' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format '--ASSIGN:x=col' where 'x' is the variable to assign to and 'col' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with ';' (line {0} of {1}).
|
||||
schema.update.err.statement_include_before_sql=Script include ''--INCLUDE:'' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with ''--ASSIGN:'' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format ''--ASSIGN:x=col'' where ''x'' is the variable to assign to and ''col'' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with '';'' (line {0} of {1}).
|
||||
|
@@ -24,6 +24,6 @@ schema.update.err.update_failed=Schema auto-update failed
|
||||
schema.update.err.validation_failed=Schema validation failed
|
||||
schema.update.err.update_script_not_run=The following schema upgrade script needs to be executed manually: {0}
|
||||
schema.update.err.script_not_found=The schema script could not be found at location {0}
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with '--ASSIGN:' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format '--ASSIGN:x=col' where 'x' is the variable to assign to and 'col' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with ';' (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with ''--ASSIGN:'' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format ''--ASSIGN:x=col'' where ''x'' is the variable to assign to and ''col'' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with '';'' (line {0} of {1}).
|
||||
|
@@ -24,6 +24,6 @@ schema.update.err.update_failed=Schema auto-update failed
|
||||
schema.update.err.validation_failed=Schema validation failed
|
||||
schema.update.err.update_script_not_run=The following schema upgrade script needs to be executed manually: {0}
|
||||
schema.update.err.script_not_found=The schema script could not be found at location {0}
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with '--ASSIGN:' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format '--ASSIGN:x=col' where 'x' is the variable to assign to and 'col' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with ';' (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with ''--ASSIGN:'' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format ''--ASSIGN:x=col'' where ''x'' is the variable to assign to and ''col'' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with '';'' (line {0} of {1}).
|
||||
|
@@ -24,6 +24,6 @@ schema.update.err.update_failed=Schema auto-update failed
|
||||
schema.update.err.validation_failed=Schema validation failed
|
||||
schema.update.err.update_script_not_run=The following schema upgrade script needs to be executed manually: {0}
|
||||
schema.update.err.script_not_found=The schema script could not be found at location {0}
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with '--ASSIGN:' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format '--ASSIGN:x=col' where 'x' is the variable to assign to and 'col' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with ';' (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with ''--ASSIGN:'' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format ''--ASSIGN:x=col'' where ''x'' is the variable to assign to and ''col'' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with '';'' (line {0} of {1}).
|
||||
|
@@ -24,6 +24,6 @@ schema.update.err.update_failed=Schema auto-update failed
|
||||
schema.update.err.validation_failed=Schema validation failed
|
||||
schema.update.err.update_script_not_run=The following schema upgrade script needs to be executed manually: {0}
|
||||
schema.update.err.script_not_found=The schema script could not be found at location {0}
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with '--ASSIGN:' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format '--ASSIGN:x=col' where 'x' is the variable to assign to and 'col' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with ';' (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with ''--ASSIGN:'' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format ''--ASSIGN:x=col'' where ''x'' is the variable to assign to and ''col'' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with '';'' (line {0} of {1}).
|
||||
|
@@ -24,6 +24,6 @@ schema.update.err.update_failed=Schema auto-update failed
|
||||
schema.update.err.validation_failed=Schema validation failed
|
||||
schema.update.err.update_script_not_run=The following schema upgrade script needs to be executed manually: {0}
|
||||
schema.update.err.script_not_found=The schema script could not be found at location {0}
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with '--ASSIGN:' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format '--ASSIGN:x=col' where 'x' is the variable to assign to and 'col' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with ';' (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_before_sql=Variable assignment with ''--ASSIGN:'' must occur before starting the SQL statement (line {0} of {1}).
|
||||
schema.update.err.statement_var_assignment_format=Variable assignment uses format ''--ASSIGN:x=col'' where ''x'' is the variable to assign to and ''col'' is the column value to extract (line {0} of {1}).
|
||||
schema.update.err.statement_terminator=Scripts must terminate all statements with '';'' (line {0} of {1}).
|
||||
|
@@ -7,7 +7,7 @@ transfer_service.unable_to_transfer_async=Impossible de transf\u00e9rer de mani\
|
||||
transfer_service.target_exists=Impossible de cr\u00e9er une cible de transfert portant le nom {0} car une cible porte d\u00e9j\u00e0 ce nom.
|
||||
transfer_service.comms.unsupported_protocol=Protocole non pris en charge : {0}
|
||||
transfer_service.comms.unsuccessful_response=Code de r\u00e9ponse infructueuse re\u00e7u depuis le serveur cible : {0}, {1}
|
||||
transfer_service.comms.http_request_failed=Echec d'ex\u00e9cution de la requ\u00eate HTTP {0} vers la cible : {1} statut : {2}
|
||||
transfer_service.comms.http_request_failed=Echec d''ex\u00e9cution de la requ\u00eate HTTP {0} vers la cible : {1} statut : {2}
|
||||
transfer_service.incompatible_versions=Transfert impossible entre des versions incompatibles. Identifiant de transfert : {0} de : {1} vers : {2}
|
||||
transfer_service.no_nodes=Aucun noeud \u00e0 transf\u00e9rer
|
||||
transfer_service.target_not_enabled=Cible de transfert non activ\u00e9e {0}
|
||||
@@ -23,7 +23,7 @@ transfer_service.receiver.lock_folder_not_found=Impossible de rep\u00e9rer l''em
|
||||
transfer_service.receiver.temp_folder_not_found=Impossible de rep\u00e9rer l''emplacement du dossier temporaire sp\u00e9cifi\u00e9 pour le transfert {0} : {1}
|
||||
transfer_service.receiver.lock_unavailable=Le verrou de transfert a \u00e9t\u00e9 r\u00e9clam\u00e9 pour un autre transfert entrant. Impossible de d\u00e9marrer un nouveau transfert.
|
||||
transfer_service.receiver.record_folder_not_found=Dossier sp\u00e9cifi\u00e9 pour contenir les enregistrements de transfert entrant introuvable : {0}
|
||||
transfer_service.receiver.not_lock_owner=Echec de la tentative d'ex\u00e9cution de l'op\u00e9ration de transfert. Verrou non d\u00e9tenu par le transfert sp\u00e9cifi\u00e9 : {0}
|
||||
transfer_service.receiver.not_lock_owner=Echec de la tentative d''ex\u00e9cution de l''op\u00e9ration de transfert. Verrou non d\u00e9tenu par le transfert sp\u00e9cifi\u00e9 : {0}
|
||||
transfer_service.receiver.error_ending_transfer=La requ\u00eate de fin d''un transfert ({0}) a entra\u00een\u00e9 une erreur.
|
||||
transfer_service.receiver.error_staging_snapshot=Une erreur s''est produite lors de l''activation du fichier de clich\u00e9 pour le transfert {0}
|
||||
transfer_service.receiver.error_staging_content=Une erreur s''est produite lors de l''activation d''un fichier de contenu pour le transfert {0}. L''identifiant du fichier est {1}
|
||||
|
@@ -175,6 +175,11 @@
|
||||
<value>${version.store.version2Store}</value>
|
||||
</list>
|
||||
</property>
|
||||
<property name="propertiesToIgnore">
|
||||
<list>
|
||||
<value>{http://www.alfresco.org/model/content/1.0}source</value>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- node indexing for ADM -->
|
||||
|
@@ -2048,33 +2048,15 @@
|
||||
<ref bean="patch.updateDmPermissions" />
|
||||
</list>
|
||||
</property>
|
||||
<property name="registryService">
|
||||
<ref bean="registryService"/>
|
||||
</property>
|
||||
<property name="jobLockService">
|
||||
<ref bean="jobLockService"/>
|
||||
</property>
|
||||
<property name="patchDAO">
|
||||
<ref bean="patchDAO"/>
|
||||
</property>
|
||||
<property name="controlDAO">
|
||||
<ref bean="controlDAO"/>
|
||||
</property>
|
||||
<property name="contentDataDAO">
|
||||
<ref bean="contentDataDAO"/>
|
||||
</property>
|
||||
<property name="contentStore">
|
||||
<ref bean="fileContentStore"/>
|
||||
</property>
|
||||
<property name="threadCount">
|
||||
<value>${system.content.contentUrlConverter.threadCount}</value>
|
||||
</property>
|
||||
<property name="batchSize">
|
||||
<value>${system.content.contentUrlConverter.batchSize}</value>
|
||||
</property>
|
||||
<property name="runAsScheduledJob">
|
||||
<value>${system.content.contentUrlConverter.runAsScheduledJob}</value>
|
||||
</property>
|
||||
<property name="registryService" ref="registryService"/>
|
||||
<property name="jobLockService" ref="jobLockService"/>
|
||||
<property name="patchDAO" ref="patchDAO"/>
|
||||
<property name="controlDAO" ref="controlDAO"/>
|
||||
<property name="contentDataDAO" ref="contentDataDAO"/>
|
||||
<property name="contentStore" ref="fileContentStore"/>
|
||||
<property name="threadCount" value="${system.content.contentUrlConverter.threadCount}" />
|
||||
<property name="batchSize" value="${system.content.contentUrlConverter.batchSize}" />
|
||||
<property name="runAsScheduledJob" value="${system.content.contentUrlConverter.runAsScheduledJob}" />
|
||||
</bean>
|
||||
|
||||
<bean id="patch.db-V3.4-authority-unique-idx" class="org.alfresco.repo.admin.patch.impl.SchemaUpgradeScriptPatch" parent="basePatch">
|
||||
|
@@ -7,9 +7,6 @@
|
||||
<property name="service">
|
||||
<ref bean="imapService"/>
|
||||
</property>
|
||||
<property name="imapServerEnabled">
|
||||
<value>${imap.server.enabled}</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="imapServer" class="org.alfresco.repo.imap.AlfrescoImapServer">
|
||||
@@ -174,6 +171,9 @@
|
||||
<property name="mimetypeService">
|
||||
<ref bean="mimetypeService" />
|
||||
</property>
|
||||
<property name="imapServerEnabled">
|
||||
<value>${imap.server.enabled}</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- Public Imap Service -->
|
||||
|
@@ -22,6 +22,7 @@ import java.sql.Savepoint;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.repo.admin.patch.AbstractPatch;
|
||||
@@ -39,6 +40,7 @@ import org.alfresco.repo.domain.control.ControlDAO;
|
||||
import org.alfresco.repo.domain.patch.PatchDAO;
|
||||
import org.alfresco.repo.lock.JobLockService;
|
||||
import org.alfresco.repo.lock.LockAcquisitionException;
|
||||
import org.alfresco.repo.lock.JobLockService.JobLockRefreshCallback;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
|
||||
import org.alfresco.repo.transaction.AlfrescoTransactionSupport.TxnReadState;
|
||||
@@ -101,7 +103,6 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
|
||||
// Lock as per patching
|
||||
private static Log logger = LogFactory.getLog(PatchExecuter.class);
|
||||
private static VmShutdownListener shutdownListener = new VmShutdownListener("ContentUrlConverterPatch");
|
||||
|
||||
private RegistryService registryService;
|
||||
private JobLockService jobLockService;
|
||||
@@ -278,7 +279,6 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
return I18NUtil.getMessage("patch.convertContentUrls.bypassingPatch");
|
||||
}
|
||||
|
||||
boolean completed = false;
|
||||
// Lock in proportion to the batch size (0.1s per node or 0.8 min per 500)
|
||||
String lockToken = getLock(batchSize*100L);
|
||||
if (lockToken == null)
|
||||
@@ -294,16 +294,32 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
throw new RuntimeException("Unable to get job lock during patch execution. Only one server should perform the upgrade.");
|
||||
}
|
||||
}
|
||||
// Use a flag to keep track of the running job
|
||||
final AtomicBoolean running = new AtomicBoolean(true);
|
||||
jobLockService.refreshLock(lockToken, LOCK, batchSize*100, new JobLockRefreshCallback()
|
||||
{
|
||||
@Override
|
||||
public boolean isActive()
|
||||
{
|
||||
return running.get();
|
||||
}
|
||||
@Override
|
||||
public void lockReleased()
|
||||
{
|
||||
running.set(false);
|
||||
}
|
||||
});
|
||||
boolean completed = false;
|
||||
try
|
||||
{
|
||||
logger.info(I18NUtil.getMessage("patch.convertContentUrls.start"));
|
||||
|
||||
logger.info(I18NUtil.getMessage("patch.convertContentUrls.adm.start"));
|
||||
boolean admCompleted = applyADM(lockToken);
|
||||
boolean admCompleted = applyADMLooping(running);
|
||||
logger.info(I18NUtil.getMessage("patch.convertContentUrls.avm.start"));
|
||||
boolean avmCompleted = applyAVM(lockToken);
|
||||
boolean avmCompleted = applyAVMLooping(running);
|
||||
logger.info(I18NUtil.getMessage("patch.convertContentUrls.store.start", contentStore));
|
||||
boolean urlLiftingCompleted = applyUrlLifting(lockToken);
|
||||
boolean urlLiftingCompleted = applyUrlLifting(running);
|
||||
|
||||
completed = admCompleted && avmCompleted && urlLiftingCompleted;
|
||||
}
|
||||
@@ -316,7 +332,8 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
}
|
||||
finally
|
||||
{
|
||||
jobLockService.releaseLock(lockToken, LOCK);
|
||||
// The lock will self-release if answer isActive in the negative
|
||||
running.set(false);
|
||||
}
|
||||
|
||||
if (completed)
|
||||
@@ -346,21 +363,7 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to get the lock. If it fails, the current transaction is marked for rollback.
|
||||
*
|
||||
* @return Returns the lock token
|
||||
*/
|
||||
private void refreshLock(String lockToken, long time)
|
||||
{
|
||||
if (lockToken == null)
|
||||
{
|
||||
throw new IllegalArgumentException("Must provide existing lockToken");
|
||||
}
|
||||
jobLockService.refreshLock(lockToken, LOCK, time);
|
||||
}
|
||||
|
||||
private boolean applyADM(final String lockToken)
|
||||
private boolean applyADMLooping(final AtomicBoolean running)
|
||||
{
|
||||
RetryingTransactionCallback<Boolean> callback = new RetryingTransactionCallback<Boolean>()
|
||||
{
|
||||
@@ -370,10 +373,8 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
}
|
||||
};
|
||||
boolean done = false;
|
||||
while (true && !shutdownListener.isVmShuttingDown())
|
||||
while (running.get())
|
||||
{
|
||||
refreshLock(lockToken, batchSize*100L);
|
||||
|
||||
done = transactionHelper.doInTransaction(callback, false, true);
|
||||
if (done)
|
||||
{
|
||||
@@ -467,7 +468,7 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean applyAVM(final String lockToken)
|
||||
private boolean applyAVMLooping(final AtomicBoolean running)
|
||||
{
|
||||
RetryingTransactionCallback<Boolean> callback = new RetryingTransactionCallback<Boolean>()
|
||||
{
|
||||
@@ -477,10 +478,8 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
}
|
||||
};
|
||||
boolean done = false;
|
||||
while (true && !shutdownListener.isVmShuttingDown())
|
||||
while (running.get())
|
||||
{
|
||||
refreshLock(lockToken, batchSize*100L);
|
||||
|
||||
done = transactionHelper.doInTransaction(callback, false, true);
|
||||
if (done)
|
||||
{
|
||||
@@ -565,19 +564,19 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean applyUrlLifting(final String lockToken) throws Exception
|
||||
private boolean applyUrlLifting(final AtomicBoolean running) throws Exception
|
||||
{
|
||||
RetryingTransactionCallback<Boolean> callback = new RetryingTransactionCallback<Boolean>()
|
||||
{
|
||||
public Boolean execute() throws Throwable
|
||||
{
|
||||
return applyUrlLiftingInTxn(lockToken);
|
||||
return applyUrlLiftingInTxn(running);
|
||||
}
|
||||
};
|
||||
return transactionHelper.doInTransaction(callback, false, true);
|
||||
}
|
||||
|
||||
private boolean applyUrlLiftingInTxn(final String lockToken) throws Exception
|
||||
private boolean applyUrlLiftingInTxn(final AtomicBoolean running) throws Exception
|
||||
{
|
||||
// Check the store
|
||||
if (!contentStore.isWriteSupported())
|
||||
@@ -613,8 +612,9 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
private int allCount = 0;
|
||||
public void handle(String contentUrl)
|
||||
{
|
||||
if (shutdownListener.isVmShuttingDown())
|
||||
if (!running.get())
|
||||
{
|
||||
// Either VM shutdown or lock release. Either way, bug out.
|
||||
throw new VmShutdownListener.VmShutdownException();
|
||||
}
|
||||
|
||||
@@ -643,8 +643,6 @@ public class ContentUrlConverterPatch extends AbstractPatch
|
||||
allCount++;
|
||||
if (allCount % batchSize == 0)
|
||||
{
|
||||
// Update our lock
|
||||
refreshLock(lockToken, batchSize*100L);
|
||||
if (totalSize < 0)
|
||||
{
|
||||
// Report
|
||||
|
@@ -280,4 +280,10 @@ public interface ImapService
|
||||
MimeMessage originalMessage)
|
||||
throws IOException, MessagingException;
|
||||
|
||||
/**
|
||||
* Determines whether the IMAP server is enabled.
|
||||
*
|
||||
* @return true if enabled
|
||||
*/
|
||||
public boolean getImapServerEnabled();
|
||||
}
|
||||
|
@@ -147,6 +147,8 @@ public class ImapServiceImpl implements ImapService, OnCreateChildAssociationPol
|
||||
private final static Map<QName, Flags.Flag> qNameToFlag;
|
||||
private final static Map<Flags.Flag, QName> flagToQname;
|
||||
|
||||
private boolean imapServerEnabled = false;
|
||||
|
||||
static
|
||||
{
|
||||
qNameToFlag = new HashMap<QName, Flags.Flag>();
|
||||
@@ -175,22 +177,16 @@ public class ImapServiceImpl implements ImapService, OnCreateChildAssociationPol
|
||||
public static class ImapServiceBootstrap extends AbstractLifecycleBean
|
||||
{
|
||||
private ImapServiceImpl service;
|
||||
private boolean imapServerEnabled;
|
||||
|
||||
public void setService(ImapServiceImpl service)
|
||||
{
|
||||
this.service = service;
|
||||
}
|
||||
|
||||
public void setImapServerEnabled(boolean imapServerEnabled)
|
||||
{
|
||||
this.imapServerEnabled = imapServerEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBootstrap(ApplicationEvent event)
|
||||
{
|
||||
if (imapServerEnabled)
|
||||
if (service.getImapServerEnabled())
|
||||
{
|
||||
service.startup();
|
||||
}
|
||||
@@ -199,7 +195,7 @@ public class ImapServiceImpl implements ImapService, OnCreateChildAssociationPol
|
||||
@Override
|
||||
protected void onShutdown(ApplicationEvent event)
|
||||
{
|
||||
if (imapServerEnabled)
|
||||
if (service.getImapServerEnabled())
|
||||
{
|
||||
service.shutdown();
|
||||
}
|
||||
@@ -305,6 +301,16 @@ public class ImapServiceImpl implements ImapService, OnCreateChildAssociationPol
|
||||
this.extractAttachmentsEnabled = extractAttachmentsEnabled;
|
||||
}
|
||||
|
||||
public void setImapServerEnabled(boolean enabled)
|
||||
{
|
||||
this.imapServerEnabled = enabled;
|
||||
}
|
||||
|
||||
public boolean getImapServerEnabled()
|
||||
{
|
||||
return this.imapServerEnabled;
|
||||
}
|
||||
|
||||
// ---------------------- Lifecycle Methods ------------------------------
|
||||
|
||||
public void init()
|
||||
|
@@ -77,6 +77,7 @@ public class IncompleteNodeTagger
|
||||
private DictionaryService dictionaryService;
|
||||
private NodeService nodeService;
|
||||
private List<String> storesToIgnore = new ArrayList<String>(0);
|
||||
private Set<QName> propertiesToIgnore = new HashSet<QName>();
|
||||
|
||||
public IncompleteNodeTagger()
|
||||
{
|
||||
@@ -115,6 +116,19 @@ public class IncompleteNodeTagger
|
||||
this.storesToIgnore = storesToIgnore;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param propertiesToIgnore a list of property fully-qualified names to ignore
|
||||
*/
|
||||
public void setPropertiesToIgnore(List<String> propertiesToIgnore)
|
||||
{
|
||||
this.propertiesToIgnore = new HashSet<QName>();
|
||||
for (String qnameStr : propertiesToIgnore)
|
||||
{
|
||||
QName qname = QName.createQName(qnameStr);
|
||||
this.propertiesToIgnore.add(qname);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the system-level policy behaviours
|
||||
*/
|
||||
@@ -493,6 +507,11 @@ public class IncompleteNodeTagger
|
||||
{
|
||||
for (PropertyDefinition propertyDef : propertyDefs)
|
||||
{
|
||||
if (propertiesToIgnore.contains(propertyDef.getName()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!propertyDef.isMandatory())
|
||||
{
|
||||
// The property isn't mandatory in any way
|
||||
|
@@ -82,7 +82,7 @@ public interface Version2Model extends VersionBaseModel
|
||||
public static final String PROP_FROZEN_CREATED = "frozenCreated";
|
||||
public static final QName PROP_QNAME_FROZEN_CREATED = QName.createQName(NAMESPACE_URI, PROP_FROZEN_CREATED);
|
||||
|
||||
public static final String PROP_FROZEN_MODIFIER = "frozenModifer";
|
||||
public static final String PROP_FROZEN_MODIFIER = "frozenModifier";
|
||||
public static final QName PROP_QNAME_FROZEN_MODIFIER = QName.createQName(NAMESPACE_URI, PROP_FROZEN_MODIFIER);
|
||||
|
||||
public static final String PROP_FROZEN_MODIFIED = "frozenModified";
|
||||
|
Reference in New Issue
Block a user