This appendix describes the new terminology, delivered assertions, and the available assertion executors for the Code Compliance Inspector tool.
There are two executors for CCI:
XPathExecutor: contains all of the XPath related operations. For example, "XpathExistsCheck" and "XpathNodeCountEqualCheck"
FSExecutor: contains all of the file system related operations. For example, "FileExistCheck" and "FilesMatchPatternCheck"
This appendix includes the following sections:
The Code Compliance Inspector was previously called the Process Integration Pack (PIP) Auditor. The new labels and concepts for Code Compliance Inspector are described in Table B-1.
Old Name | New Name | Description |
---|---|---|
PIP Auditor |
Code Compliance Inspector |
Run the Code Compliance Inspector to check for good coding practices. |
Rule |
Assertion |
Assertion replaces the <Rule> tag within the old Rules.xml. Assertions can be defined once within the AssertionCatalog.xml files and then used within one or more Policies in the Policies.xml files. |
RuleSet |
AssertionSet |
AssertionSet replaces the <Ruleset> tag within the old Rules.xml. AssertionSet is informational only and is not surfaced in the JDeveloper Extension or in the Code Compliance By Policy Report. |
Rules.xml |
AssertionCatalog.xml |
There are two files: AssertionCatalog-AIA-<version>.xml and AssertionCatalog-WS-I-<version>.xml. |
Category |
Category |
Category is part of an Assertion's definition in AssertionCatalog.xml. Category is a tag within the definition of an Assertion, that is largely just informational. For this release, existing categories will become the Policy names; meaning that all Assertions tagged with a particular category will appear in the Policies.xml files using a Policy name that matches the Category. |
TestSuite |
Policy |
Replaces the <TestSuite name= > tag in the old TestSuite.xml with <Policy name= >; Policies can be reused into more coarse-grained policy buckets using the <depends name=> tag. |
Test |
Assertion |
Replaces the <Test rulename= > tag in the old TestSuite.xml. |
TestSuite.xml |
Polices.xml |
There are two files: Policies-AIA-<version>.xml and Policies-WS-I-<version>.xml. Within the Policies.xml provided by Oracle, the policy name should match the Catalog names used within the Assertions in the AssertionCatalog.xml. Customers can modify the Policies.xml including renaming and reorganizing the Policies & Assertions. |
pipaudit |
CheckCompliance |
Command line utility. |
Priority |
Priority |
This term remains the same. Priorities are defined as:
Priority levels are additive in nature, so passing Priority 2 (conformant) means that you need to pass Priority 1 (compliance) as well. A detailed list of pre-defined assertions can be viewed in the packaged Assertion Catalog XML files available under the ComplianceInspector/config directory. |
The following tables show the delivered assertions. These pre-defined assertions can be viewed in the packaged Assertion Catalog XML files located in the ComplianceInspector/config directory.
Table B-2 Category :Coding Standards
Assertion | Priority | Description |
---|---|---|
NoTargetSysIdHardWiringInDVMLookupCheck |
1 |
The Target SystemId must not be hardwired in DVM lookups when used in XSL. The syntax used should be: orcl:lookupValue('DVM_NAME',$DVMSourceCol,XPATH,$DVMTargetCol,'') where DVM_NAME can contain alphanumeric and underscore characters and XPATH can contain any XPATH expression. Note: the targetId column can be one of the following: 1) Any Xpath. 2) 'COMMON' 3) a variable that does not contain a hard coded string value. 4) Xpath function. |
NoTargetSysIdHardWiringInXREFLookupCheck |
1 |
The Target SystemId must not be hardwired in XREF lookups when used in XSL. The syntax used should be: xref:lookupXRef('XREF_NAME',$XREFSourceCol,XPATH,$XREFTargetCol,true()|false()) where XREF_NAME can contain alphanumeric and underscore characters and XPATH can contain any XPATH expression. Note: the targetId column can be one of the following: 1) Any Xpath. 2) 'COMMON' 3) a variable that does not contain a hard coded string value. 4) Xpath function. |
TXNEnableInASyncDelayed |
2 |
This check is for an Async Delayed Response service. It must participate in a global transaction. |
TXNEnableInFireForget |
2 |
This check is for a Fire and Forget service. It must participate in a global transaction. |
TonkenizedReferencesInXSLCheck |
2 |
All http URLs that point to an http server location must be tokenized with ${hostname} and ${port}. |
NameSpacePrefixesNamingInBPELCheck |
3 |
In a BPEL process, namespace prefixes must follow naming standard guidelines. The ns1, ns2 prefixes which are generated by default are not allowed. |
Table B-3 Category :Error Handling Standards
Assertion | Priority | Description |
---|---|---|
CatchBlockBindingFaultExistInBPELCheck |
2 |
Catch block has to be defined for BindingFault in BPEL process. |
CatchBlockRemoteFaultExistInBPELCheck |
2 |
Catch block has to be defined for RemoteFault in BPEL process. |
Table B-4 Category :Loose Coupling Standards
Assertion | Priority | Description |
---|---|---|
TonkenizedReferencesInBpelCheck |
2 |
All http URLs that point to an http server location must be tokenized with ${hostname} and ${port}. |
TonkenizedReferencesInCompositeCheck |
2 |
All http URLs that point to an http server location must be tokenized with ${hostname} and ${port}. |
TonkenizedReferencesInWSDLCheck |
2 |
All http URLs that point to an http server location must be tokenized with ${hostname} and ${port}. |
Table B-5 Category :Naming Standards
Assertion | Priority | Description |
---|---|---|
BPELAssignActivityNamingCheck |
3 |
Change the default JDeveloper generated name for the 'assign' activity. |
BPELInvokeActivityNamingCheck |
3 |
Change the default JDeveloper generated name for the 'invoke' activity. |
BPELReceiveActivityCheck |
3 |
Change the default JDeveloper generated name for the 'receive' activity. |
BPELReplyActivityNamingCheck |
3 |
Change the default JDeveloper generated name for the 'reply' activity. |
BPELScopeActivityCheck |
3 |
Change the default JDeveloper generated name for the 'scope' activity. |
Table B-6 Category :Performance Standards
Assertion | Priority | Description |
---|---|---|
CompletionPersistPolicyCheck |
1 |
The bpel.config.completionPersistPolicy property configures how the instance data is saved. For synch transient processes, the value for this property should be 'faulted.' Only the faulted instances will be saved. |
SynchAuditLogLevelCheck |
1 |
The bpel.config.auditLavel property configures how the BPEL service engine will capture audit details. For Synch Transient processes, the value for this property should be 'faulted.' |
Table B-7 Category :Reusability Standards
Assertion | Priority | Description |
---|---|---|
NoLocalSchemasInBPELCheck |
2 |
The BPEL Process folder must not contain any schema files. All Utility schemas must be accessed from a web server. |
NoLocalAdaptersInBPELCheck |
3 |
Adapters should be defined as ESB services. This helps in Endpoint Virtualization. Also, BPEL processes gain homogeneity, focusing on business problems rather than protocol transformations. |
NoSchemaElementsDefinedInWSDLCheck |
3 |
WSDLs should use schema imports. All schema elements must be defined in XSD. |
Table B-8 Category :Security Standards
Assertion | Priority | Description |
---|---|---|
NoPlinkusageForSettingWSSecPropCheck |
1 |
BPEL processes must not use property for passing the username and password for ws-security. OWSM should be used for all web services invocation authentication purposes. |
NoUnamePwdInDVMCheck |
1 |
DVM stores must not store credentials. They should not contain UserName and Password values. OWSM should be used for all web services invocation authentication purposes. |
Table B-9 Category :WS-I BP Standards
Assertion | Priority | Description |
---|---|---|
SchemaImportUsedforXSDOnlyCheck |
3 |
WSDL import elements must not be used to import other kinds of XML schemas. WSDL imports must only import WSDLs. This check is to ensure compatibility with the WS interoperability basic profile 1.0. |
SchemaImportsOnlyInsideSchemaCheck |
3 |
XML Schema 'import' statements must be within the xsd:schema element of the types element. |
SchemaNodeOnlyInsideWsdlTypesCheck |
3 |
XML Schema elements must be within the xsd:types element of the types element. |
SchemaTargetNamespaceExistCheck |
3 |
All xsd:schema elements contained in a wsdl:types element must have a targetNamespace attribute with a valid and non-null value, unless the xsd:schema element has xsd:import and/or xsd:annotation as its only child element(s). |
SchemaTargetNamespaceMatchingCheck |
3 |
WSDLs must not import WSDLs that have a different targetNamespace in the definition. This assertion assumes that inputDir contains the AIAMetaData directory. |
SchemaXSDFileRootSchemaCheck |
3 |
XSD files must import XSD files that have schema as a root node in the location of xsd:import. This assertion assumes that inputDir contains the AIAMetaData directory . |
UTFEncodingUsedinSchemaCheck |
3 |
Schema definitions must use UTF-8 or UTF-16 encoding. UTF encoding can be specified in the processing instruction of an XML. The assertion looks for the existence of UTF in the processing instructions. This check is to ensure compatibility with the WS interoperability basic profile 1.0. |
UTFEncodingUsedinWSDLCheck |
3 |
WSDL description must use UTF-8 or UTF-16 encoding. UTF encoding can be specified in the processing instruction of an xml. The assertion looks for the existence of UTF in the processing instruction. This check is to ensure compatibility with the WS interoperability basic profile 1.0. |
WSDLDocumentationIsFirstChildCheck |
3 |
The wsdl:documentation element may be present as the first child element of wsdl:import, wsdl:part and wsdl:definitions in addition to the elements cited in the WSDL1.1 specification. |
WSDLFileRootDefinitionsCheck |
3 |
WSDLs must import WSDL files that have definitions as a root node in the location of wsdl:import. This assertion assumes that inputDir contains the AIAMetaData directory. |
WSDLImportLocationNotEmptyCheck |
3 |
The location attribute of all wsdl:import elements must be non-empty. |
WSDLImportNoRelativeURIInNSCheck |
3 |
The namespace attribute of wsdl:import must not be a relative URI. The URI should be an absolute URI as per URI standards. This check is to ensure compatibility with the WS interoperability basic profile 1.0. |
WSDLImportOnlyPrecededByDocCheck |
3 |
All WSDL import elements must only be preceded by WSDL documentation element in a WSDL file. This check is to ensure compatibility with the WS interoperability basic profile 1.0. |
WSDLImportUsedforWSDLOnlyCheck |
3 |
WSDL import element must not be used to import other kinds of XML schemas. WSDL import must only import WSDLs. This check is to ensure compatibility with WS interoperability basic profile 1.0. |
WSDLImportsOnlyInsideDefinitionCheck |
3 |
All WSDL 'import' statements must be within wsdl:definition elements. |
WSDLOperationMustHaveInputCheck |
3 |
Solicit-Response and Notification type operations must not be used in a wsdl:portType definition. For example, output messages should always be after input messages. |
WSDLOperationNameMustBeUniqueCheck |
3 |
All wsdl:portType elements must have operations with distinct values for their name attributes(overloading). |
WSDLPartMustNotUseElementAndTypeCheck |
3 |
A wsdl:message element must not specify both 'type' and 'element' attributes on the same wsdl:part element. |
WSDLTargetNamespaceMatchingCheck |
3 |
WSDLs must not import other WSDLs that have different targetNamespace in definitions. This assertion assumes that inputDir contains the AIAMetaData directory. |
WSDLTypesOnlyPrecededByDocAndImportCheck |
3 |
All WSDL types elements must only be preceded by WSDL documentation element or wsdl import in a WSDL file. This check is to ensure compatibility with the WS interoperability basic profile 1.0. |
XMLversionUsageInSchemaCheck |
3 |
XSD files must use XML version 1.0. The XML version can be specified in the processing instructions of an XML. The assertion looks for the existence of version in the processing instructions. This check is to ensure compatibility with WS interoperability basic profile 1.0. |
XMLversionUsageInWSDLCheck |
3 |
WSDL files must use XML version 1.0. The XML version can be specified in the processing instructions of an XML. The assertion looks for the existence of version in the processing instructions. This check is to ensure compatibility with WS interoperability basic profile 1.0. |
The following tables describe the mandatory and optional parameters for the XPathExecutor.
Table B-10 describes the mandatory parameters.
Table B-10 Mandatory Parameters for XPathExecutor
Param Name | Description | Default Value | Example | Failure Situation |
---|---|---|---|---|
Xpath.search |
XPath to be executed on a particular document |
No default |
//xsl:variable/@name |
XPath execution failure exception |
xpath.namespace.prefixes |
The list of delimited values of namespace prefixes that are used for a particular XPath expression execution. |
No default |
'bpel="http://schemas.xmlsoap.org/ws/2003/03/business-process/"; xsl="http://www.w3.org/1999/XSL/Transform"; aiacfg="http://xmlns.oracle.com/aia/core/config/V1"; wsdl="http://schemas.xmlsoap.org/wsdl/"; xsd="http://www.w3.org/2001/XMLSchema"; xsd="http://www.w3.org/2001/XMLSchema"; |
XPath execution failure exception |
assertCondition |
If the Assertion level attribute "operation" is not present then this param value will be the valid executor operation name. Otherwise, this can be used as a sub-operation value. |
No default |
XpathValuesPatternMatchCheck |
Unsupported operation exception |
xpath.match.regxpattern |
Assertion value |
No default |
[a-zA-Z_0-9]* The regular expression says that a variable name can contain only alphanumeric characters with underscores. |
Error depending on the comparison type |
Table B-11 describes the optional parameters.
Table B-11 Optional Parameters for XPathExecutor
Param Name | Description | Default Value | Example | Failure Situation |
---|---|---|---|---|
xpath.notexist.ignore |
Every XPath operation assumes that the comparison between the XPath execution result and the assertValue can only be made if the output NodeList returned after evaluating the Xpath contains at least one node (the default behavior except for the 'XpathExists' and 'XpathNotExists' operations). The default behavior of non-compliance is reported if the XPath does not return any nodes.) |
False |
We have a test saying "all compensate activities in BPEL should start with a prefix of compensate". Now if we do not have any compensate activities in a BPEL file, Code Compliance Inspector reports a non-compliance. If we specify xpath.notexist.ignore="true", then the test would be considered a success by Code Compliance Inspector. |
-- |
xml.external.filename |
There are situations when the assertValue is more than just a mere String. The value can be an entire XML fragment, which contains regEx patterns. In this case, a compare file argument specifies the file and the XPath specifies the fragment within the file. |
No default |
Used to compare standard code snippets. <Param name="xml.external.filename" value="${faultXML}" default="AIAStdCode.xml"/> |
-- |
xml.external.search.xpath |
Xml.external.search.xpath is always used with xml.external.filename. As mentioned above, this XPath helps us identify the XML fragment for comparison. |
-- |
<Param name="xml.external.search.xpath" value="//EBMHeaderPopulation/corecom:EBMHeader/P4/corecom:MessageProcessingInstruction"/> This is used with the xml.external.filename param above. When we apply the XPath (Xml.external.search.xpath) on the file (Xml.external.filename) we get an XML fragment for comparison. In the above example, the MessageProcessingInstruction returned by evaluating XPath on selected files is evaluated against MessageProcessingInstruction returned by evaluating Xml.external.search.xpath on the file Xml.external.filename. |
-- |
xml.node.match.mode |
Special operations, if any, to be executed to derive the assertValue. Otherwise, the default behavior is executed which is stated in the default section |
Default: String It converts the NodeList from Resultant XPath to string (ConvertNodeListToStirng) |
Currently, the only supported type is length. By default, when nothing is specified, it converts the resultant NodeList to String. |
-- |
The following tables describe the mandatory and optional parameters for the FSExecutor.
Table B-12 describes the mandatory parameters.
Table B-12 Mandatory Parameters for the FSExecutor
Param Name | Description | Default Value | Example | Failure Situation |
---|---|---|---|---|
assertCondition |
Any one of the operations supported by the FSExecutor. See the Available Operations for FSExecutor section. |
No default |
FileNotExistCheck |
Unsupported Operation exception |
filename.search.regxpattern |
Regular expression for selecting matching files. |
No default |
a-zA-Z_0-9_/]*(EBF)((V)[0-9]*)??.wsdl |
Invalid Regular expression |
Table B-13 describes the optional parameters.
Table B-13 Optional Parameters for the FSExecutor
Param Name | Description | Default Value | Example | Failure Situation |
---|---|---|---|---|
filename.match.regxpattern |
Assertion value (String) |
No default |
InputFilePattern_(c|C)ustom.xsl |
-- |
filecontent.exclude.regxpattern |
Exclude of file for which content matched with this pattern (Regular Expression) |
No default |
.*(c|C)ustom.xsl |
-- |
filename.exclude.regxpattern |
Exclude of file for which filename matched with this pattern (Regular Expression) |
No default |
.*(JMSProducer|OutboundHeader).*.wsdl |
-- |
The following tables describe the available operations for the XPathExecutor.
Checks for the existence of the nodes in the given XPath List. Every XPath in the list should have at least one node. This is very similar to the XpathExist operation except that we can check for multiple XPaths.
Table B-14 XpathListExistCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath where zero nodes are expected |
- |
Xpath.namespace.prefixes |
- |
- |
Xpath.1.search |
- |
/A/B |
Xpath.2.search |
- |
And so on... We can check for 'n' XPaths in this manner (xpathn) |
xml.local.imports.resovable |
- |
- |
xml.remote.imports.resovable |
- |
- |
local.metadir |
- |
- |
Checks for the existence of the nodes in the given XPath List. Every XPath in the list should have at least one node. This is very similar to the XpathExist operation except that we can check for multiple XPaths.
Table B-15 XpathNotExistsCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath where zero nodes are expected |
- |
Xpath.namespace.prefixes |
- |
- |
xml.local.imports.resovable |
- |
Same as the one in XpathExists. |
xml.remote.imports.resovable |
- |
- |
local.metadir |
- |
- |
Checks if the number of nodes found at the XPath is less than the assert value.
Table B-16 XpathNodeCountLessThanCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for which node count is checked. |
- |
Xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
Maximum number of nodes that can be present for the XPath. Note that if your intended value is 'n' then the assert value is its 'n+1'. |
All BPEL processes, which follow SYNC Request Response pattern, should not have more than 6 extension points. So assert value would be '7'. |
XpathNodeCountGreaterThanCheck
Checks if the number of nodes found at the XPath is less than the assert value.
Table B-17 XpathNodeCountGreaterThanCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for which node count is checked. |
- |
Xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
Minimum number of nodes that can be present for the XPath. Note that if your intended value is 'n' then the assert value is its 'n-1'. |
All BPEL processes, which follow SYNC Request Response pattern, should have minimum of 4 extension points. So assert value would be '3'. |
Checks if the value in the XPath is less than the assert value.
Table B-18 XpathValuesLessThanCheck
Operation | Description | Comments |
---|---|---|
Xpath.search - |
XPath for which node count is checked. |
- |
Xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
Maximum number that the value from the XPath can have. Note that if your intended value is 'n' then the assert value is its 'n+1'. |
All BPEL processes, which follow SYNC Request Response pattern, should not have more than 6 extension points. So assert value would be '7'. |
Checks if the value in the XPath is less than or equal to the assert value.
Table B-19 XpathValuesLessThanEqualCheck -
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for which node count is checked. |
- |
Xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
Maximum number that the value from XPath can have. |
- |
Checks if the value in the XPath is greater than the assert value.
Table B-20 XpathValuesGreaterThanCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for which node count is checked. |
- |
Xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
Minimum number of nodes that can be present for the XPath. Note that if your intended value is 'n' then the assert value is its 'n-1'. |
All BPEL processes, which follow SYNC Request Response pattern, should have minimum of 4 extension points. So assert value would be '3'. |
XpathValuesGreaterThanEqualCheck
Checks if the value in the XPath is greater than or equal to the assert value.
Table B-21 XpathValuesGreaterThanEqualCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for which node count is checked. |
- |
Xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
Minimum number of nodes that can be present for the XPath. |
- |
Checks if the node returned by the XPath matches the XML snippet from a file. Note that it is a regular expression comparison and the snippet can contain regular expressions.
Table B-22 CompareNodeWithRegExXMLCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for the node, which has to be checked. |
- |
xpath.namespace.prefixes |
- |
- |
xml.external.filename |
The XML file where the snippet for comparison lies. |
"ABCS WSDL should be documented as per AIA Documentation standards." The file AIAStdCode.xml for example contains all the XML snippets. So this file is the xml.external.filename |
xml.external.search.xpath |
//ABCSwsdlDoc/wsdl:documentation |
XPath to derive the XML snippet from the xml.external.filename XML file. This XPath will separate out just the documentation snippet from the XML. |
CompareNodeListWithRegExXMLCheck
Checks if every node from the NodeList returned by the XPath matches the XML snippet from a file. Note that it is a regular expression comparison and the snippet can contain regular expressions. This can be used when multiple nodes from a file have to be checked against the same XML snippet.
Table B-23 CompareNodeListWithRegExXMLCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for the NodeList, which has to be checked. |
Every node from NodeList returned from this XPath should be compliant to the XML snippet derived using xml.external.filename and xml.external.search.xpath. |
xpath.namespace.prefixes |
- |
- |
xml.external.filename |
The XML file where the snippet for comparison lies. |
"Catch blocks are defined as per AIA Error Handling Guidelines." The file AIAStdCode.xml for example contains all the XML snippets. So this file is the xml.external.filename |
xml.external.search.xpath |
XPath to derive the XML snippet from the xml.external.filename XML file. |
//catch This XPath will separate out just the documentation snippet from the XML. |
Checks if the string value of every node from the NodeList returned by the XPath matches the string value specified in the assert value.
Table B-24 XpathValuesEqualCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for the NodeList, which has to be checked. |
Every node from NodeList returned from this XPath should be compliant to the assert value. |
xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
String value to check against. |
- |
xpath.notexist.ignore |
- |
- |
Checks if the string value of every node from the NodeList returned by the XPath does not match the string value specified in the assert value.
Table B-25 XpathValuesNotEqualCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for the NodeList, which has to be checked. |
Every node from NodeList returned from this XPath should be compliant to the assert value. |
xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
String value to check against. |
- |
xpath.notexist.ignore |
- |
- |
Checks if the string value of every node from the NodeList returned by the XPath matches the regular expression pattern specified in the assert value.
Table B-26 XpathValuesPatternMatchCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for the NodeList, which has to be checked. |
Every node from NodeList returned from this XPath should be compliant to the assert value. |
xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
Regular expression pattern to check against. |
"All Assign activities in a BPEL process should start with a prefix of Assign followed by activity name". The pattern would look like: (Assign){1}(_)??(([a-zA-Z])([a-zA-Z_0-9])*) |
xpath.notexist.ignore |
- |
- |
XpathValuesNotMatchPatternCheck
Checks if the string value of every node from the NodeList returned by the XPath does not match the regular expression pattern specified in the assert value. This does the exact opposite check of XpathValuesPatternMatch.
Table B-27 XpathValuesNotMatchPatternCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for the NodeList, which has to be checked. |
Every node from NodeList returned from this XPath should be compliant to the assert value. |
xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
Regular expression pattern to check against. |
"Target node should not be populated during ABM to EBM transformation in Requester ABCSImpl." The following pattern would ensure that no hard coding of target ID is present. :([a-zA-Z_0-9\s]*) |
xpath.notexist.ignore |
- |
- |
Checks if the string value of every node from the NodeList returned by the XPath does not contain the string specified in the assert value.
Table B-28 XpathValueNotContainsCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for the NodeList, which has to be checked. |
Every node from NodeList returned from this XPath should be compliant to the assert value. |
xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
String value to check against. |
"DVM stores should have no credentials stored.." The following pattern would ensure that no tokens that are generally used to store credentials are used in DVMs.:UserName;Password;uname;pwd;username;password |
xpath.notexist.ignore |
- |
- |
Checks if the string value of every node from the NodeList returned by the XPath contains the string specified in the assert value.
Table B-29 XpathValueContainsCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for the NodeList, which has to be checked. |
Every node from NodeList returned from this XPath should be compliant to the assert value. |
xpath.namespace.prefixes |
- |
- |
xpath.match.regxpattern |
String value to check against. |
- |
xpath.notexist.ignore |
- |
- |
Iterates through the children of the node specified by xml.external.filename and xml.external.search.xpath. Checks if every node in NodeList returned by executing xml.external.search.xpath on xml.external.filename, exists in the NodeList returned by executing xpath on the policies file. Note that CompareNodeWithRegExXML checks against the xml.external.filename. The behavior is reverse in this operation. This operation iterates through all the children of the node from xml.external.filename and makes sure each one of them is present in the NodeList from XPath.
Table B-30 ExistsRegExXMLCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for the NodeList, which has to be checked. |
Every node from NodeList returned from this XPath should contain all the children of the node derived from xml.external.filename and xml.external.search.xpath. |
xpath.namespace.prefixes |
- |
- |
xml.external.filename |
String value to check against. |
"Ensure MessageProcessingInstruction is populated fully in ReqABM_to_EBM xsl". |
xml.external.search.xpath |
- |
- |
xml.node.match.mode |
- |
1: (NODE_MUST) This is the default option. All the elements are considered for comparison. Any missing elements are reported for non-compliance. 2: (NODE_IGNORE). If xml.node.match.mode is specified as 2, then missing nodes are not considered for comparison. For example, consider an XML structure with A as a parent and B and C as children (<A><B/><C/></A>). When xml.node.match.mode=1 and if node B or C is absent all together, then non-compliance is reported. If we want to change this default behavior to report a compliance, then we should specify xml.node.match.mode=2. Note that if a node is present then it should conform to the regular expression specified. 3: (NODE_OPTIONAL). This lets us pick and choose what differences we would want to ignore. We can add an attribute minoccurs="0" in any element that we would want to skip comparison when not found. For example, consider an XML structure where A is a parent element and has 2 children B and C (<A><B/><C/></A>). If we want a scenario where missing B's should be reported as compliance where as missing C's should be reported as non-compliance then this is how we can achieve it through xml.node.match.mode: <A><B minoccurs="0"/><C/></A> |
xpath.notexist.ignore |
- |
- |
Iterates through children of node specified by xml.external.filename and xml.external.search.xpath. Checks if every node in NodeList returned by executing xml.external.search.xpath on xml.external.filename, does not exist in the NodeList returned by executing the XPath on the policies file. Note that this does the exact reverse of ExistsRegExXML.
Table B-31 NotExistsRegExXMLCheck
Operation | Description | Comments |
---|---|---|
Xpath.search |
XPath for the NodeList, which has to be checked. |
Every node from NodeList returned from this XPath should contain all the children of the node derived from xml.external.filename and xml.external.search.xpath. |
xpath.namespace.prefixes |
- |
- |
xml.external.filename |
String value to check against. |
- |
xml.external.search.xpath |
- |
Example of this would be say we want to make sure double notifications are not sent as part of error handling. So we could check for the non-existence of certain error handling code snippets in some of the catch blocks. |
xml.node.match.mode |
- |
See the table description for ExistsRegExXML for more information. |
xpath.error.path |
- |
This would be helpful if we would want to show the user the node, which is not supposed to exist. For example, if we want to show the user the catch block that contains the redundant call, this is how we can do it: <Param name="xpath.error.path" default="@faultName"/> |
xpath.notexist.ignore |
- |
- |
The following tables describe the available operations for the FSExecutor
Checks if a file of particular pattern exists in the selected directory.
Operation | Description | Comments |
---|---|---|
filename.search.regxpattern |
Pattern of the file to be selected. |
If you want to check for the existence of a config file, for example, AIAConfigurations.xml in every ABCS integration project, then you can select FileType="*" and context="ABCS" and then provide "AIAConfigurations.xml" in this param value. |
Checks if a file of particular pattern does not exist in the selected directory.
Operation | Description | Comments |
---|---|---|
filename.search.regxpattern |
Pattern of the file to be selected. |
If you want to check for the non-existence of a local schema in every ABCS integration project, then you can select FileType="*" and context="ABCS" and then provide "*.xsd" in this param value. |
Checks if the selected file name matches a particular pattern.
Table B-34 FilesMatchPatternCheck
Operation | Description | Comments |
---|---|---|
filename.search.regxpattern |
Pattern of the file to be selected. |
If you want to check for the existence of an extension WSDL in every ABCS integration project, then you can select FileType="*" and context="ABCS" and then provide ".*(ABCSImpl)((V)[0-9]*)??.wsdl" in this param value. |
filename.match.regxpattern |
The pattern the file name should be checked against. |
If you want to assert that the extension file selected matches a particular naming pattern, for example: ".*(ABCSImpl)Extension.wsdl" |