Class QNamePatch

  • All Implemented Interfaces:
    Patch, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationEventPublisherAware

    public class QNamePatch
    extends AbstractPatch
    A patch to update the value of a QName. This patch will only succeed if the target QName has not been used i.e. if there is no content that actually references the QName.

    A property 'reindexClass' can be optionally injected. If it is not injected then the QName is updated and no reindexing is requested by this patch. If it is set to either 'TYPE' or 'ASPECT' (as appropriate) then that String will be used to locate out-of-date references to the old QName and have them reindexed in a targetted way.

    Please refer to the implementation in this class for the details of how this is achieved.

    Author:
    Neil McErlean
    • Constructor Detail

      • QNamePatch

        public QNamePatch()
    • Method Detail

      • setQnameDAO

        public void setQnameDAO​(QNameDAO qnameDAO)
        Parameters:
        qnameDAO - the qnameDAO to set
      • setPatchDAO

        public void setPatchDAO​(PatchDAO patchDAO)
        Parameters:
        patchDAO - the patchDAO to set
      • setNodeDAO

        public void setNodeDAO​(NodeDAO nodeDAO)
        Parameters:
        nodeDAO - the nodeDAO to set
      • setRetryingTransactionHelper

        public void setRetryingTransactionHelper​(RetryingTransactionHelper retryingTransactionHelper)
        Parameters:
        retryingTransactionHelper - the retryingTransactionHelper to set
      • setQnameBefore

        public void setQnameBefore​(java.lang.String qnameStringBefore)
        Sets the QName to be patched.
        Parameters:
        qnameStringBefore - the long-form QName to be patched from. {namespaceURI}localName
      • setQnameAfter

        public void setQnameAfter​(java.lang.String qnameStringAfter)
        Sets the new QName value to be used.
        Parameters:
        qnameStringAfter - the long-form QName to be patched to. {namespaceURI}localName
      • setReindexClass

        public void setReindexClass​(java.lang.String reindexClass)
        Sets a value for the class to reindex. This will be used in the Lucene query below and should be either "TYPE" or "ASPECT" or not set if reindexing is not required.
        Parameters:
        reindexClass - "TYPE" or "ASPECT" or not set.
      • checkProperties

        protected void checkProperties()
        Description copied from class: AbstractPatch
        Check that the schema version properties have been set appropriately. Derived classes can override this method to perform their own validation provided that this method is called by the derived class.
        Overrides:
        checkProperties in class AbstractPatch
      • applyInternal

        protected java.lang.String applyInternal()
                                          throws java.lang.Exception
        Description copied from class: AbstractPatch
        This method does the work. All transactions and thread-safety will be taken care of by this class. Any exception will result in the transaction being rolled back. Integrity checks are downgraded for the duration of the transaction.
        Specified by:
        applyInternal in class AbstractPatch
        Returns:
        Returns the report (only success messages).
        Throws:
        java.lang.Exception - anything can be thrown. This must be used for all failures.
        See Also:
        AbstractPatch.apply()