iSeries Remote Systems
v6.0.0

com.ibm.etools.iseries.core.util
Class ISeriesDataElementUtil

java.lang.Object
  extended bycom.ibm.etools.iseries.core.dstore.common.ISeriesDataElementHelpers
      extended bycom.ibm.etools.iseries.core.util.ISeriesDataElementUtil
All Implemented Interfaces:
IISeriesDataElementDescriptorTypes, ISeriesDataStoreConstants

public final class ISeriesDataElementUtil
extends ISeriesDataElementHelpers
implements IISeriesDataElementDescriptorTypes

This class is a utility class that can be used to obtain the context of a DataElement, e.g. what subsystem it belongs to, the system that subsystem belongs to, the connection name, etc. Base function which does not rely on client-side code should be put in the ISeriesDataElementHelpers class.


Field Summary
static String copyright
           
 
Fields inherited from class com.ibm.etools.iseries.core.dstore.common.ISeriesDataElementHelpers
Copyright, validJobNameChars, VARIANTS
 
Fields inherited from interface com.ibm.etools.iseries.core.descriptors.IISeriesDataElementDescriptorTypes
Copyright, DSPF_FILE_TYPE, DTA_FILE_TYPE, FILE_TYPE, LF_FILE_TYPE, LIB_TYPE, MBR_TYPE, MESSAGE_DESCRIPTION_TYPE, MODULE_TYPE, MSG_FILE_TYPE, OBJ_TYPE, PGM_MODULE_TYPE, PGM_TYPE, PROCEDURE_TYPE, QRYDFN_TYPE, SAVF_FILE_TYPE, SRC_FILE_TYPE, SRC_MBR_TYPE, SRVPGM_TYPE, UNKNOWN_TYPE
 
