Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SNOMED Commit API seems to be too coarse-grained #473

Closed
psiotwo opened this issue Feb 3, 2020 · 7 comments
Closed

SNOMED Commit API seems to be too coarse-grained #473

psiotwo opened this issue Feb 3, 2020 · 7 comments
Assignees
Labels

Comments

@psiotwo
Copy link

psiotwo commented Feb 3, 2020

After successful import of SNOMED Intl FULL (20190131 release), and then I wanted to get the change history for a concept (incl. relationships where from/to is the chosen concept and descriptions of that concept). Currently the only option seems to me to use the /commits API to get all the commits related to the concept, e.g.:

/snomed-ct/v3/commits?affectedComponentId=61462000

This results in a list of commits, containing e.g.

 {
            "id": "7ca1c4da-a045-4f7c-a6e0-f632d5243b06",
            "branch": "MAIN",
            "author": "System",
            "comment": "Imported components from 2015-01-31",
            "timestamp": 1574255944125
},

Since the commit wraps the whole import, getting its details by

/snomed-ct/v3/commits/7ca1c4da-a045-4f7c-a6e0-f632d5243b06?expand=details()

results in a huge output which also takes a minute or more to get. Unless I missed some parameter for this call that would allow me to filter by concept SCTID on the server side (in that case I would first get the current descriptions and relationships for the concept and then get their details across all the commits).

Any hint how to use the API efficiently for imported SNOMED components would be appreciated!

@psiotwo psiotwo changed the title SNOMED Commit API is to coarse-grained SNOMED Commit API seems to be too coarse-grained Feb 3, 2020
@cmark cmark self-assigned this Feb 3, 2020
@cmark cmark added the feature label Feb 3, 2020
@cmark
Copy link
Member

cmark commented Feb 3, 2020

Hi @psiotwo,

Yes, this is a limitation of the current commits API, unfortunately.
Usually what we do to show the history of a single concept is fetch everything in one go:

GET /snomed-ct/v3/commits?affectedComponentId=61462000&expand=details()

The details() expand will actually use the affectedComponentId filter to limit the details object to the requested component ID and all its related component changes (description/relationship/member related commits will be returned when you request the history of the concept, you don't have to make explicit requests for them).
So basically that is the only request you need to make to get the entire history of the concept.

Additionally to make life easier and support individual commits, where the details() expansion is defined, I'll improve the API with the following two changes:

Filter by id option will be added to GET /commits API:

`GET /snomed-ct/v3/commits?id=7ca1c4da-a045-4f7c-a6e0-f632d5243b06&affectedComponentId=61462000&expand=details()`

Also, affectedComponentId details filter will be added to details() expand:

`GET /snomed-ct/v3/commits/7ca1c4da-a045-4f7c-a6e0-f632d5243b06?expand=details(affectedComponentId:61462000)`

These changes will be available soon on the 7.x branch and will be released in 7.4.0 end of February.
I hope these changes make sense to you if you have any feedback or comment, let us know.

Cheers,
Mark

cmark added a commit that referenced this issue Feb 3, 2020
cmark added a commit that referenced this issue Feb 3, 2020
@psiotwo
Copy link
Author

psiotwo commented Feb 3, 2020

Hi @cmark ,
yes, thanks - sounds perfect!
Petr

@psiotwo
Copy link
Author

psiotwo commented Feb 3, 2020

Hi @cmark,

thanks, just tested.

Maybe I misinterpreted your intent. When I issue the first request
GET /snomed-ct/v3/commits?id=7ca1c4da-a045-4f7c-a6e0-f632d5243b06&affectedComponentId=61462000&expand=details()

I still get the whole commit in the result. What I would need is to filter only those items in the commit which refer to the concept (or related descriptions/relationships), e.g. by filtering on items/detail/object:61462000. Maybe I just don't know how to correctly construct the expand parameter (similarly to the affectedComponentId:61462000 mentioned below).

Also after issuing
GET /snomed-ct/v3/commits/7ca1c4da-a045-4f7c-a6e0-f632d5243b06?expand=details(affectedComponentId:61462000)

I get:

{
    "status": 400,
    "code": 0,
    "message": "Expected type 'String' is not valid for the value '61462000(Integer)' returned for the key 'affectedComponentId'",
    "errorCode": 0,
    "statusCode": 400
}

Petr

@cmark
Copy link
Member

cmark commented Feb 4, 2020

Hi @psiotwo,

No, you did not, you did everything perfectly, the example I gave you was incorrect.
Inside a nested object expansion, like in details(), we treat everything as JSON and parse it accordingly. So to be able to parse the affectedComponentId as a String value, you need to wrap it in "61462000", so the correct example would look like this:

GET /snomed-ct/v3/commits/7ca1c4da-a045-4f7c-a6e0-f632d5243b06?expand=details(affectedComponentId:"61462000")

Let me know if this works for you.

Cheers,
Mark

@psiotwo
Copy link
Author

psiotwo commented Feb 4, 2020

Hi @cmark ,

thanks for hint. First it seemed to me it worked :-). But, then tried for a commit which corresponds to the 2002-07-31 release import of Snomed CT Intl. and got:

{
    "id": "9a463a2e-e718-4f6d-890a-34a20889401f",
    "branch": "MAIN",
    "author": "System",
    "comment": "Imported components from 2002-07-31",
    "timestamp": 1580314281451,
    "details": {
        ...
        "limit": 119031,
        "total": 119031
    }
}

no matter whether I specify affectedComponentId or not, i.e. both of the following calls return a result set with the same "total".

/snomed-ct/v3/commits/9a463a2e-e718-4f6d-890a-34a20889401f?expand=details()

and

/snomed-ct/v3/commits/9a463a2e-e718-4f6d-890a-34a20889401f?expand=details(affectedComponentId:"61462000")

Petr

ivelina-yordanova referenced this issue in babylonhealth/snow-owl Feb 10, 2020
* [releng] prepare 6.24.0-SNAPSHOT

* SO-3845: Handle ECL expressions in attributes' concept set ...

... definitions in MRCM validation rules

* Revert "[releng] prepare 6.24.0-SNAPSHOT"

This reverts commit 8cbd3f8.

* [releng] prepare 6.23.1-SNAPSHOT

* [releng] release 6.23.1

* [releng] prepare 6.24.0-SNAPSHOT

* [snomed.import] Set code system shortname in import details

* Added VALUE_SET, MAPPING_SET as allowed  values for supportedRefSetType

* Exposed the supportedRefSetType XML attribute values.

* SO-3853: Register ValueSet and MappingSet to contribute

* SO-3864: change cardinality of ValueSet.compose to 0..1

As of https://www.hl7.org/fhir/valueset-definitions.html#ValueSet.compose

* SO-3864: return object ID from TransactionContext.add method

* SO-3864: set clearResources to true by default in SnowOwlAppRule

* [index] Allow setting boost on all ES QueryBuilder instances

* [index] Log the number of pending cluster tasks; don't repeat messages

* SO-3864: extract common repository APIs to core.rest module

* SO-3864: extract common Resource search props to ResourceRestSearch

Introduce SnomedReferenceSetRestSearch and `POST /:path/refsets/search`
endpoint.

* SO-3864: remove unused classes from snomed.core.rest plugin

* SO-3864: support dynamic loading of available API docs

* SO-3821 Enabled search by mapPriority.

* SO-3864: extract common branch aware test infrastructure to test.commons

* SO-3864: minor changes to test.commons MANIFEST.MF

* SO-3864: expose Elasticsearch Base64 UUID generator as IDs.base64UUID()

* SO-3864: expose core.id package

* SO-3881: Remove semantic engine projects including previous ...

... implementation of SCG

https://snowowl.atlassian.net/browse/SO-3881

* SO-3864: rename ChangeRequest types

