Skip to content

Latest commit

 

History

History
1247 lines (1236 loc) · 52.2 KB

TODO.org

File metadata and controls

1247 lines (1236 loc) · 52.2 KB

api-checker TODOs

Mavenize

Move Normalizer code to a lib in WADL tools.

Schema for checker XML (XSD 1.1)

File Xerces Bugs[2/2]

  1. [X] assert error
  2. [X] multiple ID error in cli validator

WADL Normalize, Builder, opt1, checker2dot in a single PATH.

Maybe an optional output?

CLI for translation?

Implement validator [9/9]

  1. [X] Implement dispatch handler
  2. [X] Create assert handler
  3. [X] Simple tests on validator [6/6]
    1. [X] GET a/b
    2. [X] Empty machine
    3. [X] GET on regex
    4. [X] GET on an allow all regex
    5. [X] Method regex
    6. [X] Complex URI tests
  4. [X] Unit test steps [6/6]
    1. [X] Start
    2. [X] Accept
    3. [X] MethodFail
    4. [X] URLFail
    5. [X] URI
    6. [X] Method
  5. [X] Clean up console handler…should be more readable
  6. [X] Add Fail Matchers[5/5]
    1. [X] Add URL Fail Matcher
    2. [X] Add Method Fail Matchers
    3. [X] Test URL Fail Matcher
    4. [X] Test Method Fail Matcher
    5. [X] Update validation tests to use both matchers
  7. [X] Capture attempt in error steps
  8. [X] Quickly extract correct error in multi-result case
  9. [X] Assert that validator tests above return the correct error

Checker to scala.[6/6]

  1. [X] Build support for method/uri fail match in schema
  2. [X] Populate method/uri fail match in checker conversion
  3. [X] Update dot conversion to accunt for method/uri fail match
  4. [X] Checker to scala as a handler – possibly passing to an other handler
  5. [X] Add support in validator
  6. [X] Test conversion..including new error states.

Updates to XSD Schema[3/3]

  1. [X] Checker should allow only one start node.
  2. [X] Method must always have next nodes.
  3. [X] Add grammar section (type, namespace, href)

WADL Normalize, Builder, opt1 in a single path [5/5]

  1. [X] Add Builder Library
  2. [X] Support Grammar in checker format[2/2]
    1. [X] Add support for grammar in checker format
    2. [X] Generate checker format with grammars
  3. [X] Simple transation tests to confirm the lib is working [6/6]
    1. [X] Test URI and Method from various WADL configurations[13/13]
      1. [X] Emtpty WADL
      2. [X] URL/Method single resource
      3. [X] URL/Method single resource (tree)
      4. [X] URL/Method single resource (mixed)
      5. [X] Method Reference
      6. [X] Resource Type
      7. [X] Resource Type with Method Reference
      8. [X] Multiple Resource PATHs
      9. [X] Multiple Resource PATHs (tree)
      10. [X] Multiple Resource PATHs (mixed)
      11. [X] Mulitple Resource PATHs (disconnected)
      12. [X] Multiple Resource PATHs (disconnected, tree)
      13. [X] Multiple Resource PATHs (disconnected, mixed)
    2. [X] Other misc Translation tests [2/2]
      1. [X] State Labels
      2. [X] rax:invisible extension
    3. [X] Ensure that input WADLs are correct before tests are run.
    4. [X] Test Path Templates[4/4]
      1. [X] String templates[7/7]
        1. [X] At the end of the path
        2. [X] At the end of the path (tree)
        3. [X] At the end of the path (mixed)
        4. [X] In between path
        5. [X] In between path (tree)
        6. [X] In between path (mixed)
        7. [X] Different prefix
      2. [X] Test Path Templates of other types[9/9]
        1. [X] At the end of the path
        2. [X] At the end of the path (tree)
        3. [X] At the end of the path (mixed)
        4. [X] In between path
        5. [X] In between path (tree)
        6. [X] In between path (mixed)
        7. [X] Test default QName type
        8. [X] Test default QName type (tree)
        9. [X] Test default QName type (mixed)
      3. [X] Resource/Parameter mismatch[4/4]
        1. [X] Name MisMatch
        2. [X] Missing parameter
        3. [X] Bad Parameter type
        4. [X] Bad QName
      4. [X] RegEx Encoding[2/2]
        1. [X] In URL
        2. [X] In Method
    5. [X] Write tests for multi-method target
    6. [X] WADL Grammar[2/2]
      1. [X] External Grammar[6/6]
        1. [X] File Available, add to checker
        2. [X] Multiple available files
        3. [X] Relative paths
        4. [X] Missing File should fail
        5. [X] Should not fail with unknown XML
        6. [X] Should not fail with unknown unparsed-text
      2. [X] Inline Grammar
  4. [X] Add Opt as an option, by pipeing through removeDups
  5. [X] Simple optimization test to confirm functionality[9/9]
    1. [X] OPT on but no duplicates
    2. [X] OPT on but no duplicates (tree)
    3. [X] OPT on but no duplicates (mixed)
    4. [X] A single duplicate
    5. [X] A single duplicate (tree)
    6. [X] A single duplicate (mixed)
    7. [X] Multiple duplicates
    8. [X] Multiple duplicates (tree)
    9. [X] Multiple duplicates (mixed)

URLXSD types [6/6]

  1. [X] URLXSD node
  2. [X] URLXSD/URL Fail nodes
  3. [X] step handler – external grammar
  4. [X] WADL XSD tests
  5. [X] step handler – inline grammar
  6. [X] WADL XSD tests – inline

API Checker Servlet Filter[4/4]

  1. [X] Default Servlet Result Handler
  2. [X] Initial Filter Project
  3. [X] Simple config and handler – simple WADL
  4. [X] Save DOT

Propigate XSD type errors correctly

Add stage to check well formed XML [11/11]

  1. [X] Add support for WELL_XML, WELL_JSON, CONTET_FAIL in XSD
  2. [X] Add support in XSLs
  3. [X] Setup configuration to check for well formness
  4. [X] Update cli tools with new config
  5. [X] Write next connected step in less functional style to avoid calls
  6. [X] XML
    1. [X] Create document parse pool
    2. [X] Create WELL_XML state type using parse pool
    3. [X] Check to make sure that the XML hasn’t already been parsed.
  7. [X] Create CONTENT_FAIL state
  8. [X] JSON (Setup Skeleton Only)
  9. [X] Connect states with handler
  10. [X] Tests [5/5]
    1. [X] States
    2. [X] Validator
    3. [X] Checker Tests
    4. [X] Step Builder Tests
    5. [X] WADL Validation
  11. [X] Update sample filter / webapp

