egeria
egeria copied to clipboard
Usage of spring in non-spring modules
Our service architecture is to capture all business logic in our '-service' modules, and have our spring rest binding within '-spring' modules.
This isolates spring from the remainder of egeria, making it easier to adopt other, future technologies for service bindings such as microprofile, or perhaps gRPC.
The following modules appear to breach this principle:
./open-metadata-conformance-suite/open-metadata-conformance-suite-server/pom.xml
This is used in TestOpenMetadataOrigin - use of RestTemplate where probably use of our dedicated spring rest connector would be preferable
./open-metadata-implementation/governance-servers/security-sync-services/security-sync-services-server/pom.xml
This is making a fair bit of use of spring for client access to the ranger server - I suspect again we could use the spring rest connector
./open-metadata-implementation/governance-servers/security-officer-services/security-officer-services-server/pom.xml
As above -> spring rest connector
./open-metadata-implementation/access-services/data-engine/data-engine-client/pom.xml
We seem to make use of org.springfamework.util.CollectionUtils - could we use alternative collections?
./open-metadata-implementation/access-services/data-engine/data-engine-server/pom.xml
Making use of collections, and rest client (could use rest connector)
./open-metadata-implementation/access-services/glossary-view/glossary-view-server/pom.xml
This is making use of spring reflection utilities - though is in test code
./open-metadata-implementation/access-services/glossary-view/glossary-view-client/pom.xml
Also in test code
./open-metadata-implementation/access-services/information-view/information-view-server/pom.xml
A lot of spring manipulation
./open-metadata-implementation/access-services/asset-catalog/asset-catalog-client/pom.xml
Reflection (test)
./open-metadata-implementation/access-services/asset-catalog/asset-catalog-server/pom.xml
Reflection (test)
./open-metadata-implementation/access-services/subject-area/subject-area-client/pom.xml
Used for client rest calls (should use connector)
./open-metadata-implementation/access-services/data-platform/data-platform-server/pom.xml
A few light utilities
./open-metadata-implementation/access-services/governance-engine/governance-engine-client/pom.xml
rest api (use connector)
./open-metadata-implementation/access-services/governance-engine/governance-engine-server/pom.xml
A little use for string fn?
./open-metadata-implementation/adapters/governance-engines-plugins/gaian-ranger-plugin/pom.xml
Used for rest client (use connector)
./open-metadata-implementation/adapters/open-connectors/governance-daemon-connectors/security-sync-connectors/ranger-connector/pom.xml
Used as rest client
Open for discussion, but to adhere to our architecural principles I think we need to
- Replace use of spring RestClient with our spring rest connector
- Evaluate if different collection/string classes can be used in other cases
- Refactor test code - only -spring tests should have spring dependencies
Good catch - but we should address for 1.3...
For the very first part of this (only) - relating to the conformance suite - the use of the Spring RestTemplate is in the testing of platform conformance. If this were in the repository workbench I think I would know enough to fix it - but I am less sure about the platform - do we have a platform connector (analogous to the repository connectors)?
There is a REST Client connector that can be used.
Note #3031 removes some spring dependency from the data platform server
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 20 days if no further activity occurs. Thank you for your contributions.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 20 days if no further activity occurs. Thank you for your contributions.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 20 days if no further activity occurs. Thank you for your contributions.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 20 days if no further activity occurs. Thank you for your contributions.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 20 days if no further activity occurs. Thank you for your contributions.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 20 days if no further activity occurs. Thank you for your contributions.
Currently we have:
./open-metadata-conformance-suite/open-metadata-conformance-suite-server/pom.xml:
- uses spring-web
./open-metadata-implementation/common-services/ffdc-services/pom.xml:
- spring-core
- spring-rest-client-connector
./open-metadata-implementation/access-services/data-engine/data-engine-server/pom.xml:
- spring-core
- spring-web
-
./open-metadata-implementation/access-services/glossary-view/glossary-view-server/pom.xml:
- spring-core
./open-metadata-implementation/access-services/glossary-view/glossary-view-client/pom.xml
- spring-core
./open-metadata-implementation/access-services/asset-catalog/asset-catalog-client/pom.xml
- spring-core
./open-metadata-implementation/access-services/asset-catalog/asset-catalog-server/pom.xml
- spring-core
./open-metadata-implementation/access-services/subject-area/subject-area-client/pom.xml
- spring-core
./open-metadata-implementation/access-services/security-officer/security-officer-client/pom.xml
- spring-core
./open-metadata-implementation/access-services/asset-lineage/asset-lineage-client/pom.xml
- spring-core
./open-metadata-implementation/adapters/open-connectors/rest-client-connectors/spring-rest-client-connector/pom.xml
- spring-core
./open-metadata-implementation/adapters/open-connectors/rest-client-connectors/spring-rest-client-connector/pom.xml:
- spring-web
- spring-core
The current affected java files are:
find . -name '*.java' | xargs -n50 grep 'import org.spring' | grep -v '\-spring/' | grep -v 'spring-rest-client' | grep -v delombok [12:49:58]
./open-metadata-conformance-suite/open-metadata-conformance-suite-server/src/main/java/org/odpi/openmetadata/conformance/tests/platform/origin/TestOpenMetadataOrigin.java:import org.springframework.web.client.RestTemplate;
./open-metadata-implementation/common-services/ffdc-services/src/main/java/org/odpi/openmetadata/commonservices/ffdc/rest/FFDCRESTClientBase.java:import org.springframework.core.ParameterizedTypeReference;
./open-metadata-implementation/common-services/ffdc-services/src/main/java/org/odpi/openmetadata/commonservices/ffdc/rest/ResponseParameterization.java:import org.springframework.core.GenericTypeResolver;
./open-metadata-implementation/common-services/ffdc-services/src/main/java/org/odpi/openmetadata/commonservices/ffdc/rest/ResponseParameterization.java:import org.springframework.core.ParameterizedTypeReference;
./open-metadata-implementation/common-services/ffdc-services/src/main/java/org/odpi/openmetadata/commonservices/ffdc/rest/ResponseParameterization.java:import org.springframework.core.ResolvableType;
./open-metadata-implementation/access-services/data-engine/data-engine-server/src/test/java/org/odpi/openmetadata/accessservices/dataengine/server/service/DataEngineRESTServicesTest.java:import org.springframework.util.ReflectionUtils;
./open-metadata-implementation/access-services/data-engine/data-engine-server/src/main/java/org/odpi/openmetadata/accessservices/dataengine/server/service/DataEngineRESTServices.java:import org.springframework.http.HttpStatus;
./open-metadata-implementation/access-services/glossary-view/glossary-view-server/src/test/java/org/odpi/openmetadata/accessservices/glossaryview/server/service/GlossaryViewOmasBaseTest.java:import org.springframework.util.ReflectionUtils;
./open-metadata-implementation/access-services/glossary-view/glossary-view-client/src/test/java/org/odpi/openmetadata/accessservices/glossaryview/client/GlossaryViewClientTest.java:import org.springframework.util.ReflectionUtils;
./open-metadata-implementation/access-services/asset-catalog/asset-catalog-client/src/test/java/org/odpi/openmetadata/accessservices/assetcatalog/AssetCatalogClientTest.java:import org.springframework.util.ReflectionUtils;
./open-metadata-implementation/access-services/asset-catalog/asset-catalog-server/src/test/java/org/odpi/openmetadata/accessservices/assetcatalog/service/AssetCatalogRelationshipServiceTest.java:import org.springframework.util.ReflectionUtils;
./open-metadata-implementation/access-services/asset-catalog/asset-catalog-server/src/test/java/org/odpi/openmetadata/accessservices/assetcatalog/service/AssetCatalogServiceTest.java:import org.springframework.util.ReflectionUtils;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/nodes/glossaries/SubjectAreaGlossaryClient.java:import org.springframework.core.ParameterizedTypeReference;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/nodes/glossaries/SubjectAreaGlossaryClient.java:import org.springframework.core.ResolvableType;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/nodes/projects/SubjectAreaProjectClient.java:import org.springframework.core.ParameterizedTypeReference;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/nodes/projects/SubjectAreaProjectClient.java:import org.springframework.core.ResolvableType;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/nodes/terms/SubjectAreaTermClient.java:import org.springframework.core.ParameterizedTypeReference;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/nodes/terms/SubjectAreaTermClient.java:import org.springframework.core.ResolvableType;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/nodes/AbstractSubjectAreaNode.java:import org.springframework.core.ParameterizedTypeReference;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/nodes/AbstractSubjectAreaNode.java:import org.springframework.core.ResolvableType;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/nodes/categories/SubjectAreaCategoryClient.java:import org.springframework.core.ParameterizedTypeReference;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/nodes/categories/SubjectAreaCategoryClient.java:import org.springframework.core.ResolvableType;
./open-metadata-implementation/access-services/subject-area/subject-area-client/src/main/java/org/odpi/openmetadata/accessservices/subjectarea/client/SubjectAreaRestClient.java:import org.springframework.core.ParameterizedTypeReference;
./open-metadata-implementation/access-services/security-officer/security-officer-client/src/test/java/org/odpi/openmetadata/accessservices/securityofficer/client/GovernedAssetClientClientTest.java:import org.springframework.util.ReflectionUtils;
./open-metadata-implementation/access-services/security-officer/security-officer-client/src/main/java/org/odpi/openmetadata/accessservices/securityofficer/client/GovernedAssetClient.java:import org.springframework.util.CollectionUtils;
./open-metadata-implementation/access-services/asset-lineage/asset-lineage-client/src/test/java/org/odpi/openmetadata/accessservices/assetlineage/AssetLineageClientTest.java:import org.springframework.util.ReflectionUtils;
This assumes we only use spring in a) Our '-spring' modules b) Our spring rest client connector
The affected components seem to include SubjectArea, GlossaryView, Asset Lineage, AssetCatalog, DataEngine, Conformance, FFDC
Each should be checked for reasonableness
Assigning to re-assess the situation