Skip to content

Commit 15ceb94

Browse files
authored
chore: adds missing namespace in catalog query scope (#248)
1 parent 9182ab8 commit 15ceb94

File tree

3 files changed

+101
-26
lines changed

3 files changed

+101
-26
lines changed

DEPENDENCIES

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ maven/mavencentral/com.google.guava/failureaccess/1.0.2, Apache-2.0, approved, C
3939
maven/mavencentral/com.google.guava/guava/33.3.0-jre, Apache-2.0 AND CC0-1.0 AND (Apache-2.0 AND CC-PDDC) AND (Apache-2.0 AND CC0-1.0), approved, #15952
4040
maven/mavencentral/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava, Apache-2.0, approved, CQ22657
4141
maven/mavencentral/com.google.protobuf/protobuf-java/3.25.3, BSD-3-Clause, approved, clearlydefined
42-
maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.40, Apache-2.0, approved, #15156
42+
maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.41.1, Apache-2.0, approved, clearlydefined
4343
maven/mavencentral/com.puppycrawl.tools/checkstyle/10.18.1, LGPL-2.1-or-later AND (Apache-2.0 AND LGPL-2.1-or-later) AND Apache-2.0, approved, #16060
4444
maven/mavencentral/com.squareup.okhttp3/okhttp-dnsoverhttps/4.12.0, Apache-2.0, approved, #11159
4545
maven/mavencentral/com.squareup.okhttp3/okhttp/4.12.0, Apache-2.0, approved, #15227
@@ -258,26 +258,26 @@ maven/mavencentral/org.eclipse.edc/verifiable-credentials/0.10.0-SNAPSHOT, Apach
258258
maven/mavencentral/org.eclipse.edc/web-spi/0.10.0-SNAPSHOT, Apache-2.0, approved, technology.edc
259259
maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-servlet-api/5.0.2, EPL-2.0 OR Apache-2.0, approved, rt.jetty
260260
maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-websocket-api/2.0.0, EPL-2.0 OR Apache-2.0, approved, rt.jetty
261-
maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
262-
maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-common/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
263-
maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-server/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
264-
maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-client/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
265-
maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-common/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
266-
maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-server/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
267-
maven/mavencentral/org.eclipse.jetty.websocket/websocket-servlet/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
268-
maven/mavencentral/org.eclipse.jetty/jetty-alpn-client/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
269-
maven/mavencentral/org.eclipse.jetty/jetty-annotations/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
270-
maven/mavencentral/org.eclipse.jetty/jetty-client/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
271-
maven/mavencentral/org.eclipse.jetty/jetty-http/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
272-
maven/mavencentral/org.eclipse.jetty/jetty-io/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
273-
maven/mavencentral/org.eclipse.jetty/jetty-jndi/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
274-
maven/mavencentral/org.eclipse.jetty/jetty-plus/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
275-
maven/mavencentral/org.eclipse.jetty/jetty-security/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
276-
maven/mavencentral/org.eclipse.jetty/jetty-server/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
277-
maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
278-
maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
279-
maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
280-
maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.23, EPL-2.0 OR Apache-2.0, approved, rt.jetty
261+
maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
262+
maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-common/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
263+
maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-server/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
264+
maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-client/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
265+
maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-common/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
266+
maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-server/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
267+
maven/mavencentral/org.eclipse.jetty.websocket/websocket-servlet/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
268+
maven/mavencentral/org.eclipse.jetty/jetty-alpn-client/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
269+
maven/mavencentral/org.eclipse.jetty/jetty-annotations/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
270+
maven/mavencentral/org.eclipse.jetty/jetty-client/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
271+
maven/mavencentral/org.eclipse.jetty/jetty-http/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
272+
maven/mavencentral/org.eclipse.jetty/jetty-io/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
273+
maven/mavencentral/org.eclipse.jetty/jetty-jndi/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
274+
maven/mavencentral/org.eclipse.jetty/jetty-plus/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
275+
maven/mavencentral/org.eclipse.jetty/jetty-security/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
276+
maven/mavencentral/org.eclipse.jetty/jetty-server/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
277+
maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
278+
maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
279+
maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
280+
maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
281281
maven/mavencentral/org.eclipse.parsson/parsson/1.1.7, EPL-2.0, approved, ee4j.parsson
282282
maven/mavencentral/org.glassfish.hk2.external/aopalliance-repackaged/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish
283283
maven/mavencentral/org.glassfish.hk2/hk2-api/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish

extensions/api/federated-catalog-api/src/main/java/org/eclipse/edc/catalog/api/query/FederatedCatalogApiExtension.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.util.stream.Stream;
3737

3838
import static org.eclipse.edc.catalog.spi.FccApiContexts.CATALOG_QUERY;
39+
import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.VOCAB;
3940
import static org.eclipse.edc.jsonld.spi.Namespaces.DCAT_PREFIX;
4041
import static org.eclipse.edc.jsonld.spi.Namespaces.DCAT_SCHEMA;
4142
import static org.eclipse.edc.jsonld.spi.Namespaces.DCT_PREFIX;
@@ -44,13 +45,15 @@
4445
import static org.eclipse.edc.jsonld.spi.Namespaces.DSPACE_SCHEMA;
4546
import static org.eclipse.edc.policy.model.OdrlNamespace.ODRL_PREFIX;
4647
import static org.eclipse.edc.policy.model.OdrlNamespace.ODRL_SCHEMA;
48+
import static org.eclipse.edc.spi.constants.CoreConstants.EDC_NAMESPACE;
49+
import static org.eclipse.edc.spi.constants.CoreConstants.EDC_PREFIX;
4750
import static org.eclipse.edc.spi.constants.CoreConstants.JSON_LD;
4851

4952
@Extension(value = FederatedCatalogApiExtension.NAME)
5053
public class FederatedCatalogApiExtension implements ServiceExtension {
5154

5255
public static final String NAME = "Cache Query API Extension";
53-
private static final String CATALOG_QUERY_SCOPE = "CATALOG_QUERY_API";
56+
public static final String CATALOG_QUERY_SCOPE = "CATALOG_QUERY_API";
5457

5558
private static final String API_VERSION_JSON_FILE = "catalog-version.json";
5659

@@ -80,11 +83,14 @@ public String name() {
8083

8184
@Override
8285
public void initialize(ServiceExtensionContext context) {
86+
87+
jsonLd.registerNamespace(VOCAB, EDC_NAMESPACE, CATALOG_QUERY_SCOPE);
88+
jsonLd.registerNamespace(EDC_PREFIX, EDC_NAMESPACE, CATALOG_QUERY_SCOPE);
8389
jsonLd.registerNamespace(ODRL_PREFIX, ODRL_SCHEMA, CATALOG_QUERY_SCOPE);
8490
jsonLd.registerNamespace(DCAT_PREFIX, DCAT_SCHEMA, CATALOG_QUERY_SCOPE);
8591
jsonLd.registerNamespace(DCT_PREFIX, DCT_SCHEMA, CATALOG_QUERY_SCOPE);
8692
jsonLd.registerNamespace(DSPACE_PREFIX, DSPACE_SCHEMA, CATALOG_QUERY_SCOPE);
87-
93+
8894
var jsonLdMapper = typeManager.getMapper(JSON_LD);
8995
var catalogController = new FederatedCatalogApiController(queryService, transformerRegistry);
9096
webService.registerResource(CATALOG_QUERY, catalogController);
@@ -106,9 +112,9 @@ private void registerVersionInfo(ClassLoader resourceClassLoader) {
106112
throw new EdcException("Version file not found or not readable.");
107113
}
108114
Stream.of(typeManager.getMapper()
109-
.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
110-
.readValue(versionContent, VersionRecord[].class))
111-
.forEach(vr -> apiVersionService.addRecord(CATALOG_QUERY, vr));
115+
.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
116+
.readValue(versionContent, VersionRecord[].class))
117+
.forEach(vr -> apiVersionService.addRecord(CATALOG_QUERY, vr));
112118
} catch (IOException e) {
113119
throw new EdcException(e);
114120
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/*
2+
* Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
3+
*
4+
* This program and the accompanying materials are made available under the
5+
* terms of the Apache License, Version 2.0 which is available at
6+
* https://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* SPDX-License-Identifier: Apache-2.0
9+
*
10+
* Contributors:
11+
* Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation
12+
*
13+
*/
14+
15+
package org.eclipse.edc.catalog.api.query;
16+
17+
import com.fasterxml.jackson.databind.ObjectMapper;
18+
import org.eclipse.edc.jsonld.spi.JsonLd;
19+
import org.eclipse.edc.jsonld.util.JacksonJsonLd;
20+
import org.eclipse.edc.junit.extensions.DependencyInjectionExtension;
21+
import org.eclipse.edc.spi.system.ServiceExtensionContext;
22+
import org.eclipse.edc.spi.types.TypeManager;
23+
import org.junit.jupiter.api.BeforeEach;
24+
import org.junit.jupiter.api.Test;
25+
import org.junit.jupiter.api.extension.ExtendWith;
26+
27+
import static org.eclipse.edc.catalog.api.query.FederatedCatalogApiExtension.CATALOG_QUERY_SCOPE;
28+
import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.VOCAB;
29+
import static org.eclipse.edc.jsonld.spi.Namespaces.DCAT_PREFIX;
30+
import static org.eclipse.edc.jsonld.spi.Namespaces.DCAT_SCHEMA;
31+
import static org.eclipse.edc.jsonld.spi.Namespaces.DCT_PREFIX;
32+
import static org.eclipse.edc.jsonld.spi.Namespaces.DCT_SCHEMA;
33+
import static org.eclipse.edc.jsonld.spi.Namespaces.DSPACE_PREFIX;
34+
import static org.eclipse.edc.jsonld.spi.Namespaces.DSPACE_SCHEMA;
35+
import static org.eclipse.edc.policy.model.OdrlNamespace.ODRL_PREFIX;
36+
import static org.eclipse.edc.policy.model.OdrlNamespace.ODRL_SCHEMA;
37+
import static org.eclipse.edc.spi.constants.CoreConstants.EDC_NAMESPACE;
38+
import static org.eclipse.edc.spi.constants.CoreConstants.EDC_PREFIX;
39+
import static org.mockito.Mockito.mock;
40+
import static org.mockito.Mockito.verify;
41+
import static org.mockito.Mockito.when;
42+
43+
@ExtendWith(DependencyInjectionExtension.class)
44+
public class FederatedCatalogApiExtensionTest {
45+
46+
private final JsonLd jsonLd = mock();
47+
private final TypeManager typeManager = mock();
48+
private final ObjectMapper mapper = JacksonJsonLd.createObjectMapper();
49+
50+
@BeforeEach
51+
void setUp(ServiceExtensionContext context) {
52+
context.registerService(JsonLd.class, jsonLd);
53+
context.registerService(TypeManager.class, typeManager);
54+
when(typeManager.getMapper()).thenReturn(mapper);
55+
}
56+
57+
@Test
58+
void initialize_shouldRegisterNamespaces(FederatedCatalogApiExtension extension, ServiceExtensionContext context) {
59+
extension.initialize(context);
60+
61+
verify(jsonLd).registerNamespace(DCAT_PREFIX, DCAT_SCHEMA, CATALOG_QUERY_SCOPE);
62+
verify(jsonLd).registerNamespace(DCT_PREFIX, DCT_SCHEMA, CATALOG_QUERY_SCOPE);
63+
verify(jsonLd).registerNamespace(ODRL_PREFIX, ODRL_SCHEMA, CATALOG_QUERY_SCOPE);
64+
verify(jsonLd).registerNamespace(VOCAB, EDC_NAMESPACE, CATALOG_QUERY_SCOPE);
65+
verify(jsonLd).registerNamespace(EDC_PREFIX, EDC_NAMESPACE, CATALOG_QUERY_SCOPE);
66+
verify(jsonLd).registerNamespace(DSPACE_PREFIX, DSPACE_SCHEMA, CATALOG_QUERY_SCOPE);
67+
}
68+
69+
}

0 commit comments

Comments
 (0)