Add checks for well formed JSON [3/3]

  1. [X] Add Parser Pool
  2. [X] Update JSON stage
  3. [X] Add JSON Tests
    1. [X] States
    2. [X] Checker Tests
    3. [X] Step Builder Tests
    4. [X] Validator
    5. [X] WADL Validation

Respond to Xerces JIRA

Add support for schema XML schema check [10/10]

  1. [X] Add support for XSD_CHECK in XSD
  2. [X] Add XSD check in config
  3. [X] Add support for XSD check in XSLs
  4. [X] Update CLI tools if nessesary
  5. [X] Create schema parse pool if nessesary
  6. [X] Transition other XSD checks to use pool
  7. [X] Create XSD check state
  8. [X] Add support for check state in the builder
  9. [X] Tests[7/7]
    1. [X] States
    2. [X] Checker Tests
    3. [X] Step Builder Tests
    4. [X] WADL Validator
    5. [X] Schema pool test
    6. [X] Test on parameter check / include test for WELL_FORM to
    7. [X] Test on grammar checks when no grammar is available.
  10. [X] Update sample filter / webapp

Bean attributes for config

New Join Optimization stage.

Extend machine to handle correct element in XML [10/10]

  1. [X] Add support for XPATH step in XSD
  2. [X] Add Element Check in config
  3. [X] Add support for Element check in XSLs
  4. [X] Update CLI tools
  5. [X] Add XPath Pool
  6. [X] Create XPath State
  7. [X] Add support XPath sate in builder
  8. [X] New Config XPath version [4/4]
    1. [X] 1.0 based on Xalan (default)
    2. [X] 2.0 based on Saxon (non-schema aware – unless you have license)
    3. [X] Allow setting of version in checker format.
    4. [X] Take version into account when optimizing states
  9. [X] Tests[6/6]
    1. [X] XPath parser pool
    2. [X] ImmutableNamespaceContext
    3. [X] States[2/2]
      1. [X] XPath 1.0
      2. [X] XPath 2.0
    4. [X] Checker Tests
      1. [X] Tests with XSD stages.
      2. [X] Tests without XSD stages.
      3. [X] Element test without well formed specified.
      4. [X] Should check case no element is specified.
      5. [X] Check with dups vs no-dups
    5. [X] Step Builder Tests
    6. [X] WADL Validator
      1. [X] XPath 1.0
      2. [X] XPath 2.0
  10. [X] Update filter / filter app

Extend machine to check required plain parameters[5/5]

  1. [X] Add required plain param in config
  2. [X] Add support for check in XSLs
  3. [X] Update CLI tools
  4. [X] Tests[2/2]
    1. [X] Checker Tests[12/12]
      1. [X] Multiple xpaths in a single rep
      2. [X] Multiple rep with single xpath
      3. [X] Mix number of xpath and rep
      4. [X] Required == false
      5. [X] Without XSD checks
      6. [X] Without Element checks
      7. [X] With No Element, but element checks on
      8. [X] No Well-form checks
      9. [X] Without XSD and Element checks
      10. [X] Namespace copy test
      11. [X] Same element multiple representations
      12. [X] Dups
    2. [X] WADL Validator tests
      1. [X] XPath 1.0
      2. [X] XPath 2.0
      3. [X] XPath 2.0 (only 2.0 capa)
  5. [X] Update to filter-app

XSD Transform [9/9]

  1. [X] Add XSD transform option to config
  2. [X] Add support for XSD transform in XSD
  3. [X] Add support for XSD transform in XSD step
  4. [X] Add support for XSD transform in Handler
  5. [X] Handle config change correctly in XSL
  6. [X] Handle set and not set in dups options
  7. [X] Add support for communicationg content upstream [4/4]
    1. [X] Identity transform pool – just pick a factory (Xalan, XalanC, Saxon)
    2. [X] XML
    3. [X] JSON
    4. [X] Other / None
  8. [X] Update filter-app return data optionally
  9. [X] Tests [2/2]
    1. [X] Ensure that checker sets options correctly
    2. [X] Make sure content is communicated upstream [3/3]
      1. [X] Transform fatory identity test.
      2. [X] New validator step tests [6/6]
        1. [X] Existing TESTs with transform == true
        2. [X] Existing TESTs with transform == true (SAXON)
        3. [X] Confirm options are filled in
        4. [X] Confirm options are filled in (SAXON)
        5. [X] Well-Form XML – reparse XML
        6. [X] Well-Form JSON – reparse JSON
      3. [X] WADL Validator Tests [2/2]
        1. [X] Existing XSD tests with transform == true (Xerces / Saxon)
        2. [X] Validate with transforms and options on XML (Xerces / Saxon), new tests.

Preprocess Step [12/12]

  1. [X] Add support for XSL step in XSD
  2. [X] Add support for preprocess in config
  3. [X] Add support for XSL 1.0 engine
  4. [X] Add support for preprocess in XSLs
  5. [X] Update CLI tools
  6. [X] Update WADL tools to handle @href in rax:* extensions
  7. [X] Add Transform Pool
  8. [X] Create Transform State
  9. [X] Add XSLT version (1, 2)?
  10. [X] Add support for preprocess in builder
  11. [X] Update filter / filter app
  12. [X] Tests[4/4]
    1. [X] Transform pool
    2. [X] Steps
      1. [X] XSL 1.0
      2. [X] XSL 2.0
    3. [X] Checker Tests [6/6]
      1. [X] Tests with XSL Stages
      2. [X] Tests with multiple XSLs in the same representation
      3. [X] Tests with multiple XSLs in different representations
      4. [X] Dups vs noDups
      5. [X] Tests without XSD stanges
      6. [X] Preprocess without well formed specified, etc
    4. [X] WADL Validator [2/2]
      1. [X] XSLT 1.0 (Xalan-C)
      2. [X] XSLT 2.0 (Saxon)

Reintroduce THROW exception behavior in ErrorCapture

Inline XSL should be supported in XSL step [4/4]

  1. [X] Confirm that XSL servies WADL tools translation / fix if not.
  2. [X] Confirm builder copies emebed xsl
  3. [X] Modify step handler to compile templates
  4. [X] Tests [3/3]
    1. [X] Add builder XSL test
    2. [X] Add validator tests: embeded namespaces
    3. [X] Add validator tests: parent namespaces

