com.waveset.adapter
Class RemedyResourceAdapter

java.lang.Object
  extended bycom.waveset.adapter.ResourceAdapterBase
      extended bycom.waveset.adapter.AgentResourceAdapter
          extended bycom.waveset.adapter.RemedyResourceAdapter
All Implemented Interfaces:
ActiveSync, RASecureConnection.RASecureConnectionAccessor, ResourceAdapter
Direct Known Subclasses:
RemedyActiveSyncResourceAdapter

public class RemedyResourceAdapter
extends AgentResourceAdapter
implements ActiveSync

Resource adapter for creating people records in the Remedy AR server. Since remedy doesn't have a JAVA based API, this resource will be a Gateway based adapter. Also supports active sync. Polls Remedy to retrieve rows from an arbitrary schema which are qualified with a static or last-result-based predicate. A user-defined workflow is launched with each qualified row (after being mapping to the user schema).


Nested Class Summary
static class RemedyResourceAdapter.RemedyMapResolver
          A class that implements the VariableResolver interface.
static class RemedyResourceAdapter.VariableChecker
          VariableChecker verifies that a variables appear in the LHS of the schema map.
 
Nested classes inherited from class com.waveset.adapter.AgentResourceAdapter
AgentResourceAdapter.AcctIter, AgentResourceAdapter.AgentAccountSupplier, AgentResourceAdapter.BlockAcctIter, AgentResourceAdapter.BlockObjectIterator
 
Nested classes inherited from class com.waveset.adapter.ResourceAdapterBase
ResourceAdapterBase.SimpleAccountIterator
 
Nested classes inherited from class com.waveset.adapter.ResourceAdapter
ResourceAdapter.ActionResult, ResourceAdapter.Features, ResourceAdapter.ObjectType
 
Field Summary
static java.lang.String code_id
           
static java.lang.String LAST_FETCHED_CONJUNCTION
           
static java.lang.String LAST_FETCHED_FILTER
           
static java.lang.String RA_PASSWORD
           
static java.lang.String RA_PROCESS_NAME
          deprecated As of IdM 5.5.
static java.lang.String RA_REMEDY_RPCSOCKET
           
static java.lang.String RA_REMEDY_TCPPORT
           
static java.lang.String RA_SCHEMA
           
static java.lang.String RA_SERVER
           
static java.lang.String RA_SUPPORTS_PASSWORDS
           
static java.lang.String RA_UPDATE_SEARCH_FILTER
           
static java.lang.String RA_USER
           
 
Fields inherited from class com.waveset.adapter.AgentResourceAdapter
_connection, ATTR_ACTION, CONNECTED_TO_RESOURCE, RA_AUTHTIMEOUT, RA_CONN, RA_HANGTIMEOUT, RA_HOST, RA_OBJCLASS, RA_PORT, SUPPORTS_ENCRYPTED_TYPE, USER_CLASS
 
Fields inherited from class com.waveset.adapter.ResourceAdapterBase
_cache, _context, _excludedAccountsRule, _excludedAccountsRuleInited, _listAllObjectsAttrParse, _listAllObjectsAttrParseName, _listUserAttrParse, _listUserAttrParseName, _listUserGroupsAttrParse, _listUserGroupsAttrParseName, _resource, _thread, _trace, displayInfoCode, RA_BLOCKCOUNT, RA_LOGIN_ACTION, RA_LOGOFF_ACTION, RA_MULTI_VALUED_ATTRS, RA_TEST_MODE
 