Fields inherited from interface com.ibm.etools.iseries.core.dstore.common.ISeriesDataStoreConstants
ABSTRACT_FILTER_DESCRIPTOR, ABSTRACT_NATIVE_FSO_DESCRIPTOR, API_ERROR, API_ERROR_DESCRIPTOR, API_OK, API_PTF_MISSING, API_RESULT_DESCRIPTOR, API_RETURN_CODE, AUTHORITY_LIST_NODE, AUTHORITY_NODE, BATCHCOMMAND_DESCRIPTOR, C_GET_EDIT_CCSID, C_LDA_READ, C_LDA_WRITE, C_USER_PREFERENCES_DIRECTORY, CCSID_DESCRIPTOR, CDRA_INFO, CHECK_AUTHORITY_COMMAND, CLEAR_LOCAL_CACHE, CMD_DEBUG_RELEASE_APPLICATION, CMD_DEBUG_SPAWN_AND_HOLD, CMD_GET_DEBUG_ROUTER_PORT, CMD_IJOB_ASSOCIATE, CMD_IJOB_RELEASE, CMD_IJOB_RUNPGM, CMD_MULTI_SPAWNFAIL, CMD_MULTI_SPAWNSUCC, CMD_RUNBATCHCOMMAND, CMD_RUNBATCHCOMMAND_NOHELP, CMD_RUNCOMMAND, CMD_RUNCOMMAND_MULTITHREADED, CMD_RUNCOMMAND_MULTITHREADED_NOHELP, CMD_RUNCOMMAND_NOHELP, COMM_SERVER_INFORMATION, COMMAND_DESCRIPTOR, COMMAND_FILTER_DESCRIPTOR, COMMAND_MINER, COMMAND_MINER_ROOT_ELEMENT, COMMAND_QUERY_DB_FIELDS, COMMAND_QUERY_DB_KEYS, COMMAND_QUERY_DSPF_ALL, COMMAND_QUERY_MODULE_LIST, COMMAND_QUERY_PROCEDURE_LIST, CREATE_EDIT_MASK, CURRENT_WORKING_DIR, CURRENT_WORKING_DIR_DESCRIPTOR, DBFIELD_ALIAS, DBFIELD_ALLOC_LENGTH, DBFIELD_ALWNUL, DBFIELD_CCSID_SPECIFIED, DBFIELD_COLHEAD1, DBFIELD_COLHEAD2, DBFIELD_COLHEAD3, DBFIELD_DATA_CCSID, DBFIELD_DATTIMFMT, DBFIELD_DATTIMSEP, DBFIELD_DBCS_ALTTYPE, DBFIELD_DBCS_COLHEAD, DBFIELD_DBCS_TEXTDESC, DBFIELD_DBCS_VALCHECK, DBFIELD_DECPOS, DBFIELD_DESCRIPTION, DBFIELD_DIGITS, DBFIELD_DISPLAY_LEN_FLAG, DBFIELD_DISPLAY_LENGTH, DBFIELD_DTFLAGS, DBFIELD_EDITCODE, DBFIELD_EDITCODE_SYMBOL, DBFIELD_EDITWORD, DBFIELD_ENCODING_SCHEME, DBFIELD_GENERIC_KEY_COUNT, DBFIELD_INBUF, DBFIELD_INTNAME, DBFIELD_KEYFIELD_ATTRS, DBFIELD_LENGTH, DBFIELD_MAXKEYLEN, DBFIELD_MIN_DISPLAY_LEN_FLAG, DBFIELD_NUMDBCS, DBFIELD_OPERATOR, DBFIELD_OUTBUF, DBFIELD_REF_FIELD, DBFIELD_REFSHIFT, DBFIELD_SST_END, DBFIELD_SST_START, DBFIELD_TYPE, DBFIELD_UCS2_CONVERT_FLAG, DBFIELD_USAGE, DBFIELD_VARLENGTH, DEBUG_HELD_JOB_DESCRIPTOR, DOWNLOAD_RESULT_AS400_SECURITY_EXCEPTION, DSPFFD_INBUF, DSPFFD_OUTBUF, EDCODE_CURSYM, EDCODE_DATESEP, EDCODE_DECSEP, EDCODE_JOBDESC, EDCODE_JOBDESCLIB, EDCODE_SYSDATE, EDCODE_TIMESEP, EDCODE_USERID, EDIT_CODE_DESCRIPTOR, EDIT_CODE_INFORMATION, EDIT_CODE_QUERY, EDIT_DESCRIPTION, EDIT_MASK_DESCRIPTOR, EDIT_MASK_INFO, EDTD_DECCHAR, EDTD_FILLCHAR, EDTD_FLOATSTR, EDTD_FRACTION_MASK, EDTD_INTMASK, EDTD_LEFTCHAR, EDTD_NEGCHAR, EDTD_POSCHAR, EDTD_RIGHTCHAR, EDTD_ZEROVAL, EDTM_RECLEN, ENVVAR_DESCRIPTOR, ENVVAR_INFO, ERROR_DESCRIPTOR, EVENTSFILE_DESCRIPTOR, FIELD_DESCRIPTOR, FIELD_LIST_NODE, FIELD_PROPERTIES_NODE, FILE_ACCPATHTYPE, FILE_ALTSEQ, FILE_BASEDONCOUNT, FILE_BASEDONFILES, FILE_DESCRIPTOR, FILE_DYNSEL, FILE_IGCFIELD, FILE_IGCLITERAL, FILE_JFILE, FILE_KEYACCESS, FILE_LANGID, FILE_OVERRIDE_INFO, FILE_OVERRIDE_SOURCE_DESCRIPTOR, FILE_OVERRIDE_TARGET_DESCRIPTOR, FILE_PROPERTIES_NODE, FILE_SELECTOMITLF, FILE_SRCFILE, IFS_FILE_FILTER_OBJECT, IFS_FILESYSTEM_MINER, IFS_FILTER_DESCRIPTOR, IFS_FOLDER_FILTER_OBJECT, IJOB_DATAQ_DESCRIPTOR, ISERIES_PROGRAM_DESCRIPTOR, JOB_DESCRIPTOR, JOB_FILTER_DESCRIPTOR, JOB_MINER, JOB_MINER_LOG_ELEMENT, JOB_MINER_ROOT_ELEMENT, JOB_PROPERTY_DESCRIPTOR, JOB_PROPERTY1_ELEMENT, JOB_PROPERTY2_ELEMENT, JOB_PROPERTY3_ELEMENT, JOB_PROPERTYINT_ELEMENT, JOBCMD_CHGJOB, JOBCMD_DSPJOBLOG, JOBCMD_ENDJOB, JOBCMD_ENDJOB_IMMED, JOBCMD_HOLDJOB, JOBCMD_QRYJOB_ALL_PROPERTIES, JOBCMD_QRYJOB_PROPERTY, JOBCMD_QRYJOB_PROPERTYP2, JOBCMD_QRYJOB_PROPERTYP3, JOBCMD_QRYJOB_PROPERTYPINT, JOBCMD_RELEASEJOB, JOBFILTERCMD_QUERY, JOBNAME_DESCRIPTOR, JOBPROP_ACCTCODE, JOBPROP_ACTIVESTATUS, JOBPROP_AUXIO, JOBPROP_BREAKMSGHDL, JOBPROP_CCSID, JOBPROP_CNTRYID, JOBPROP_CTLDENDREQ, JOBPROP_CURRSYSPOOL, JOBPROP_CURRUSER, JOBPROP_DATE_ENTERED, JOBPROP_DATE_STARTED, JOBPROP_DATEFMT, JOBPROP_DATESEP, JOBPROP_DBCSCAP, JOBPROP_DECFMT, JOBPROP_DESCRIPTION, JOBPROP_DEVRCYACT, JOBPROP_DFTCCSID, JOBPROP_ENDSEV, JOBPROP_INQMSGRPLY, JOBPROP_ITRANS, JOBPROP_KEEPDDMACT, JOBPROP_LANGID, JOBPROP_LOGCLP, JOBPROP_LOGLVL, JOBPROP_LOGSEV, JOBPROP_LOGTXT, JOBPROP_MAXCPU, JOBPROP_MAXTMPSTOR, JOBPROP_MSGQACT, JOBPROP_MSGQMAX, JOBPROP_OUTQ, JOBPROP_OUTQ_PTY, JOBPROP_PGMRC, JOBPROP_PRODRC, JOBPROP_PRTDEV, JOBPROP_PRTKEYFMT, JOBPROP_PRTTXT, JOBPROP_PURGE, JOBPROP_ROUTING, JOBPROP_RUNPTY, JOBPROP_SORTTAB, JOBPROP_SPECENV, JOBPROP_STATUSMSGHDL, JOBPROP_SUBMITNAME, JOBPROP_SUBMITNUMBER, JOBPROP_SUBMITUSER, JOBPROP_SUBSYSTEM, JOBPROP_SUBTYPE, JOBPROP_SWITCHES, JOBPROP_SYSPOOL, JOBPROP_THREADS, JOBPROP_TIMESEP, JOBPROP_TIMESLICE, JOBPROP_TIMESLICEPOOL, JOBPROP_TOTRESPTIME, JOBPROP_TYPE, JOBPROP_USEDCPU, JOBPROP_USEDTMPSTOR, JOBPROP_USERRC, JOBPROP_WAITTIME, KEYFIELD_LIST_NODE, KEYWORD_DESCRIPTOR, LDA_READ_EXCEPTION_DESCRIPTOR, LDA_READ_LIBRARY_NAME_DESCRIPTOR, LDA_READ_MEMBER_NAME_DESCRIPTOR, LDA_READ_NO_OUTPUT_DESCRIPTOR, LDA_WRITE_CCSID_DESCRIPTOR, LDA_WRITE_EXCEPTION_DESCRIPTOR, LDA_WRITE_LENGTH_DESCRIPTOR, LIB_FILTER_DESCRIPTOR, LIB_FILTER_STR_DESCRIPTOR, LIBRARY_DESCRIPTOR, LIBRARY_PROPERTIES_NODE, LIST_OBJ_LOCKS_COMMAND, MBR_FILTER_DESCRIPTOR, MBR_FILTER_STR_DESCRIPTOR, MEMBER_CHANGE_TIMESTAMP, MEMBER_CREATION_TIMESTAMP, MEMBER_DESCRIPTOR, MEMBER_NUMBER_OF_DELETED, MEMBER_NUMBER_OF_RECORDS, MEMBER_PROPERTIES_NODE, MEMBER_RESTOTE_TIMESTAMP, MEMBER_SAVE_TIMESTAMP, MESSAGE_DESCRIPTOR, MESSAGE_FILE_DESCRIPTOR, MESSAGED_DESCRIPTOR, MODULE_DESCRIPTOR, MODULE_INTERNAL_DESCRIPTOR, MODULE_LANGID, MODULE_LIST_NODE, MODULE_PROPERTIES_NODE, MSGD_STRUCTURE_NODE, NATIVE_FILESYSTEM_MINER, NETINT_DESCRIPTOR, NETINT_LIST_NODE, NETINT_QUERY, NETWORK_ERROR_DESCRIPTOR, OBJ_FILTER_DESCRIPTOR, OBJ_FILTER_STR_DESCRIPTOR, OBJECT_DESCRIPTOR, OBJECT_PROPERTIES_NODE, PGM_DEBUGGABLE, PGM_OPM, PROCEDURE_DESCRIPTOR, PROCEDURE_LIST_NODE, PROGRAM_DESCRIPTOR, PROPERTY_DESCRIPTOR, QSYS_DESCRIPTOR, QUERY_CURRENT_WORKING_DIR, QUERY_DEVICE_RECORDS, QUERY_ENCODING_SCHEME, QUERY_ENV_VAR, QUERY_FIELD_LIST, QUERY_FILE_PROPERTIES, QUERY_MEMBER_PROPERTIES, QUERY_MESSAGE_DESCRIPTORS_COMMAND, QUERY_RECORD_LIST, QUERY_RECORD_PROPERTIES, RECORD_BUFFER_SIZE, RECORD_CCSID, RECORD_DESC, RECORD_DESCRIPTOR, RECORD_DEVICE_PROPERTIES, RECORD_FLDCNT, RECORD_HAS_SEP_IND_AREA, RECORD_HAS_START_LINE_NUM, RECORD_ISDBCS, RECORD_LEVELID, RECORD_LIST_NODE, RECORD_LOWEST_RESP_IND, RECORD_PROPERTIES_NODE, RECORD_RECLEN, RECORD_STANDARD_PROPERTIES, RECORD_TYPE, RELATIVE_FILTER_DESCRIPTOR, RESULT_MESSAGES_ELEMENT, RETRIEVE_FILE_OVERRIDE_COMMAND, SERVICE_PROGRAM_DESCRIPTOR, SORT_SEQ_TABLE, SORT_SEQ_TABLE_INFO, SPECIAL_FILTER_DESCRIPTOR, SQL_COLERROR, SQL_COLFIRSTBYTE, SQL_COLLASTBYTE, SQL_DESCRIPTOR, SQL_MSGFILE, SQL_MSGID, SQL_MSGLIB, SQL_MSGREPLACELEN, SQL_MSGREPLACETEXT, SQL_NUMSTMT, SQL_RECERORR, SQL_RECFIRSTBYTE, SQL_RECLASTBYTE, SQL_RETINFOLEN, SQL_STATE, SQL_SYNTAX_CHECK, SQL_SYNTAX_CHECK_INFO, SST_BYTESAVAIL, SST_BYTESRETURN, SST_COUNTRYID, SST_JOBCCSID, SST_LANGID, SST_QUERY, SST_SSTLIB, SST_SSTNAME, SST_SUBSITUTION, SST_TABLE, SST_TABLECCSID, SST_TABLELIB, SST_TABLENAME, SST_WEIGHT, STRUCTURE_NODE_DESCRIPTOR, SYSTEM_INFORMATION, SYSTEM_PROPERTY_DESCRIPTOR, SYSTEM_QIGC, SYSTEM_VRM, TABLE_DESCRIPTOR
 