XPath join optimization [9/9]

  1. [X] Create XPath join XSL
  2. [X] Add XPath join config option
  3. [X] Extend XSL stage to read from IOStream is there is no parsed XML
  4. [X] Add new optional stage to builder
  5. [X] Update CLI tools
  6. [X] Update Filter / Filter Test App
  7. [X] Extend XSL stage to handle error messages
  8. [X] If any step is XSL2 or XPath2, then use XPath2 for the XSL.
  9. [X] Test [3/3]
    1. [X] Enable Optimization in multi-xpath checker tests
    2. [X] Checker tests with xpath 2
    3. [X] Ensure that validaTor Xpath tests work with validator

Check Headers in Resource[9/9]

  1. [X] Added option to config
  2. [X] Extends XSD
  3. [X] Add support in XSL [1/1]
    1. [X] Headers on resource
  4. [X] Handle config in CLI tools
  5. [X] Add support in opt XSLs
  6. [X] Add Header Steps
  7. [X] Update handler for new steps
  8. [X] Update filter / filter test app
  9. [X] Tests[4/4]
    1. [X] Extend HTTP request mocks to handle headers
    2. [X] Add step tests
    3. [X] Handler tests
    4. [X] WADL validator tests [2/2]
      1. [X] .* Test
      2. [X] XSD Test

Headers on Request [2/2]

  1. [X] Implement headers on request
  2. [X] Tests [2/2]
    1. [X] Handler Tests
      1. [X] Request header only
      2. [X] Request and Resource headers
    2. [X] WADL validator tests [3/3]
      1. [X] .* Test (Request)
      2. [X] XSD Test (Request)
      3. [X] Mixed Request / Resource

MediaType fixes [4/4]

  1. [X] Support /
  2. [X] Support type / *
  3. [X] Igrnore ; params
  4. [X] Test [3/3]
    1. [X] Update existing mediaType tests
    2. [X] Builder [3/3]
      1. [X] /
      2. [X] type / *
      3. [X] ; params, Specified
    3. [X] Validator [4/4]
      1. [X] /
      2. [X] type / *
      3. [X] ; params, Ignored
      4. [X] ; params, Specified

Ignore XSD extension [5/5]

  1. [X] Add Config Option
  2. [X] Update CLI utils, filter test app
  3. [X] Handle in builder.xsl
  4. [X] Handler Tests
  5. [X] WADL validator tests

Instrument Code[3/3]

  1. [X] Update TO Scala 2.9.1 (Needed for yammer mettrics)
  2. [X] Add support for yammer metrics
  3. [X] Instrument [12/12]
    1. [X] XML Pool
    2. [X] JSON Pool
    3. [X] Transform Pool
    4. [X] Schema Pool
    5. [X] xPath Pool
    6. [X] Validator
    7. [X] Error Rates
    8. [X] Allow validators to be named
    9. [X] Instrument Handler
    10. [X] JMX Operation to get checker
    11. [X] Cleanup
    12. [X] Keep track of last X errors.

rax:message XPath extension [8/8]

  1. [X] Extend XSD to allow message in XPath
  2. [X] Extend builder XSL to add message in XPath state
  3. [X] Extend state to accept message in XPath
  4. [X] Extend handler to pass message over
  5. [X] Add rax:message flag
  6. [X] Add extension to cli
  7. [X] Make join optimization aware of the extesion.
  8. [X] TESTS [3/3]
    1. [X] State
    2. [X] Builder
    3. [X] Validator

rax:code for XPath message [7/7]

  1. [X] Allow passing code to content error state (Defualt 400)
  2. [X] Extend XSD to allow code in XPath
  3. [X] Extend builder XSL to add code in XPath state
  4. [X] Modify XPath State to accept code
  5. [X] Extend handler to pass code over
  6. [X] Make join optimization aware of the extension
  7. [X] TESTS [4/4]
    1. [X] State
    2. [X] Builder
    3. [X] Validator
    4. [X] Test XPath Join on [3/3]
      1. [X] XSL 2.0
      2. [X] Xalan 1.0
      3. [X] XalanC 1.0

Add support for JSONSchema in body [9/9]

  1. [X] Add support for JSON_SCHEMA_CHECK in XSD
  2. [X] Add JSON_SCHEMA_CHECK in configs
  3. [X] Add support for check in XSLs, include support for rax:ignore-jsonschema
  4. [X] Update CLI tools
  5. [X] Create JSON-Schema check state
  6. [X] Add support for schema check in the builder
  7. [X] Adjust error reporting?
  8. [X] Use JSON Node instead of token buffer?
  9. [X] Tests [4/4]
    1. [X] States
    2. [X] Checker Tests
    3. [X] Tests when no grammar is available
    4. [X] WADL Validator Tests

Better Handling of Step priorities [6/6]

  1. [X] Extend XSD to support step priority. (Default should be 1)
  2. [X] Show priority in wadl2dot
  3. [X] Add support for setting priority at the end of the pipeline
  4. [X] Add priority to scala steps [3/3]
    1. [X] Rework scala steps
    2. [X] Rework scala results
    3. [X] Add priority to scala-step handler
  5. [X] Cleanups [5/5]
    1. [X] Priority-map XSD (with test)
    2. [X] Make sure there are no issues related to overflow. Confirmed: there are no issues regarding to overflow if validate checker is set to ture. This is true by default. The priority only changes when creating the state machine, the checker XSD will catch the overflow.
    3. [X] Proper waning if mismatch error bubbles to the top
    4. [X] Clean step code, esp xsl, xsd, jsonSchema
    5. [X] Document / clean up XSL
  6. [X] Test [3/3]
    1. [X] Priority map assertion
    2. [X] Test priorities in steps
    3. [X] Test similar to usage schema issue

Log on failures

Better log handling…ERROR, INFO, etc..carried out to XSL as well

Rax-Roles support