Fields inherited from interface com.waveset.adapter.ActiveSync
ACTIVE_SYNC_EVENT_RES_ATTRS_XML, ACTIVE_SYNC_STD_RES_ATTRS_XML, ATTR_IS_DELETED, DATE_FORMAT, DATE_TIME_FORMAT, RA_APPLY_META_VIEW, RA_ASSIGN_SOURCE_ON_CREATE, RA_CONFIRMATION_RULE, RA_CORRELATION_RULE, RA_CREATE_UNMATCHED, RA_DELETE_RULE, RA_FORM, RA_ID, RA_IDM_NAME_RULE, RA_LEGACY_EVENT_GEN, RA_LOG_LEVEL, RA_LOG_PATH, RA_LOG_SIZE, RA_MAX_AGE_LENGTH, RA_MAX_AGE_UNIT, RA_MAX_ARCHIVES, RA_NAME, RA_PARAMETERIZED_INPUT_FORM, RA_POPULATE_GLOBAL, RA_POSTPOLL_WORKFLOW, RA_PREPOLL_WORKFLOW, RA_PROCESS_RULE, RA_PROXY_ADMINISTRATOR, RA_RESET_TO_TODAY, RA_RESOLVE_PROCESS_RULE, RA_SCHEDULE_INTERVAL, RA_SCHEDULE_INTERVAL_COUNT, RA_SCHEDULE_START_DATE, RA_SCHEDULE_START_TIME, RA_SYNC_CONFIG_MODE, RA_SYNC_POST_PROCESS_FORM, RA_UPDATE_IF_DELETE, RA_USE_INPUT_FORM, TIME_FORMAT, TRACE_LEVEL_DEBUG, TRACE_LEVEL_ERROR, TRACE_LEVEL_INFO, TRACE_LEVEL_NONE, TRACE_LEVEL_WARNING
 
Fields inherited from interface com.waveset.adapter.ResourceAdapter
CHANGE_PASSWORD_LOCATION, DISABLE, ENABLE, EXPIRE_PASSWORD, GUID, IGNORE_ATTR, NEW_ACCOUNT_ID, OP_DAYS_INACTIVE, OP_DISABLED, OP_DORMANT, OP_EXPIRED, OP_EXPIREDPWD, OP_INACTIVE, OP_LOCKED, OP_NO_PASSWORD_SET, OP_NOOWNERSHIP, OP_NOPASSWORDREQ, OP_NUMINACTIVEDAYS, OP_NUMPWDAYS, OP_PWNUMDAYS, RA_BASE_CTX, RA_DISPLAY_NAME_ATTR, RA_NEW_OBJECT_ID, RA_NEW_OBJECT_NAME, RA_OBJECT_ATTRIBUTES, RA_OBJECT_CLASS, RA_OBJECT_ID, RA_OBJECT_TYPE, RA_OP_TYPE, RA_RENAME_OP, RA_REQUESTOR, RA_SAVEAS_OP, RA_SEARCH_ATTRIBUTE_NAMES, RA_SEARCH_ATTRS_TO_GET, RA_SEARCH_CONTEXT, RA_SEARCH_FILTER, RA_SEARCH_RUN_AS_PASSWORD, RA_SEARCH_RUN_AS_USER, RA_SEARCH_SCOPE, RA_SEARCH_SCOPE_OBJECT, RA_SEARCH_SCOPE_ONE_LEVEL, RA_SEARCH_SCOPE_SUBTREE, RA_SEARCH_TIME_LIMIT, RESET_PASSWORD, SYSTEM_ATTRIBUTES, UNLOCK, WS_USER_PASSWORD
 
Constructor Summary
RemedyResourceAdapter()
           
RemedyResourceAdapter(Resource res, ObjectCache cache)
           
 
Method Summary
 void callCompleted(com.waveset.adapter.iapi.IAPI call)
           
 Resource createPrototypeResource()
           
 AccountIterator getAccountIterator()
          Default implementation just gets all the users and holds them in an array.
 java.lang.Object getAttributeValue(java.lang.String name)
          Get or set an attribute value for the ActiveSync.
 GenericObject getFeatures()
          Override the default implementation of this method to indicate that password, expirepassword, disable and enable are not supported by remedy.
protected  java.lang.String getLoginAttrName(java.lang.String key)
          Get the attribute name to use for the login info key that is passed in.
 void init()
          initialize yourself.
 java.util.List listObjects(java.lang.String objectType, java.util.Map options)
          Returns a list of objects matching the requested objectType and options
 int poll()
          The poll method.
 void setAttributeValue(java.lang.String name, java.lang.Object value)
           
 void setResource(Resource r)
           
 void setResourceObjectClassAttr(java.lang.String objectType, boolean primary)
          Set the object class attr value, return the old one.
 void shutdown()
          shutdown
static Resource staticCreatePrototypeResource()
           
 boolean supportsAccountDisable()
          Return true if this resource supports some form of native account disable.
 WavesetResult testConfiguration()
          Default implementation of test method, calls check create.
