Commit 00e6c027 authored by acoburn's avatar acoburn
Browse files

remove JSONLD* extensions

parent c3057e51
......@@ -15,7 +15,6 @@ by making available a REST-based HTTP interface. The intention is that these ext
* [`acrepo-exts-fits`](acrepo-exts-fits): This service will return FITS information associated with a Fedora Binary, in XML format
* [`acrepo-exts-image`](acrepo-exts-image): An image manipulation service
* [`acrepo-exts-jsonld`](acrepo-exts-jsonld): This module exposes an HTTP endpoint for creating compact JSON-LD documents from a Fedora repository using a pluggable context document
* [`acrepo-exts-ldpath`](acrepo-exts-ldpath): This module extends `fcrepo-ldpath` to support additional Linked Data endpoints (e.g. Getty)
* [`acrepo-exts-pcdm`](acrepo-exts-pcdm): This constructs a complete PCDM object graph for Fedora resources
* [`acrepo-exts-serialize-xml`](acrepo-exts-serialize-xml): This service translates Fedora RDF documents into MODS/XML or DC/XML
......@@ -27,7 +26,6 @@ Services
These modules provide particular services, independent of Fedora Resources.
* [`acrepo-services-inference`](acrepo-services-inference): An OSGi-based structural typing service using owl inference
* [`acrepo-services-jsonld`](acrepo-services-jsonld): This service creates expanded or compact JSON-LD representations of input documents
* [`acrepo-services-mint`](acrepo-services-mint): This mints random (public) URIs for use with Fedora resources
* [`acrepo-services-pcdm`](acrepo-services-pcdm): This makes it easy to work with PCDM objects
......@@ -78,14 +76,12 @@ command from its shell:
feature:install acrepo-exts-fits
feature:install acrepo-exts-image
feature:install acrepo-exts-jsonld
feature:install acrepo-exts-ldpath
feature:install acrepo-exts-pcdm
feature:install acrepo-exts-serialize-xml
feature:install acrepo-exts-template
feature:install acrepo-services-inference
feature:install acrepo-services-jsonld
feature:install acrepo-services-mint
feature:install acrepo-services-pcdm
......
Repository JSON-LD compaction service
=====================================
This collection of camel routes exposes an HTTP endpoint for
generating compact JSON-LD serializations of Fedora resources.
Building
--------
To build this project use
gradle install
Deploying in OSGi
-----------------
This projects can be deployed in an OSGi container. For example using
[Apache Karaf](http://karaf.apache.org) version 4.x or better, you can run the following
command from its shell:
feature:repo-add mvn:edu.amherst.acdc/acrepo-karaf/LATEST/xml/features
feature:install acrepo-exts-jsonld
Configuration
-------------
The application can be configured by creating the following configuration
file `$KARAF_HOME/etc/edu.amherst.acdc.exts.jsonld.cfg`. The following values
are available for configuration:
In the event of failure, the maximum number of times a redelivery will be attempted.
error.maxRedeliveries=10
The base url of the fedora repository
fcrepo.baseUrl=localhost:8080/fcrepo/rest
The location of the JSON-LD context document
jsonld.context=https://acdc.amherst.edu/jsonld/context.json
The port on which the service is made availalbe
rest.port=9102
The hostname for the service
rest.host=localhost
The REST prefix
rest.prefix=/jsonld
By editing this file, any currently running routes will be immediately redeployed
with the new values.
For more help see the [Apache Camel](http://camel.apache.org) documentation
apply plugin: 'osgi'
description = 'JSON-LD AppCache Workflow'
dependencies {
compile group: 'org.apache.camel', name: 'camel-core', version: camelVersion
compile group: 'org.apache.camel', name: 'camel-blueprint', version: camelVersion
compile group: 'org.apache.camel', name: 'camel-jetty9', version: camelVersion
compile(group: 'org.fcrepo.camel', name: 'fcrepo-camel', version: fcrepoCamelVersion) {
exclude(module: 'slf4j-log4j12')
}
compile project(':acrepo-services-jsonld')
testCompile group: 'junit', name: 'junit', version: junitVersion
testCompile group: 'org.apache.camel', name: 'camel-test-blueprint', version: camelVersion
testCompile group: 'ch.qos.logback', name: 'logback-classic', version: logbackVersion
}
jar {
manifest {
description project.description
docURL project.docURL
vendor project.vendor
license project.license
instruction 'Import-Package', "org.apache.camel,edu.amherst.acdc.services.jsonld,${defaultOsgiImports}"
instruction 'Export-Package', "edu.amherst.acdc.exts.jsonld;version=${projectOsgiVersion}"
}
}
artifacts {
archives (file('build/cfg/main/edu.amherst.acdc.exts.jsonld.cfg')) {
classifier 'configuration'
type 'cfg'
}
}
# HTTP Port
rest.host=localhost
rest.port=9102
rest.prefix=/jsonld
# JSON Context file
jsonld.context=https://acdc.amherst.edu/jsonld/models.json
# Repository Base URL
fcrepo.baseUrl=localhost:8080/fcrepo/rest
/*
* Copyright 2016 Amherst College
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package edu.amherst.acdc.exts.jsonld;
import static org.apache.camel.Exchange.CONTENT_TYPE;
import static org.apache.camel.Exchange.HTTP_METHOD;
import static org.apache.camel.Exchange.HTTP_PATH;
import static org.apache.camel.Exchange.HTTP_RESPONSE_CODE;
import static org.fcrepo.camel.FcrepoHeaders.FCREPO_IDENTIFIER;
import static org.fcrepo.camel.FcrepoHeaders.FCREPO_BASE_URL;
import org.apache.camel.builder.RouteBuilder;
/**
* A content router for handling JMS events.
*
* @author Aaron Coburn
*/
public class EventRouter extends RouteBuilder {
/**
* Configure the message route workflow.
*/
public void configure() throws Exception {
from("jetty:http://{{rest.host}}:{{rest.port}}{{rest.prefix}}?" +
"matchOnUriPrefix=true&sendServerVersion=false&httpMethodRestrict=GET,OPTIONS")
.routeId("JsonLdRouter")
.choice()
.when(header(HTTP_METHOD).isEqualTo("GET"))
.log("JSONLD Processing ${headers[CamelHttpPath]}")
.process(e -> e.getIn().setHeader(FCREPO_IDENTIFIER,
e.getIn().getHeader("Apix-Ldp-Resource-Path",
e.getIn().getHeader(HTTP_PATH))))
.to("direct:get")
.when(header(HTTP_METHOD).isEqualTo("OPTIONS"))
.setHeader(CONTENT_TYPE).constant("text/turtle")
.setHeader("Allow").constant("GET,OPTIONS")
.choice()
.when(header("apix.scope").isEqualTo("resource"))
.to("language:simple:resource:classpath:options_resource.ttl")
.otherwise()
.to("language:simple:resource:classpath:options.ttl");
from("direct:get")
.routeId("JsonLdGet")
.to("direct:getResource")
.filter(header(HTTP_RESPONSE_CODE).isEqualTo(200))
.log("Compacting resource ${headers[CamelFcrepoIdentifier]}")
.to("direct:compact");
from("direct:getResource")
.routeId("JsonLdResource")
.removeHeader("breadcrumbId")
.removeHeader("Accept")
.removeHeader("User-Agent")
.setHeader(FCREPO_BASE_URL).simple("{{fcrepo.baseUrl}}")
.to("fcrepo:{{fcrepo.baseUrl}}?accept=application/ld+json&throwExceptionOnFailure=false");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd
http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
<!-- OSGI blueprint property placeholder -->
<cm:property-placeholder persistent-id="edu.amherst.acdc.exts.jsonld" update-strategy="reload">
<cm:default-properties>
<cm:property name="rest.port" value="9102"/>
<cm:property name="rest.prefix" value="/jsonld"/>
<cm:property name="rest.host" value="localhost"/>
<cm:property name="jsonld.context" value="https://acdc.amherst.edu/jsonld/models.json"/>
<cm:property name="fcrepo.baseUrl" value="http://localhost:8080/fcrepo/rest"/>
</cm:default-properties>
</cm:property-placeholder>
<reference id="jsonldService" interface="edu.amherst.acdc.services.jsonld.JsonLdService" filter="(osgi.jndi.service.name=acrepo/JsonLD)" />
<camelContext id="AcrepoJsonLdService" xmlns="http://camel.apache.org/schema/blueprint">
<package>edu.amherst.acdc.exts.jsonld</package>
<route id="JsonLdCompaction">
<from uri="direct:compact"/>
<setHeader headerName="JsonLdContext">
<simple>{{jsonld.context}}</simple>
</setHeader>
<setBody>
<method ref="jsonldService" method="compact(${body}, ${header[JsonLdContext]})"/>
</setBody>
</route>
</camelContext>
</blueprint>
@prefix apix:<http://fedora.info/definitions/v4/api-extension#> .
@prefix fedora:<http://fedora.info/definitions/v4/repository#> .
@prefix registry:<http://acdc.amherst.edu/extensions#> .
@prefix rdfs:<http://www.w3.org/2000/01/rdf-schema#> .
<> a apix:Extension;
rdfs:label "JSON-LD Compaction Service";
rdfs:comment "A service that transforms RDFSource documents to compact JSON-LD";
apix:exposesService registry:JsonLDService;
apix:exposesServiceAt "/svc:compact";
apix:bindsTo fedora:Resource .
@prefix apix:<http://fedora.info/definitions/v4/api-extension#> .
@prefix fedora:<http://fedora.info/definitions/v4/repository#> .
@prefix registry:<http://acdc.amherst.edu/extensions#> .
@prefix rdfs:<http://www.w3.org/2000/01/rdf-schema#> .
<> a apix:Extension;
rdfs:label "JSON-LD Compaction Service";
rdfs:comment "A service that transforms RDFSource documents to compact JSON-LD";
apix:exposesService registry:JsonLDService;
apix:exposesServiceAt "svc:compact";
apix:bindsTo fedora:Resource .
/*
* Copyright 2016 Amherst College
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package edu.amherst.acdc.exts.jsonld;
import java.util.Dictionary;
import java.util.Map;
import edu.amherst.acdc.services.jsonld.JsonLdService;
import edu.amherst.acdc.services.jsonld.JsonLdServiceImpl;
import org.apache.camel.test.blueprint.CamelBlueprintTestSupport;
import org.apache.camel.util.KeyValueHolder;
import org.junit.Test;
/**
* @author acoburn
* @since 9/21/15
*/
public class RouteTest extends CamelBlueprintTestSupport {
@Override
protected String getBlueprintDescriptor() {
return "/OSGI-INF/blueprint/blueprint.xml";
}
@Override
protected void addServicesOnStartup(final Map<String, KeyValueHolder<Object, Dictionary>> services) {
services.put(JsonLdService.class.getName(), asService(new JsonLdServiceImpl(),
"osgi.jndi.service.name", "acrepo/JsonLD"));
}
@Test
public void testRoute() throws Exception {
// the route is timer based, so every 5th second a message is send
// we should then expect at least one message
getMockEndpoint("mock:result").expectedMinimumMessageCount(0);
// assert expectations
assertMockEndpointsSatisfied();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%p %d{HH:mm:ss.SSS} \(%c{0}\) %m%n</pattern>
</encoder>
</appender>
<logger name="edu.amherst.acdc.exts.jsonld" additivity="false" level="INFO">
<appender-ref ref="STDOUT"/>
</logger>
<logger name="org.apache.camel" additivity="false" level="INFO">
<appender-ref ref="STDOUT"/>
</logger>
<logger name="org.fcrepo.camel" additivity="false" level="INFO">
<appender-ref ref="STDOUT"/>
</logger>
<root additivity="false" level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
......@@ -49,10 +49,8 @@ dependencies {
testCompile project(':acrepo-connector-idiomatic')
testCompile project(':acrepo-connector-idiomatic-pgsql')
testCompile project(':acrepo-services-inference')
testCompile project(':acrepo-services-jsonld')
testCompile project(':acrepo-services-mint')
testCompile project(':acrepo-services-pcdm')
testCompile project(':acrepo-exts-jsonld')
testCompile project(':acrepo-exts-fits')
testCompile project(':acrepo-exts-image')
testCompile project(':acrepo-exts-pcdm')
......@@ -139,7 +137,6 @@ test {
systemProperty 'karaf.template.port', randomPort()
systemProperty 'karaf.metadata.port', randomPort()
systemProperty 'karaf.pcdm.port', randomPort()
systemProperty 'karaf.jsonld.port', randomPort()
systemProperty 'karaf.image.port', randomPort()
systemProperty 'karaf.idiomatic.port', randomPort()
systemProperty 'karaf.fits.port', randomPort()
......
/*
* Copyright 2016 Amherst College
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package edu.amherst.acdc.itests;
import static java.util.stream.IntStream.rangeClosed;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.ops4j.pax.exam.CoreOptions.maven;
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
import static org.ops4j.pax.exam.CoreOptions.systemProperty;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.configureConsole;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
import static org.slf4j.LoggerFactory.getLogger;
import java.io.File;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.CamelContext;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.ConfigurationManager;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.slf4j.Logger;
/**
* @author Aaron Coburn
* @since May 2, 2016
*/
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
public class AcrepoJsonLDIT extends AbstractOSGiIT {
private static Logger LOGGER = getLogger(AcrepoJsonLDIT.class);
@Configuration
public Option[] config() {
final ConfigurationManager cm = new ConfigurationManager();
final String fcrepoPort = cm.getProperty("fcrepo.dynamic.test.port");
final String jsonldServicePort = cm.getProperty("karaf.jsonld.port");
final String rmiRegistryPort = cm.getProperty("karaf.rmiRegistry.port");
final String rmiServerPort = cm.getProperty("karaf.rmiServer.port");
final String fcrepoBaseUrl = "http://localhost:" + fcrepoPort + "/fcrepo/rest";
final String sshPort = cm.getProperty("karaf.ssh.port");
return new Option[] {
karafDistributionConfiguration()
.frameworkUrl(maven().groupId("org.apache.karaf").artifactId("apache-karaf")
.version(cm.getProperty("karaf.version")).type("zip"))
.unpackDirectory(new File("build", "exam"))
.useDeployFolder(false),
logLevel(LogLevel.INFO),
keepRuntimeFolder(),
configureConsole().ignoreLocalConsole(),
features(maven().groupId("org.apache.karaf.features").artifactId("standard")
.versionAsInProject().classifier("features").type("xml"), "scr"),
features(maven().groupId("org.apache.camel.karaf").artifactId("apache-camel")
.type("xml").classifier("features").versionAsInProject()),
features(maven().groupId("org.fcrepo.camel").artifactId("fcrepo-camel")
.type("xml").classifier("features").versionAsInProject()),
features(maven().groupId("edu.amherst.acdc").artifactId("acrepo-karaf")
.type("xml").classifier("features").versionAsInProject(),
"acrepo-exts-jsonld", "acrepo-services-jsonld"),
mavenBundle().groupId("com.fasterxml.jackson.core").artifactId("jackson-core").versionAsInProject(),
mavenBundle().groupId("com.fasterxml.jackson.core").artifactId("jackson-databind").versionAsInProject(),
systemProperty("karaf.jsonld.port").value(jsonldServicePort),
systemProperty("fcrepo.port").value(fcrepoPort),
editConfigurationFilePut("etc/org.apache.karaf.management.cfg", "rmiRegistryPort", rmiRegistryPort),
editConfigurationFilePut("etc/org.apache.karaf.management.cfg", "rmiServerPort", rmiServerPort),
editConfigurationFilePut("etc/org.apache.karaf.shell.cfg", "sshPort", sshPort),
editConfigurationFilePut("etc/edu.amherst.acdc.exts.jsonld.cfg", "fcrepo.baseUrl", fcrepoBaseUrl),
editConfigurationFilePut("etc/edu.amherst.acdc.exts.jsonld.cfg", "rest.port", jsonldServicePort)
};
}
@Test
public void testInstallation() throws Exception {
assertTrue(featuresService.isInstalled(featuresService.getFeature("camel-core")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("fcrepo-camel")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-exts-jsonld")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-services-jsonld")));
}
@Test
public void testJsonLdService() throws Exception {
// make sure that the camel context has started up.
final CamelContext ctx = getOsgiService(CamelContext.class, "(camel.context.name=AcrepoJsonLdService)",
10000);
assertNotNull(ctx);
final String baseUrl = "http://localhost:" + System.getProperty("fcrepo.port") + "/fcrepo/rest";
final String baseSvcUrl = "http://localhost:" + System.getProperty("karaf.jsonld.port") + "/jsonld";
assertTrue(options(baseSvcUrl).contains("apix:bindsTo fedora:Resource"));
rangeClosed(1, 3).mapToObj(x -> post(baseUrl).replace(baseUrl, "")).forEach(id -> {
final ObjectMapper mapper = new ObjectMapper();
try {
final JsonNode obj = mapper.readTree(get(baseSvcUrl + id));
assertNotNull(obj.get("id"));
assertEquals(obj.get("id").asText(), baseUrl + id);
assertNotNull(obj.get("type"));
assertNotNull(obj.get("created"));
assertNotNull(obj.get("createdBy"));
assertNotNull(obj.get("hasParent"));
assertNotNull(obj.get("lastModified"));
assertNotNull(obj.get("lastModifiedBy"));
assertNotNull(obj.get("writable"));
} catch (final Exception ex) {
throw new RuntimeException(ex);
}
});
}
}
......@@ -57,7 +57,6 @@ public class AcrepoServicesIT extends AbstractOSGiIT {
final String idiomaticPort = cm.getProperty("karaf.idiomatic.port");
final String metadataPort = cm.getProperty("karaf.metadata.port");
final String templatePort = cm.getProperty("karaf.template.port");
final String jsonldPort = cm.getProperty("karaf.jsonld.port");
final String pcdmPort = cm.getProperty("karaf.pcdm.port");
final String imagePort = cm.getProperty("karaf.image.port");
final String ldpathPort = cm.getProperty("karaf.ldpath.port");
......@@ -90,7 +89,6 @@ public class AcrepoServicesIT extends AbstractOSGiIT {
"acrepo-exts-fits",
"acrepo-exts-image",
"acrepo-exts-jsonld",
"acrepo-exts-ldpath",
"acrepo-exts-pcdm",
"acrepo-exts-serialize-xml",
......@@ -101,14 +99,12 @@ public class AcrepoServicesIT extends AbstractOSGiIT {
"acrepo-libs-jackson",
"acrepo-services-inference",
"acrepo-services-jsonld",
"acrepo-services-mint",
"acrepo-services-pcdm"),
editConfigurationFilePut("etc/edu.amherst.acdc.exts.fits.cfg", "rest.port", fitsPort),
editConfigurationFilePut("etc/edu.amherst.acdc.exts.image.cfg", "rest.port", imagePort),
editConfigurationFilePut("etc/edu.amherst.acdc.exts.ldpath.cfg", "rest.port", ldpathPort),
editConfigurationFilePut("etc/edu.amherst.acdc.exts.jsonld.cfg", "rest.port", jsonldPort),
editConfigurationFilePut("etc/edu.amherst.acdc.exts.pcdm.cfg", "rest.port", pcdmPort),
editConfigurationFilePut("etc/edu.amherst.acdc.exts.serialize.xml.cfg", "rest.port", metadataPort),
editConfigurationFilePut("etc/edu.amherst.acdc.exts.template.cfg", "rest.port", templatePort),
......@@ -126,7 +122,6 @@ public class AcrepoServicesIT extends AbstractOSGiIT {
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-connector-broadcast")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-exts-fits")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-exts-image")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-exts-jsonld")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-exts-ldpath")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-exts-pcdm")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-exts-serialize-xml")));
......@@ -135,7 +130,6 @@ public class AcrepoServicesIT extends AbstractOSGiIT {
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-libs-jena")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-libs-jsonld")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-services-inference")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-services-jsonld")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-services-mint")));
assertTrue(featuresService.isInstalled(featuresService.getFeature("acrepo-services-pcdm")));
}
......
......@@ -126,28 +126,6 @@
<configfile finalname="/etc/edu.amherst.acdc.exts.serialize.xml.cfg">mvn:edu.amherst.acdc/acrepo-exts-serialize-xml/${project.version}/cfg/configuration</configfile>
</feature>
<feature name="acrepo-services-jsonld" version="${project.version}">
<details>Installs the JSON-LD transformation OSGi service</details>
<feature version="${project.version}">acrepo-libs-jsonld</feature>
<bundle>mvn:edu.amherst.acdc/acrepo-services-jsonld/${project.version}</bundle>
</feature>
<feature name="acrepo-exts-jsonld" version="${project.version}">
<details>Installs a sample JSON-LD transformation workflow</details>
<feature version="${camelVersionRange}">camel</feature>
<feature version="${camelVersionRange}">camel-blueprint</feature>
<feature version="${camelVersionRange}">camel-jetty9</feature>