`core.rest.codesystem.ChangeRequest` to
`core.rest.domain.ResourceRequest`.
`snomed.core.rest.domain.ChangeRequest` to
`snomed.core.rest.domain.SnomedResourceRequest`.

* SO-3864: pull up getResourceLocationURI to AbstractRestService

* SO-3864: pull up comma joiner and JSON_UTF8 constants to RestExtensions

* SO-3864: fix failed SNOMED CT FHIR ValueSet API tests

* SO-3881: Implement grammar, parser and tests for SCG v2.3.1

- tests cover all available examples @
https://github.com/IHTSDO/SNOMEDCT-Languages

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Add scg modules to parent pom

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Add missing pom

https://snowowl.atlassian.net/browse/SO-3881

* SO-3864: minor API improvements

* SO-3864: minor API improvements

* SO-3864: add RestExtensions.assertCreated helper

* SO-3881: Update ECL parsing tests

- ECL v1.3 Brief Syntax examples as of today from
https://github.com/IHTSDO/SNOMEDCT-Languages

https://snowowl.atlassian.net/browse/SO-3881

* SO-3892: Change member status to active if refset already contains ...

...the inactive concept, do not duplicate members.

* SO-3881: Regenerate ECL grammar

- renamed the following rules to be in sync with the specification and
to avoid collision when ECL is mixed with other grammars:
  - Refinement -> EclRefinement
  - FocusConcept -> EclFocusConcept
  - ConceptReference -> EclConceptReference
  - AttributeGroup -> EclAttributeGroup
  - AttributeSet -> EclAttributeSet

- removed unused terminal '!'

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Regenerate QL grammar due to ECL changes

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Share basic parser tests for Query Language

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Remove unused files

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Regenerate SCG grammar to synchronize terminal names ...

among existing grammar definitions

- removed Xtend stubs

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Replace AND, OR, MINUS and COMMA with grammar terminals

- this is necessary to avoid collision with other derived language
terminals

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Replace AND, OR, MINUS and COMMA with grammar terminals

- add 'Filter' suffix to Conjunction, Disjunction and Exclusion grammar
rules to distinguish rules and terminals

* SO-3881: Share initial Xtext definition of ETL

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Share parser tests for ETL

https://snowowl.atlassian.net/browse/SO-3881

* SO-3892: Handle MemberChangeKind.CHANGE as added

* SO-3881: Prefer upper case version of AND / OR / MINUS in case of ...

ECL serialization

- generated extendable Xtext serializer classes
- added parsing tests

https://snowowl.atlassian.net/browse/SO-3881

* [core] Allow customization of component adjustment during publication

* SO-3881: Fix various issues in ETL grammar definition

- allow slot name to be unquoted with certain restrictions
- fix whitespace in TokenReplacementSlot
- introduce custom cardinality rule compared to Ecl.Cardinality
- make exclusive terminals optional in integer and decimal ranges

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Add ETL parsing tests to parent pom

https://snowowl.atlassian.net/browse/SO-3881

* [history] Ignore many-valued features altogether in HistoryInfoProvider

Copy scalar fields to an "empty" CDO revision instead of cloning the
original and unsetting the many-valued properties (which can cause an
exception, if uninitialized EAttribute lists are present on the
revision).

* SO-3864: report method not allowed errors properly

* SO-3881: Fix issues in ETL grammar definition

- rename concept replacement slots for better readability
- fix slot integer and slot decimal types
- simplify StringReplacementSlot values

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Implement detailed ETL parser tests

- added all IHTSDO templates as well

https://snowowl.atlassian.net/browse/SO-3881

* [tests] add more specific concept reactivation test cases

* SO-3893 #resolve

Fix incorrect parentage values when reactivating concept's relationships
first then the concept in two different commits.

* [export] Create general ExportResult class (filename, UUID pair)

* [releng] update changelog with 6.24.0 changes

* SO-3881: Remove xtend generated files

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Prevent xtend generated files to be committed

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Share current ABNF syntax for ECL, SCG and ETL

https://snowowl.atlassian.net/browse/SO-3881

* [snomed] accept all SctId statuses when publishing them

* [releng] update changelog with 6.24.0 changes

* SO-3858: Allow specifying namespace in random id generation

* [releng] release 6.24.0

* [releng] prepare 6.25.0-SNAPSHOT

* SO-3858: Fix generic validation rules, tests, test setup

* SO-3858: Extract language member function variable to helper method

* [cis] fix config file name of CIS product

* [core] support unprotected routes/requests

* [snomed] Update remaining references to Rf2ExportResult

* SO-3893: Relocate fix for issue to Taxonomies class (7.x, partial).

Stated OWL axiom handling is still missing.

* [tests] add more specific concept reactivation test cases (7.x)

* SO-3853: Register ValueSet and MappingSet to contribute (7.x)

* [snomed.import] Set code system shortname in import details (7.x)

* [validation] Add reference set type to OWL axiom members in... (7.x)

...GenericValidationRuleTest

* [export] Wrap reads into an IndexReadRequest in SnomedRf2ExportRequest

* [core] allow multiple unprotected requests to execute in bulk

* [core] always include responseTime metric in request log entries

* SO-3881: add ETL and SCG core bundles to snomed.core.feature

* SO-3864: set clearResources to true by default in SnowOwlAppRule

* [core] merge IndexReadRequest functionality into RepositoryRequest

* [mrcm] Remove remaining checked in source files from mrcm.model project

* [documentation] Remove non-existent project references from MANIFEST.MF

* [releng] update changelog with 7.3.0 changes

* [releng] release 7.3.0

* [releng] release 7.3.0

* [releng] update README.md with 7.3.0 release links

* [releng] prepare 7.4.0-SNAPSHOT

* [core] Ensure that all TerminologyRepositoryPlugin subclasses provide...

...a terminology repository initializer instance (used for initializing
a default code system entry for each tooling).

* [core] Fix AccessControl subclass on RepositoryClearRequest, move...

...factory method of request builder to RepositoryRequests

* [core] Implement RepositoryTransactionContext#clearContents

The implementation calls stageRemove on all instances of Revision and
subclasses that are visible on the context branch using a matchAll
query, at the time of method invocation.

* [snomed] convert NumberFormatException to BadRequestException

* [oomph] Add preference settings for .* package and static imports

* [snomed] add support for module() expand

* [api] change type of SnomedConcept.definitionStatus to SnomedConcept

Support expansion of definition status concept via definitionStatus()
expand parameter.
Remove DefinitionStatus enum literal.

* Update core/com.b2international.snowowl.core/src/com/b2international/snowowl/core/id/IDs.java

Co-Authored-By: András Péteri <apeteri@b2international.com>

* [core] update javadoc suggested in #472

b2ihealthcare/snow-owl#472 (comment)

* [api] add `id` filter to `commits` API

Related to #473.

* [api] support `affectedComponentId` details() expand parameter

Related to #473.

* Cast to distinguish from Map parameter.

* [snomed] remove unnecessary definitionStatusId field from SnomedConcept

* [snomed] fix possible definitionStatus NPE when using field selection