Method Summary
static void dumpDataStore(com.ibm.etools.systems.dstore.core.model.DataElement element, String fileName)
          This method is to assist in debugging during development.
static void dumpToLog(String message, com.ibm.etools.systems.dstore.core.model.DataElement element)
          This method is to assist in debugging customer problems.
static CmdSubSystemImpl getCmdSubSystem(com.ibm.etools.systems.dstore.core.model.DataElement element)
          getCmdSubSystem - Given a DataElement this method will return the CmdSubSystemImpl object which produced this DataElement.
static com.ibm.etools.systems.model.SystemConnection getConnection(com.ibm.etools.systems.dstore.core.model.DataElement element)
          Get the system which represents the context of this object.
static String getConnectionName(com.ibm.etools.systems.dstore.core.model.DataElement element)
          Get the connection name of the system which is the context of this object
static com.ibm.etools.systems.dstore.core.model.DataElement getDataElement(Object element)
          Get the DataElement given the input.
static int getDescriptorType(Object element)
          Return a constant indicating the type of descriptor this data element has.
static ISeriesDataElementDescriptorType getDescriptorTypeObject(Object element)
          Return a constant object representing the type of descriptor this data element has.
static FileSubSystemImpl getFileSubSystem(com.ibm.etools.systems.dstore.core.model.DataElement element)
          getFileSubSystem - Given a DataElement this method will return the FileSubSystemImpl object which produced this DataElement.