protected  void traceAndLog(long traceLevel, java.lang.String method, int logLevel, java.lang.String message)
           
protected  boolean updateIdFromResource()
          Override the default implementation of this method to indicate that the identity for Remedy resources should come from the resource.
 
Methods inherited from class com.waveset.adapter.AgentResourceAdapter
addCmdArgs, addIgnoredAttrs, agentTestConfiguration, augmentListAllObjects, authenticate, buildGetObjectRequest, checkCreateAccount, checkDeleteAccount, checkUpdateAccount, createAccounts, createObject, createXmlObject, createXmlObject, deleteAccounts, deleteObject, determineGatewayCapabilities, disableAccounts, doCreateOrUpdateObjectRequest, doCreateOrUpdateRequest, doGetGatewayInfo, doGetGatewayInfo, enableAccounts, encryptEncryptedType, encryptEncryptedType, endRequest, extendWSAttributes, getAccountAttributes, getAccountIterator, getAgentAdapters, getAuthenticationTimeout, getBlockAccountIterator, getBlockAccountIterator, getConnection, getGatewayInfo, getGenericObjectsFromResponse, getHangTimeout, getObject, getObjectFromResponse, getObjectIterator, getObjectListFromResponse, getResInfo, getResponse, getResponse, getResponse, getResponse, getResponseBytes, getResponseBytes, getResponseBytes, getResponseBytes, getResultItemList, getTraceFile, getTraceFile, getUser, getUsersFromResponse, getUsersFromResponse, getWsAttrsString, listAllObjects, loadUsersFromResponse, makeConnection, makeConnection, makeGUID, mapAttributes, mapObjectType, removeUserAttr, returnConnection, returnConnection, returnConnection, returnConnection, reverseMapAttributes, run, runAction, scan, sendRequest, sendRequest, sendRequest, sendRequest, setConnection, setGatewayInfo, startRequest, startRequest, startRequestWithoutConnect, transformGUID, updateAccounts, updateKey, updateObject
 
Methods inherited from class com.waveset.adapter.ResourceAdapterBase
checkForNoPasswordInSchema, checkSyntax, createAccount, createIdentity, deleteAccount, deleteAccount, disableAccount, dnsEqual, dnsEqual, enableAccount, executeResourceAttributeJavascriptAction, fillInResourceInfo, fillInResourceInfo, getAccountIterator, getAction, getActionNotFoundErrorMessage, getActionNotFoundMessage, getActionRunAsPassword, getActionRunAsUser, getActionTimeout, getActionType, getAdapter, getAdapter, getAdapter, getAdapterProxy, getAdapterProxy, getAllAccounts, getAttrNameFromMapName, getAttrNameFromMapName, getAttrParse, getAttrTypeFromMapName, getAttrTypeFromMapName, getAUserName, getBaseContextAttrName, getBaseContextObject, getBaseContexts, getBlockSize, getContext, getExcludedAccountsRule, getIdentity, getListAllObjectsAttrParse, getListUserAttrParse, getListUserGroupsAttrParse, getOptionalBooleanResAttrVal, getOptionalBooleanResAttrVal, getOptionalEncryptedResAttrVal, getOptionalResAttrVal, getOptionalStringResAttrVal, getRequiredResAttr, getRequiredResAttr, getRequiredResAttrVal, getRequiredResAttrVal, getRequiredResAttrVals, getRequiredUserAttributeNames, getResAttrValActionOnUser, getResAttrVals, getResource, getResourceAccounts, getResourceInfo, getResourceObjectAttrValNameAttr, getResourceObjectClassAttr, getResourceObjectTypePrefix, getSchemaMap, getUser, getWSAttrByMapName, getWSAttrByMapName, getWSAttrFromMap, handleActionResult, handleJavascriptActionResult, isAccountAttributeSecret, isExcludedAccount, isExcludedAccount, isFeatureEnabled, isSupported, isTestMode, listAllObjects, listObjects, listObjectsOfType, lookupAction, lookupAction, lookupActions, namesEqual, objectClassesMatchType, println, realCreate, realDelete, realDisable, realEnable, realUpdate, restoreResourceObjectClassAttr, run, runResourceAttributeJavascriptAction, setCache, setContext, setDisabled, setFromResource, setResourceOptionAttrs, startConnection, startConnectionWrapper, stopConnection, supportsAccountActions, supportsActions, supportsCaseInsensitiveAccountIds, supportsContainerObjectTypes, supportsExcludedAccounts, supportsResourceAccount, supportsScanning, updateAccount, updateResourceAccount, updateResourceIdentity, vmStoreBoot, vmStoreGet, vmStoreInit, vmStoreLatch, vmStorePut
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

