├── .github
└── workflows
│ ├── ci.yml
│ └── release.yml
├── .gitignore
├── .idea
└── codeStyles
│ └── Project.xml
├── .run
├── metis-authentication (local).run.xml
├── metis-authentication-rest_Dockerfile.run.xml
├── metis-debias (local).run.xml
├── metis-dereference (local).run.xml
├── metis-dereference-rest_Dockerfile.run.xml
├── metis-repository (local).run.xml
└── metis-repository-rest_Dockerfile.run.xml
├── CONTRIBUTING.MD
├── LICENSE.MD
├── README.MD
├── metis-authentication
├── metis-authentication-common
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── authentication
│ │ │ └── user
│ │ │ ├── AccountRole.java
│ │ │ ├── Credentials.java
│ │ │ ├── EmailParameter.java
│ │ │ ├── MetisUser.java
│ │ │ ├── MetisUserAccessToken.java
│ │ │ ├── MetisUserView.java
│ │ │ ├── OldNewPasswordParameters.java
│ │ │ └── UserIdParameter.java
│ │ └── test
│ │ └── java
│ │ └── eu
│ │ └── europeana
│ │ └── metis
│ │ └── authentication
│ │ └── user
│ │ ├── AccountRoleTest.java
│ │ ├── CredentialsTest.java
│ │ ├── EmailParameterTest.java
│ │ ├── MetisUserAccessTokenTest.java
│ │ ├── MetisUserTest.java
│ │ ├── MetisUserViewTest.java
│ │ └── TestAccountRole.java
├── metis-authentication-rest-client
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── authentication
│ │ │ └── rest
│ │ │ └── client
│ │ │ └── AuthenticationClient.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── authentication
│ │ │ └── rest
│ │ │ └── client
│ │ │ └── TestAuthenticationClient.java
│ │ └── resources
│ │ └── __files
│ │ └── MetisUser.json
├── metis-authentication-rest
│ ├── .gitignore
│ ├── Dockerfile
│ ├── docker-compose.yml
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── eu
│ │ │ │ └── europeana
│ │ │ │ └── metis
│ │ │ │ └── authentication
│ │ │ │ └── rest
│ │ │ │ ├── Application.java
│ │ │ │ ├── config
│ │ │ │ ├── ApplicationConfiguration.java
│ │ │ │ └── properties
│ │ │ │ │ └── MetisAuthenticationConfigurationProperties.java
│ │ │ │ └── controller
│ │ │ │ ├── AuthenticationController.java
│ │ │ │ └── advice
│ │ │ │ └── RestResponseExceptionHandler.java
│ │ └── resources
│ │ │ ├── application.properties.example
│ │ │ ├── create_tables.sql
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── java
│ │ └── eu
│ │ └── europeana
│ │ └── metis
│ │ └── authentication
│ │ └── rest
│ │ ├── AuthenticationControllerTest.java
│ │ └── utils
│ │ └── TestUtils.java
├── metis-authentication-service
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── authentication
│ │ │ ├── dao
│ │ │ └── PsqlMetisUserDao.java
│ │ │ └── service
│ │ │ └── AuthenticationService.java
│ │ └── test
│ │ └── java
│ │ └── eu
│ │ └── europeana
│ │ └── metis
│ │ └── authentication
│ │ ├── dao
│ │ └── TestPsqlMetisUserDao.java
│ │ └── service
│ │ └── AuthenticationServiceTest.java
└── pom.xml
├── metis-debias
├── README.MD
├── metis-debias-detect-rest
│ ├── .gitignore
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── eu
│ │ │ │ └── europeana
│ │ │ │ └── metis
│ │ │ │ └── debias
│ │ │ │ └── detect
│ │ │ │ └── rest
│ │ │ │ ├── Application.java
│ │ │ │ ├── config
│ │ │ │ ├── ApplicationConfiguration.java
│ │ │ │ └── SwaggerConfig.java
│ │ │ │ ├── controller
│ │ │ │ └── DetectionController.java
│ │ │ │ └── exceptions
│ │ │ │ ├── ExceptionResponseHandler.java
│ │ │ │ └── ServerError.java
│ │ └── resources
│ │ │ ├── application.properties.example
│ │ │ └── log4j2.xml
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── debias
│ │ │ └── detect
│ │ │ └── rest
│ │ │ └── controller
│ │ │ ├── DetectionControllerTest.java
│ │ │ └── DetectionControllerWiremockTest.java
│ │ └── resources
│ │ ├── sample_error_bad_gateway.html
│ │ ├── sample_error_bad_gateway.json
│ │ ├── sample_error_missing_body.json
│ │ ├── sample_error_missing_language.json
│ │ ├── sample_error_missing_values.json
│ │ ├── sample_error_null_body.json
│ │ ├── sample_error_null_language.json
│ │ ├── sample_error_null_values.json
│ │ └── sample_success_response.json
├── metis-debias-detect-service
│ ├── .gitignore
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── debias
│ │ │ └── detect
│ │ │ ├── client
│ │ │ └── DeBiasClient.java
│ │ │ ├── exceptions
│ │ │ ├── DeBiasBadRequestException.java
│ │ │ └── DeBiasInternalServerException.java
│ │ │ ├── model
│ │ │ ├── DeBiasResult.java
│ │ │ ├── error
│ │ │ │ ├── Detail.java
│ │ │ │ ├── ErrorDeBiasResult.java
│ │ │ │ └── Input.java
│ │ │ ├── request
│ │ │ │ └── BiasInputLiterals.java
│ │ │ └── response
│ │ │ │ ├── DetectionDeBiasResult.java
│ │ │ │ ├── Metadata.java
│ │ │ │ ├── Tag.java
│ │ │ │ └── ValueDetection.java
│ │ │ └── service
│ │ │ └── BiasDetectService.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── debias
│ │ │ └── detect
│ │ │ └── client
│ │ │ └── DeBiasClientTest.java
│ │ └── resources
│ │ ├── sample_error_null_language.json
│ │ └── sample_success_response.json
└── pom.xml
├── metis-dereference
├── README.MD
├── metis-dereference-common
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── dereference
│ │ │ ├── ContextualClass.java
│ │ │ ├── DereferenceResult.java
│ │ │ ├── IncomingRecordToEdmTransformer.java
│ │ │ ├── ProcessedEntity.java
│ │ │ ├── RdfRetriever.java
│ │ │ └── Vocabulary.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── dereference
│ │ │ └── IncomingRecordToEdmTransformerTest.java
│ │ └── resources
│ │ ├── copy_xml.xslt
│ │ ├── invalid_xml.xml
│ │ ├── produce_empty.xslt
│ │ ├── produce_invalid_xml.xslt
│ │ └── yso_p105069.xml
├── metis-dereference-import
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── dereference
│ │ │ └── vocimport
│ │ │ ├── VocabularyCollectionImporter.java
│ │ │ ├── VocabularyCollectionImporterFactory.java
│ │ │ ├── VocabularyCollectionImporterImpl.java
│ │ │ ├── VocabularyCollectionMavenRule.java
│ │ │ ├── VocabularyCollectionValidator.java
│ │ │ ├── VocabularyCollectionValidatorImpl.java
│ │ │ ├── exception
│ │ │ └── VocabularyImportException.java
│ │ │ ├── model
│ │ │ ├── Location.java
│ │ │ ├── Vocabulary.java
│ │ │ ├── VocabularyDirectoryEntry.java
│ │ │ ├── VocabularyLoader.java
│ │ │ └── VocabularyMetadata.java
│ │ │ └── utils
│ │ │ └── NonCollidingPathVocabularyTrie.java
│ │ └── test
│ │ └── java
│ │ └── eu
│ │ └── europeana
│ │ └── metis
│ │ └── dereference
│ │ └── vocimport
│ │ └── utils
│ │ └── NonCollidingPathVocabularyTrieTest.java
├── metis-dereference-rest
│ ├── .gitignore
│ ├── Dockerfile
│ ├── docker-compose.yml
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── eu
│ │ │ │ └── europeana
│ │ │ │ └── metis
│ │ │ │ └── dereference
│ │ │ │ └── rest
│ │ │ │ ├── Application.java
│ │ │ │ ├── config
│ │ │ │ ├── ApplicationConfiguration.java
│ │ │ │ ├── ScheduledConfig.java
│ │ │ │ ├── SwaggerConfig.java
│ │ │ │ ├── WebMvcConfig.java
│ │ │ │ └── properties
│ │ │ │ │ └── MetisDereferenceConfigurationProperties.java
│ │ │ │ ├── controller
│ │ │ │ ├── DereferencingController.java
│ │ │ │ └── DereferencingManagementController.java
│ │ │ │ └── exceptions
│ │ │ │ ├── DereferenceException.java
│ │ │ │ └── RestResponseExceptionHandler.java
│ │ └── resources
│ │ │ ├── application.properties.example
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── java
│ │ └── eu
│ │ └── europeana
│ │ └── metis
│ │ └── dereference
│ │ └── rest
│ │ ├── DereferencingControllerTest.java
│ │ └── DereferencingManagementControllerTest.java
├── metis-dereference-service
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── dereference
│ │ │ └── service
│ │ │ ├── DereferenceService.java
│ │ │ ├── DereferencingManagementService.java
│ │ │ ├── MongoDereferenceService.java
│ │ │ ├── MongoDereferencingManagementService.java
│ │ │ ├── dao
│ │ │ ├── ProcessedEntityDao.java
│ │ │ └── VocabularyDao.java
│ │ │ └── utils
│ │ │ ├── GraphUtils.java
│ │ │ └── VocabularyCandidates.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── dereference
│ │ │ └── service
│ │ │ ├── MongoDereferenceServiceTest.java
│ │ │ ├── MongoDereferencingManagementServiceTest.java
│ │ │ ├── dao
│ │ │ ├── ProcessedEntityDaoTest.java
│ │ │ └── VocabularyDaoTest.java
│ │ │ └── utils
│ │ │ ├── GraphUtilsTest.java
│ │ │ └── VocabularyCandidatesTest.java
│ │ └── resources
│ │ ├── geonames.xsl
│ │ ├── log4j.xml
│ │ ├── place_entity.xsl
│ │ ├── test.xml
│ │ ├── vocabulary-fault.yml
│ │ ├── vocabulary.yml
│ │ └── vocabulary
│ │ ├── voctest.xsl
│ │ └── voctest.yml
└── pom.xml
├── metis-enrichment
├── README.MD
├── metis-enrichment-client
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── eu
│ │ │ │ └── europeana
│ │ │ │ └── enrichment
│ │ │ │ ├── rest
│ │ │ │ └── client
│ │ │ │ │ ├── ConnectionProvider.java
│ │ │ │ │ ├── EnrichmentWorker.java
│ │ │ │ │ ├── EnrichmentWorkerImpl.java
│ │ │ │ │ ├── dereference
│ │ │ │ │ ├── DereferenceClient.java
│ │ │ │ │ ├── DereferencedEntities.java
│ │ │ │ │ ├── Dereferencer.java
│ │ │ │ │ ├── DereferencerImpl.java
│ │ │ │ │ └── DereferencerProvider.java
│ │ │ │ │ ├── enrichment
│ │ │ │ │ ├── Enricher.java
│ │ │ │ │ ├── EnricherImpl.java
│ │ │ │ │ ├── EnricherProvider.java
│ │ │ │ │ └── MetisRecordParser.java
│ │ │ │ │ ├── exceptions
│ │ │ │ │ ├── DereferenceException.java
│ │ │ │ │ └── EnrichmentException.java
│ │ │ │ │ └── report
│ │ │ │ │ ├── ProcessedResult.java
│ │ │ │ │ ├── Report.java
│ │ │ │ │ └── Type.java
│ │ │ │ └── utils
│ │ │ │ ├── DereferenceUtils.java
│ │ │ │ ├── EnrichmentUtils.java
│ │ │ │ ├── EntityConverterUtils.java
│ │ │ │ ├── EntityMergeEngine.java
│ │ │ │ ├── ItemExtractorUtils.java
│ │ │ │ ├── RdfEntityUtils.java
│ │ │ │ └── YearParser.java
│ │ └── resources
│ │ │ ├── adList
│ │ │ └── bcList
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── enrichment
│ │ │ ├── rest
│ │ │ └── client
│ │ │ │ ├── EnrichmentWorkerImplTest.java
│ │ │ │ ├── dereference
│ │ │ │ ├── DereferenceClientTest.java
│ │ │ │ ├── DereferencerImplTest.java
│ │ │ │ └── DereferencerProviderTest.java
│ │ │ │ └── enrichment
│ │ │ │ ├── EnricherImplTest.java
│ │ │ │ ├── EnricherProviderTest.java
│ │ │ │ └── MetisRecordParserTest.java
│ │ │ └── utils
│ │ │ ├── DereferenceUtilsTest.java
│ │ │ ├── EnrichmentUtilsTest.java
│ │ │ ├── EntityMergeEngineTest.java
│ │ │ ├── ItemExtractorUtilsTest.java
│ │ │ ├── RdfEntityUtilsTest.java
│ │ │ └── YearParserTest.java
│ │ └── resources
│ │ ├── dereference
│ │ ├── dereference-failure.xml
│ │ ├── dereference-geoname.xml
│ │ ├── dereference-no-vocabulary.xml
│ │ ├── dereference-normal-ii.xml
│ │ ├── dereference-normal-redirect.xml
│ │ ├── dereference-normal.xml
│ │ ├── dereference-null.xml
│ │ ├── dereference-unknown-europeana-entity.xml
│ │ └── dereference-vocabulary.xml
│ │ ├── enrichment
│ │ ├── sample_dereference_not_found.rdf
│ │ ├── sample_dereference_redirect.rdf
│ │ ├── sample_enrichment_exception.rdf
│ │ ├── sample_enrichment_failure.rdf
│ │ ├── sample_enrichment_noentity.rdf
│ │ └── sample_enrichment_success.rdf
│ │ ├── entity-api
│ │ ├── entity-api-response-agent-nomatch.json
│ │ ├── entity-api-response-concept-ii.json
│ │ ├── entity-api-response-concept-iii.json
│ │ ├── entity-api-response-concept-iv.json
│ │ ├── entity-api-response-concept-nomatch.json
│ │ ├── entity-api-response-concept-notfound.json
│ │ ├── entity-api-response-concept.json
│ │ ├── entity-api-response-mgmt-concept-base-ii.json
│ │ ├── entity-api-response-mgmt-concept-base.json
│ │ ├── entity-api-response-mgmt-concept-ii-base.json
│ │ ├── entity-api-response-mgmt-organization-base.json
│ │ ├── entity-api-response-organization-ii.json
│ │ ├── entity-api-response-organization-iii.json
│ │ ├── entity-api-response-organization.json
│ │ ├── entity-api-response-resolve-uri-concept-ii.json
│ │ ├── entity-api-response-resolve-uri-concept.json
│ │ ├── entity-api-response-resolve-uri-nomatch.json
│ │ ├── entity-api-response-resolve-uri-place.json
│ │ └── entity-api-response-timespan.json
│ │ ├── log4j2.xml
│ │ ├── sample_1.rdf
│ │ ├── sample_2.rdf
│ │ └── sample_completeness.rdf
├── metis-enrichment-common
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── europeana
│ │ │ └── enrichment
│ │ │ ├── api
│ │ │ ├── exceptions
│ │ │ │ └── UnknownException.java
│ │ │ ├── external
│ │ │ │ ├── DereferenceResultStatus.java
│ │ │ │ ├── exceptions
│ │ │ │ │ └── EntityApiException.java
│ │ │ │ ├── impl
│ │ │ │ │ └── ClientEntityResolver.java
│ │ │ │ └── model
│ │ │ │ │ ├── Agent.java
│ │ │ │ │ ├── AgentBase.java
│ │ │ │ │ ├── Concept.java
│ │ │ │ │ ├── EnrichmentBase.java
│ │ │ │ │ ├── EnrichmentResultBaseWrapper.java
│ │ │ │ │ ├── EnrichmentResultList.java
│ │ │ │ │ ├── Label.java
│ │ │ │ │ ├── LabelResource.java
│ │ │ │ │ ├── Organization.java
│ │ │ │ │ ├── Part.java
│ │ │ │ │ ├── Place.java
│ │ │ │ │ ├── Resource.java
│ │ │ │ │ ├── TimeSpan.java
│ │ │ │ │ ├── VcardAddress.java
│ │ │ │ │ ├── VcardAddresses.java
│ │ │ │ │ ├── WebResource.java
│ │ │ │ │ └── package-info.java
│ │ │ └── internal
│ │ │ │ ├── AbstractReferenceTerm.java
│ │ │ │ ├── AbstractSearchTerm.java
│ │ │ │ ├── AggregationFieldType.java
│ │ │ │ ├── EntityResolver.java
│ │ │ │ ├── FieldType.java
│ │ │ │ ├── FieldValue.java
│ │ │ │ ├── ProxyFieldType.java
│ │ │ │ ├── RecordParser.java
│ │ │ │ ├── ReferenceTerm.java
│ │ │ │ ├── ReferenceTermContext.java
│ │ │ │ ├── ReferenceTermImpl.java
│ │ │ │ ├── SearchTerm.java
│ │ │ │ ├── SearchTermContext.java
│ │ │ │ ├── SearchTermImpl.java
│ │ │ │ └── TermContext.java
│ │ │ └── utils
│ │ │ ├── EnrichmentBaseConverter.java
│ │ │ ├── EntityType.java
│ │ │ ├── EntityValuesConverter.java
│ │ │ └── LanguageCodeConverter.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── enrichment
│ │ │ ├── api
│ │ │ ├── external
│ │ │ │ └── impl
│ │ │ │ │ └── ClientEntityResolverTest.java
│ │ │ └── internal
│ │ │ │ └── ReferenceTermContextTest.java
│ │ │ └── utils
│ │ │ ├── EnrichmentBaseConverterTest.java
│ │ │ └── LanguageCodeConverterTest.java
│ │ └── resources
│ │ ├── entity-agent.xml
│ │ ├── entity-concept.xml
│ │ ├── entity-organization.xml
│ │ └── entity-place.xml
└── pom.xml
├── metis-harvesting
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── eu
│ │ └── europeana
│ │ └── metis
│ │ └── harvesting
│ │ ├── FullRecord.java
│ │ ├── FullRecordHarvestingIterator.java
│ │ ├── HarvesterException.java
│ │ ├── HarvesterFactory.java
│ │ ├── HarvestingClientSettings.java
│ │ ├── HarvestingIterator.java
│ │ ├── ReportingIteration.java
│ │ ├── http
│ │ ├── AbstractHttpHarvestIterator.java
│ │ ├── HttpHarvester.java
│ │ ├── HttpHarvesterImpl.java
│ │ └── PathIterator.java
│ │ └── oaipmh
│ │ ├── CloseableHttpOaiClient.java
│ │ ├── CloseableOaiClient.java
│ │ ├── OaiHarvest.java
│ │ ├── OaiHarvester.java
│ │ ├── OaiHarvesterImpl.java
│ │ ├── OaiHarvestingIterator.java
│ │ ├── OaiRecord.java
│ │ ├── OaiRecordHeader.java
│ │ ├── OaiRecordParser.java
│ │ └── OaiRepository.java
│ └── test
│ ├── java
│ └── eu
│ │ └── europeana
│ │ └── metis
│ │ └── harvesting
│ │ ├── CloseableHttpOaiClientTest.java
│ │ ├── OaiHarvesterImplTest.java
│ │ ├── OaiRecordParserTest.java
│ │ ├── TestHelper.java
│ │ └── WiremockHelper.java
│ └── resources
│ ├── deletedOaiRecord.xml
│ ├── expectedOaiRecord.xml
│ ├── oaiListIdentifiers.xml
│ ├── oaiListIdentifiers2.xml
│ ├── oaiListIdentifiersIncorrectCompleteListSize.xml
│ ├── oaiListIdentifiersIncorrectMetadataPrefix.xml
│ ├── oaiListIdentifiersNoCompleteListSize.xml
│ ├── oaiListIdentifiersNoResumptionToken.xml
│ └── sampleOaiRecord.xml
├── metis-indexing
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── eu
│ │ └── europeana
│ │ └── indexing
│ │ ├── AbstractConnectionProvider.java
│ │ ├── ClientsConnectionProvider.java
│ │ ├── FullBeanPublisher.java
│ │ ├── IndexedRecordAccess.java
│ │ ├── Indexer.java
│ │ ├── IndexerFactory.java
│ │ ├── IndexerImpl.java
│ │ ├── IndexerPool.java
│ │ ├── IndexerPreprocessor.java
│ │ ├── IndexingProperties.java
│ │ ├── IndexingSettings.java
│ │ ├── RecordRedirectsUtil.java
│ │ ├── SettingsConnectionProvider.java
│ │ ├── SimpleIndexer.java
│ │ ├── SimpleIndexerFactory.java
│ │ ├── TombstoneUtil.java
│ │ ├── exception
│ │ ├── IndexerRelatedIndexingException.java
│ │ ├── IndexingException.java
│ │ ├── PublishToSolrIndexingException.java
│ │ ├── RecordRelatedIndexingException.java
│ │ ├── SetupRelatedIndexingException.java
│ │ └── TierCalculationException.java
│ │ ├── fullbean
│ │ ├── AgentFieldInput.java
│ │ ├── AggregationFieldInput.java
│ │ ├── ConceptFieldInput.java
│ │ ├── EuropeanaAggregationFieldInput.java
│ │ ├── FieldInputUtils.java
│ │ ├── LicenseFieldInput.java
│ │ ├── OrganizationFieldInput.java
│ │ ├── PlaceFieldInput.java
│ │ ├── ProvidedCHOFieldInput.java
│ │ ├── ProxyFieldInput.java
│ │ ├── QualityAnnotationFieldInput.java
│ │ ├── RdfToFullBeanConverter.java
│ │ ├── ServiceFieldInput.java
│ │ ├── StringToFullBeanConverter.java
│ │ ├── TimespanFieldInput.java
│ │ └── WebResourceFieldInput.java
│ │ ├── mongo
│ │ ├── AbstractEdmEntityUpdater.java
│ │ ├── AbstractIsolatedEdmEntityUpdater.java
│ │ ├── AbstractMongoObjectUpdater.java
│ │ ├── AgentUpdater.java
│ │ ├── AggregationUpdater.java
│ │ ├── ConceptUpdater.java
│ │ ├── EuropeanaAggregationUpdater.java
│ │ ├── FullBeanUpdater.java
│ │ ├── LicenseUpdater.java
│ │ ├── MongoConnectionProvider.java
│ │ ├── MongoIndexer.java
│ │ ├── MongoIndexingSettings.java
│ │ ├── OrganizationUpdater.java
│ │ ├── PlaceUpdater.java
│ │ ├── ProvidedChoUpdater.java
│ │ ├── ProxyUpdater.java
│ │ ├── ServiceUpdater.java
│ │ ├── TimespanUpdater.java
│ │ ├── WebResourceInformation.java
│ │ ├── WebResourceMetaInfoUpdater.java
│ │ ├── WebResourceUpdater.java
│ │ └── property
│ │ │ ├── MongoObjectManager.java
│ │ │ ├── MongoObjectUpdater.java
│ │ │ ├── MongoPropertyUpdater.java
│ │ │ ├── MongoPropertyUpdaterFactory.java
│ │ │ ├── MongoPropertyUpdaterImpl.java
│ │ │ └── RootAboutWrapper.java
│ │ ├── solr
│ │ ├── EdmLabel.java
│ │ ├── SolrConnectionProvider.java
│ │ ├── SolrDocumentPopulator.java
│ │ ├── SolrIndexer.java
│ │ ├── SolrIndexingSettings.java
│ │ ├── facet
│ │ │ ├── EncodedFacet.java
│ │ │ ├── EncodedFacetCollection.java
│ │ │ ├── FacetEncoder.java
│ │ │ └── value
│ │ │ │ ├── AudioDuration.java
│ │ │ │ ├── AudioQuality.java
│ │ │ │ ├── FacetValue.java
│ │ │ │ ├── ImageAspectRatio.java
│ │ │ │ ├── ImageColorEncoding.java
│ │ │ │ ├── ImageColorSpace.java
│ │ │ │ ├── ImageSize.java
│ │ │ │ ├── MediaTypeEncoding.java
│ │ │ │ ├── MimeTypeEncoding.java
│ │ │ │ ├── VideoDuration.java
│ │ │ │ └── VideoQuality.java
│ │ └── property
│ │ │ ├── AgentSolrCreator.java
│ │ │ ├── AggregationSolrCreator.java
│ │ │ ├── ConceptSolrCreator.java
│ │ │ ├── EuropeanaAggregationSolrCreator.java
│ │ │ ├── FullBeanSolrProperties.java
│ │ │ ├── LicenseSolrCreator.java
│ │ │ ├── PlaceSolrCreator.java
│ │ │ ├── PropertySolrCreator.java
│ │ │ ├── ProvidedChoSolrCreator.java
│ │ │ ├── ProxySolrCreator.java
│ │ │ ├── QualityAnnotationSolrCreator.java
│ │ │ ├── ServiceSolrCreator.java
│ │ │ ├── SolrPropertyUtils.java
│ │ │ ├── TimespanSolrCreator.java
│ │ │ └── WebResourceSolrCreator.java
│ │ ├── tiers
│ │ ├── ClassifierFactory.java
│ │ ├── RecordTierCalculationViewGenerator.java
│ │ ├── TierCalculationMode.java
│ │ ├── media
│ │ │ ├── AbstractMediaClassifier.java
│ │ │ ├── AudioClassifier.java
│ │ │ ├── EmbeddableMedia.java
│ │ │ ├── ImageClassifier.java
│ │ │ ├── MediaClassifier.java
│ │ │ ├── TextClassifier.java
│ │ │ ├── ThreeDClassifier.java
│ │ │ └── VideoClassifier.java
│ │ ├── metadata
│ │ │ ├── ClassifierMode.java
│ │ │ ├── ContextualClassGroup.java
│ │ │ ├── ContextualClassesClassifier.java
│ │ │ ├── EnablingElement.java
│ │ │ ├── EnablingElementsClassifier.java
│ │ │ ├── LanguageClassifier.java
│ │ │ ├── LanguageTagStatistics.java
│ │ │ ├── PropertyType.java
│ │ │ └── ResourceLinkFromProxy.java
│ │ ├── model
│ │ │ ├── MediaTier.java
│ │ │ ├── MetadataClassifier.java
│ │ │ ├── MetadataTier.java
│ │ │ ├── Tier.java
│ │ │ ├── TierClassifier.java
│ │ │ ├── TierClassifierBreakdown.java
│ │ │ ├── TierProvider.java
│ │ │ └── TierResults.java
│ │ └── view
│ │ │ ├── ContentTierBreakdown.java
│ │ │ ├── ContextualClassesBreakdown.java
│ │ │ ├── EnablingElementsBreakdown.java
│ │ │ ├── LanguageBreakdown.java
│ │ │ ├── MediaResourceTechnicalMetadata.java
│ │ │ ├── MetadataTierBreakdown.java
│ │ │ ├── ProcessingError.java
│ │ │ ├── RecordTierCalculationSummary.java
│ │ │ ├── RecordTierCalculationView.java
│ │ │ └── ResolutionTierMetadata.java
│ │ └── utils
│ │ ├── IndexingSettingsUtils.java
│ │ ├── LicenseType.java
│ │ ├── RdfTier.java
│ │ ├── RdfTierUtils.java
│ │ ├── RdfWrapper.java
│ │ ├── SetUtils.java
│ │ ├── TriConsumer.java
│ │ ├── WebResourceLinkType.java
│ │ └── WebResourceWrapper.java
│ └── test
│ ├── java
│ └── eu
│ │ └── europeana
│ │ └── indexing
│ │ ├── ClientsConnectionProviderTest.java
│ │ ├── IndexerImplTest.java
│ │ ├── IndexerPreprocessorTest.java
│ │ ├── SimpleIndexerFactoryTest.java
│ │ ├── TombstoneUtilTest.java
│ │ ├── base
│ │ ├── IndexingTestUtils.java
│ │ ├── MongoDBContainerIT.java
│ │ ├── SolrContainerIT.java
│ │ ├── SolrMetisContainer.java
│ │ ├── TestContainer.java
│ │ ├── TestContainerFactoryIT.java
│ │ └── TestContainerType.java
│ │ ├── fullbean
│ │ ├── AgentFieldInputTest.java
│ │ ├── ConceptFieldInputTest.java
│ │ ├── EuropeanaAggregationFieldInputTest.java
│ │ ├── FieldInputUtilsTest.java
│ │ ├── PlaceFieldInputTest.java
│ │ ├── ProxyFieldInputTest.java
│ │ ├── QualityAnnotationFieldInputTest.java
│ │ ├── RdfToFullBeanConverterTest.java
│ │ ├── TimespanFieldInputTest.java
│ │ └── WebResourceFieldInputTest.java
│ │ ├── mongo
│ │ ├── AgentUpdaterTest.java
│ │ ├── AggregationUpdaterTest.java
│ │ ├── ConceptUpdaterTest.java
│ │ ├── EuropeanaAggregationUpdaterTest.java
│ │ ├── FullBeanUpdaterTest.java
│ │ ├── LicenseUpdaterTest.java
│ │ ├── MongoEntityUpdaterTest.java
│ │ ├── MongoIndexerIT.java
│ │ ├── PlaceUpdaterTest.java
│ │ ├── ProvidedChoUpdaterTest.java
│ │ ├── ProxyUpdaterTest.java
│ │ ├── ServiceUpdaterTest.java
│ │ ├── TimespanUpdaterTest.java
│ │ ├── WebResourceMetaInfoUpdaterTest.java
│ │ ├── WebResourceUpdaterTest.java
│ │ └── property
│ │ │ └── MongoPropertyUpdaterImplTest.java
│ │ ├── solr
│ │ ├── SolrDocumentPopulatorTest.java
│ │ ├── SolrIndexerIT.java
│ │ ├── facet
│ │ │ ├── FacetEncoderTest.java
│ │ │ └── value
│ │ │ │ ├── TestImageColorEncoding.java
│ │ │ │ └── TestMimeTypeEncoding.java
│ │ └── property
│ │ │ ├── AgentSolrCreatorTest.java
│ │ │ ├── ConceptSolrCreatorTest.java
│ │ │ ├── EuropeanaAggregationSolrCreatorTest.java
│ │ │ ├── FullBeanSolrPropertiesTest.java
│ │ │ ├── LicenseSolrCreatorTest.java
│ │ │ ├── PlaceSolrCreatorTest.java
│ │ │ ├── PropertySolrCreatorTest.java
│ │ │ ├── ProvidedChoSolrCreatorTest.java
│ │ │ ├── ProxySolrCreatorTest.java
│ │ │ ├── QualityAnnotationSolrCreatorTest.java
│ │ │ ├── ServiceSolrCreatorTest.java
│ │ │ ├── SolrPropertyUtilsTest.java
│ │ │ ├── TimespanSolrCreatorTest.java
│ │ │ └── WebResourceSolrCreatorTest.java
│ │ ├── tiers
│ │ ├── RecordTierCalculationViewGeneratorTest.java
│ │ ├── media
│ │ │ ├── AbstractMediaClassifierTest.java
│ │ │ ├── AudioClassifierTest.java
│ │ │ ├── EmbeddableMediaTest.java
│ │ │ ├── ImageClassifierTest.java
│ │ │ ├── MediaClassifierTest.java
│ │ │ ├── TextClassifierTest.java
│ │ │ ├── ThreeDClassifierTest.java
│ │ │ └── VideoClassifierTest.java
│ │ ├── metadata
│ │ │ ├── ContextualClassesBreakdownClassifierTest.java
│ │ │ ├── EnablingElementTest.java
│ │ │ ├── EnablingElementsBreakdownClassifierTest.java
│ │ │ ├── LanguageClassifierTest.java
│ │ │ ├── LanguageTagStatisticsTest.java
│ │ │ ├── PropertyTypeTest.java
│ │ │ └── ResourceLinkFromProxyTest.java
│ │ ├── model
│ │ │ ├── MediaTierTest.java
│ │ │ ├── MetadataClassifierTest.java
│ │ │ └── MetadataTierTest.java
│ │ └── view
│ │ │ ├── ContentTierBreakdownTest.java
│ │ │ ├── ContextualClassesBreakdownTest.java
│ │ │ ├── EnablingElementsBreakdownTest.java
│ │ │ ├── LanguageBreakdownTest.java
│ │ │ ├── MediaResourceTechnicalMetadataBuilderTest.java
│ │ │ ├── MetadataTierBreakdownTest.java
│ │ │ ├── ProcessingErrorTest.java
│ │ │ ├── RecordTierCalculationSummaryTest.java
│ │ │ ├── RecordTierCalculationViewTest.java
│ │ │ └── ResolutionTierMetadataTest.java
│ │ └── utils
│ │ ├── LicenseTypeTest.java
│ │ ├── RdfTierUtilsTest.java
│ │ ├── RdfWrapperTest.java
│ │ ├── SetUtilsTest.java
│ │ └── TestUtils.java
│ └── resources
│ ├── europeana_record_rdf_conversion.xml
│ ├── europeana_record_rdf_tier_for_overwrite.xml
│ ├── europeana_record_rdf_with_tier_calculated.xml
│ ├── europeana_record_tier_calculation_rdf.xml
│ ├── europeana_record_to_sample_index_dup_rdf.xml
│ ├── europeana_record_to_sample_index_rdf.xml
│ ├── europeana_record_to_sample_index_string.xml
│ ├── europeana_record_with_geospatial_data.xml
│ ├── europeana_record_with_geospatial_data_wgs84.xml
│ ├── europeana_record_with_normalized_date_timespan.xml
│ ├── europeana_record_with_technical_metadata.xml
│ ├── log4j2.xml
│ └── solr
│ ├── elevate.xml
│ ├── enumsConfig.xml
│ ├── query_aliases.xml
│ ├── schema.xml
│ └── solrconfig.xml
├── metis-media-service
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── mediaprocessing
│ │ │ ├── AbstractMediaProcessorPool.java
│ │ │ ├── AbstractThreadSafeWrapper.java
│ │ │ ├── LinkChecker.java
│ │ │ ├── MediaExtractor.java
│ │ │ ├── MediaProcessorFactory.java
│ │ │ ├── PoolableProcessor.java
│ │ │ ├── RdfConverterFactory.java
│ │ │ ├── RdfDeserializer.java
│ │ │ ├── RdfDeserializerImpl.java
│ │ │ ├── RdfSerializer.java
│ │ │ ├── RdfSerializerImpl.java
│ │ │ ├── RdfXpathConstants.java
│ │ │ ├── exception
│ │ │ ├── LinkCheckingException.java
│ │ │ ├── MediaExtractionException.java
│ │ │ ├── MediaProcessorException.java
│ │ │ ├── RdfDeserializationException.java
│ │ │ └── RdfSerializationException.java
│ │ │ ├── extraction
│ │ │ ├── AudioVideoProcessor.java
│ │ │ ├── ColorSpaceMapping.java
│ │ │ ├── CommandExecutor.java
│ │ │ ├── ImageMetadata.java
│ │ │ ├── ImageProcessor.java
│ │ │ ├── Media3dProcessor.java
│ │ │ ├── MediaExtractorImpl.java
│ │ │ ├── MediaProcessor.java
│ │ │ ├── OEmbedProcessor.java
│ │ │ ├── PdfToImageConverter.java
│ │ │ ├── TextProcessor.java
│ │ │ ├── ThumbnailGenerator.java
│ │ │ └── oembed
│ │ │ │ ├── OEmbedModel.java
│ │ │ │ └── OEmbedValidation.java
│ │ │ ├── http
│ │ │ ├── LinkCheckClient.java
│ │ │ ├── MimeTypeDetectHttpClient.java
│ │ │ └── ResourceDownloadClient.java
│ │ │ ├── linkchecking
│ │ │ └── LinkCheckerImpl.java
│ │ │ ├── model
│ │ │ ├── AbstractInMemoryFile.java
│ │ │ ├── AbstractResourceMetadata.java
│ │ │ ├── AbstractTemporaryFile.java
│ │ │ ├── AudioResourceMetadata.java
│ │ │ ├── EnrichedRdf.java
│ │ │ ├── EnrichedRdfImpl.java
│ │ │ ├── GenericResourceMetadata.java
│ │ │ ├── IResourceMetadata.java
│ │ │ ├── ImageResourceMetadata.java
│ │ │ ├── Media3dResourceMetadata.java
│ │ │ ├── MediaExtractorInput.java
│ │ │ ├── RdfResourceEntry.java
│ │ │ ├── RdfWrapper.java
│ │ │ ├── Resource.java
│ │ │ ├── ResourceExtractionResult.java
│ │ │ ├── ResourceExtractionResultImpl.java
│ │ │ ├── ResourceImpl.java
│ │ │ ├── ResourceMetadata.java
│ │ │ ├── ResourceRelatedFile.java
│ │ │ ├── TextResourceMetadata.java
│ │ │ ├── Thumbnail.java
│ │ │ ├── ThumbnailImpl.java
│ │ │ ├── ThumbnailKind.java
│ │ │ ├── UrlType.java
│ │ │ ├── VideoResourceMetadata.java
│ │ │ └── WebResource.java
│ │ │ └── wrappers
│ │ │ └── TikaWrapper.java
│ └── resources
│ │ ├── colormap.png
│ │ └── org
│ │ └── apache
│ │ └── tika
│ │ └── mime
│ │ └── custom-mimetypes.xml
│ └── test
│ ├── java
│ └── eu
│ │ └── europeana
│ │ └── metis
│ │ └── mediaprocessing
│ │ ├── RdfDeserializerImplTest.java
│ │ ├── extraction
│ │ ├── AudioVideoProcessorTest.java
│ │ ├── CommandExecutorTest.java
│ │ ├── ImageProcessorTest.java
│ │ ├── MediaExtractorImplTest.java
│ │ ├── OEmbedProcessorTest.java
│ │ ├── PdfToImageConverterTest.java
│ │ ├── TextProcessorTest.java
│ │ ├── ThumbnailGeneratorTest.java
│ │ └── oembed
│ │ │ └── OEmbedModelTest.java
│ │ ├── http
│ │ └── MimeTypeDetectHttpClientTest.java
│ │ └── model
│ │ ├── EnrichedRdfImplTest.java
│ │ ├── RdfWrapperTest.java
│ │ ├── ResourceMetadataTest.java
│ │ └── WebResourceTest.java
│ └── resources
│ └── __files
│ ├── Cube_3d_printing_sample.stl
│ ├── Duck.glb
│ ├── adamHead.gltf
│ ├── audio_test.mp3
│ ├── block100.stl
│ ├── example.mpd
│ ├── not_oembed.json
│ ├── not_oembed.xml
│ ├── oembed.json
│ ├── oembed.xml
│ ├── rdf_with_oembed_sample.xml
│ ├── rdf_with_oembed_sample_II.xml
│ └── test_oembed.json
├── metis-pattern-analysis
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── eu
│ │ └── europeana
│ │ └── patternanalysis
│ │ ├── PatternAnalysisService.java
│ │ ├── ProblemPatternAnalyzer.java
│ │ ├── exception
│ │ └── PatternAnalysisException.java
│ │ └── view
│ │ ├── DatasetProblemPatternAnalysis.java
│ │ ├── ProblemOccurrence.java
│ │ ├── ProblemPattern.java
│ │ ├── ProblemPatternAnalysis.java
│ │ ├── ProblemPatternDescription.java
│ │ └── RecordAnalysis.java
│ └── test
│ ├── java
│ └── eu
│ │ └── europeana
│ │ └── patternanalysis
│ │ ├── ProblemPatternAnalyzerTest.java
│ │ └── view
│ │ ├── DatasetProblemPatternAnalysisTest.java
│ │ ├── ProblemOccurrenceTest.java
│ │ ├── ProblemPatternAnalysisTest.java
│ │ ├── ProblemPatternDescriptionTest.java
│ │ ├── ProblemPatternTest.java
│ │ └── RecordAnalysisTest.java
│ └── resources
│ ├── europeana_record_empty_proxy_choices.xml
│ ├── europeana_record_no_problem_patterns.xml
│ ├── europeana_record_with_P12.xml
│ ├── europeana_record_with_P2.xml
│ ├── europeana_record_with_P3.xml
│ ├── europeana_record_with_P5.xml
│ ├── europeana_record_with_P6.xml
│ ├── europeana_record_with_P7.xml
│ ├── europeana_record_with_P7_descriptions_empty.xml
│ └── europeana_record_with_P9.xml
├── metis-repository
├── metis-repository-rest
│ ├── .gitignore
│ ├── Dockerfile
│ ├── README.md
│ ├── docker-compose.yml
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── eu
│ │ │ │ └── europeana
│ │ │ │ └── metis
│ │ │ │ └── repository
│ │ │ │ └── rest
│ │ │ │ ├── Application.java
│ │ │ │ ├── config
│ │ │ │ ├── ApplicationConfiguration.java
│ │ │ │ ├── SwaggerConfig.java
│ │ │ │ └── WebMvcConfig.java
│ │ │ │ ├── controller
│ │ │ │ ├── HttpHarvestController.java
│ │ │ │ ├── OaiPmhController.java
│ │ │ │ └── RecordController.java
│ │ │ │ ├── dao
│ │ │ │ ├── Record.java
│ │ │ │ └── RecordDao.java
│ │ │ │ └── view
│ │ │ │ ├── InsertionResult.java
│ │ │ │ ├── InstantSerializer.java
│ │ │ │ └── RecordView.java
│ │ └── resources
│ │ │ ├── application.properties.example
│ │ │ └── log4j2.xml
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── repository
│ │ │ ├── dao
│ │ │ ├── RecordDaoTest.java
│ │ │ └── RecordTest.java
│ │ │ └── rest
│ │ │ ├── HttpHarvestControllerTest.java
│ │ │ ├── InsertionResultTest.java
│ │ │ ├── InstantSerializerTest.java
│ │ │ ├── OaiPmhControllerTest.java
│ │ │ ├── RecordControllerTest.java
│ │ │ └── RecordViewTest.java
│ │ └── resources
│ │ ├── record-test.xml
│ │ ├── repository-test-error.zip
│ │ └── repository-test.zip
└── pom.xml
├── metis-transformation
├── metis-transformation-service
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── transformation
│ │ │ └── service
│ │ │ ├── CacheItemWithExpirationTime.java
│ │ │ ├── CacheValueSupplier.java
│ │ │ ├── CacheWithExpirationTime.java
│ │ │ ├── EuropeanaGeneratedIdsMap.java
│ │ │ ├── EuropeanaIdCreator.java
│ │ │ ├── EuropeanaIdException.java
│ │ │ ├── TransformationException.java
│ │ │ └── XsltTransformer.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── metis
│ │ │ └── transformation
│ │ │ └── service
│ │ │ ├── CacheItemWithExpirationTimeTest.java
│ │ │ ├── CacheWithExpirationTimeTest.java
│ │ │ ├── EuropeanaIdCreatorTest.java
│ │ │ └── XsltTransformerTest.java
│ │ └── resources
│ │ ├── inject_node.xslt
│ │ ├── malformedFile.xml
│ │ ├── sample_xslt.xslt
│ │ ├── xmlForTesting.xml
│ │ └── xmlForTestingParamInjection.xml
└── pom.xml
├── metis-validation
├── README.md
├── metis-validation-common
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── validation
│ │ │ └── model
│ │ │ ├── Schema.java
│ │ │ ├── ValidationResult.java
│ │ │ └── ValidationResultList.java
│ │ └── resources
│ │ └── log4j2.xml
├── metis-validation-service
│ ├── .gitignore
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── eu
│ │ │ │ └── europeana
│ │ │ │ └── validation
│ │ │ │ └── service
│ │ │ │ ├── ClasspathLSInput.java
│ │ │ │ ├── ClasspathResourceResolver.java
│ │ │ │ ├── EDMParser.java
│ │ │ │ ├── PredefinedSchemas.java
│ │ │ │ ├── PredefinedSchemasGenerator.java
│ │ │ │ ├── SchemaProvider.java
│ │ │ │ ├── SchemaProviderException.java
│ │ │ │ ├── ValidationExecutionService.java
│ │ │ │ ├── ValidationServiceConfig.java
│ │ │ │ └── Validator.java
│ │ └── resources
│ │ │ └── xml.xsd
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── europeana
│ │ │ └── validation
│ │ │ └── service
│ │ │ ├── PredefinedSchemasGeneratorTest.java
│ │ │ ├── TestApplication.java
│ │ │ ├── TestSchemaProvider.java
│ │ │ └── TestValidationExecution.java
│ │ └── resources
│ │ ├── Item_35834473.xml
│ │ ├── Item_35834473_test.xml
│ │ ├── Item_35834473_wrong.xml
│ │ ├── Item_schematron_invalid.xml
│ │ ├── Item_schematron_invalid2.xml
│ │ ├── __files
│ │ └── test_schema.zip
│ │ ├── custom-validation.properties
│ │ ├── test_batch.zip
│ │ └── test_wrong.zip
└── pom.xml
└── pom.xml
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: RELEASE
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | release-version:
7 | description: 'The version of the intended release, should be just a number'
8 | required: true
9 | new-snapshot-version:
10 | description: 'The version of the intended new snapshot'
11 | required: true
12 | commit-hash-branch:
13 | description: 'The commit hash or branch to use as a base for the merge and release(default: develop)'
14 | required: false
15 | default: develop
16 |
17 | jobs:
18 | ci-release:
19 | uses: europeana/metis-actions/.github/workflows/release.yml@main
20 | with:
21 | release-version: ${{ github.event.inputs.release-version }}
22 | commit-hash-branch: ${{ github.event.inputs.commit-hash-branch }}
23 | new-snapshot-version: ${{ github.event.inputs.new-snapshot-version }}
24 | target-merge-branch: master
25 | secrets:
26 | METIS_PERSONAL_ACCESS_TOKEN: ${{ secrets.METIS_PERSONAL_ACCESS_TOKEN }}
27 |
--------------------------------------------------------------------------------
/.run/metis-authentication-rest_Dockerfile.run.xml:
--------------------------------------------------------------------------------
1 |
Used mostly after decoding the Authorization Header in an HTTP request.
6 | */ 7 | public class Credentials { 8 | 9 | private String email; 10 | private String password; 11 | 12 | /** 13 | * Constructor with required fields. 14 | * @param email the email of the user 15 | * @param password the passsword of the user 16 | */ 17 | public Credentials(String email, String password) { 18 | this.email = email; 19 | this.password = password; 20 | } 21 | 22 | public String getEmail() { 23 | return email; 24 | } 25 | 26 | public void setEmail(String email) { 27 | this.email = email; 28 | } 29 | 30 | public String getPassword() { 31 | return password; 32 | } 33 | 34 | public void setPassword(String password) { 35 | this.password = password; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-common/src/main/java/eu/europeana/metis/authentication/user/EmailParameter.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.authentication.user; 2 | 3 | /** 4 | * Contains the email parameter. 5 | *This class is used for passing parameters as json to a http request body. It contains the 6 | * email parameter
7 | */ 8 | public class EmailParameter { 9 | 10 | private String email; 11 | 12 | public EmailParameter() { 13 | } 14 | 15 | /** 16 | * Constructor with all required parameters 17 | * 18 | * @param email the email parameter 19 | */ 20 | public EmailParameter(String email) { 21 | this.email = email; 22 | } 23 | 24 | public String getEmail() { 25 | return email; 26 | } 27 | 28 | public void setEmail(String email) { 29 | this.email = email; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-common/src/main/java/eu/europeana/metis/authentication/user/OldNewPasswordParameters.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.authentication.user; 2 | 3 | /** 4 | * Contains the old and new password parameters. 5 | *This class is used for passing parameters as json to a http request body. It contains the old 6 | * password to be changed with the new provided password
7 | */ 8 | public class OldNewPasswordParameters { 9 | 10 | private String oldPassword; 11 | private String newPassword; 12 | 13 | public OldNewPasswordParameters() { 14 | } 15 | 16 | /** 17 | * Constructor with all required parameters 18 | * 19 | * @param oldPassword the old password 20 | * @param newPassword the new password 21 | */ 22 | public OldNewPasswordParameters(String oldPassword, String newPassword) { 23 | this.oldPassword = oldPassword; 24 | this.newPassword = newPassword; 25 | } 26 | 27 | public String getOldPassword() { 28 | return oldPassword; 29 | } 30 | 31 | public void setOldPassword(String oldPassword) { 32 | this.oldPassword = oldPassword; 33 | } 34 | 35 | public String getNewPassword() { 36 | return newPassword; 37 | } 38 | 39 | public void setNewPassword(String newPassword) { 40 | this.newPassword = newPassword; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-common/src/main/java/eu/europeana/metis/authentication/user/UserIdParameter.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.authentication.user; 2 | 3 | /** 4 | * Contains the userId parameter. 5 | *This class is used for passing parameters as json to a http request body. It contains the 6 | * userId parameter
7 | * 8 | * @author Simon Tzanakis (Simon.Tzanakis@europeana.eu) 9 | * @since 2019-02-07 10 | */ 11 | public class UserIdParameter { 12 | 13 | private String userId; 14 | 15 | public UserIdParameter() { 16 | } 17 | 18 | /** 19 | * Constructor with all required parameters 20 | * 21 | * @param userId the user identifier 22 | */ 23 | public UserIdParameter(String userId) { 24 | this.userId = userId; 25 | } 26 | 27 | public String getUserId() { 28 | return userId; 29 | } 30 | 31 | public void setUserId(String userId) { 32 | this.userId = userId; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-common/src/test/java/eu/europeana/metis/authentication/user/CredentialsTest.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.authentication.user; 2 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; 4 | 5 | import org.junit.jupiter.api.Test; 6 | 7 | class CredentialsTest { 8 | 9 | @Test 10 | void testCredentialsConstructor() { 11 | final String exampleEmail1 = "example1@email.com"; 12 | final String examplePassword1 = "password1"; 13 | final String exampleEmail2 = "example2@email.com"; 14 | final String examplePassword2 = "password2"; 15 | 16 | final Credentials credentials = new Credentials(exampleEmail1, examplePassword1); 17 | assertEquals(exampleEmail1, credentials.getEmail()); 18 | assertEquals(examplePassword1, credentials.getPassword()); 19 | 20 | credentials.setEmail(exampleEmail2); 21 | credentials.setPassword(examplePassword2); 22 | assertEquals(exampleEmail2, credentials.getEmail()); 23 | assertEquals(examplePassword2, credentials.getPassword()); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-common/src/test/java/eu/europeana/metis/authentication/user/EmailParameterTest.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.authentication.user; 2 | 3 | import static org.junit.jupiter.api.Assertions.*; 4 | 5 | import org.junit.jupiter.api.Test; 6 | 7 | class EmailParameterTest { 8 | 9 | @Test 10 | void testEmptyEmailParameterConstructor() { 11 | final EmailParameter emailParameter = new EmailParameter(); 12 | assertNull(emailParameter.getEmail()); 13 | } 14 | 15 | @Test 16 | void testEmailParameterConstructor() { 17 | final String exampleEmail1 = "example1@email.com"; 18 | final String exampleEmail2 = "example2@email.com"; 19 | final EmailParameter emailParameter = new EmailParameter(exampleEmail1); 20 | assertEquals(exampleEmail1, emailParameter.getEmail()); 21 | emailParameter.setEmail(exampleEmail2); 22 | assertEquals(exampleEmail2, emailParameter.getEmail()); 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-common/src/test/java/eu/europeana/metis/authentication/user/TestAccountRole.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.authentication.user; 2 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; 4 | import static org.junit.jupiter.api.Assertions.assertThrows; 5 | 6 | import eu.europeana.metis.exception.BadContentException; 7 | import org.junit.jupiter.api.Test; 8 | 9 | class TestAccountRole { 10 | 11 | @Test 12 | void accountRoleCreationFromStringValue() throws BadContentException { 13 | AccountRole metisAdmin = AccountRole.getAccountRoleFromEnumName("METIS_ADMIN"); 14 | assertEquals(AccountRole.METIS_ADMIN, metisAdmin); 15 | } 16 | 17 | @Test 18 | void accountRoleCreationFromStringValueFails() { 19 | assertThrows(BadContentException.class, 20 | () -> AccountRole.getAccountRoleFromEnumName("METIS_AD")); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-rest-client/src/test/resources/__files/MetisUser.json: -------------------------------------------------------------------------------- 1 | { 2 | "userId": "1482250000003948017", 3 | "email": "simon.metis@europeana.eu", 4 | "firstName": "Simon", 5 | "lastName": "Metis", 6 | "organizationId": "1482250000001617026", 7 | "organizationName": "Europeana Foundation", 8 | "accountRole": "METIS_ADMIN", 9 | "country": "Netherlands", 10 | "networkMember": false, 11 | "metisUserFlag": true, 12 | "createdDate": 1509694575000, 13 | "updatedDate": 1509695365000, 14 | "metisUserAccessToken": { 15 | "accessToken": "vq6V1YJIOfLC0pSTeb1plANiopyVlwrx" 16 | } 17 | } -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-rest/.gitignore: -------------------------------------------------------------------------------- 1 | /src/main/resources/application.properties 2 | /src/main/resources/authentication.properties 3 | /src/main/resources/hibernate.cfg.xml 4 | /src/main/resources/zcrm_configuration.properties 5 | /src/main/resources/oauth_configuration.properties 6 | /src/main/resources/oauthtokens.properties 7 | -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-rest/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM eclipse-temurin:21-jre 2 | COPY target/*.jar app.jar 3 | EXPOSE 8080 4 | ENTRYPOINT ["java", "-jar", "/app.jar"] -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-rest/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | postgres: 5 | image: postgres:14-alpine 6 | container_name: metis-authentication-postgres 7 | environment: 8 | - POSTGRES_DB=metis-authentication_local 9 | - POSTGRES_USER=test 10 | - POSTGRES_PASSWORD=test 11 | ports: 12 | - '5432:5432' 13 | metis-authentication-local: 14 | image: europeana/metis-authentication:develop 15 | container_name: metis-authentication-local 16 | build: 17 | context: ./ 18 | dockerfile: Dockerfile 19 | ports: 20 | - '8080:8080' 21 | environment: 22 | HIBERNATE_CONNECTION_URL: jdbc:postgresql://metis-authentication-postgres:5432/metis-authentication_local 23 | volumes: 24 | - /data/metis-configuration/metis-framework/metis-authentication/metis-authentication-rest/k8s/overlays/local/resources/custom-truststore.jks:/data/certificates/custom-truststore.jks 25 | - /data/metis-configuration/metis-framework/metis-authentication/metis-authentication-rest/k8s/overlays/local/resources/application.properties:/application.properties 26 | - /data/metis-configuration/metis-framework/metis-authentication/metis-authentication-rest/k8s/overlays/local/resources/log4j2.xml:/data/logging/log4j2.xml 27 | depends_on: 28 | - postgres -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-rest/src/main/java/eu/europeana/metis/authentication/rest/Application.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.authentication.rest; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * The Spring boot application entry point. 8 | */ 9 | @SpringBootApplication 10 | public class Application { 11 | 12 | /** 13 | * The main spring boot method. 14 | * 15 | * @param args application arguments 16 | */ 17 | public static void main(String[] args) { 18 | SpringApplication.run(Application.class, args); 19 | } 20 | } 21 | 22 | 23 | -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-rest/src/main/java/eu/europeana/metis/authentication/rest/config/properties/MetisAuthenticationConfigurationProperties.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.authentication.rest.config.properties; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | 5 | /** 6 | * Class using {@link ConfigurationProperties} loading. 7 | */ 8 | @ConfigurationProperties(prefix = "metis-authentication") 9 | public class MetisAuthenticationConfigurationProperties { 10 | 11 | private int accessTokenExpireTimeInMinutes; 12 | private String[] allowedCorsHosts; 13 | 14 | public int getAccessTokenExpireTimeInMinutes() { 15 | return accessTokenExpireTimeInMinutes; 16 | } 17 | 18 | public void setAccessTokenExpireTimeInMinutes(int accessTokenExpireTimeInMinutes) { 19 | this.accessTokenExpireTimeInMinutes = accessTokenExpireTimeInMinutes; 20 | } 21 | 22 | public String[] getAllowedCorsHosts() { 23 | return allowedCorsHosts == null ? null : allowedCorsHosts.clone(); 24 | } 25 | 26 | public void setAllowedCorsHosts(String[] allowedCorsHosts) { 27 | this.allowedCorsHosts = allowedCorsHosts == null ? null : allowedCorsHosts.clone(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-rest/src/main/resources/application.properties.example: -------------------------------------------------------------------------------- 1 | #Spring 2 | logging.config=/data/logging/log4j2.xml 3 | #logging.config=log4j2.xml 4 | server.error.whitelabel.enabled=false 5 | 6 | #Truststore 7 | truststore.path=/data/certificates/custom-truststore.jks 8 | truststore.password= 9 | 10 | #Hibernate configuration 11 | hibernate.dialect=org.hibernate.dialect.PostgreSQL82Dialect 12 | hibernate.connection.driver_class=org.postgresql.Driver 13 | hibernate.connection.url=jdbc:postgresql:// 14 | hibernate.connection.username= 15 | hibernate.connection.password= 16 | hibernate.c3p0.min_size=5 17 | hibernate.c3p0.max_size=20 18 | hibernate.c3p0.timeout=1800 19 | hibernate.c3p0.max_statements=50 20 | 21 | #Miscellaneus 22 | metis-authentication.accessTokenExpireTimeInMinutes=10 23 | metis-authentication.allowedCorsHosts=* 24 | 25 | #Actuator 26 | management.endpoint.health.probes.enabled=true 27 | management.health.livenessState.enabled=true 28 | management.health.readinessState.enabled=true 29 | 30 | # Elastic APM 31 | elastic.apm.enabled=true 32 | elastic.apm.recording=true 33 | elastic.apm.instrument=true 34 | elastic.apm.service_name=metis-authentication 35 | elastic.apm.server_url= 36 | elastic.apm.environment=local 37 | elastic.apm.application_packages=eu.europeana 38 | elastic.apm.log_level=ERROR 39 | elastic.apm.capture_body=all 40 | elastic.apm.capture_headers=true 41 | elastic.apm.metrics_interval=5s 42 | -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-rest/src/main/resources/create_tables.sql: -------------------------------------------------------------------------------- 1 | /* 2 | e.g. account_role values 'METIS_ADMIN', 'EUROPEANA_DATA_OFFICER', 'PROVIDER_VIEWER'. 3 | The values are checked in the application. 4 | Creating the first admin requires a user to register through the application and then manually update the user role to METIS_ADMIN. 5 | */ 6 | CREATE TABLE IF NOT EXISTS metis_users ( 7 | user_id VARCHAR(100) DEFAULT NULL, 8 | email VARCHAR(40) PRIMARY KEY, 9 | last_name VARCHAR(40), 10 | first_name VARCHAR(40), 11 | password VARCHAR(255) DEFAULT NULL, 12 | organization_id VARCHAR(100), 13 | organization_name VARCHAR(100), 14 | account_role VARCHAR(40), 15 | country VARCHAR(40), 16 | network_member BOOLEAN, 17 | metis_user BOOLEAN, 18 | created_date TIMESTAMPTZ, 19 | updated_date TIMESTAMPTZ 20 | ); 21 | 22 | CREATE TABLE IF NOT EXISTS metis_user_access_tokens ( 23 | email VARCHAR(40) PRIMARY KEY REFERENCES metis_users (email), 24 | access_token VARCHAR(255) UNIQUE NOT NULL, 25 | timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW() 26 | ); 27 | -------------------------------------------------------------------------------- /metis-authentication/metis-authentication-rest/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 |14 | * This method dereferences a resource. If the resource's vocabulary specifies a positive 15 | * iteration count, this method also repeatedly retrieves the 'broader' resources and returns 16 | * those as well. 17 | *
18 | *19 | * A resource may have references to its 'broader' resources. these resources form a directed 20 | * graph and the iteration count is the distance from the requested resource. This method performs 21 | * a breadth-first search through this graph to retrieve all resources within a certain distance 22 | * from the requested resource. The distance depends on the vocabulary of the main resource. 23 | *
24 | * 25 | * @param resourceId The resource to dereference. 26 | * @return An object containing the dereferenced resources and the result status of the process. 27 | */ 28 | DereferenceResult dereference(String resourceId); 29 | } 30 | -------------------------------------------------------------------------------- /metis-dereference/metis-dereference-service/src/test/resources/log4j.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |Used by external code such as scripts or ECloud.
6 | */ 7 | public class RdfConverterFactory { 8 | 9 | /** 10 | * Create an RDF file serializer. 11 | * 12 | * @return An RDF file serializer. 13 | */ 14 | public RdfSerializer createRdfSerializer() { 15 | return new RdfSerializerImpl(); 16 | } 17 | 18 | /** 19 | * Create an RDF file deserializer. 20 | * 21 | * @return An RDF file deserializer. 22 | */ 23 | public RdfDeserializer createRdfDeserializer() { 24 | return new RdfDeserializerImpl(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /metis-media-service/src/main/java/eu/europeana/metis/mediaprocessing/RdfSerializer.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.mediaprocessing; 2 | 3 | import eu.europeana.metis.mediaprocessing.exception.RdfSerializationException; 4 | import eu.europeana.metis.mediaprocessing.model.EnrichedRdf; 5 | 6 | /** 7 | * Implementations of this interface provide a variety of serialization options for RDF files. This 8 | * object can be reused multiple times, as the construction of it incurs overhead. Please note that 9 | * this object is thread-safe, but currently it achieves this by synchronization, meaning that it is 10 | * not designed for many threads to access the object simultaneously. 11 | */ 12 | public interface RdfSerializer { 13 | 14 | /** 15 | * Serialize an RDF into a file. This method should call the {@link EnrichedRdf#finalizeRdf()} 16 | * method before serialization. 17 | * 18 | * @param rdf The RDF to serialize. 19 | * @return The serialized RDF file. 20 | * @throws RdfSerializationException In case there was a problem serializing this RDF. 21 | */ 22 | byte[] serialize(EnrichedRdf rdf) throws RdfSerializationException; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /metis-media-service/src/main/java/eu/europeana/metis/mediaprocessing/RdfSerializerImpl.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.mediaprocessing; 2 | 3 | import eu.europeana.metis.mediaprocessing.exception.RdfSerializationException; 4 | import eu.europeana.metis.mediaprocessing.model.EnrichedRdf; 5 | import eu.europeana.metis.schema.convert.RdfConversionUtils; 6 | import eu.europeana.metis.schema.convert.SerializationException; 7 | 8 | /** 9 | * This object implements RDF serialization functionality. 10 | */ 11 | class RdfSerializerImpl implements RdfSerializer { 12 | 13 | private final RdfConversionUtils rdfConversionUtils = new RdfConversionUtils(); 14 | 15 | @Override 16 | public byte[] serialize(EnrichedRdf rdf) throws RdfSerializationException { 17 | try { 18 | return rdfConversionUtils.convertRdfToBytes(rdf.finalizeRdf()); 19 | } catch (SerializationException e) { 20 | throw new RdfSerializationException("Problem with serializing RDF.", e); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /metis-media-service/src/main/java/eu/europeana/metis/mediaprocessing/RdfXpathConstants.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.mediaprocessing; 2 | 3 | /** 4 | * Rdf xpath string constants. 5 | */ 6 | public final class RdfXpathConstants { 7 | 8 | public static final String RDF_NAMESPACE = "/rdf:RDF"; 9 | public static final String ORE_AGGREGATION = RDF_NAMESPACE + "/ore:Aggregation"; 10 | public static final String EDM_OBJECT = ORE_AGGREGATION + "/edm:object/@rdf:resource"; 11 | public static final String EDM_IS_SHOWN_BY = ORE_AGGREGATION + "/edm:isShownBy/@rdf:resource"; 12 | public static final String EDM_HAS_VIEW = ORE_AGGREGATION + "/edm:hasView/@rdf:resource"; 13 | public static final String EDM_IS_SHOWN_AT = ORE_AGGREGATION + "/edm:isShownAt/@rdf:resource"; 14 | public static final String SVCS_SERVICE = RDF_NAMESPACE + "/svcs:Service"; 15 | public static final String EDM_WEBRESOURCE = RDF_NAMESPACE + "/edm:WebResource"; 16 | 17 | private RdfXpathConstants() {} 18 | 19 | } 20 | -------------------------------------------------------------------------------- /metis-media-service/src/main/java/eu/europeana/metis/mediaprocessing/exception/LinkCheckingException.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.mediaprocessing.exception; 2 | 3 | /** 4 | * This exception represents a problem that occurred during link checking. 5 | */ 6 | public class LinkCheckingException extends Exception { 7 | 8 | /** This class implements {@link java.io.Serializable}. **/ 9 | private static final long serialVersionUID = 3926174673354061384L; 10 | 11 | /** 12 | * Constructor. 13 | * 14 | * @param cause The cause. 15 | */ 16 | public LinkCheckingException(Throwable cause) { 17 | super(cause); 18 | } 19 | 20 | /** 21 | * Constructor. 22 | * 23 | * @param message The exception message. 24 | * @param cause The cause. 25 | */ 26 | public LinkCheckingException(String message, Throwable cause) { 27 | super(message, cause); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /metis-media-service/src/main/java/eu/europeana/metis/mediaprocessing/exception/MediaExtractionException.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.mediaprocessing.exception; 2 | 3 | /** 4 | * This exception represents a problem that occurred during media extraction. 5 | */ 6 | public class MediaExtractionException extends Exception { 7 | 8 | /** This class implements {@link java.io.Serializable}. **/ 9 | private static final long serialVersionUID = -5753149269891298793L; 10 | 11 | /** 12 | * Constructor. 13 | * 14 | * @param message The exception message. 15 | */ 16 | public MediaExtractionException(String message) { 17 | super(message); 18 | } 19 | 20 | /** 21 | * Constructor. 22 | * 23 | * @param message The exception message. 24 | * @param cause The cause. 25 | */ 26 | public MediaExtractionException(String message, Throwable cause) { 27 | super(message, cause); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /metis-media-service/src/main/java/eu/europeana/metis/mediaprocessing/exception/MediaProcessorException.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.mediaprocessing.exception; 2 | 3 | /** 4 | * This exception represents a problem that occurred during setting up one of the worker objects in 5 | * the media processing library. 6 | */ 7 | public class MediaProcessorException extends Exception { 8 | 9 | /** This class implements {@link java.io.Serializable}. **/ 10 | private static final long serialVersionUID = 8090383001647258984L; 11 | 12 | /** 13 | * Constructor. 14 | * 15 | * @param message The exception message. 16 | */ 17 | public MediaProcessorException(String message) { 18 | super(message); 19 | } 20 | 21 | /** 22 | * Constructor. 23 | * 24 | * @param message The exception message. 25 | * @param cause The cause. 26 | */ 27 | public MediaProcessorException(String message, Exception cause) { 28 | super(message, cause); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /metis-media-service/src/main/java/eu/europeana/metis/mediaprocessing/exception/RdfDeserializationException.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.mediaprocessing.exception; 2 | 3 | /** 4 | * This exception represents a problem that occurred during deserialization of an RDF object. 5 | */ 6 | public class RdfDeserializationException extends Exception { 7 | 8 | /** This class implements {@link java.io.Serializable}. **/ 9 | private static final long serialVersionUID = -789223924131348847L; 10 | 11 | /** 12 | * Constructor. 13 | * 14 | * @param message The exception message. 15 | * @param cause The cause. 16 | */ 17 | public RdfDeserializationException(String message, Throwable cause) { 18 | super(message, cause); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /metis-media-service/src/main/java/eu/europeana/metis/mediaprocessing/exception/RdfSerializationException.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.mediaprocessing.exception; 2 | 3 | /** 4 | * This exception represents a problem that occurred during serialization of an RDF object. 5 | */ 6 | public class RdfSerializationException extends Exception { 7 | 8 | /** This class implements {@link java.io.Serializable}. **/ 9 | private static final long serialVersionUID = 1031549407979593963L; 10 | 11 | /** 12 | * Constructor. 13 | * 14 | * @param message The exception message. 15 | * @param cause The cause. 16 | */ 17 | public RdfSerializationException(String message, Throwable cause) { 18 | super(message, cause); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /metis-media-service/src/main/java/eu/europeana/metis/mediaprocessing/extraction/ImageMetadata.java: -------------------------------------------------------------------------------- 1 | package eu.europeana.metis.mediaprocessing.extraction; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Collections; 5 | import java.util.List; 6 | 7 | /** 8 | * Objects of this type represent image information obtained while creating the thumbnails. 9 | * 10 | * @author jochen 11 | */ 12 | public class ImageMetadata { 13 | 14 | private final int width; 15 | private final int height; 16 | private final String colorSpace; 17 | private final ListTitle | 10 |Artist | 11 |
---|---|