org.alfresco.repo.admin.patch.impl
Class NodePropertySerializablePatch

java.lang.Object
  extended by org.alfresco.repo.admin.patch.AbstractPatch
      extended by org.alfresco.repo.admin.patch.impl.NodePropertySerializablePatch
All Implemented Interfaces:
Patch, org.springframework.context.ApplicationEventPublisherAware

public class NodePropertySerializablePatch
extends AbstractPatch

Certain content models make extensive use of the d:any datatype, which has led to storage of simple types as serialized instances. This patch ensures that all previously serializable values are stored in their more native form in the database.
e.g. If a property was d:any and a string was written ("ABC"), then the value was stored in serializable_value. Instead, the newer code stores the value in string_value. None of the retrieval code is affected, but the values are made visible to queries, in addition to reducing the size of the node_properties table. This patch ensures that previously-stored values are changed to conform to the new storage mechanism.

JIRA: AR-359

See Also:
PropertyValue

Field Summary
 
Fields inherited from class org.alfresco.repo.admin.patch.AbstractPatch
applicationEventPublisher, authenticationContext, ERR_PROPERTY_NOT_SET, namespaceService, nodeService, searchService, tenantAdminService, transactionService
 
Constructor Summary
NodePropertySerializablePatch()
           
 
Method Summary
protected  java.lang.String applyInternal()
          This method does the work.
 void setSessionFactory(org.hibernate.SessionFactory sessionFactory)
           
 
Methods inherited from class org.alfresco.repo.admin.patch.AbstractPatch
applies, apply, checkProperties, checkPropertyNotNull, getAlternatives, getDependsOn, getDescription, getFixesFromSchema, getFixesToSchema, getId, getTargetSchema, init, isForce, reportProgress, setAlternatives, setApplicationEventPublisher, setApplyToTenants, setAuthenticationContext, setDependsOn, setDescription, setFixesFromSchema, setFixesToSchema, setForce, setId, setNamespaceService, setNodeService, setPatchService, setSearchService, setTargetSchema, setTenantAdminService, setTransactionService, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

NodePropertySerializablePatch

public NodePropertySerializablePatch()
Method Detail

setSessionFactory

public void setSessionFactory(org.hibernate.SessionFactory sessionFactory)

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()


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.