*** DESIGN DECISIONS

  1. When no rax:roles on the resource/method and no rax:roles at a higher level that can be inherited BEHAVIOR: All access is allowed for that resource/method.
  2. Multiple values are treated as ORs, user must have one of the values, not required to have all roles defined. It will always be OR, and there is not a use case or future support plans for AND.
  3. When a role is defined at the resource level (ex observer), and role at method level: (ex creator), a user must have EITHER observer or creator to access the method.
  4. [X] Update the config to account for the rax:roles flag
  5. [X] Update the CLI to account for rax:roles (helpful in debugging during dev)
  6. [X] Pass the flag to WADL->Checker format XSL
  7. [X] Add a step in the checker format XSL to create header params from the rax:roles attribute
    1. [X] Process the rax-roles enabled parameters
    2. [X] Add pre-process stage
    3. [X] Inject header params for methods that contain rax-role
  8. [ ] Test with rax-roles extension flags on
    1. [X] rax-roles at the resource level
    2. [X] rax-roles at the method level
    3. [X] rax-roles including #all
    4. [X] rax-roles with multiple values
    5. [X] no rax-roles anywhere in wadl
    6. [X] no rax-roles on specified method, rax-roles at resource level
    7. [X] no rax-roles on specified resource/method, rax-roles exist on a non-parent resource
    8. [X] no rax-roles on specified resource, rax-roles on parent resource
    9. [X] rax-roles functions with different combinations of optimizations (remove dupes - (validate further in unit tests))
    1. [X] header roles is disabled, rax-roles is still processed
    2. [X] access an undefined method on a valid resource, returns 405
  9. [X] Move rax-roles back into the builder.xsl
    1. [X] Pass rax roles flag in CheckerBuilder to builder.xsl
    2. [X] Only run the rax-roles xsl if the config is turned on
  10. [X] Test with rax-roles extension flag off
    1. [X] Modify TestConfig to support flag for enable raxroles check
    2. [X] Tests: when rax-roles is disabled, does not affect access
    3. [X] rax-roles exist in wadl, header checks disabled, rax-roles are ignored
    4. [X] rax-roles exist in wadl, header checks enabled, rax-roles are ignored
  11. [X] Change default behavior of raxRolesEnabled to false
    1. [X] Fix tests

Add Metadata to checker docs [10/10]

  1. [X] Metadata XSD
  2. [X] pub date
  3. [X] Configs
  4. [X] Username
  5. [X] Version
  6. [X] Tests
  7. [X] Default XPathVersion, PreserveRequestBody
  8. [X] XSLT, XSD defaults??? Not needed, these are runtime checks.
  9. [X] Resolve issue with method count on 1.0.28-SNAPSHOT of WADL tools.
  10. [X] Deps [5/5]
    1. [X] Update XSD…
    2. [X] XSD deps
    3. [X] XSLT deps
    4. [X] JSON schema deps (top level for now)
    5. [X] Included specs [3/3]
      1. [X] XIncludes
      2. [X] Entity References
      3. [X] Samples

Load checker format directly [10/10]

  1. [X] Detect checker format
  2. [X] Bypass compilation – but NOT validation if it is configured
  3. [X] Add static annotiation to configs to denote which config affect checker format
  4. [X] Code to get list of config settings that affect compilation in Meta xml format
  5. [X] Code to get config from annotation name (in config class??)
  6. [X] Rework builder to automate the building of the checker config stuff and the passing of parameters based on config
  7. [X] Meta detector handler to detect metadata
  8. [X] Have a metadetector that WARNs if version mismatch later versions, newer versions..
  9. [X] Have same metadetector Compare compile configs, WARN when these differ from set config
  10. [X] Tests [3/3]
    1. [X] Test that checker format detection is working correctly
    2. [X] Test that meta detactor is warning correctly [2/2]
      1. [X] Version
      2. [X] Configs
    3. [X] Rework meta tests to automate the checking of configs in metadata

Fix issue where dependecies may be listed more than once in metadata

