atg.markers.userprofiling
Class ProfileMarkerManager

java.lang.Object
  extended by atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
      extended by atg.nucleus.GenericService
          extended by atg.markers.RepositoryMarkerManager
              extended by atg.markers.userprofiling.ProfileMarkerManager
All Implemented Interfaces:
MarkerConstants, MarkerValidatorContainer, atg.naming.AbsoluteNameable, NameContextBindingListener, NameContextElement, atg.naming.NameContextParentable, NameResolver, AdminableService, atg.nucleus.Configured, ApplicationLogging, atg.nucleus.logging.ApplicationLoggingSender, atg.nucleus.logging.TraceApplicationLogging, VariableArgumentApplicationLogging, ComponentNameResolver, Service, ServiceListener, atg.userprofiling.ProfileSwapEventListener, java.util.EventListener

public class ProfileMarkerManager
extends RepositoryMarkerManager
implements atg.userprofiling.ProfileSwapEventListener

This class is the RepositoryMarkerManager extension for managing profile markers.

This extension is a registered listener of ProfileSwapEvents issued by the ProfileForm class so that it may copy markers from an anonymous user to a persistent user when a login occurs.

However, there is one caveat. The conditional application logic that originally added a marker to the transient user is not reevaluated when copying the marker from the transient to the persistent user. Therefore, a marker that was conditionally added to the transient user will be added to the persistent user without performing the same conditional checks. As a result, the application may subsequently see unexpected results in the persistent user's marker collection.

For example, if a marker was added in a scenario that conditionally added a marker based on the value of other markers, it will be copied to the persistent user without first checking the value of other markers.

Configurable properties:

profilePropertyNames
Specifies the property names on the profile that contain marker which should be copied upon login.

See Also:
RepositoryMarkerManager, ProfileSwapEventListener

Field Summary
static java.lang.String CLASS_VERSION
          Class version string
 
Fields inherited from class atg.markers.RepositoryMarkerManager
mAddMessageJMSType, mAlwaysValidate, mDefaultDuplicationMode, mDefaultMarkedItemType, mDefaultMarkerDuplicateComparator, mDefaultMarkerItemType, mDefaultMarkerPropertyName, mDefaultMarkerSortPropertyName, mGenerateEvents, mMarkerDuplicateComparators, mMarkerMessageSource, mMarkerValidators, mMaxItemsPerTransaction, mRemoveMessageJMSType, mReplaceMessageJMSType, mRepository, mRequiredExtendedProperties, mTransactionManager
 
Fields inherited from class atg.nucleus.GenericService
SERVICE_INFO_KEY
 
Fields inherited from interface atg.markers.MarkerConstants
ALLOW_DUPLICATES, ANY_VALUE, DEFAULT_MARKER_ID_PROPERTY_NAME, DEFAULT_MARKER_ITEM_TYPE, DEFAULT_MARKER_PROPERTY_NAME, DEFAULT_MARKER_SORT_PROPERTY_NAME, MARKER_CREATIONDATE_PROPERTY_NAME, MARKER_DATA_PROPERTY_NAME, MARKER_DUPLICATIONMODE_PROPERTY_NAME, MARKER_KEY_PROPERTY_NAME, MARKER_OWNER_PROPERTY_NAME, MARKER_RESOURCE_NAME, MARKER_VALUE_PROPERTY_NAME, NO_DUPLICATES, PARAM_DATA, PARAM_DUPMODE, PARAM_EXTENDED_PROPERTIES, PARAM_ITEM, PARAM_ITEM_ID, PARAM_KEY, PARAM_MARKED_ITEM_TYPE, PARAM_MARKER_ITEM_TYPE, PARAM_MARKER_MANAGER, PARAM_MARKER_PROPERTY_NAME, PARAM_VALUE, REPLACE_DUPLICATES, sResourceBundle
 
Fields inherited from interface atg.nucleus.logging.TraceApplicationLogging
DEFAULT_LOG_TRACE_STATUS
 
