DatabaseTableResourceAdapter - XML Specification
Since I have been unsuccessful creating a DatabaseTableResourceAdapter through the Wizard, I have begun trying to code the XML to manually import one. The problem I am having now is I don't know how to specify the RESATTR Resource Attributes, for the "Table Type", "Table Name", and "Key Column" attributes.
Anyone know where I look to find these variable names? Here is my code so far:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Resource PUBLIC'waveset.dtd''waveset.dtd'>
<!-- MemberObjectGroups="#ID#Top" accountTypesEnabled="false" hostname="10.13.19.66" name="GMST5 DatabaseTable Resource" supportsContainerObjectTypes="false" supportsScanning="false" type="DatabaseTable" typeString="DatabaseTable"-->
<Resource id='#ID#62625D9D70BB48B6:675E1247:10CB552FF93:-7EC5' name='GMST5 DatabaseTable Resource' lock='Configurator#1155132878474' class='com.waveset.adapter.DatabaseTableResourceAdapter' typeString='DatabaseTable' typeDisplayString='com.waveset.adapter.RAMessages:RESTYPE_ORACLE' hasId='true' timeLastExamined='0' reconcileTime='0'>
<ResourceAttributes>
<ResourceAttribute name='driver' displayName='com.waveset.adapter.RAMessages:RESATTR_DRIVER' description='com.waveset.adapter.RAMessages:RESATTR_HELP_369' value='oracle.jdbc.driver.OracleDriver'>
</ResourceAttribute>
<ResourceAttribute name='host' displayName='com.waveset.adapter.RAMessages:RESATTR_HOST' description='com.waveset.adapter.RAMessages:RESATTR_HELP_239' value='10.13.19.66'>
</ResourceAttribute>
<ResourceAttribute name='port' displayName='com.waveset.adapter.RAMessages:RESATTR_PORT' description='com.waveset.adapter.RAMessages:RESATTR_HELP_269' value='1526'>
</ResourceAttribute>
<ResourceAttribute name='database' displayName='com.waveset.adapter.RAMessages:RESATTR_DATABASE' description='com.waveset.adapter.RAMessages:RESATTR_HELP_80' value='gmst5'>
</ResourceAttribute>
<ResourceAttribute name='user' displayName='com.waveset.adapter.RAMessages:RESATTR_USER' description='com.waveset.adapter.RAMessages:RESATTR_HELP_286' value='entexro'>
</ResourceAttribute>
<ResourceAttribute name='password' displayName='com.waveset.adapter.RAMessages:RESATTR_PASSWORD' type='encrypted' description='com.waveset.adapter.RAMessages:RESATTR_HELP_262' value='62625D9D70BB48B6:39583279:10C5E367E36:-7FFD|V7ftcoYzVBc='>
</ResourceAttribute>
</ResourceAttributes>
<AccountAttributeTypes nextId='2'>
<AccountAttributeType id='1' name='dbtempid' syntax='string' mapName='USERID' mapType='string' required='true'>
</AccountAttributeType>
</AccountAttributeTypes>
<Template>
<ObjectRef type='AttributeDefinition' id='#ID#AttributeDefinition:accountId' name='accountId'/>
</Template>
<Retries max='0' delay='300' emailThreshold='5'/>
<LoginConfigEntry name='com.waveset.security.authn.WSResourceLoginModule' type='Oracle' displayName='com.waveset.adapter.RAMessages:RES_LOGIN_MOD_ORACLE'>
<AuthnProperties>
<AuthnProperty name='USERID' displayName='com.waveset.adapter.RAMessages:UI_USERID_LABEL' isId='true' formFieldType='text' dataSource='USERID'/>
</AuthnProperties>
<SupportedApplications>
<SupportedApplication name='Administrator Interface'/>
<SupportedApplication name='User Interface'/>
</SupportedApplications>
</LoginConfigEntry>
<ResourceUserForm>
<ObjectRef type='UserForm' id='#ID#Oracle User Form'/>
</ResourceUserForm>
<Features>
</Features>
<MemberObjectGroups>
<ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>
</MemberObjectGroups>
</Resource>
[6037 byte] By [
LarryViars] at [2007-11-26 9:23:49]