Add assertions to checker format to test [5/5]

  1. [X] Add assertions [9/9]
    1. [X] URL/METHOD Steps [4/4]
      1. [X] Simple match
      2. [X] No Match errors
      3. [X] All Match .*
      4. [X] Match strings
    2. [X] URLXSD
    3. [X] Mixed URLXSD and URL
    4. [X] REQ_TYPE Steps
    5. [X] Content Steps [10/10]
      1. [X] WELL_XML
      2. [X] WELL_JSON
      3. [X] XPATH
      4. [X] HEADER
      5. [X] HEADERXSD
      6. [X] HEADER_ANY
      7. [X] HEADERXSD_ANY (NOT USED :-()
      8. [X] XSL
      9. [X] XSD
      10. [X] JSON_SCHEMA
    6. [X] Remove DUPS
    7. [X] Join XPATH
    8. [X] XML/JSON State order?
    9. [X] Mask Rax:roles
  2. [X] Integration
  3. [X] Fix errors
  4. [X] TESTS [10/10]
    1. [X] URL / METHOD
    2. [X] URLXSD
    3. [X] Mixed URL / URL XSD
    4. [X] REQ_TYPE
    5. [X] Content Steps[10/10]
      1. [X] WELL_XML
      2. [X] WELL_JSON
      3. [X] XPATH
      4. [X] HEADER
      5. [X] HEADERXSD
      6. [X] HEADER_ANY
      7. [X] HEADERXSD_ANY (NOT USED :-()
      8. [X] XSL
      9. [X] XSD
      10. [X] JSON_SCHEMA
    6. [X] XML/JSON State order?
    7. [X] Mask Rax:roles
    8. [X] Remove DUPS
    9. [X] Join XPATH
    10. [X] Funky regex check
  5. [X] Cleanup / Optimize

Add support for rax:copyToHeader extension [12/12]

  1. [X] Create concept of StepContext to hold request headers and current URI Index.
  2. [X] Refactor to use StepContext in all steps
  3. [X] Refactor results to use StepContext
  4. [X] Refactor param steps to set request header [8/8]
    1. [X] URI
    2. [X] URIXSD
    3. [X] Header
    4. [X] HeaderXSD
    5. [X] HeaderAny
    6. [X] HeaderAnyXSD
    7. [X] XPath
    8. [X] Accept (to set request headers to origin)
  5. [X] New config option copyToHeader
  6. [X] Add copyToHeader option to CLI utils
  7. [X] Add concept of copyToHeader to checker XSD
  8. [X] Change builder.xsl to support copyToHeader extension[6/6]
    1. [X] URI
    2. [X] URIXSD
    3. [X] Header
    4. [X] HeaderXSD
    5. [X] HeaderAny
    6. [X] XPath
  9. [X] Update optimizations to support copyToHeader extension[4/4]
    1. [X] Remove Dups [5/5]
      1. [X] Create removeDups rules
      2. [X] XSL to generate rules based on removeDups
      3. [X] Update removeDups to include driver
      4. [X] Test!
      5. [X] Build process to generate rules
    2. [X] Heather Join [4/4]
      1. [X] XSL to generate matching template
      2. [X] Update headerJoin to include driver
      3. [X] Test!
      4. [X] Build process to generate rules
    3. [X] XPath Join (Don’t optimize if captureHeader is present)
    4. [X] Common Join [4/4]
      1. [X] XSL to generate matching template
      2. [X] Update commonJoin to include driver
      3. [X] Test!
      4. [X] Build process to generate rules
  10. [X] Add support to copyToHeader in step builder [7/7]
    1. [X] URI
    2. [X] URIXSD
    3. [X] Header
    4. [X] HeaderXSD
    5. [X] HeaderAny
    6. [X] HeaderAnyXSD
    7. [X] XPath
  11. [X] Tests [4/4]
    1. [X] HeaderMap tests
    2. [X] State Tests [8/8]
      1. [X] URI
      2. [X] URIXSD
      3. [X] Header
      4. [X] HeaderXSD
      5. [X] HeaderAny
      6. [X] HeaderAnyXSD
      7. [X] XPath
      8. [X] Accept
    3. [X] WADL Tests (with opts) [4/4]
      1. [X] rax:captureHeader on template
      2. [X] rax:captureHeader on header
      3. [X] rax:captureHeader on plan
      4. [X] Test along side of rax:roles masked and not-masked.
    4. [X] Checker Tests [3/3]
      1. [X] Headers
      2. [X] URIs
      3. [X] XPaths
  12. [X] Clean up!

Header Enhancements [4/4]

  1. [X] Multiple header checks with the same name [4/4]
    1. [X] Allow checks in steps via enumeration
    2. [X] Support for single header with comma sererated list
    3. [X] Add Header step tests [2/2]
      1. [X] Saxon
      2. [X] Xerces
    4. [X] Add WADL validator tests [2/2]
      1. [X] Saxon
      2. [X] Xerces
  2. [X] Handle fixed headers [6/6]
    1. [X] Extend XSD to support Header Any[2/2]
      1. [X] Header Any regex
      2. [X] Header Any XSD
    2. [X] Add support in XSL
    3. [X] Write HeaderAny steps[2/2]
      1. [X] Header Any regex
      2. [X] Header Any XSD
    4. [X] Update handler for new step
    5. [X] Add Tests [3/3]
      1. [X] Step Test
      2. [X] WADL Builder Tests
      3. [X] WADL validator Tests
    6. [X] Join fixed headers opt?
  3. [X] Add support for rax:code and rax:message in Header checks [6/6]
    1. [X] Extend XSD to allow passing code, message to Header States
    2. [X] Extend builder XSL to add code, message
    3. [X] Make sure join optimizations are aware of the extension
    4. [X] Modify Header states to accept code, message
    5. [X] Modify handler to plug in state correctly
    6. [X] TESTS [3/3]
      1. [X] State
      2. [X] Builder
      3. [X] Validator
  4. [X] Handle default headers [13/13]
    1. [X] Add config option to fill in default param values.
    2. [X] Update CLI utils with new config option
    3. [X] Produce error if fixed != default or multiple defualts on the same header
    4. [X] Extend XSD to support New Step [1/1]
      1. [X] SetHeader
    5. [X] Add support in XSL
    6. [X] Update optimizations to support new headers
    7. [X] Update wadl2dot to display default values
    8. [X] Checker assertions related to SET_HEADER.
    9. [X] Ensure that context based headers propagate correcetly
    10. [X] Should defualts further down the chain override? For now, we’re going to say no. At least we can’t handle it in this fix, this is actually an issue with WADL tools where params at a higher level with the same name overrite stuff at lower level.

      That issue is being tracked here: [https://github.com/rackerlabs/wadl-tools/issues/134]

      …and actually this may not even make sense…and we have a /a/b should we unset anything set on the context if the request doesn’t have a value? How do we know that the value was set with setHeader and say not with captureHeader?? We actually wouldn’t know, so really have to think about resetting to see if that’s useful at all. Could always set header at lover levels even at the method as a way to be more specific.

    11. [X] Create New Step [1/1]
      1. [X] SetHeader
    12. [X] Update handler for new step
    13. [X] Add Tests [4/4]
      1. [X] Step
      2. [X] Builder
      3. [X] Validator
      4. [X] Test relationship with rax roles [2/2]
        1. [X] Add set defualts to all existing tests
        2. [X] Add tests to ensure that header X-ROLES header params are ignored in rax:roles [8/8]
          1. [X] Test roles with defaults disabled (resource)
          2. [X] Test roles with defaults disabled (resource, mixed case)
          3. [X] Test roles with defaults disabled (method)
          4. [X] Test roles with defaults disabled (mixed)
          5. [X] Test roles with defaults disabled response (no warning)
          6. [X] Test roles with defaults enabled (mixed)
          7. [X] Test roles with defaults disabled dups (mixed)
          8. [X] Test roles with defaults enabled dups (mixed)

Correctly handle repeating in header params [10/10]

  1. [X] Extend XSD to support New Step [2/2]
    1. [X] HEADER_SINGLE
    2. [X] HEADERXSD_SINGLE
  2. [X] Add support in XSL: If repeating is == false (or not there), then use HEADER_SINGLE, otherwise use whatever.
  3. [X] Checker assertions related to HEADER_SINGLE
  4. [X] Ensure that wadl2dot correctly displays HEADER(XSD)_SINGLE
  5. [X] Modify rax_roles to specify repeating
  6. [X] Update optimizations to support new headers
  7. [X] Create New Step [2/2]
    1. [X] HEADER_SINGLE
    2. [X] HEADERXSD_SINGLE
  8. [X] Update handler for new step
  9. [X] Update newly broken tests
  10. [X] Add Tests
    1. [X] Step
    2. [X] Builder
    3. [X] Validator
    4. [X] Test capture header with non-repeating headers
    5. [X] Test rax:roles and rax:roles masked along side of non-repeating headers

Header_All and Header_Any Extension [3/3]

  1. [X] Header_All [9/9]
    1. [X] Extend XSD to support HEADER_ALL
    2. [X] Add support to XSL (essentially replacing default HEADER_ALL support)
    3. [X] Checker assertions related to HEADER_ALL
    4. [X] Priority map related to HEADER_ALL
    5. [X] RaxRoles Mask related to HEADER_ALL
    6. [X] Ensure that wadl2dot correctly displays HEADER_ALL
    7. [X] Ensure that optimizations work correctly with HEADER_ALL
    8. [X] Create new step
    9. [X] Update handler for new step
  2. [X] Header_Any Extension [4/4]
    1. [X] New config option for header_any (defualt to true)
    2. [X] Update cli tools to support new config option
    3. [X] Update XSL to support XSL any
    4. [X] Ensure that rax_roles enables header_any by default
  3. [X] Testing [6/6]
    1. [X] Update newly broken tests
    2. [X] Step
    3. [X] Builder
    4. [X] Validator
    5. [X] capture header
    6. [X] rax:roles and rax:roles masked with other header_all

Document Breaking Changes [3/3]

  1. [X] Use of repeating with headers
  2. [X] Use of header_all and header_any
  3. [X] capture_header and message and code changes

SetHeaderAlways Step and introduce WARNING headers [3/3]

  1. [X] SetHeaderAlways [5/5]
    1. [X] Extend XSD to support SetHeaderAlways
    2. [X] Checker assertions related to set header always (not needed)
    3. [X] Ensure that optimizations work with header always
    4. [X] Create new step
    5. [X] Update handler for new step
  2. [X] Warning Headers [4/4]
    1. [X] Add Warning header config options
    2. [X] Update builder to add new Warning headers
    3. [X] Update CLI tools to support new config options
    4. [X] Ensure that wadl2dot correctly lists set header always
  3. [X] Testing [5/5]
    1. [X] Config option, meta tests
    2. [X] Fix broken tests
    3. [X] Step
    4. [X] Builder
    5. [X] Validator [7/7]
      1. [X] XSD with no grammer should not set warning
      2. [X] XSD with grammer should set warning
      3. [X] Preprocess with XSD no grammar (1 warning)
      4. [X] Preprocess with XSD grammer (2 warnings)
      5. [X] Many preprocesses (1 warning)
      6. [X] Existing warning preserved
      7. [X] Warn Agent config takes effect

Add support for XPath on JSON bodies [4/4]

  1. [X] Extend XPath pool to support handling XPaths with variables
  2. [X] JSONPath Step [8/8]
    1. [X] Extend XSD to support JSONPath Step
    2. [X] Update builder to include JSONPath Step
    3. [X] Add step to priority-map
    4. [X] Checker assertions related to JSONPath Steps
    5. [X] Ensure that optimizations work with the new step
    6. [X] Create new Step
    7. [X] Update handler for new step
    8. [X] Update CLI tools to support new step
  3. [X] Testing [4/4]
    1. [X] Test XPath pool with vars
    2. [X] Step
    3. [X] Builder [2/2]
      1. [X] General
      2. [X] rax:capture header
    4. [X] Validator [3/3]
      1. [X] General [9/9]
        1. [X] JSON as array (with serialize, and capture header)
        2. [X] JSON as object (with serialize, and capture header)
        3. [X] JSON as simple types, int, string, boolean
        4. [X] JSON as null
        5. [X] RAX:Code
        6. [X] RAX:Message
        7. [X] RAX:Roles
        8. [X] JoinOpt
        9. [X] RemoveDups
      2. [X] Capture header
      3. [X] With JSON Schema
  4. [X] Experiment with preparse optimization

Nailgun issues for cli utils [14/14]

  1. [X] Canceling test should somehow work
  2. [X] Make sure arguments are communicated.
  3. [X] Don’t run twice on bad output.
  4. [X] Make Nailgun envs checker centric
  5. [X] Run server apps with -server
  6. [X] Checker centrict JAVA_OPTS
  7. [X] Pass Duration
  8. [X] Use ng for name of client
  9. [X] Make sure that working directory works correctly
  10. [X] Make source non-optional
  11. [X] Don’t enable wadltest in nailgun
  12. [X] JAR watcher
  13. [X] Better testing [4/4]
    1. [X] Make sure nailgun server starts up correctly
    2. [X] Make sure nailgun server quits correctly
    3. [X] Correct handling –version –help
    4. [X] Spot testing on setting options
  14. [X] Document.

Add support for assertions at resource and method level [2/2]

  1. [X] Assertion Step [13/13]
    1. [X] Extend XSD to support Assert Step
    2. [X] Implement raxAssert.xsl to correctly place assertions
    3. [X] Add config item to enable/disable rax:assert
    4. [X] add raxAssert to checker bulider
    5. [X] Update CLI tools to support the new step
    6. [X] Update builder to include Assert Step [3/3]
      1. [X] Handle in method/request
      2. [X] In representation other than XML or JSON (wadl:request/wadl:representation[@mediaType] template)
      3. [X] In representation with XML or JSON (in check:addWellForm template)
    7. [X] Handle situation where wadl:representation has no media type…by extending raxAssert.xsl to move asserts up to wadl:request.
    8. [X] Add step to priority-map
    9. [X] Check assertions related to Assert Step
    10. [X] Ensure optimizations work with the new step
    11. [X] Create new step
    12. [X] Update handler for new step
    13. [X] Enhancements [10/10]
      1. [X] Avoid wrapping XdmValue, DOMSource in checkStep
      2. [X] Ensure we appropriatly cache request
      3. [X] Submit step context and take into account
      4. [X] Ability to specify header split in header functions
      5. [X] Change namespace to center around request (req instead of chk)
      6. [X] Rewrite var access make prefix optional for $_ and $body for compatibility with plain asserts.
      7. [X] Cleanup assert.xq (don’t do extra work)
      8. [X] Properlly log Assert
      9. [X] Cleanup imports!
      10. [X] Clean up docs
  2. [X] Testing [3/3]
    1. [X] Step
    2. [X] Builder
    3. [X] Validator [10/10]
      1. [X] At resource level
      2. [X] At method level
      3. [X] First assertion fail, 2nd, 3rd
      4. [X] No representation
      5. [X] XML / JSON Representation
      6. [X] Media types other than XML or JSON
      7. [X] rax:code
      8. [X] rax:message
      9. [X] JoinOpt
      10. [X] RemoveDups

Compile Performance improvements

Extend Support for Capture Header to support standalone element [2/2]

  1. [X] Add CaptureHeader Step [10/10]
    1. [X] Extend XSD to support New Capture Header Step
    2. [X] Extend / Generalize raxAssert.xsl to handle new Capture Header Step
    3. [X] Updated raxAssert call in checker builder
    4. [X] Update builder to include Capture Header Step [3/3]
      1. [X] Handle in method / request
      2. [X] In representation other than XML or JSON : (wadl:request/wadl:representation[@mediaType] template)
      3. [X] In representation with XML or JSON (in check:addWellForm template)
    5. [X] Add step to priority map
    6. [X] Check assertions related to capture header step
    7. [X] Update WADL2Dot to display steps correctly
    8. [X] Ensure optimizations work with the new step
    9. [X] Create new step
    10. [X] Update handler for new step
  2. [X] Testing [3/3]
    1. [X] Step
    2. [X] Bulider
    3. [X] Validator [6/6]
      1. [X] At resources level
      2. [X] At resource level
      3. [X] At method level
      4. [X] No representation
      5. [X] XML / JSON representation
      6. [X] Media types other than XML or JSON

SubRepresentations[2/2]

  1. [X] Push Representation step [13/13]
    1. [X] Extend XSD to support Push Rep step / Pop Rep step
    2. [X] Config to enable / disable sub representation / should be enabled by default.
    3. [X] Updated CLIs to support sup rep extension
    4. [X] Update Builder to support Push Rep / Pop Rep
    5. [X] Add steps to priority map??
    6. [X] Check assertions related to new steps.
    7. [X] Darnit, to match up with WELL_XML and WELL_JSON – add PUSH_XML_REP and PUSH_JSON_REP.
    8. [X] Ensure that wadl2checker correctly draws steps
    9. [X] Ensure optimizations work with the new steps
    10. [X] Update Servlet Request to include push/pop [3/3]
      1. [X] PUSH_XML
      2. [X] PUSH_JSON
      3. [X] POP
    11. [X] Create the new step[4/4]
      1. [X] Pop
      2. [X] Push_XML
      3. [X] Push_JSON
      4. [X] Relevant exceptions
    12. [X] Place rax:representation outside of wadl:representation [2/2]
      1. [X] wadl:method
      2. [X] wadl:representation (nonXML OR nonJSON)
    13. [X] Update handler for new steps
  2. [X] Testing [3/3]
    1. [X] Step [3/3]
      1. [X] PopRep
      2. [X] PushXML
      3. [X] PushJSON
    2. [X] Builder [12/12]
      1. [X] Ensure namespaces are set correctly in rax:representation.
      2. [X] rax:rep in representation XML/JSON
      3. [X] rax:rep in rax:rep
      4. [X] At method level mulitple reps
      5. [X] At resource level multiple methods
      6. [X] At resource level mulitple methods (apply children false)
      7. [X] At resource level mulitple methods (apply children true)
      8. [X] At resources level
      9. [X] At resources level with resource apply children true
      10. [X] rax:rep in the wrong place
      11. [X] rax:rep with wrong media type
      12. [X] rax:rep with +json and +xml
    3. [X] Validator [12/12]
      1. [X] XML with JSON sub resource
      2. [X] XML with XML sub resource
      3. [X] JSON with JSON sub resource
      4. [X] JSON with XML sub resource
      5. [X] Test plain params and elements
      6. [X] Test with XSD in sub resource
      7. [X] Test with JSONSchema in sub resource
      8. [X] Multiple layers of subresource [2/2]
        1. [X] Happy
        2. [X] Failures at multiple layers
      9. [X] At resource level
      10. [X] At resources level
      11. [X] RaxRoles
      12. [X] RaxRoles Mask

Notes

  • <rax:representation path=”” mediaType=”” name=”“/>
  • Works like representation but ebedded within a representation, specifies XPath into the parenet representation. Support for XML and JSON.
    • Should support all features of representation.
    • Achive by pushing, poping representations.
  • rax:representation/ can be placed in places outside of a representation. It may be placed at the method level – in place of an actual representation – when no representation is available. Or at the resource or resources level. This enables parsing a representation outside of the actual body of the HTTP request – such as a header.

Preproc extended for sub resource[0/2]

  1. [ ] Extend Preproc to take parameters from sub resorurces if AFTER_SUB is specified
  2. [ ] Extend builder to place AFTER_SUB preprocs in the right place.

Notes

  • <rax:preproc type=”BEFORE_VALIDATE | AFTER_SUB”/>. The idea is that this can be used to bring back any changes in the subRepresentation into the original rep? Can we do this automatically…maybe for some changes – but it’s complex so for now you need preproc to compbine.
    • AFTER_SUB gets all sub representations as parameters. Name can be used to identify them, else they are passed by number (in an array? or map?)

Support tenant based role check[2/3]

  1. [X] Support RAX-Roles [16/16]
    1. [X] Extend state machine to support checkTenant flag (XSD).
    2. [X] Create tenantChecker util.
    3. [X] Support multiple tenant values in tenantChecker.
    4. [X] Add support for checkTenant flag in steps[12/12]
      1. [X] XPath
      2. [X] JSONXPath
      3. [X] URI
      4. [X] URIXSD
      5. [X] HEADER
      6. [X] HEADERXSD
      7. [X] HEADER_SINGLE
      8. [X] HEADERXSD_SINGLE
      9. [X] HEADER_ANY
      10. [X] HEADERXSD_ANY
      11. [X] HEADER_ALL
      12. [X] CAPTURE_HEADER
    5. [X] Modify step handler to load isTenant flag correctly[12/12]
      1. [X] XPath
      2. [X] JSONXPath
      3. [X] URI
      4. [X] URIXSD
      5. [X] HEADER
      6. [X] HEADERXSD
      7. [X] HEADER_SINGLE
      8. [X] HEADERXSD_SINGLE
      9. [X] HEADER_ANY
      10. [X] HEADERXSD_ANY
      11. [X] HEADER_ALL
      12. [X] CAPTURE_HEADER
    6. [X] Modify builder to ensure param name is always captured (as label) [12/12]
      1. [X] XPath
      2. [X] JSONXPath
      3. [X] URI
      4. [X] URIXSD
      5. [X] HEADER
      6. [X] HEADERXSD
      7. [X] HEADER_SINGLE
      8. [X] HEADERXSD_SINGLE
      9. [X] HEADER_ANY
      10. [X] HEADERXSD_ANY
      11. [X] HEADER_ALL
      12. [X] CAPTURE_HEADER
    7. [X] Make sure that wadl2dot works with new labeled steps
    8. [X] Damn it. Use “name” instead of label [12/12]
      1. [X] XPath
      2. [X] JSONXPath
      3. [X] URI
      4. [X] URIXSD
      5. [X] HEADER
      6. [X] HEADERXSD
      7. [X] HEADER_SINGLE
      8. [X] HEADERXSD_SINGLE
      9. [X] HEADER_ANY
      10. [X] HEADERXSD_ANY
      11. [X] HEADER_ALL
      12. [X] CAPTURE_HEADER
    9. [X] Look over wadl2dot to make sure things work.
    10. [X] Modify builder to correctly capture isTenant flag[12/12]
      1. [X] XPath
      2. [X] JSONXPath
      3. [X] URI
      4. [X] URIXSD
      5. [X] HEADER
      6. [X] HEADERXSD
      7. [X] HEADER_SINGLE
      8. [X] HEADERXSD_SINGLE
      9. [X] HEADER_ANY
      10. [X] HEADERXSD_ANY
      11. [X] HEADER_ALL
      12. [X] CAPTURE_HEADER
    11. [X] Ensure that new steps take isTenant and name into account when handling optimizations
    12. [X] Make sure opts copy over isTenant [4/4]
      1. [X] Header Join : Works!
      2. [X] Common Join : Works!
      3. [X] Remove Dups : Works!
      4. [X] XPath Join : Should not join if isTenant=true
    13. [X] Add config option for isTenant extension [5/5]
      1. [X] Implement config option
      2. [X] Enable support in builder
      3. [X] Fix checker tests to include approprate configs
      4. [X] Add checker tests to check the flag works
      5. [X] Add flag to cli tools [3/3]
        1. [X] wadl2checker
        2. [X] wadl2dot
        3. [X] wadltest
    14. [X] Ensure that HEADER_ANY header checks can occur after other isTenant params [5/5]
      1. [X] URL, URLXSD
      2. [X] XPATH, JSONXPATH
      3. [X] CAPTURE_HEADER
      4. [X] HEADER_ALL
      5. [X] HEADER_SINGLE, HEADERXSD_SINGLE, HEADER, HEADERXSD, HEADER_ANY, HEADERXSD_ANY
    15. [X] Modify rax:roles to correctly handle role/{param} [5/5]
      1. [X] Should support all supported param types
      2. [X] Ensure header any check occurs after other params
      3. [X] Should error check param
      4. [X] Hint to builder to set handleTenant flag by setting rax:isTenant.
      5. [X] Initial fail if mask raxroles
    16. [X] Rewrite params that can handle multiple tenant match [3/3]
      1. [X] Should be able to take allowed matches into account [7/7]
        1. [X] XSD Changes
        2. [X] Opt changes
        3. [X] TenantUtil changes (test updates)
        4. [X] Step Changes (test updates)
        5. [X] Load Handler changes
        6. [X] Dot changes
        7. [X] Cleanup RAX templates.
      2. [X] Transform to move items to place [2/2]
        1. [X] Stage 1 : copy steps after Method
        2. [X] Add allowed Roles
      3. [X] Regression…
  2. [X] Test for setup and RAX-ROLES [9/9]
    1. [X] Get/set mapped roles on checker servlet request
    2. [X] TenantUtil addTenantRoles
    3. [X] TenantUtil addTenantRoles (multi-value)
    4. [X] Test checkTenant flags in steps [12/12]
      1. [X] XPath
      2. [X] JSONXPath
      3. [X] URI
      4. [X] URIXSD
      5. [X] HEADER_SINGLE
      6. [X] HEADERXSD_SINGLE
      7. [X] HEADER
      8. [X] HEADERXSD
      9. [X] HEADER_ANY
      10. [X] HEADERXSD_ANY
      11. [X] HEADER_ALL
      12. [X] CAPTURE_HEADER
    5. [X] Test checkTenant falgs (multi-value)
    6. [X] Test isTenant in checker
    7. [X] Test that step names in checker
    8. [X] Validator Tests[9/9]
      1. [X] URL, URLXSD
      2. [X] XPATH, JSON_XPATH
      3. [X] CAPTURE_HEADER at method level
      4. [X] CAPTURE_HEADER at resource level
      5. [X] CAPTURE_HEADER at resources level
      6. [X] HEADER (Single, Any, All) at method level
      7. [X] HEADER (Single, Any, All) at resource level
      8. [X] Test to check releveant roles
      9. [X] Test role with spaces
    9. [X] Builder Tests[2/2]
      1. [X] Fail scenarios[2/2]
        1. [X] Mask Rax-Roles enabled
        2. [X] Missing Param
      2. [X] Other misc[2/2]
        1. [X] Test param with \ in the role name.
        2. [X] Test roles with spaces
  3. [ ] Support RAX-Roles mask[0/0]

Notes

The idea is that one can specify any WADL param as the tenant. RAX roles can then be specified in the form role/{param}, which means the method requires role on the teant specified by the param.

All param types should work. For now, however, that means header, URI, and plain.

There are two main chunks of work because this should support RAX-ROLES and RAX-ROLES Mask.

Use Saxon Compile Lib feature to compile shared module.

  • This requires Saxon-EEQ

Assign CONTENT_FAIL to XSL steps in builder

Investigate whether there is an issue with rax:roles with other headers

Cache checker format on load [0/3]

  1. [ ] New config option…enable cache…defualt to true
  2. [ ] Check for cache on load XML, if cache exists [0/4]
    1. [ ] Compare configs, if any differ don’t use cache
    2. [ ] Compare version, if it differs don’t use cache
    3. [ ] Compare date on dependices file date, if any is newer…don’t use cache
    4. [ ] Otherwise…use cache, log the fact that cach is being used.
  3. [ ] Check for cache on load XML, if it doesn’t exist, create it

Better XSL step error tests [0/2]

  1. [ ] Test XSL fail message.
  2. [ ] Test XSL fail code.

PreProc Enhancements [0/5]

  1. [ ] Preproc and XSL step should be able to change content type
  2. [ ] Preporc should support XSL parameters
  3. [ ] JSONx should be supported
  4. [ ] Should be able to use in not xml types
  5. [ ] Write test with noJoin on actual error message produced.

XPath check enhancements[0/6]

  1. [ ] Better errors when multiple XPath expressions fail – display.
  2. [ ] Normalize namespaces correctly in XPATHs from WADL – prune only the namespaces that you use.
  3. [ ] WADL extension to support XPath 2.0 (xpathversion=2.0)
  4. [ ] Clark notation for error messages.
  5. [ ] Combine XPath optimization
  6. [ ] Tests
    1. [ ] Prove that better error messages are working correctly with test.
    2. [ ] Tests with dups in XPath (with/without version). Dups should work well at detecting XPath with version number.
    3. [ ] Test Bad XPaths
    4. [ ] Combined XPath opt tests

Namespace Enhancements [0/2]

  1. [ ] Namespace cleanup task should look into XPath expressions
  2. [ ] Namespace cleanup task should account for default namespaces.

Fix test error, where register is not working in step-test.scala

Review Skipped Tests[0/2]

  1. [ ] Saxon validation
  2. [ ] WADL Tools

Saxon report error(?) where casting is always nessesary.

Support XML schema validation, adding default parameters

Modify filter to handle different groups

Real tests on DOT output

Expand checker to dot conversion in builder

Bring checker to dot conversion to cli

Better XSD tests

Tests 10 Threads 5000 count

Type/images/image/images/detail/images/details/images/de31d986-a7be-11e1-994a-bba4de7e4604/images/de31d986-a7be-11e1-994a-bba4de7e460z
XERCES2498.12171.21024.7877.11037.0777.0
SAXON2519.32113.21898.11851.41997.11634.0

After schema pool and non-functional dispatch

Type/images/image/images/detail/images/details/images/de31d986-a7be-11e1-994a-bba4de7e4604/images/de31d986-a7be-11e1-994a-bba4de7e460z
XERCES2504.12274.22424.81695.02221.31667.2
SAXON2484.32227.82329.81714.02209.61639.2