static String getHostName(com.ibm.etools.systems.dstore.core.model.DataElement element)
          Get the hostname the context system is associated with
static AS400ifsFileSubSystemImpl getIFSFileSubSystem(com.ibm.etools.systems.dstore.core.model.DataElement element)
          getIFSFileSubSystem - Given a DataElement this method will return the IFSFileSubSystemImpl object which produced this DataElement.
static ISeriesConnection getISeriesConnection(com.ibm.etools.systems.dstore.core.model.DataElement element)
          Get the ISeriesConnection associated with the specified DataElement.
static JobSubSystemImpl getJobSubSystem(com.ibm.etools.systems.dstore.core.model.DataElement element)
          getJobSubSystem - Given a DataElement this method will return the JobSubSystemImpl object which produced this DataElement.
static String getLocalPath(com.ibm.etools.systems.dstore.core.model.DataElement mbrElement, String downloadDir)
          Returns the local path of the element it was to be downloaded.
static String getNFSPath(com.ibm.etools.systems.dstore.core.model.DataElement mbrElement)
          Returns the NFS path of the element.
static com.ibm.etools.systems.model.SystemProfile getProfile(com.ibm.etools.systems.dstore.core.model.DataElement element)
          Get the profile that owns the system which is the context of this object
static String getProfileName(com.ibm.etools.systems.dstore.core.model.DataElement element)
          Get the profile name that owns the system which is the context of this object