# 1
Through some very painstaking debugging and manually crafting by hand an XML file with all required attributes I was successfully able to import an adapter.
It appears that the Wizard has a bug where it is creating a Resource Attribute called 'password', which is the problem. If I manually change the attribute with an uppercase 'P', ie "Password", the adapter then shows up in the resource list. If I then update any parameters through the Wizard for that resource, the Wizard changes the XML to the invalid attribute name again and recreates the error.
Sun has yet to confirm or deny this behavior
So, for anyone else who may be as dense as I, here is my base DatabaseTable Adapter. I now need to figure out how to make the rest of it work . . .
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Resource PUBLIC 'waveset.dtd' 'waveset.dtd'>
<!-- MemberObjectGroups="#ID#Top" accountTypesEnabled="false" hostname="10.13.19.66" id="#ID#62625D9D70BB48B6:675E1247:10CB552FF93:-7D95" name="Test Database Table" startupType="Disabled" supportsContainerObjectTypes="false" supportsScanning="false" syncEnabled="false" syncSource="true" type="Database Table" typeString="Database Table"-->
<Resource id='#ID#62625D9D70BB48B6:675E1247:10CB552FF93:-7D95' name='Test Database Table' creator='Configurator' createDate='1155565523738' lastModifier='Configurator' lastModDate='1155570366411' lastMod='45' class='com.waveset.adapter.DatabaseTableResourceAdapter' typeString='Database Table' hasId='true' facets='provision' timeLastExamined='0' reconcileTime='0' syncSource='true' startupType='Disabled'>
<ResourceAttributes>
<ResourceAttribute name='Quoting' displayName='RAMessages:RESATTR_DBTABLE_QUOTING' description='RAMessages:RESATTR_HELP_DBTABLE_QUOTING' value='None'>
</ResourceAttribute>
<ResourceAttribute name='Host' displayName='RESATTR_HOST' description='RESATTR_HELP_DBTABLE_HOST' value='10.13.19.66'>
</ResourceAttribute>
<ResourceAttribute name='Port' displayName='RESATTR_PORT' description='RESATTR_HELP_DBTABLE_PORT' value='1526'>
</ResourceAttribute>
<ResourceAttribute name='User' displayName='RESATTR_USER' description='RESATTR_HELP_DBTABLE_USER' value='entexro'>
</ResourceAttribute>
<ResourceAttribute name='Password' displayName='com.waveset.adapter.RAMessages:RESATTR_PASSWORD' type='encrypted' description='com.waveset.adapter.RAMessages:RESATTR_HELP_262' value='62625D9D70BB48B6:39583279:10C5E367E36:-7FFD|V7ftcoYzVBc='>
</ResourceAttribute>
<ResourceAttribute name='Database' displayName='RESATTR_DATABASE' description='RESATTR_HELP_DBTABLE_DATABASE' value='gmst5'>
</ResourceAttribute>
<ResourceAttribute name='Table' displayName='RESATTR_TABLE' description='RESATTR_HELP_DBTABLE_TABLE' value='USERID'>
</ResourceAttribute>
<ResourceAttribute name='Key Column' displayName='RESATTR_KEY_COLUMN' description='RESATTR_HELP_DBTABLE_KEY_COLUMN' value='USERID'>
</ResourceAttribute>
<ResourceAttribute name='Password Column' displayName='RESATTR_PASSWORD_COLUMN' description='RESATTR_HELP_DBTABLE_PASSWORD_COLUMN'>
</ResourceAttribute>
<ResourceAttribute name='JDBC Driver' displayName='RESATTR_JDBC_DRIVER' description='RESATTR_HELP_DBTABLE_DRIVER' value='oracle.jdbc.driver.OracleDriver'>
</ResourceAttribute>
<ResourceAttribute name='JDBC URL Template' displayName='RESATTR_URL_TEMPLATE' description='RESATTR_HELP_DBTABLE_URL_TEMPLATE' value='jdbc:oracle:thin:@%h:%p:%d'>
</ResourceAttribute>
<ResourceAttribute name='noPasswords' displayName='com.waveset.adapter.RAMessages:RESATTR_NOPASSWORDS' type='boolean' description='com.waveset.adapter.RAMessages:DBTABLE_NOPASSWORDS_HELP' value='true'>
</ResourceAttribute>
<ResourceAttribute name='Static Search Predicate' displayName='com.waveset.adapter.RAMessages:RESATTR_STATIC_SEARCH_PREDICATE' description='com.waveset.adapter.RAMessages:DBTABLE_HELP_STATIC_SEARCH_PREDICATE' facets='activesync'>
</ResourceAttribute>
<ResourceAttribute name='Last Fetched Conjunction' displayName='com.waveset.adapter.RAMessages:RESATTR_LAST_FETCHED_CONJUNCTION' description='com.waveset.adapter.RAMessages:DBTABLE_LAST_FETCHED_CONJUNCTION_HELP' facets='activesync' value='AND'>
</ResourceAttribute>
<ResourceAttribute name='Last Fetched Predicate' displayName='com.waveset.adapter.RAMessages:RESATTR_LAST_FETCHED_PREDICATE' description='com.waveset.adapter.RAMessages:DBTABLE_LAST_FETCHED_PREDICATE_HELP' facets='activesync'>
</ResourceAttribute>
<ResourceAttribute name='Order By Clause' displayName='com.waveset.adapter.RAMessages:DBTABLE_ORDER_BY' description='com.waveset.adapter.RAMessages:DBTABLE_ORDER_BY_HELP' facets='activesync'>
</ResourceAttribute>
<ResourceAttribute name='processRule' displayName='com.waveset.adapter.RAMessages:RESATTR_PROCESS_RULE' description='com.waveset.adapter.RAMessages:RESATTR_PROCESS_RULE_HELP' facets='activesync'>
</ResourceAttribute>
<ResourceAttribute name='correlationRule' displayName='com.waveset.adapter.RAMessages:RESATTR_CORRELATION_RULE' description='com.waveset.adapter.RAMessages:RESATTR_CORRELATION_RULE_HELP' facets='activesync'>
</ResourceAttribute>
<ResourceAttribute name='confirmationRule' displayName='com.waveset.adapter.RAMessages:RESATTR_CONFIRMATION_RULE' description='com.waveset.adapter.RAMessages:RESATTR_CONFIRMATION_RULE_HELP' facets='activesync'>
</ResourceAttribute>
<ResourceAttribute name='deleteRule' displayName='com.waveset.adapter.RAMessages:RESATTR_DELETE_RULE' description='com.waveset.adapter.RAMessages:RESATTR_DELETE_RULE_HELP' facets='activesync'>
</ResourceAttribute>
<ResourceAttribute name='createUnmatched' displayName='com.waveset.adapter.RAMessages:RESATTR_CREATE_UNMATCHED' description='com.waveset.adapter.RAMessages:RESATTR_CREATE_UNMATCHED_HELP' facets='activesync' value='true'>
</ResourceAttribute>
<ResourceAttribute name='resolveProcessRule' displayName='com.waveset.adapter.RAMessages:RESATTR_RESOLVE_PROCESS_RULE' description='com.waveset.adapter.RAMessages:RESATTR_RESOLVE_PROCESS_RULE_HELP' facets='activesync'>
</ResourceAttribute>
<ResourceAttribute name='populateGlobal' displayName='com.waveset.adapter.RAMessages:RESATTR_POPULATE_GLOBAL' description='com.waveset.adapter.RAMessages:RESATTR_POPULATE_GLOBAL_HELP' facets='activesync' value='false'>
</ResourceAttribute>
<ResourceAttribute name='Proxy Administrator' displayName='com.waveset.adapter.RAMessages:RESATTR_PROXY_ADMINISTRATOR' description='com.waveset.adapter.RAMessages:RESATTR_HELP_30' value='Configurator'>
</ResourceAttribute>
<ResourceAttribute name='Input Form' displayName='com.waveset.adapter.RAMessages:RESATTR_FORM' description='com.waveset.adapter.RAMessages:RESATTR_HELP_26'>
</ResourceAttribute>
<ResourceAttribute name='Pre-Poll Workflow' displayName='com.waveset.adapter.RAMessages:RESATTR_PREPOLL_WORKFLOW' description='com.waveset.adapter.RAMessages:RESATTR_PREPOLL_WORKFLOW_HELP'>
</ResourceAttribute>
<ResourceAttribute name='Post-Poll Workflow' displayName='com.waveset.adapter.RAMessages:RESATTR_POSTPOLL_WORKFLOW' description='com.waveset.adapter.RAMessages:RESATTR_POSTPOLL_WORKFLOW_HELP'>
</ResourceAttribute>
<ResourceAttribute name='Maximum Archives' displayName='com.waveset.adapter.RAMessages:RESATTR_MAX_ARCHIVES' description='com.waveset.adapter.RAMessages:RESATTR_HELP_MAX_ARCHIVES' value='3'>
</ResourceAttribute>
<ResourceAttribute name='Maximum Age Length' displayName='com.waveset.adapter.RAMessages:RESATTR_MAX_LOG_AGE' description='com.waveset.adapter.RAMessages:RESATTR_HELP_MAX_LOG_AGE'>
</ResourceAttribute>
<ResourceAttribute name='Maximum Age Unit' displayName='com.waveset.adapter.RAMessages:RESATTR_MAX_LOG_AGE_UNIT' description='com.waveset.adapter.RAMessages:RESATTR_HELP_MAX_LOG_AGE_UNIT'>
</ResourceAttribute>
<ResourceAttribute name='Log Level' displayName='com.waveset.adapter.RAMessages:RESATTR_LOG_LEVEL' description='com.waveset.adapter.RAMessages:RESATTR_HELP_27' value='2'>
</ResourceAttribute>
<ResourceAttribute name='Log File Path' displayName='com.waveset.adapter.RAMessages:RESATTR_LOG_PATH' description='com.waveset.adapter.RAMessages:RESATTR_HELP_28'>
</ResourceAttribute>
<ResourceAttribute name='Maximum Log File Size' displayName='com.waveset.adapter.RAMessages:RESATTR_LOG_SIZE' description='com.waveset.adapter.RAMessages:RESATTR_HELP_29'>
</ResourceAttribute>
<ResourceAttribute name='Scheduling Interval' displayName='com.waveset.adapter.RAMessages:RESATTR_SCHEDULE_INTERVAL' description='com.waveset.adapter.RAMessages:RESATTR_HELP_51'>
</ResourceAttribute>
<ResourceAttribute name='Poll Every' displayName='com.waveset.adapter.RAMessages:RESATTR_SCHEDULE_INTERVAL_COUNT' description='com.waveset.adapter.RAMessages:RESATTR_HELP_52'>
</ResourceAttribute>
<ResourceAttribute name='Polling Start Time' displayName='com.waveset.adapter.RAMessages:RESATTR_SCHEDULE_START_TIME' description='com.waveset.adapter.RAMessages:RESATTR_HELP_56'>
</ResourceAttribute>
<ResourceAttribute name='Polling Start Date' displayName='com.waveset.adapter.RAMessages:RESATTR_SCHEDULE_START_DATE' description='com.waveset.adapter.RAMessages:RESATTR_HELP_54'>
</ResourceAttribute>
<ResourceAttribute name='useInputForm' displayName='com.waveset.adapter.RAMessages:RESATTR_USE_INPUT_FORM' type='boolean' description='com.waveset.adapter.RAMessages:RESATTR_USE_INPUT_FORM_HELP' facets='activesync' value='true'>
</ResourceAttribute>
<ResourceAttribute name='parameterizedInputForm' displayName='com.waveset.adapter.RAMessages:RESATTR_PARAMETERIZED_INPUT_FORM' description='com.waveset.adapter.RAMessages:RESATTR_PARAMETERIZED_INPUT_FORM_HELP' facets='activesync'>
</ResourceAttribute>
<ResourceAttribute name='activeSyncPostProcessForm' displayName='com.waveset.adapter.RAMessages:RESATTR_SYNC_POST_PROCESS_FORM' description='com.waveset.adapter.RAMessages:RESATTR_SYNC_POST_PROCESS_FORM_HELP' facets='activesync'>
</ResourceAttribute>
<ResourceAttribute name='activeSyncConfigMode' displayName='com.waveset.adapter.RAMessages:RESATTR_SYNC_CONFIG_MODE' description='com.waveset.adapter.RAMessages:RESATTR_SYNC_CONFIG_MODE_HELP' facets='activesync' value='basic'>
</ResourceAttribute>
<ResourceAttribute name='assignSourceOnCreate' displayName='com.waveset.adapter.RAMessages:RESATTR_ASSIGN_SOURCE_ON_CREATE' type='boolean' description='com.waveset.adapter.RAMessages:RESATTR_ASSIGN_SOURCE_ON_CREATE_HELP' facets='activesync' value='true'>
</ResourceAttribute>
</ResourceAttributes>
<AccountAttributeTypes nextId='0'>
</AccountAttributeTypes>
<Template>
<ObjectRef type='AttributeDefinition' id='#ID#AttributeDefinition:accountId' name='accountId'/>
</Template>
<Retries max='0' delay='300' emailThreshold='5'/>
<LoginConfigEntry name='com.waveset.security.authn.WSResourceLoginModule' type='Database Table' displayName='com.waveset.adapter.RAMessages:RES_LOGIN_MOD_DBTABLE'>
<AuthnProperties>
<AuthnProperty name='db_user' displayName='com.waveset.adapter.RAMessages:UI_USERID_LABEL' isId='true' formFieldType='text' dataSource='user'/>
<AuthnProperty name='db_password' displayName='com.waveset.adapter.RAMessages:UI_PWD_LABEL' formFieldType='password' dataSource='user'/>
</AuthnProperties>
<SupportedApplications>
<SupportedApplication name='Administrator Interface'/>
<SupportedApplication name='User Interface'/>
</SupportedApplications>
</LoginConfigEntry>
<ResourceUserForm>
<ObjectRef type='UserForm' id='#ID#Database Table User Form'/>
</ResourceUserForm>
<Features>
</Features>
<MemberObjectGroups>
<ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>
</MemberObjectGroups>
<Properties>
<Property name='dbType' value='Oracle'/>
<Property name='tableType' value='TABLE'/>
</Properties>
</Resource>