Fields inherited from interface atg.nucleus.logging.ApplicationLogging
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
 
Constructor Summary
ProfileMarkerManager()
           
 
Method Summary
 void addSwapEventListener(atg.userprofiling.ProfileSwapEventListener pListener)
          Adds a ProfileSwapEventListener to the list of listeners that care about ProfileSwapEvents
protected  java.lang.String getMarkerEventProfileId(java.lang.String pMarkedItemId, java.lang.String pMarkedItemType, RepositoryItem pMarkerItem)
          This method extension will return the markedItemId if the markedItemType is the same as the defaultMarkedItemType.
 java.lang.String[] getProfilePropertyNames()
          Returns the profile property names that contain markers
 void receiveSwapEvent(atg.userprofiling.ProfileSwapEvent pEvent)
          Accepts and processes a ProfileSwapEvent generated by the ProfileForm.
 void removeSwapEventListener(atg.userprofiling.ProfileSwapEventListener pListener)
          Removes a ProfileSwapEventListener to the list of listeners that care about ProfileSwapEvents
protected  void sendProfileSwapEvent(atg.userprofiling.ProfileSwapEvent pEvent)
          Sends a ProfileSwapEvent to the swap event listeners This method is called by receiveSwapEvent to pass along the swap event to other listeners so, if need be, those listeners can perform additional processing after the ProfileMarkerManager.
 void setProfilePropertyNames(java.lang.String[] pProfilePropertyNames)
           
 
Methods inherited from class atg.markers.RepositoryMarkerManager
addMarkerItemToItem, addMarkerToItem, addMarkerToItem, addMarkerToItem, addMarkerToItem, addMarkerToItem, addMarkerToItem, addMarkerToItem, addMarkerToItem, addMarkerToItem, addMarkerToItemsCollection, addMarkerValidator, areMarkerPropertiesEqual, compareDefaultPropertyValues, compareExtendedPropertyValues, createAddedEventMessage, createAddedEventMessage, createAddedMarkerData, createMarkerItem, createRemovedEventMessage, createRemovedEventMessage, createRemovedMarkerData, createReplacedEventMessage, createReplacedEventMessage, createReplacedMarkerData, createSortedArrayOfMarkers, deleteMarkers, doStartService, findComparator, findDuplicates, findLastMarkerOnItem, findMarkerValidator, findMarkerValidator, findMatchingMarkers, findMatchingMarkers, findMatchingMarkers, findValidKeys, findValidValuesForKey, generateAddMessage, generateMarkerData, generateMarkerExtendedPropertyQuery, generateMarkerQualifyingAndedQuery, generateRemoveMessage, generateReplaceMessage, getAddMessageJMSType, getAllMarkersFromItem, getAllMarkersFromItem, getAllMarkersFromItem, getAllMarkersFromItem, getComparatorKey, getDefaultDuplicationMode, getDefaultMarkedItemType, getDefaultMarkerDuplicateComparator, getDefaultMarkerItemType, getDefaultMarkerPropertyName, getDefaultMarkerSortPropertyName, getDefaultPropertyQuery, getDuplicationMode, getItemsWithMarker, getItemsWithMarker, getMarkedItemType, getMarkerCollectionFromItem, getMarkerDuplicateComparators, getMarkerItemType, getMarkerMessageSource, getMarkerPropertyName, getMarkerSortPropertyName, getMarkerValidators, getMaxItemsPerTransaction, getRemoveMessageJMSType, getReplaceMessageJMSType, getRepository, getRequiredExtendedProperties, getTransactionManager, getValidatedKeysAndValues, hasDuplicates, hasMarker, hasMarker, hasMarker, hasMarker, identifyMissingExtendedProperties, isAlwaysValidate, isDuplicateMarker, isGenerateEvents, isValidKey, isValidValueForKey, matchLastMarker, matchLastMarker, matchLastMarker, matchLastMarker, matchLastMarkerWithKey, matchLastMarkerWithKey, matchLastMarkerWithKey, matchLastMarkerWithKey, removeAllMarkersFromItem, removeAllMarkersFromItem, removeAllMarkersFromItem, removeAllMarkersFromItem, removeMarkersFromItem, removeMarkersFromItem, removeMarkersFromItem, removeMarkersFromItem, removeMarkersFromItemsCollection, removeMarkerValidator, setAddMessageJMSType, setAlwaysValidate, setBaseMarkerData, setBaseMarkerEventProperties, setBaseMarkerEventProperties, setDefaultDuplicationMode, setDefaultMarkedItemType, setDefaultMarkerDuplicateComparator, setDefaultMarkerItemType, setDefaultMarkerProperties, setDefaultMarkerPropertyName, setDefaultMarkerSortPropertyName, setExtendedMarkerData, setExtendedMarkerProperties, setGenerateEvents, setMarkerDuplicateComparators, setMarkerMessageSource, setMarkerValidators, setMaxItemsPerTransaction, setRemoveMessageJMSType, setReplaceMessageJMSType, setRepository, setRequiredExtendedProperties, setTransactionManager, validateMarker
 