static String getStatus(com.ibm.etools.systems.dstore.core.model.DataElement element)
          Return the status property of an object data element
static com.ibm.etools.systems.subsystems.SubSystem getSubSystem(com.ibm.etools.systems.dstore.core.model.DataElement element, String factoryID)
          Given a data element, and a subsystem factory ID, this will find the instance of the subsystem which produced this dataelement.
static com.ibm.etools.systems.subsystems.SubSystemFactory getSubSystemFactory(com.ibm.etools.systems.dstore.core.model.DataElement element)
          Get subsystem factory of the subsystem which is a context for this object
static com.ibm.etools.systems.subsystems.ISystem getSystem(com.ibm.etools.systems.dstore.core.model.DataElement element)
           
static boolean isDataStoreServerLocal(com.ibm.etools.systems.dstore.core.model.DataElement element)
          Find out if the datastore server associated with this object is running locally
 
Methods inherited from class com.ibm.etools.iseries.core.dstore.common.ISeriesDataElementHelpers
addDeliminators, find, getDescription, getFile, getLibrary, getLibrary, getName, getSource, getSubmittedJobInformation, getSubtype, getType, removeDeliminators
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

copyright

public static final String copyright
See Also:
Constant Field Values
Method Detail

getDescriptorTypeObject

public static ISeriesDataElementDescriptorType getDescriptorTypeObject(Object element)
Return a constant object representing the type of descriptor this data element has. This object is better than the integer value, as it incorporates all unique behaviour for this particular type.


getDescriptorType

public static int getDescriptorType(Object element)
Return a constant indicating the type of descriptor this data element has. Returns a constant from IISeriesDataElementDescriptorTypes. This is now deprecated in favor of com.ibm.etools.iseries.core.dstore.common.ISeriesDataElementDescriptorType#getDescriptorTypeObject(DataElement)


getDataElement

public static com.ibm.etools.systems.dstore.core.model.DataElement getDataElement(Object element)
Get the DataElement given the input. The input is either a DataElement directly, or a ISeriesDataElementWrapper wrapper.


getSubSystem

public static com.ibm.etools.systems.subsystems.SubSystem getSubSystem(com.ibm.etools.systems.dstore.core.model.DataElement element,
                                                                       String factoryID)
Given a data element, and a subsystem factory ID, this will find the instance of the subsystem which produced this dataelement.