code_id

public static final java.lang.String code_id
See Also:
Constant Field Values

RA_USER

public static final java.lang.String RA_USER
See Also:
Constant Field Values

RA_PASSWORD

public static final java.lang.String RA_PASSWORD
See Also:
Constant Field Values

RA_SCHEMA

public static final java.lang.String RA_SCHEMA
See Also:
Constant Field Values

RA_SERVER

public static final java.lang.String RA_SERVER
See Also:
Constant Field Values

RA_REMEDY_TCPPORT

public static final java.lang.String RA_REMEDY_TCPPORT
See Also:
Constant Field Values

RA_REMEDY_RPCSOCKET

public static final java.lang.String RA_REMEDY_RPCSOCKET
See Also:
Constant Field Values

RA_SUPPORTS_PASSWORDS

public static final java.lang.String RA_SUPPORTS_PASSWORDS
See Also:
Constant Field Values

RA_UPDATE_SEARCH_FILTER

public static final java.lang.String RA_UPDATE_SEARCH_FILTER
See Also:
Constant Field Values

RA_PROCESS_NAME

public static final java.lang.String RA_PROCESS_NAME
deprecated As of IdM 5.5. Use RA_PROCESS_RULE instead.

See Also:
Constant Field Values

LAST_FETCHED_FILTER

public static final java.lang.String LAST_FETCHED_FILTER
See Also:
Constant Field Values

LAST_FETCHED_CONJUNCTION

public static final java.lang.String LAST_FETCHED_CONJUNCTION
See Also:
Constant Field Values
Constructor Detail

RemedyResourceAdapter

public RemedyResourceAdapter(Resource res,
                             ObjectCache cache)

RemedyResourceAdapter

public RemedyResourceAdapter()
Method Detail

staticCreatePrototypeResource

public static Resource staticCreatePrototypeResource()
                                              throws WavesetException
Throws:
WavesetException

createPrototypeResource

public Resource createPrototypeResource()
                                 throws WavesetException
Specified by:
createPrototypeResource in interface ResourceAdapter
Specified by:
createPrototypeResource in class AgentResourceAdapter
Throws:
WavesetException

getLoginAttrName

protected java.lang.String getLoginAttrName(java.lang.String key)
Get the attribute name to use for the login info key that is passed in. This basically maps login info keys to attribute names that will be used by the resource.

Overrides:
getLoginAttrName in class AgentResourceAdapter

getAccountIterator

public AccountIterator getAccountIterator()
                                   throws WavesetException
Description copied from class: AgentResourceAdapter
Default implementation just gets all the users and holds them in an array. May (should) be overriden by the subclass.

Specified by:
getAccountIterator in interface ResourceAdapter
Overrides:
getAccountIterator in class AgentResourceAdapter
Throws:
WavesetException

supportsAccountDisable

public boolean supportsAccountDisable()
Return true if this resource supports some form of native account disable. When this is true, the provisoining engine will expect a real implementation of the disableAccount and enableAccount methods.

Specified by:
supportsAccountDisable in interface ResourceAdapter
Overrides:
supportsAccountDisable in class ResourceAdapterBase

updateIdFromResource

protected boolean updateIdFromResource()
Override the default implementation of this method to indicate that the identity for Remedy resources should come from the resource.

Overrides:
updateIdFromResource in class AgentResourceAdapter

getFeatures

public GenericObject getFeatures()
Override the default implementation of this method to indicate that password, expirepassword, disable and enable are not supported by remedy.

Specified by:
getFeatures in interface ResourceAdapter
Overrides:
getFeatures in class AgentResourceAdapter
Returns:
GenericObject containing Features, as both key and value, which are supported by this resource adapter.
See Also:
ResourceAdapter.Features

listObjects

public java.util.List listObjects(java.lang.String objectType,
                                  java.util.Map options)
                           throws WavesetException