Methods inherited from class atg.nucleus.GenericService
addLogListener, createAdminServlet, doStopService, getAbsoluteName, getAdminServlet, getAdminServletOutputStreamEncoding, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isAdminServletUseServletOutputStream, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setAdminServletOutputStreamEncoding, setAdminServletUseServletOutputStream, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
 
Methods inherited from class atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogDebugTrace, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_VERSION

public static java.lang.String CLASS_VERSION
Class version string

Constructor Detail

ProfileMarkerManager

public ProfileMarkerManager()
Method Detail

setProfilePropertyNames

public void setProfilePropertyNames(java.lang.String[] pProfilePropertyNames)

getProfilePropertyNames

public java.lang.String[] getProfilePropertyNames()
Returns the profile property names that contain markers


addSwapEventListener

public void addSwapEventListener(atg.userprofiling.ProfileSwapEventListener pListener)
Adds a ProfileSwapEventListener to the list of listeners that care about ProfileSwapEvents

Parameters:
pListener - the ProfileSwapEventListener to add

removeSwapEventListener

public void removeSwapEventListener(atg.userprofiling.ProfileSwapEventListener pListener)
Removes a ProfileSwapEventListener to the list of listeners that care about ProfileSwapEvents

Parameters:
pListener - the ProfileSwapEventListener to remove

getMarkerEventProfileId

protected java.lang.String getMarkerEventProfileId(java.lang.String pMarkedItemId,
                                                   java.lang.String pMarkedItemType,
                                                   RepositoryItem pMarkerItem)
This method extension will return the markedItemId if the markedItemType is the same as the defaultMarkedItemType. The result being that the profile id associated with the event will be the same as the profile that is being marked, and not necessaily the same as the profile that is logged in. For instance, this allows you to advance scenarios that are waiting for an "addmarker" event for a profile that is not logged in.

Overrides:
getMarkerEventProfileId in class RepositoryMarkerManager
Parameters:
pMarkedItemId - the marked item's repository id
pMarkedItemType - the marked item's repository type
pMarkerItem - the marker repository item

receiveSwapEvent

public void receiveSwapEvent(atg.userprofiling.ProfileSwapEvent pEvent)
Accepts and processes a ProfileSwapEvent generated by the ProfileForm.

When an anonymous user logs in, this method copies the markers from the anonymous profile to the persistent profile.

The original duplication mode for each marker is applied when adding the marker to the persistent profile.

Specified by:
receiveSwapEvent in interface atg.userprofiling.ProfileSwapEventListener
Parameters:
pEvent - the event to process

sendProfileSwapEvent

protected void sendProfileSwapEvent(atg.userprofiling.ProfileSwapEvent pEvent)
Sends a ProfileSwapEvent to the swap event listeners This method is called by receiveSwapEvent to pass along the swap event to other listeners so, if need be, those listeners can perform additional processing after the ProfileMarkerManager.

Parameters:
pEvent - the ProfileSwapEvent