getCmdSubSystem

public static CmdSubSystemImpl getCmdSubSystem(com.ibm.etools.systems.dstore.core.model.DataElement element)
getCmdSubSystem - Given a DataElement this method will return the CmdSubSystemImpl object which produced this DataElement.

Returns:
The CmdSubSystem which is associated with this DataElement

getFileSubSystem

public static FileSubSystemImpl getFileSubSystem(com.ibm.etools.systems.dstore.core.model.DataElement element)
getFileSubSystem - Given a DataElement this method will return the FileSubSystemImpl object which produced this DataElement.

Returns:
The FileSubSystem which is associated with this DataElement

getJobSubSystem

public static JobSubSystemImpl getJobSubSystem(com.ibm.etools.systems.dstore.core.model.DataElement element)
getJobSubSystem - Given a DataElement this method will return the JobSubSystemImpl object which produced this DataElement.

Returns:
The JobSubSystem which is associated with this DataElement

getIFSFileSubSystem

public static AS400ifsFileSubSystemImpl getIFSFileSubSystem(com.ibm.etools.systems.dstore.core.model.DataElement element)
getIFSFileSubSystem - Given a DataElement this method will return the IFSFileSubSystemImpl object which produced this DataElement.

Returns:
The IFSFileSubSystem which is associated with this DataElement

getSystem

public static com.ibm.etools.systems.subsystems.ISystem getSystem(com.ibm.etools.systems.dstore.core.model.DataElement element)

getSubSystemFactory

public static com.ibm.etools.systems.subsystems.SubSystemFactory getSubSystemFactory(com.ibm.etools.systems.dstore.core.model.DataElement element)
Get subsystem factory of the subsystem which is a context for this object


getConnection

public static com.ibm.etools.systems.model.SystemConnection getConnection(com.ibm.etools.systems.dstore.core.model.DataElement element)
Get the system which represents the context of this object. Uses sequential search, so it should not be used where performance is a factor.


getISeriesConnection

public static ISeriesConnection getISeriesConnection(com.ibm.etools.systems.dstore.core.model.DataElement element)
Get the ISeriesConnection associated with the specified DataElement.


getConnectionName

public static String getConnectionName(com.ibm.etools.systems.dstore.core.model.DataElement element)
Get the connection name of the system which is the context of this object


getProfile

public static com.ibm.etools.systems.model.SystemProfile getProfile(com.ibm.etools.systems.dstore.core.model.DataElement element)
Get the profile that owns the system which is the context of this object


getProfileName

public static String getProfileName(com.ibm.etools.systems.dstore.core.model.DataElement element)
Get the profile name that owns the system which is the context of this object


getHostName

public static String getHostName(com.ibm.etools.systems.dstore.core.model.DataElement element)
Get the hostname the context system is associated with


isDataStoreServerLocal

public static boolean isDataStoreServerLocal(com.ibm.etools.systems.dstore.core.model.DataElement element)
Find out if the datastore server associated with this object is running locally


getNFSPath

public static String getNFSPath(com.ibm.etools.systems.dstore.core.model.DataElement mbrElement)
Returns the NFS path of the element. Assumes a member in the tree view.


getLocalPath

public static String getLocalPath(com.ibm.etools.systems.dstore.core.model.DataElement mbrElement,
                                  String downloadDir)
Returns the local path of the element it was to be downloaded. Basically appends the QSYS path on the server to the download directory specified. Assumes a member in the tree view.


getStatus

public static String getStatus(com.ibm.etools.systems.dstore.core.model.DataElement element)
Return the status property of an object data element


dumpToLog

public static void dumpToLog(String message,
                             com.ibm.etools.systems.dstore.core.model.DataElement element)
This method is to assist in debugging customer problems. Specifically it was created for situations where there are problems with the structure of the DataStore tree. It dumps the message and first level children of the element to the log.


dumpDataStore

public static void dumpDataStore(com.ibm.etools.systems.dstore.core.model.DataElement element,
                                 String fileName)
This method is to assist in debugging during development. It dumps the DataStore tree starting from the dataelement specified and write the output to the file specified.


iSeries Remote Systems
v6.0.0

Copyright © 2005 IBM Corp. All Rights Reserved.

Note: This documentation is for part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.