Description copied from class: AgentResourceAdapter
Returns a list of objects matching the requested objectType and options

Specified by:
listObjects in interface ResourceAdapter
Overrides:
listObjects in class AgentResourceAdapter
Parameters:
objectType - - the name of a valid object class for this specified "resId".
options - - several options can be specified which control the behavior of the search. They include:
    "searchContext" - the value of this option determines within what context to perform search (ResourceAdapter.RA_SEARCH_CONTEXT). If not specified, will attempt to get a value from RA_BASE_CONTEXT. If no value, will assume search should be done from logical top.
  1. "searchFilter" - optional specification, in LDAP search filter format as specified in RFC 1558, of one or more object tuples either and'ed or or'ed together. If not specified, a filter will be constructed using the specified objectType. (ResourceAdapter.SEARCH_FILTER).
  2. "searchScope" - specifies whether the search should be done on the current object, only within the context of the specified "searchContext", or in all subcontext within the specified "searchContext" (ResourceAdapter.RA_SEARCH_SCOPE). Valid values are "object", "oneLevel", or "subTree" indicates that the search should be performed on all sub contexts within the specified "searchContext".
  3. "searchTimeLimit" - the timelimit in milliseconds a search should not exceed (ResourceAdapter.RA_SEARCH_TIME_LIMIT).
  4. "searchAttrsToGet" - the list of objectType specific attribute names to get per object
  5. "runAsUser" - user name this request is to be run as. If not specified, defaults to resource proxy admin user.
  6. "runAsPassword" - password of runAsUser. Required to authenticate with resource in order to run the list request as the specified user
Throws:
WavesetException

setResourceObjectClassAttr

public void setResourceObjectClassAttr(java.lang.String objectType,
                                       boolean primary)
Description copied from class: ResourceAdapterBase
Set the object class attr value, return the old one.

Specified by:
setResourceObjectClassAttr in interface ResourceAdapter
Overrides:
setResourceObjectClassAttr in class ResourceAdapterBase

init

public void init()
          throws java.lang.Exception
Description copied from interface: ActiveSync
initialize yourself. throw exception if initialization failed

Specified by:
init in interface ActiveSync
Throws:
java.lang.Exception

shutdown

public void shutdown()
Description copied from interface: ActiveSync
shutdown

Specified by:
shutdown in interface ActiveSync

getAttributeValue

public java.lang.Object getAttributeValue(java.lang.String name)
                                   throws java.lang.Exception
Description copied from interface: ActiveSync
Get or set an attribute value for the ActiveSync. Setting an attribute value only changes the in-memory copy of the attribute, not the persistent value. Set is typically only used for status or scheduling updates.

Specified by:
getAttributeValue in interface ActiveSync
Throws:
java.lang.Exception

setAttributeValue

public void setAttributeValue(java.lang.String name,
                              java.lang.Object value)
                       throws java.lang.Exception
Specified by:
setAttributeValue in interface ActiveSync
Throws:
java.lang.Exception

poll

public int poll()
         throws java.lang.InterruptedException
Description copied from interface: ActiveSync
The poll method. Called at a configurable interval, this
  1. polls the remote resource for changes,
  2. converts them to IAPI calls, and
  3. posts them back to the server.

Specified by:
poll in interface ActiveSync
Returns:
0 if no work done, n if n calls processed.
Throws:
java.lang.InterruptedException

callCompleted

public void callCompleted(com.waveset.adapter.iapi.IAPI call)

setResource

public void setResource(Resource r)
Specified by:
setResource in interface ResourceAdapter
Overrides:
setResource in class ResourceAdapterBase

testConfiguration

public WavesetResult testConfiguration()
                                throws WavesetException
Description copied from class: ResourceAdapterBase
Default implementation of test method, calls check create. It is strongly preferred that this is overrided by derived classes so that a real test can be done without burdening the checkCreate method with a large overhead. On errors, an exception can be thrown or the error can be returned in the WavesetResult. Errors in the result will generate a test failure message, messages will appear for success or failure.

Specified by:
testConfiguration in interface ResourceAdapter
Overrides:
testConfiguration in class ResourceAdapterBase
Throws:
WavesetException

traceAndLog

protected void traceAndLog(long traceLevel,
                           java.lang.String method,
                           int logLevel,
                           java.lang.String message)