* SO-3123: Add support for "complex map with map block" type reference sets (#474)

- Add SnomedRefSetType enum literal for complex block map
- Handle complex block maps in SnomedRefSetUtil methods
- Add new "map block" field and refset header to SnomedRf2Headers
- Specify supported referenced component type for complex block maps in class RefSetSupport
- Add support for complex block map import; update index format
- Extend refset member create and update requests with complex block map support; ensure that class cast exceptions are translated to bad requests when inspecting member properties.
- Add support for exporting complex block maps to RF2
- Add SnomedDsvExportItemType literal for "map block" field
- Add SCTID of complex block map identifier parent concept
- Add complex block map type test cases to SNOMED e2e tests
- Update FHIR's SnomedConceptMapApiProvider
- Update FHIR concept map test cases

* Exchanged descriptions.

* [core] remove IComponent.ID_FUNCTION

* [snomed] fix definitionStatus() expansion issues

* [snomed] add acceptabilities() expansion to /descriptions API

* [snomed] remove CaseSignificance enum literals

* [snomed] support caseSignificance() expansion on descriptions

* [core] fix unauthorized issue when executing console commands

* SO-3123: Convert mapBlock field to an Integer when importing

* SO-3858: Add support for nested, and reverse nested aggregation

* [snomed] remove CharacteristicType enum literals

* [snomed] remove RelationshipModifier enum literals

* [snomed] support characteristicType() and modifier() expansion...

...on relationships

* [qa] fix lgtm issue https://lgtm.com/rules/1511220334423/

* Revert "[qa] fix lgtm issue https://lgtm.com/rules/1511220334423/"

This reverts commit 628bad4.

* [snomed] run effective time restore only in non-import scenarios

* [qa] suppress lgtm warning https://lgtm.com/rules/1511220334423/

* Upgrade to Elasticsearch 7.x (#478)

* [index] bump version to Elasticsearch 7.5.2
* [index] fix tokenizer/analyzer compile errors
* [index] use indices level when fetching cluster health
* [index] fix EsNode initialization
* [index] fix client compile errors
* Fix type and other warnings printed by ES API.
* [index] add CMS GC config to index tests
* Fixes [parent] data too large issues during tests.
* [rf2] reduce RF2 exporter scroll timeout to 1m
* [tests] fix negative scores in SortIndexTest
* [api] remove scrollId and scrollKeepAlive from Java API
* Use searchAfter + branch@timestamp for efficient data snapshot paging/scrolling.
* [core] remove scrollId from core models and API
* [snomed] remove scrollId from snomed models and API
* [rest] remove scrollId from core REST API
* [snomed] remove scrollId from snomed REST API
* [rf2] use branch@timestamp for RF2 exports
* [build] add CMS GC settings to all tycho surefire executions
* [launch] add CMS GC settings to all test launch configs
* [qa] fix lgtm issues https://lgtm.com/rules/2049510531/
* [index] use bool query with should clauses for term filters with more than the configured index.max_terms_count.
* Also make it possible to configure both maxTermsCount and resultWindow values from snowowl.yml (repository.index config).
* [index] fix some of the type_removal warnings reported by ES
* The remaining warnings thrown by the Mapping API, but we cannot remove it yet, due to our dependency to the TCP client infrastructure. Those warnings will be eliminated once ES 8 is out and we decide to upgrade to that (which will remove the TCP client functionality entirely).
Fix some java compile warnings as well. And also add some serialVersionUIDs.
* [index] fix nested field name in terms queries. Also fix decimal value conversion when number of terms is less than the
max_terms_count.
* [index] searches should always track total hits accurately
* [core] update comments in SearchResourceRequestIterator
* [index] aggregations should always track total hits accurately
* [index] fix typo

* [docker] bump elasticsearch-oss image version to 7.5.2

* [index] prevent unnecessary mapping updates during startup

* [qa] fix lgtm issue https://lgtm.com/rules/1930000368/

* [qa] fix lgtm issue https://lgtm.com/rules/9990077/

* [qa] fix lgtm issue https://lgtm.com/rules/11000068/

* [qa] fix lgtm issue https://lgtm.com/rules/9990077/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] ignore lgtm issue https://lgtm.com/rules/1954750296/ in Base64

* [qa] ignore lgtm issue https://lgtm.com/rules/1954750296/ (JavaBinCodec)

* [qa] fix lgtm issue https://lgtm.com/rules/1507082716110/

* [snomed] remove InactivationIndicator and AssociationType enum literals

Use new InactivationProperties object to specify indicator and
association target values during component inactivation.
Make processInactivation method generic in SnomedComponentUpdateRequest.

* [index] Reorder classpath entries, remove source attachment paths

* [dev] fix launch configurations

Co-authored-by: Gábor Nagy <gnagy@b2international.com>
Co-authored-by: AAAlinaaa <aalaswadi@b2international.com>
Co-authored-by: Mark Czotter <mczotter@b2international.com>
Co-authored-by: Balazs Banfai <bbanfai@b2international.com>
Co-authored-by: Gabriella Deak <45433791+adeakgabi@users.noreply.github.com>
Co-authored-by: András Péteri <apeteri@b2international.com>
@psiotwo
Copy link
Author

psiotwo commented Feb 10, 2020

Hi @cmark ,

I was testing stuff on wrong deployment and can confirm that everything works with me exectly as you described.

I tried even a more "bold query" to get all the details across all the commits in one run:

/snomed-ct/v3/commits?expand=details(affectedComponentId:"239783001")

It is working fine, but it returns also commits which don't reference this component at all, e.g.

{
            "id": "0578874b-c45e-4565-ac02-76aa73ee5495",
            "branch": "MAIN",
            "author": "System",
            "comment": "Imported components from 2002-01-31",
            "timestamp": 1574253114834,
            "details": {
                "items": [],
                "limit": 0,
                "total": 0
            }
},

Does it make sense to filter out these commits from the response?

Cheers,
Petr

@cmark
Copy link
Member

cmark commented Feb 21, 2020

Hi @cmark ,

thanks for hint. First it seemed to me it worked :-). But, then tried for a commit which corresponds to the 2002-07-31 release import of Snomed CT Intl. and got:

{
    "id": "9a463a2e-e718-4f6d-890a-34a20889401f",
    "branch": "MAIN",
    "author": "System",
    "comment": "Imported components from 2002-07-31",
    "timestamp": 1580314281451,
    "details": {
        ...
        "limit": 119031,
        "total": 119031
    }
}

no matter whether I specify affectedComponentId or not, i.e. both of the following calls return a result set with the same "total".

/snomed-ct/v3/commits/9a463a2e-e718-4f6d-890a-34a20889401f?expand=details()

and

/snomed-ct/v3/commits/9a463a2e-e718-4f6d-890a-34a20889401f?expand=details(affectedComponentId:"61462000")

Petr

Hi @psiotwo,

The filtering bug has been fixed and the details() expand with an affectedComponentId filter will now produce the correct numbers.

Regarding the other issue you have reported, you only restrict the details() expansion to the given affectedComponentId, but you still need all commits because you did not filter them by any means.
From an API perspective, this works as expected and how it should.
If you would like to restrict the commits to a given component then please use the affectedComponentId filter.

Cheers,
Mark

@cmark cmark closed this as completed in 536f7ba Feb 21, 2020
ivelina-yordanova referenced this issue in babylonhealth/snow-owl Mar 4, 2020
* SO-3892: Change member status to active if refset already contains ...

...the inactive concept, do not duplicate members.

* SO-3881: Regenerate ECL grammar

- renamed the following rules to be in sync with the specification and
to avoid collision when ECL is mixed with other grammars:
  - Refinement -> EclRefinement
  - FocusConcept -> EclFocusConcept
  - ConceptReference -> EclConceptReference
  - AttributeGroup -> EclAttributeGroup
  - AttributeSet -> EclAttributeSet

- removed unused terminal '!'

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Regenerate QL grammar due to ECL changes

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Share basic parser tests for Query Language

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Remove unused files

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Regenerate SCG grammar to synchronize terminal names ...

among existing grammar definitions

- removed Xtend stubs

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Replace AND, OR, MINUS and COMMA with grammar terminals

- this is necessary to avoid collision with other derived language
terminals

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Replace AND, OR, MINUS and COMMA with grammar terminals

- add 'Filter' suffix to Conjunction, Disjunction and Exclusion grammar
rules to distinguish rules and terminals

* SO-3881: Share initial Xtext definition of ETL

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Share parser tests for ETL

https://snowowl.atlassian.net/browse/SO-3881

* SO-3892: Handle MemberChangeKind.CHANGE as added

* SO-3881: Prefer upper case version of AND / OR / MINUS in case of ...

ECL serialization

- generated extendable Xtext serializer classes
- added parsing tests

https://snowowl.atlassian.net/browse/SO-3881

* [core] Allow customization of component adjustment during publication

* SO-3881: Fix various issues in ETL grammar definition

- allow slot name to be unquoted with certain restrictions
- fix whitespace in TokenReplacementSlot
- introduce custom cardinality rule compared to Ecl.Cardinality
- make exclusive terminals optional in integer and decimal ranges

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Add ETL parsing tests to parent pom

https://snowowl.atlassian.net/browse/SO-3881

* [history] Ignore many-valued features altogether in HistoryInfoProvider

Copy scalar fields to an "empty" CDO revision instead of cloning the
original and unsetting the many-valued properties (which can cause an
exception, if uninitialized EAttribute lists are present on the
revision).

* SO-3864: report method not allowed errors properly

* SO-3881: Fix issues in ETL grammar definition

- rename concept replacement slots for better readability
- fix slot integer and slot decimal types
- simplify StringReplacementSlot values

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Implement detailed ETL parser tests

- added all IHTSDO templates as well

https://snowowl.atlassian.net/browse/SO-3881

* [tests] add more specific concept reactivation test cases

* SO-3893 #resolve

Fix incorrect parentage values when reactivating concept's relationships
first then the concept in two different commits.

* [export] Create general ExportResult class (filename, UUID pair)

* [releng] update changelog with 6.24.0 changes

* SO-3881: Remove xtend generated files

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Prevent xtend generated files to be committed

https://snowowl.atlassian.net/browse/SO-3881

* SO-3881: Share current ABNF syntax for ECL, SCG and ETL

https://snowowl.atlassian.net/browse/SO-3881

* [snomed] accept all SctId statuses when publishing them

* [releng] update changelog with 6.24.0 changes

* SO-3858: Allow specifying namespace in random id generation

* [releng] release 6.24.0

* [releng] prepare 6.25.0-SNAPSHOT

* SO-3858: Fix generic validation rules, tests, test setup

* SO-3858: Extract language member function variable to helper method

* [cis] fix config file name of CIS product

* [core] support unprotected routes/requests

* [snomed] Update remaining references to Rf2ExportResult

* SO-3893: Relocate fix for issue to Taxonomies class (7.x, partial).

Stated OWL axiom handling is still missing.

* [tests] add more specific concept reactivation test cases (7.x)

* SO-3853: Register ValueSet and MappingSet to contribute (7.x)

* [snomed.import] Set code system shortname in import details (7.x)

* [validation] Add reference set type to OWL axiom members in... (7.x)

...GenericValidationRuleTest

* [export] Wrap reads into an IndexReadRequest in SnomedRf2ExportRequest

* [core] allow multiple unprotected requests to execute in bulk

* [core] always include responseTime metric in request log entries

* SO-3881: add ETL and SCG core bundles to snomed.core.feature

* SO-3864: set clearResources to true by default in SnowOwlAppRule

* [core] merge IndexReadRequest functionality into RepositoryRequest

* [mrcm] Remove remaining checked in source files from mrcm.model project

* [documentation] Remove non-existent project references from MANIFEST.MF

* [releng] update changelog with 7.3.0 changes

* [releng] release 7.3.0

* [releng] release 7.3.0

* [releng] update README.md with 7.3.0 release links

* [releng] prepare 7.4.0-SNAPSHOT

* [core] Ensure that all TerminologyRepositoryPlugin subclasses provide...

...a terminology repository initializer instance (used for initializing
a default code system entry for each tooling).

* [core] Fix AccessControl subclass on RepositoryClearRequest, move...

...factory method of request builder to RepositoryRequests

* [core] Implement RepositoryTransactionContext#clearContents

The implementation calls stageRemove on all instances of Revision and
subclasses that are visible on the context branch using a matchAll
query, at the time of method invocation.

* [snomed] convert NumberFormatException to BadRequestException

* [oomph] Add preference settings for .* package and static imports

* SO-3882: Add ability to define additional component deletion policies...

... in implementations of TerminologyRepositoryConfigurers

https://snowowl.atlassian.net/browse/SO-3882

* SO-3882: Fix license header

https://snowowl.atlassian.net/browse/SO-3882

* SO-3882: Fix invalid type in deletion policy rule

https://snowowl.atlassian.net/browse/SO-3882

* [snomed] add support for module() expand

* [api] change type of SnomedConcept.definitionStatus to SnomedConcept

Support expansion of definition status concept via definitionStatus()
expand parameter.
Remove DefinitionStatus enum literal.

* Update core/com.b2international.snowowl.core/src/com/b2international/snowowl/core/id/IDs.java

Co-Authored-By: András Péteri <apeteri@b2international.com>

* [core] update javadoc suggested in #472

b2ihealthcare/snow-owl#472 (comment)

* [api] add `id` filter to `commits` API

Related to #473.

* [api] support `affectedComponentId` details() expand parameter

Related to #473.

* Cast to distinguish from Map parameter.

* SO-3889: Move Charmatcher for invalid file name characters to FileUtils

https://snowowl.atlassian.net/browse/SO-3889

* [snomed] remove unnecessary definitionStatusId field from SnomedConcept

* [snomed] fix possible definitionStatus NPE when using field selection

* SO-3123: Add support for "complex map with map block" type reference sets (#474)

- Add SnomedRefSetType enum literal for complex block map
- Handle complex block maps in SnomedRefSetUtil methods
- Add new "map block" field and refset header to SnomedRf2Headers
- Specify supported referenced component type for complex block maps in class RefSetSupport
- Add support for complex block map import; update index format
- Extend refset member create and update requests with complex block map support; ensure that class cast exceptions are translated to bad requests when inspecting member properties.
- Add support for exporting complex block maps to RF2
- Add SnomedDsvExportItemType literal for "map block" field
- Add SCTID of complex block map identifier parent concept
- Add complex block map type test cases to SNOMED e2e tests
- Update FHIR's SnomedConceptMapApiProvider
- Update FHIR concept map test cases

* Exchanged descriptions.

* [core] remove IComponent.ID_FUNCTION

* [snomed] fix definitionStatus() expansion issues

* [snomed] add acceptabilities() expansion to /descriptions API

* [snomed] remove CaseSignificance enum literals

* [snomed] support caseSignificance() expansion on descriptions

* [core] fix unauthorized issue when executing console commands

* SO-3123: Convert mapBlock field to an Integer when importing

* SO-3858: Add support for nested, and reverse nested aggregation

* [snomed] remove CharacteristicType enum literals

* [snomed] remove RelationshipModifier enum literals

* [snomed] support characteristicType() and modifier() expansion...

...on relationships

* [qa] fix lgtm issue https://lgtm.com/rules/1511220334423/

* Revert "[qa] fix lgtm issue https://lgtm.com/rules/1511220334423/"

This reverts commit 628bad4.

* [snomed] run effective time restore only in non-import scenarios

* [qa] suppress lgtm warning https://lgtm.com/rules/1511220334423/

* Upgrade to Elasticsearch 7.x (#478)

* [index] bump version to Elasticsearch 7.5.2
* [index] fix tokenizer/analyzer compile errors
* [index] use indices level when fetching cluster health
* [index] fix EsNode initialization
* [index] fix client compile errors
* Fix type and other warnings printed by ES API.
* [index] add CMS GC config to index tests
* Fixes [parent] data too large issues during tests.
* [rf2] reduce RF2 exporter scroll timeout to 1m
* [tests] fix negative scores in SortIndexTest
* [api] remove scrollId and scrollKeepAlive from Java API
* Use searchAfter + branch@timestamp for efficient data snapshot paging/scrolling.
* [core] remove scrollId from core models and API
* [snomed] remove scrollId from snomed models and API
* [rest] remove scrollId from core REST API
* [snomed] remove scrollId from snomed REST API
* [rf2] use branch@timestamp for RF2 exports
* [build] add CMS GC settings to all tycho surefire executions
* [launch] add CMS GC settings to all test launch configs
* [qa] fix lgtm issues https://lgtm.com/rules/2049510531/
* [index] use bool query with should clauses for term filters with more than the configured index.max_terms_count.
* Also make it possible to configure both maxTermsCount and resultWindow values from snowowl.yml (repository.index config).
* [index] fix some of the type_removal warnings reported by ES
* The remaining warnings thrown by the Mapping API, but we cannot remove it yet, due to our dependency to the TCP client infrastructure. Those warnings will be eliminated once ES 8 is out and we decide to upgrade to that (which will remove the TCP client functionality entirely).
Fix some java compile warnings as well. And also add some serialVersionUIDs.
* [index] fix nested field name in terms queries. Also fix decimal value conversion when number of terms is less than the
max_terms_count.
* [index] searches should always track total hits accurately
* [core] update comments in SearchResourceRequestIterator
* [index] aggregations should always track total hits accurately
* [index] fix typo

* [docker] bump elasticsearch-oss image version to 7.5.2

* [index] prevent unnecessary mapping updates during startup

* [qa] fix lgtm issue https://lgtm.com/rules/1930000368/

* [qa] fix lgtm issue https://lgtm.com/rules/9990077/

* [qa] fix lgtm issue https://lgtm.com/rules/11000068/

* [qa] fix lgtm issue https://lgtm.com/rules/9990077/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] ignore lgtm issue https://lgtm.com/rules/1954750296/ in Base64

* [qa] ignore lgtm issue https://lgtm.com/rules/1954750296/ (JavaBinCodec)

* [qa] fix lgtm issue https://lgtm.com/rules/1507082716110/

* [snomed] remove InactivationIndicator and AssociationType enum literals

Use new InactivationProperties object to specify indicator and
association target values during component inactivation.
Make processInactivation method generic in SnomedComponentUpdateRequest.

* [index] Reorder classpath entries, remove source attachment paths

* [dev] fix launch configurations

* [ecl] add a handy `Ecl.or(expressions)` helper method

* [build] fix snomed.validation.snomed build.properties

* [api] fix incorrect conversion of null values to empty filter values...

...in refset API (refSetType, referencedComponentType and
mapTargetComponentType filters).

Fixes #482.

* [validation] fix setScrollId call in rule666

* [tests] add missing scripting.groovy fragment

* [auth] support pre-7.x LDAP permissions

* [snomed] Fix permission level of SNOMED component create requests

* [core] Make CLI-authorized IEventBus accessible to console scripts

* [validation] use index bulk delete in ValidationIssueDeleteRequest

* [snomed] Unset effective time for members inactivated by...

...ComponentInactivationChangeProcessor (activated by the inactivation
of referenced core components and containing reference sets).

* [snomed] Add filter to inactivate currently active components only

* [validation] use dash characters to separate relationships label parts

* [commons] Re-introduce JDBC helper class and H2 library

* [api] support unpublished effectiveTime filter in REST API (fixes #485)

* [snomed] restrict http-core lib to 4.5.3,4.5.4

* [snomed] do not report unauthorized and forbidden errors in the log

* [tests] reduce extra tp requirement redundancy in test plugins

* [qa] remove unused, deprecated, obsolete classes and functionality

* [api] allow descriptions to be created without any lang refset members

* [snomed] Don't inactivate referring members which have staged changes

This causes problems for eg. existing inactivation indicator members.

* SO-3917: Create CIS status update bash script

* [index] fix calculation of RevisionCompare added/changed/removed numbers

* [cis] fix API endpoint call in change_id_status script

* [tests] disable snomed validation tests in TRAVIS env

* [commons] Fix potential ResultSet resource leak in JdbcUtils

* [validation.snomed] Skip Travis CI tests using a profile

* [core] rename numberOfWorkers configuration key to maxThreads

Change its default value to `200`.
Change EventBus thread pool configuration to be not fixed, keep
Runtime.availableProcessor() or maxThreads (at least 1) as core threads,
and the configured maxThreads as maximum number of allowed event bus
threads.
Deprecate getNumberOfWorkers() and setNumberOfWorkers(), keeping it for
compatibility reasons.

* [cis] use Assigned for the -a option

* [core] keep excess threads available for 1 minute before terminating

* [tests] reduce maxThreads to 8 in snomed.core.rest.tests

* [build] enable travis-ci profile in .travis.yml

* [docs] upgrade api-docs dependencies to latest version

* [tests] disable EclSerializerTest temporarily

* [api] fix incorrect paramType value for nested query parameters

Fixes #441

* [eventbus] remove unnecessary finalize method (unsupported from java9)

* [snomed] use Promise chaining in SnomedEclRefinementEvaluator

* [tests] enable EclSerializerTest

* [api] make sure we time out from ECL evaluations after 3 minutes

* [core] change default REST API timeout to 2 minutes in most of the...

...endpoints

Add timeout values to server side Promise.getSync calls.

* [snomed] fix OWL expression conversion issue

* [build] skip validation test execution via skip xml node

* [tests] increase max number of threads in snomed tests

* [core] constrain concurrency level to the 1-4 range

* [ci] setup maven GitHub action workflow

* [ci] add Java CI GitHub action badge to README

* [doc] replace Travis shield badge...

...with GitHub workflow badge

* [ci] add .m2 cache step

* [core] use custom queue implementation and rejection policy...

...to properly scale eventbus worker thread pool to the configured
maxThreads.

Additional info:
https://stackoverflow.com/questions/15485840/threadpoolexecutor-with-unbounded-queue-not-creating-new-threads

* [ci] run mvn clean verify in GH workflow

* [ci] cache core.rest/api-docs npm dependencies

* [tests] use default-test execution instead of custom execution...

...in validation.snomed module tests.

Fixes build failures in Travis and GH Workflow.

* [test] remove unnecessary maxThreads configuration key from snomed tests

* [ci] add back snomed.core.rest.tests module

* [core] Add ApiError JSON object to errored out remote jobs where the...

...source is not an instance of ApiException

* [snomed] Allow filtering reference set members by complex map block

* [ci] add missing project to dist project

Reports code coverage from tests ql.tests, etl.tests, scg.tests modules.

* [ci] remove unnecessary travis-ci profile from script

* [request] Remove unnecessary method override

* SO-3885: Allow SnomedBulkRequest instantiation outside of package

https://snowowl.atlassian.net/browse/SO-3885

* SO-3916 #resolve

Set definitionStatusId to primitive when inactivating concept.
Also, support definitionStatusId declaration when creating concept.

* [index] use list instead of treeset in mergeSources COMMIT script param

* [compare] Avoid counting versioning among new compnents

* [commons] Extend constructor to find resources relative to class ...

... in case the test bundle is a fragment

* [datastore] Clean up CompositeComponentDeletionPolicy

* Test plugins optional.

* [snomed] Allow external configuration of namespace-module assigners

* SO-3882: Refactor CompositeComponentDeletionPolicy

- use ComponentDeletionPolicy instead of Predicate
- add mergeWith method to combine multiple composite policies

https://snowowl.atlassian.net/browse/SO-3882

* [config] remove unnecessary systemUser configuration key

* [api] fix bug details() expansion affectedComponentId filtering

Fixes #473.

* [core] fix RevisionSegment.withEnd(newEnd) logic

Do not extend the segment to later timestamps than the currently set end
value. Fixes branch@timestamp scenarios where multiple parent branches
are participating in the search.

* [index] increase embedded Elasticsearch max_buckets to 1.500.000...

...temporarily

A proper fix for large aggregations using composite agg is planned for
v7.5.0.

* Revert "[core] fix RevisionSegment.withEnd(newEnd) logic"

This reverts commit 7db86ac.

* [core] use new RevisionSegment.restrictEnd(restrictTo) method...

...to restrict segments to certain timestamp value.

Fixes branch@timestamp scenarios where multiple parent branches with
shorter segments are participating in the search.

* [core] remove diagnostic code statement

* [cis] allow ID registration of already published IDs

* [cis] remove unnecessary validation of incoming ID status changes

Changing ID status should work in a best effort manner and it should not
fail and report back any IDs that cannot be transitioned to the desired
state.

* [tests] fix failed DefaultSnomedIdentifierServiceTest case

* [releng] update changelog with 7.4.0 changes

* Bump netty.version from 4.1.43.Final to 4.1.45.Final

Bumps `netty.version` from 4.1.43.Final to 4.1.45.Final.

Updates `netty-buffer` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-codec` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-codec-http` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-common` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-handler` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-resolver` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-transport` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Signed-off-by: dependabot[bot] <support@github.com>

* [ci] add codecov upload step to maven workflow

* Update maven.yml

* [ci] trigger the build workflow on pull request

* [ci] trigger build only when...

...push, pr changes against the 7.x branch

* [commons] Make set of invalid resource characters visible

* [config] remove deprecated `snomed.ids` configuration key

* [classify] refactor namespace and module assignment logic

Require module and namespace to be specified in SaveJobRequests.
Remove defaultModule and defaultNamespace from snowowl.yml configuratio
file.
Allow multiple assigner instances from the same type, fixes parallel
classification issues in different extension branches.
Add mandatory `module` and `namespace` parameters to classification save
endpoint.

* [classify] add NotEmpty annotation to ClassificationRunRestUpdate

* [classify] remove 'default' assigner type from classification run update

* [releng] change commons.logging require-bundle directives to...

...import-package statements

* [releng] add commons-logging jar dependency to core.rest module

* [releng] release 7.4.0

* [core] Remove SNAPSHOT suffix from logback.config

* [releng] release 7.4.0 (update links)

* [releng] prepare 7.5.0-SNAPSHOT

* [docs] add from-6x migration guide

* [scripts] remove db related scripts from assembly

* [docs] add backup guide

* [docs] update JDK links

* [api] fix malformed Location header values

Fixes #500

* [api] fix possible NPE when not supplying any acceptability values

* revert package-lock.json

* regenerate lock

* chr-1516- get rid of the github config, duplicate of circleCi or unnecessary

Co-authored-by: Gabriella Deak <45433791+adeakgabi@users.noreply.github.com>
Co-authored-by: Gábor Nagy <gnagy@b2international.com>
Co-authored-by: Mark Czotter <mczotter@b2international.com>
Co-authored-by: András Péteri <apeteri@b2international.com>
Co-authored-by: AAAlinaaa <aalaswadi@b2international.com>
Co-authored-by: Balazs Banfai <bbanfai@b2international.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ivelina-yordanova referenced this issue in babylonhealth/snow-owl Mar 24, 2020
* [cis] fix config file name of CIS product

* [core] support unprotected routes/requests

* [snomed] Update remaining references to Rf2ExportResult

* SO-3893: Relocate fix for issue to Taxonomies class (7.x, partial).

Stated OWL axiom handling is still missing.

* [tests] add more specific concept reactivation test cases (7.x)

* SO-3853: Register ValueSet and MappingSet to contribute (7.x)

* [snomed.import] Set code system shortname in import details (7.x)

* [validation] Add reference set type to OWL axiom members in... (7.x)

...GenericValidationRuleTest

* [export] Wrap reads into an IndexReadRequest in SnomedRf2ExportRequest

* [core] allow multiple unprotected requests to execute in bulk

* [core] always include responseTime metric in request log entries

* SO-3881: add ETL and SCG core bundles to snomed.core.feature

* SO-3864: set clearResources to true by default in SnowOwlAppRule

* [core] merge IndexReadRequest functionality into RepositoryRequest

* [mrcm] Remove remaining checked in source files from mrcm.model project

* [documentation] Remove non-existent project references from MANIFEST.MF

* [releng] update changelog with 7.3.0 changes

* [releng] release 7.3.0

* [releng] release 7.3.0

* [releng] update README.md with 7.3.0 release links

* [releng] prepare 7.4.0-SNAPSHOT

* [core] Ensure that all TerminologyRepositoryPlugin subclasses provide...

...a terminology repository initializer instance (used for initializing
a default code system entry for each tooling).

* [core] Fix AccessControl subclass on RepositoryClearRequest, move...

...factory method of request builder to RepositoryRequests

* [core] Implement RepositoryTransactionContext#clearContents

The implementation calls stageRemove on all instances of Revision and
subclasses that are visible on the context branch using a matchAll
query, at the time of method invocation.

* [snomed] convert NumberFormatException to BadRequestException

* [oomph] Add preference settings for .* package and static imports

* SO-3882: Add ability to define additional component deletion policies...

... in implementations of TerminologyRepositoryConfigurers

https://snowowl.atlassian.net/browse/SO-3882

* SO-3882: Fix license header

https://snowowl.atlassian.net/browse/SO-3882

* SO-3882: Fix invalid type in deletion policy rule

https://snowowl.atlassian.net/browse/SO-3882

* [snomed] add support for module() expand

* [api] change type of SnomedConcept.definitionStatus to SnomedConcept

Support expansion of definition status concept via definitionStatus()
expand parameter.
Remove DefinitionStatus enum literal.

* Update core/com.b2international.snowowl.core/src/com/b2international/snowowl/core/id/IDs.java

Co-Authored-By: András Péteri <apeteri@b2international.com>

* [core] update javadoc suggested in #472

b2ihealthcare/snow-owl#472 (comment)

* [api] add `id` filter to `commits` API

Related to #473.

* [api] support `affectedComponentId` details() expand parameter

Related to #473.

* Cast to distinguish from Map parameter.

* SO-3889: Move Charmatcher for invalid file name characters to FileUtils

https://snowowl.atlassian.net/browse/SO-3889

* [snomed] remove unnecessary definitionStatusId field from SnomedConcept

* [snomed] fix possible definitionStatus NPE when using field selection

* SO-3123: Add support for "complex map with map block" type reference sets (#474)

- Add SnomedRefSetType enum literal for complex block map
- Handle complex block maps in SnomedRefSetUtil methods
- Add new "map block" field and refset header to SnomedRf2Headers
- Specify supported referenced component type for complex block maps in class RefSetSupport
- Add support for complex block map import; update index format
- Extend refset member create and update requests with complex block map support; ensure that class cast exceptions are translated to bad requests when inspecting member properties.
- Add support for exporting complex block maps to RF2
- Add SnomedDsvExportItemType literal for "map block" field
- Add SCTID of complex block map identifier parent concept
- Add complex block map type test cases to SNOMED e2e tests
- Update FHIR's SnomedConceptMapApiProvider
- Update FHIR concept map test cases

* Exchanged descriptions.

* [core] remove IComponent.ID_FUNCTION

* [snomed] fix definitionStatus() expansion issues

* [snomed] add acceptabilities() expansion to /descriptions API

* [snomed] remove CaseSignificance enum literals

* [snomed] support caseSignificance() expansion on descriptions

* [core] fix unauthorized issue when executing console commands

* SO-3123: Convert mapBlock field to an Integer when importing

* SO-3858: Add support for nested, and reverse nested aggregation

* [snomed] remove CharacteristicType enum literals

* [snomed] remove RelationshipModifier enum literals

* [snomed] support characteristicType() and modifier() expansion...

...on relationships

* [qa] fix lgtm issue https://lgtm.com/rules/1511220334423/

* Revert "[qa] fix lgtm issue https://lgtm.com/rules/1511220334423/"

This reverts commit 628bad4.

* [snomed] run effective time restore only in non-import scenarios

* [qa] suppress lgtm warning https://lgtm.com/rules/1511220334423/

* Upgrade to Elasticsearch 7.x (#478)

* [index] bump version to Elasticsearch 7.5.2
* [index] fix tokenizer/analyzer compile errors
* [index] use indices level when fetching cluster health
* [index] fix EsNode initialization
* [index] fix client compile errors
* Fix type and other warnings printed by ES API.
* [index] add CMS GC config to index tests
* Fixes [parent] data too large issues during tests.
* [rf2] reduce RF2 exporter scroll timeout to 1m
* [tests] fix negative scores in SortIndexTest
* [api] remove scrollId and scrollKeepAlive from Java API
* Use searchAfter + branch@timestamp for efficient data snapshot paging/scrolling.
* [core] remove scrollId from core models and API
* [snomed] remove scrollId from snomed models and API
* [rest] remove scrollId from core REST API
* [snomed] remove scrollId from snomed REST API
* [rf2] use branch@timestamp for RF2 exports
* [build] add CMS GC settings to all tycho surefire executions
* [launch] add CMS GC settings to all test launch configs
* [qa] fix lgtm issues https://lgtm.com/rules/2049510531/
* [index] use bool query with should clauses for term filters with more than the configured index.max_terms_count.
* Also make it possible to configure both maxTermsCount and resultWindow values from snowowl.yml (repository.index config).
* [index] fix some of the type_removal warnings reported by ES
* The remaining warnings thrown by the Mapping API, but we cannot remove it yet, due to our dependency to the TCP client infrastructure. Those warnings will be eliminated once ES 8 is out and we decide to upgrade to that (which will remove the TCP client functionality entirely).
Fix some java compile warnings as well. And also add some serialVersionUIDs.
* [index] fix nested field name in terms queries. Also fix decimal value conversion when number of terms is less than the
max_terms_count.
* [index] searches should always track total hits accurately
* [core] update comments in SearchResourceRequestIterator
* [index] aggregations should always track total hits accurately
* [index] fix typo

* [docker] bump elasticsearch-oss image version to 7.5.2

* [index] prevent unnecessary mapping updates during startup

* [qa] fix lgtm issue https://lgtm.com/rules/1930000368/

* [qa] fix lgtm issue https://lgtm.com/rules/9990077/

* [qa] fix lgtm issue https://lgtm.com/rules/11000068/

* [qa] fix lgtm issue https://lgtm.com/rules/9990077/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] fix lgtm issue https://lgtm.com/rules/2049510531/

* [qa] ignore lgtm issue https://lgtm.com/rules/1954750296/ in Base64

* [qa] ignore lgtm issue https://lgtm.com/rules/1954750296/ (JavaBinCodec)

* [qa] fix lgtm issue https://lgtm.com/rules/1507082716110/

* [snomed] remove InactivationIndicator and AssociationType enum literals

Use new InactivationProperties object to specify indicator and
association target values during component inactivation.
Make processInactivation method generic in SnomedComponentUpdateRequest.

* [index] Reorder classpath entries, remove source attachment paths

* [dev] fix launch configurations

* [ecl] add a handy `Ecl.or(expressions)` helper method

* [build] fix snomed.validation.snomed build.properties

* [api] fix incorrect conversion of null values to empty filter values...

...in refset API (refSetType, referencedComponentType and
mapTargetComponentType filters).

Fixes #482.

* [validation] fix setScrollId call in rule666

* [tests] add missing scripting.groovy fragment

* [auth] support pre-7.x LDAP permissions

* [snomed] Fix permission level of SNOMED component create requests

* [core] Make CLI-authorized IEventBus accessible to console scripts

* [validation] use index bulk delete in ValidationIssueDeleteRequest

* [snomed] Unset effective time for members inactivated by...

...ComponentInactivationChangeProcessor (activated by the inactivation
of referenced core components and containing reference sets).

* [snomed] Add filter to inactivate currently active components only

* [validation] use dash characters to separate relationships label parts

* [commons] Re-introduce JDBC helper class and H2 library

* [api] support unpublished effectiveTime filter in REST API (fixes #485)

* [snomed] restrict http-core lib to 4.5.3,4.5.4

* [snomed] do not report unauthorized and forbidden errors in the log

* [tests] reduce extra tp requirement redundancy in test plugins

* [qa] remove unused, deprecated, obsolete classes and functionality

* [api] allow descriptions to be created without any lang refset members

* [snomed] Don't inactivate referring members which have staged changes

This causes problems for eg. existing inactivation indicator members.

* SO-3917: Create CIS status update bash script

* [index] fix calculation of RevisionCompare added/changed/removed numbers

* [cis] fix API endpoint call in change_id_status script

* [tests] disable snomed validation tests in TRAVIS env

* [commons] Fix potential ResultSet resource leak in JdbcUtils

* [validation.snomed] Skip Travis CI tests using a profile

* [core] rename numberOfWorkers configuration key to maxThreads

Change its default value to `200`.
Change EventBus thread pool configuration to be not fixed, keep
Runtime.availableProcessor() or maxThreads (at least 1) as core threads,
and the configured maxThreads as maximum number of allowed event bus
threads.
Deprecate getNumberOfWorkers() and setNumberOfWorkers(), keeping it for
compatibility reasons.

* [cis] use Assigned for the -a option

* [core] keep excess threads available for 1 minute before terminating

* [tests] reduce maxThreads to 8 in snomed.core.rest.tests

* [build] enable travis-ci profile in .travis.yml

* [docs] upgrade api-docs dependencies to latest version

* [tests] disable EclSerializerTest temporarily

* [api] fix incorrect paramType value for nested query parameters

Fixes #441

* [eventbus] remove unnecessary finalize method (unsupported from java9)

* [snomed] use Promise chaining in SnomedEclRefinementEvaluator

* [tests] enable EclSerializerTest

* [api] make sure we time out from ECL evaluations after 3 minutes

* [core] change default REST API timeout to 2 minutes in most of the...

...endpoints

Add timeout values to server side Promise.getSync calls.

* [snomed] fix OWL expression conversion issue

* [build] skip validation test execution via skip xml node

* [tests] increase max number of threads in snomed tests

* [core] constrain concurrency level to the 1-4 range

* [ci] setup maven GitHub action workflow

* [ci] add Java CI GitHub action badge to README

* [doc] replace Travis shield badge...

...with GitHub workflow badge

* [ci] add .m2 cache step

* [core] use custom queue implementation and rejection policy...

...to properly scale eventbus worker thread pool to the configured
maxThreads.

Additional info:
https://stackoverflow.com/questions/15485840/threadpoolexecutor-with-unbounded-queue-not-creating-new-threads

* [ci] run mvn clean verify in GH workflow

* [ci] cache core.rest/api-docs npm dependencies

* [tests] use default-test execution instead of custom execution...

...in validation.snomed module tests.

Fixes build failures in Travis and GH Workflow.

* [test] remove unnecessary maxThreads configuration key from snomed tests

* [ci] add back snomed.core.rest.tests module

* [core] Add ApiError JSON object to errored out remote jobs where the...

...source is not an instance of ApiException

* [snomed] Allow filtering reference set members by complex map block

* [ci] add missing project to dist project

Reports code coverage from tests ql.tests, etl.tests, scg.tests modules.

* [ci] remove unnecessary travis-ci profile from script

* [request] Remove unnecessary method override

* SO-3885: Allow SnomedBulkRequest instantiation outside of package

https://snowowl.atlassian.net/browse/SO-3885

* SO-3916 #resolve

Set definitionStatusId to primitive when inactivating concept.
Also, support definitionStatusId declaration when creating concept.

* [index] use list instead of treeset in mergeSources COMMIT script param

* [compare] Avoid counting versioning among new compnents

* [commons] Extend constructor to find resources relative to class ...

... in case the test bundle is a fragment

* [datastore] Clean up CompositeComponentDeletionPolicy

* Test plugins optional.

* [snomed] Allow external configuration of namespace-module assigners

* SO-3882: Refactor CompositeComponentDeletionPolicy

- use ComponentDeletionPolicy instead of Predicate
- add mergeWith method to combine multiple composite policies

https://snowowl.atlassian.net/browse/SO-3882

* [config] remove unnecessary systemUser configuration key

* [api] fix bug details() expansion affectedComponentId filtering

Fixes #473.

* [core] fix RevisionSegment.withEnd(newEnd) logic

Do not extend the segment to later timestamps than the currently set end
value. Fixes branch@timestamp scenarios where multiple parent branches
are participating in the search.

* [index] increase embedded Elasticsearch max_buckets to 1.500.000...

...temporarily

A proper fix for large aggregations using composite agg is planned for
v7.5.0.

* Revert "[core] fix RevisionSegment.withEnd(newEnd) logic"

This reverts commit 7db86ac.

* [core] use new RevisionSegment.restrictEnd(restrictTo) method...

...to restrict segments to certain timestamp value.

Fixes branch@timestamp scenarios where multiple parent branches with
shorter segments are participating in the search.

* [core] remove diagnostic code statement

* [cis] allow ID registration of already published IDs

* [cis] remove unnecessary validation of incoming ID status changes

Changing ID status should work in a best effort manner and it should not
fail and report back any IDs that cannot be transitioned to the desired
state.

* [tests] fix failed DefaultSnomedIdentifierServiceTest case

* [releng] update changelog with 7.4.0 changes

* Bump netty.version from 4.1.43.Final to 4.1.45.Final

Bumps `netty.version` from 4.1.43.Final to 4.1.45.Final.

Updates `netty-buffer` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-codec` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-codec-http` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-common` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-handler` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-resolver` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Updates `netty-transport` from 4.1.43.Final to 4.1.45.Final
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](netty/netty@netty-4.1.43.Final...netty-4.1.45.Final)

Signed-off-by: dependabot[bot] <support@github.com>

* [ci] add codecov upload step to maven workflow

* Update maven.yml

* [ci] trigger the build workflow on pull request

* [ci] trigger build only when...

...push, pr changes against the 7.x branch

* [commons] Make set of invalid resource characters visible

* [config] remove deprecated `snomed.ids` configuration key

* [classify] refactor namespace and module assignment logic

Require module and namespace to be specified in SaveJobRequests.
Remove defaultModule and defaultNamespace from snowowl.yml configuratio
file.
Allow multiple assigner instances from the same type, fixes parallel
classification issues in different extension branches.
Add mandatory `module` and `namespace` parameters to classification save
endpoint.

* [classify] add NotEmpty annotation to ClassificationRunRestUpdate

* [classify] remove 'default' assigner type from classification run update

* [releng] change commons.logging require-bundle directives to...

...import-package statements

* [releng] add commons-logging jar dependency to core.rest module

* [releng] release 7.4.0

* [core] Remove SNAPSHOT suffix from logback.config

* [releng] release 7.4.0 (update links)

* [releng] prepare 7.5.0-SNAPSHOT

* [docs] add from-6x migration guide

* [scripts] remove db related scripts from assembly

* [docs] add backup guide

* [docs] update JDK links

* [api] fix malformed Location header values

Fixes #500

* [api] fix possible NPE when not supplying any acceptability values

* [api] introduce CodeSystemURI and CodeSystemResourceRequest

Support `build(uri)` request builder method on selected SNOMED CT APIs.
This allows clients to call the API with a CodeSystemURI String
representation instead of specifying the repositoryId and branch to
delegate the request to.
CodeSystemURI represents a String in format of `<CODESYSTEM>[/<PATH>]`,
where:
- `<CODESYSTEM>` is the shortName ID of a Code System
- `<PATH>` is one of the following values:
  * `LATEST` - special value that represents the latest released version
of the codesystem. This is the default value if PATH is omitted.
Examples: `SNOMEDCT` (implicit latest) or `SNOMEDCT/LATEST` (explicit
latest).
  * `HEAD` - special value that represents the latest development
version of the codesystem. Examples: `SNOMEDCT/HEAD`
  * `<versionId>` - an explicit `versionId` that matches one existing
version of the Code System. Examples: `SNOMEDCT/2019-01-31` or
`SNOMEDCT-UK/2019-10-31`
  * `<branch_path>` - any other path value will be treated as relative
path to the CodeSystem's current working branch
(`CodeSystem.branchPath`). Examples: `SNOMEDCT/a/b`.

This new feature is available in all endpoints that require a `/:path`
parameter.

* [api] fix failed ECL test cases

* [api] minor PR changes related to CodeSystemURI API feature

* [api] use health checking request properly in new CodeSystemRequests...

...helper methods

* SO-3929: Clean up Permissions to allow removal of Eclipse contributions

https://snowowl.atlassian.net/browse/SO-3929

* Bump jackson-databind from 2.9.10.1 to 2.9.10.3

Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.9.10.1 to 2.9.10.3.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

Signed-off-by: dependabot[bot] <support@github.com>

* [api] add Enum keyed accessor methods to Options

* [api] add generic Concept model and ConceptSearchRequest and its Builder

* [core] refactor TerminologyRepositoryPlugin initialization

Remove type specific builder methods from RepositoryBuilder.
Add generic bind(type, instance) method to bind any service to the
repository context.

* [api] initial version of SNOMED CT specific search request evaluator

* [tests] add generic access test to SNOMED CT api tests

* [api] add filterByQuery test and fix remaining issues with filters

* Update javadoc

Thanks @apeteri!

Co-Authored-By: András Péteri <apeteri@b2international.com>

* [api] add javadoc to MUST_NOT_QUERY optionkey

* [commons] remove existing mapping if the new value is null (Options)

* [ldap] make LDAP identity provider more customizable

Support customization of user and role object classes (defaults are
`inetOrgPerson` and `groupOfUniqueNames`).
Support customization of permission and member properties (defaults are
`description` and `uniqueMember`).

* [api] fix potential NPE when using sortBy with null value

* [api] add prepareCommit to RepositoryRequests

* [api] fix potential NPE when using filterById() with null value

* [api] support term filter in SnomedConceptSearchRequestEvaluator

* [api] set the codeSystem URI and the terminologyComponentId...

...in Concepts returned by the generic concept request API

* [core] add two more rules to CodeSystemURI

* [api] return timestamp as String in CommitInfo

* Utility method added to check without exception.

* [api] expose timestampFrom and timestampTo filters

* [api] add getTimestampString property to CommitInfo JSON representation

Timestamp field will remain a 64bit number (long), a with the newest
BigInt JavaScript support it is supported in the browsers as well.

* Registered converter for string-to enums as well as validators.

* [api] fix missing brackets when evaluating multiple OR'd clauses

* [api] fix MAIN/LATEST branch not found exception when...

...no codesystem version is present.

* [api] extract IndexResourceRequest from ResourceRequest

This allows Request implementations to subclass from ResourceRequest and
use locales and generic arguments without depending on Index/Document
specific `fields` and `expand`.

* [api] support Accept-Language header parsing on Java API level

Remove deprecated `acceptability` filter option from SNOMED CT
Description API. Use `acceptableIn`, `preferredIn` or `languageRefSet`
alternatives instead.

* Template authoring support (#515)

- Allow extending repositories with additional components
- Add fields in SnomedTerminologyComponentConstants for templates
- Add missing terminologyComponentId conversion cases in SnomedTerminologyComponentConstants utility methods
- Trim nested property paths in RevisionDiff#diff

Co-authored-by: Gabor Nagy <gnagy@b2international.com>
Co-authored-by: aalaswadi <aalaswadi@b2international.com>

* [api] remove unnecessary class

* remove file

Co-authored-by: Mark Czotter <mczotter@b2international.com>
Co-authored-by: András Péteri <apeteri@b2international.com>
Co-authored-by: Gabor Nagy <gnagy@b2international.com>
Co-authored-by: Balazs Banfai <bbanfai@b2international.com>
Co-authored-by: aalaswadi <aalaswadi@b2international.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants