Commit f1a74f21 authored by acoburn's avatar acoburn
Browse files

upgrade to fcrepo-camel/4.5.0

parent 02f2ed06
......@@ -47,11 +47,7 @@ The camel URI for the incoming message stream.
The RDF property used to identify external IDs
id.property=dc:identifier
The full namespace for the `id.property` property
id.namespace=http://purl.org/dc/elements/1.1/
id.property=http://purl.org/dc/elements/1.1/identifier
By editing this file, any currently running routes will be immediately redeployed
with the new values.
......
......@@ -13,6 +13,7 @@ dependencies {
compile group: 'org.codehaus.woodstox', name: 'woodstox-core-asl', version: woodstoxVersion
testCompile project(':acrepo-services-mint')
testCompile group: 'xerces', name: 'xercesImpl', version: xercesVersion
testCompile group: 'junit', name: 'junit', version: junitVersion
testCompile group: 'org.apache.derby', name: 'derby', version: derbyVersion
testCompile group: 'org.apache.camel', name: 'camel-test-blueprint', version: camelVersion
......
......@@ -2,7 +2,7 @@
error.maxRedeliveries=10
# Fedora Repository location
fcrepo.baseUrl=localhost:8080/fcrepo/rest
fcrepo.baseUrl=http://localhost:8080/fcrepo/rest
# The camel URI for the incoming message stream.
input.stream=broker:topic:fedora
......@@ -13,12 +13,5 @@ rest.port=9101
rest.prefix=/idiomatic
# The RDF property to use as an external identifier
id.property=dc:identifier
id.property=http://purl.org/dc/elements/1.1/identifier
# The full namespace of the above property
id.namespace=http://purl.org/dc/elements/1.1/
# An external identifier may have a standard prefix, as it is stored
# in fedora. By setting this value, that prefix will be removed from
# the id-mapping layer (e.g. http://example.org/)
id.prefix=
......@@ -17,15 +17,16 @@ package edu.amherst.acdc.connector.idiomatic;
import static edu.amherst.acdc.connector.idiomatic.IdiomaticHeaders.FEDORA;
import static edu.amherst.acdc.connector.idiomatic.IdiomaticHeaders.ID;
import static org.apache.camel.Exchange.HTTP_RESPONSE_CODE;
import static org.apache.camel.builder.PredicateBuilder.not;
import static org.fcrepo.camel.JmsHeaders.IDENTIFIER;
import static org.apache.camel.model.dataformat.JsonLibrary.Jackson;
import static org.fcrepo.camel.FcrepoHeaders.FCREPO_URI;
import java.util.List;
import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
import org.apache.camel.Processor;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.builder.xml.Namespaces;
import org.fcrepo.camel.processor.EventProcessor;
/**
* A content router for handling JMS events.
......@@ -39,20 +40,6 @@ public class EventRouter extends RouteBuilder {
*/
public void configure() throws Exception {
final String idPrefix;
final Namespaces ns = new Namespaces("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
try {
idPrefix = getContext().resolvePropertyPlaceholders("{{id.prefix}}");
final String property = getContext().resolvePropertyPlaceholders("{{id.property}}");
final String namespace = getContext().resolvePropertyPlaceholders("{{id.namespace}}");
final String prefix = property.substring(0, property.indexOf(":"));
ns.add(prefix, namespace);
} catch (final Exception ex) {
throw new RuntimeCamelException("Could not resolve property placeholders", ex);
}
/**
* A generic error handler (specific to this RouteBuilder)
*/
......@@ -63,22 +50,18 @@ public class EventRouter extends RouteBuilder {
/**
* Process a message via JMS
*/
from("{{input.stream}}")
.routeId("IdMappingRouter")
.to("direct:event");
from("direct:event")
.routeId("IdMappingEventRouter")
.log(LoggingLevel.INFO, "IdMapping Event: ${headers[org.fcrepo.jms.identifier]}")
.to("fcrepo:{{fcrepo.baseUrl}}?preferOmit=PreferContainment")
.split().xtokenize("//{{id.property}}", 'i', ns)
.setHeader(ID).xpath("/{{id.property}}/@rdf:resource | /{{id.property}}/text()", String.class, ns)
.process(new Processor() {
public void process(final Exchange ex) throws Exception {
ex.getIn().setHeader(ID, ex.getIn().getHeader(ID, String.class).replaceAll("^" + idPrefix, ""));
}})
.transform().header(IDENTIFIER)
.to("direct:update");
from("{{input.stream}}").routeId("IdMappingRouter")
.process(new EventProcessor())
.log(LoggingLevel.INFO, "IdMapping Event: ${headers[CamelFcrepoUri]}")
.to("fcrepo:{{fcrepo.baseUrl}}?preferOmit=PreferContainment&accept=application/ld+json")
.unmarshal().json(Jackson, List.class)
.split(simple("${body}"))
.filter(simple("${body[@id]} == ${header.CamelFcrepoUri}"))
.filter(simple("${body[{{id.property}}]} != null"))
.split(simple("${body[{{id.property}}]}"))
.setHeader(ID).simple("${body}")
.transform().header(FCREPO_URI)
.to("direct:update");
/**
* REST routing
......@@ -95,11 +78,11 @@ public class EventRouter extends RouteBuilder {
from("direct:update")
.routeId("IdMappingUpdateRouter")
.setHeader(FEDORA).body()
.setHeader(Exchange.HTTP_RESPONSE_CODE).constant(400)
.setHeader(HTTP_RESPONSE_CODE).constant(400)
.filter(header(FEDORA))
.log(LoggingLevel.INFO, "Updating ${headers[" + ID + "]} with ${headers[" + FEDORA + "]}")
.to("sql:UPDATE uris SET fedora=:#" + FEDORA + " WHERE public=:#" + ID)
.setHeader(Exchange.HTTP_RESPONSE_CODE).constant(204)
.setHeader(HTTP_RESPONSE_CODE).constant(204)
.choice()
.when(header("CamelSqlUpdateCount").isEqualTo("0"))
.to("sql:INSERT INTO uris (fedora, public) VALUES (:#" + FEDORA + ", :#" + ID + ")").end()
......@@ -111,14 +94,14 @@ public class EventRouter extends RouteBuilder {
.to("sql:SELECT fedora FROM uris WHERE public=:#" + ID + "?outputType=SelectOne")
.removeHeader(ID)
.filter(not(header("CamelSqlRowCount").isEqualTo(1)))
.setHeader(Exchange.HTTP_RESPONSE_CODE).constant(404);
.setHeader(HTTP_RESPONSE_CODE).constant(404);
from("direct:delete")
.routeId("IdMappingDeleteRouter")
.log(LoggingLevel.INFO, "Deleting ${headers[" + ID + "]}")
.to("sql:DELETE FROM uris WHERE public=:#" + ID)
.removeHeader(ID)
.setHeader(Exchange.HTTP_RESPONSE_CODE).constant(204);
.setHeader(HTTP_RESPONSE_CODE).constant(204);
}
}
......@@ -15,10 +15,8 @@
<cm:property name="rest.host" value="localhost"/>
<cm:property name="rest.prefix" value="/idiomatic"/>
<cm:property name="rest.port" value="9101"/>
<cm:property name="id.property" value="dc:identifier"/>
<cm:property name="id.namespace" value="http://purl.org/dc/elements/1.1/"/>
<cm:property name="id.prefix" value=""/>
<cm:property name="fcrepo.baseUrl" value="localhost:8080/fcrepo/rest"/>
<cm:property name="id.property" value="http://purl.org/dc/elements/1.1/identifier"/>
<cm:property name="fcrepo.baseUrl" value="http://localhost:8080/fcrepo/rest"/>
</cm:default-properties>
</cm:property-placeholder>
......
......@@ -15,11 +15,11 @@
*/
package edu.amherst.acdc.connector.idiomatic;
import static org.fcrepo.camel.FcrepoHeaders.FCREPO_URI;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
......@@ -37,9 +37,8 @@ import org.apache.camel.component.seda.SedaComponent;
import org.apache.camel.test.blueprint.CamelBlueprintTestSupport;
import org.apache.camel.util.KeyValueHolder;
import org.apache.camel.util.ObjectHelper;
import org.apache.commons.io.IOUtils;
import org.apache.derby.jdbc.EmbeddedDataSource;
import org.fcrepo.camel.JmsHeaders;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
/**
......@@ -78,7 +77,7 @@ public class RouteTest extends CamelBlueprintTestSupport {
final Properties props = new Properties();
props.put("input.stream", "seda:foo");
props.put("rest.port", "9999");
props.put("id.prefix", "http://example.org/object/");
props.put("id.property", "http://purl.org/dc/elements/1.1/identifier");
return props;
}
......@@ -130,12 +129,6 @@ public class RouteTest extends CamelBlueprintTestSupport {
@Override
public void configure() throws Exception {
replaceFromWith("direct:start");
}
});
context.getRouteDefinition("IdMappingEventRouter").adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
mockEndpointsAndSkip("fcrepo*");
mockEndpoints("direct:update");
}
......@@ -149,17 +142,16 @@ public class RouteTest extends CamelBlueprintTestSupport {
}
});
context.start();
resultEndpoint.expectedMessageCount(2);
getMockEndpoint("mock:direct:update").expectedBodiesReceived("/foo/bar", "/foo/bar");
getMockEndpoint("mock:direct:update").expectedHeaderValuesReceivedInAnyOrder(IdiomaticHeaders.ID, "1", "2");
final Map<String, Object> headers = new HashMap<>();
headers.put(JmsHeaders.IDENTIFIER, "/foo/bar");
template.sendBodyAndHeaders(
IOUtils.toString(ObjectHelper.loadResourceAsStream("indexable.rdf"),
"UTF-8"), headers);
getMockEndpoint("mock:direct:update").expectedBodiesReceived(
"http://localhost/foo/bar", "http://localhost/foo/bar");
getMockEndpoint("mock:direct:update").expectedHeaderValuesReceivedInAnyOrder(IdiomaticHeaders.ID,
"http://example.org/object/1", "http://example.org/object/2");
template.sendBodyAndHeader(
IOUtils.toString(ObjectHelper.loadResourceAsStream("indexable.json"),
"UTF-8"), FCREPO_URI, "http://localhost/foo/bar");
assertMockEndpointsSatisfied();
}
......
[
{
"@id":"http://localhost/foo/bar",
"@type":[
"http://www.w3.org/ns/ldp#RDFSource",
"http://www.w3.org/ns/ldp#Container",
"http://fedora.info/definitions/v4/repository#Container"
],
"http://purl.org/dc/elements/1.1/identifier":[
"http://example.org/object/1",
"http://example.org/object/2"
]
}
]
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="http://localhost:8080/fcrepo4/rest/foo">
<rdf:type rdf:resource="http://www.w3.org/ns/ldp#RDFSource"/>
<rdf:type rdf:resource="http://www.w3.org/ns/ldp#Container"/>
<rdf:type rdf:resource="http://fedora.info/definitions/v4/repository#Container"/>
<rdf:type rdf:resource="http://fedora.info/definitions/v4/repository#Resource"/>
<dc:identifier rdf:resource="http://example.org/object/1"/>
<dc:identifier rdf:resource="http://example.org/object/2"/>
</rdf:Description>
</rdf:RDF>
......@@ -14,7 +14,7 @@
<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="localhost:8080/fcrepo/rest"/>
<cm:property name="fcrepo.baseUrl" value="http://localhost:8080/fcrepo/rest"/>
</cm:default-properties>
</cm:property-placeholder>
......
......@@ -77,6 +77,7 @@ public class RouteTest extends CamelBlueprintTestSupport {
final Map<String, String> namespaces = new HashMap<>();
namespaces.put("oai_dc", "http://www.openarchives.org/OAI/2.0/oai_dc/");
namespaces.put("dc", "http://purl.org/dc/elements/1.1/");
namespaces.put("xsi", "http://www.w3.org/2001/XMLSchema-instance");
final XPathExpression hasDescription = new XPathExpression(
"/oai_dc:dc/dc:description[@xsi:type='http://www.w3.org/2001/XMLSchema#string' and " +
......
......@@ -71,7 +71,9 @@ public class AcrepoActiveMQIT extends AbstractOSGiIT {
features(maven().groupId("org.apache.karaf.features").artifactId("standard")
.versionAsInProject().classifier("features").type("xml"), "scr"),
features(maven().groupId("org.apache.activemq").artifactId("activemq-karaf")
.type("xml").classifier("features").versionAsInProject(), "activemq-camel"),
.type("xml").classifier("features").versionAsInProject()),
features(maven().groupId("org.apache.camel.karaf").artifactId("apache-camel")
.type("xml").classifier("features").versionAsInProject()),
features(maven().groupId("edu.amherst.acdc").artifactId("acrepo-karaf")
.type("xml").classifier("features").versionAsInProject(),
"acrepo-services-activemq"),
......
......@@ -33,8 +33,9 @@ import java.io.File;
import org.apache.camel.CamelContext;
import org.apache.camel.component.mock.MockEndpoint;
import org.junit.Test;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.ConfigurationManager;
......@@ -66,6 +67,8 @@ public class AcrepoBroadcastIT extends AbstractOSGiIT {
final String inputStream = "broker:topic:fedora";
final String messageRecipients = "mock:queue1,mock:queue2,mock:queue3";
final String brokerUrl = "tcp://localhost:" + jmsPort;
LOGGER.info("SETTING BROKER URL: {}", brokerUrl);
System.out.println("SETTING BROKER URL:" + brokerUrl);
return new Option[] {
karafDistributionConfiguration()
......@@ -80,7 +83,9 @@ public class AcrepoBroadcastIT extends AbstractOSGiIT {
features(maven().groupId("org.apache.karaf.features").artifactId("standard")
.versionAsInProject().classifier("features").type("xml"), "scr"),
features(maven().groupId("org.apache.activemq").artifactId("activemq-karaf")
.type("xml").classifier("features").versionAsInProject(), "activemq-camel"),
.type("xml").classifier("features").versionAsInProject()),
features(maven().groupId("org.apache.camel.karaf").artifactId("apache-camel")
.type("xml").classifier("features").versionAsInProject()),
features(maven().groupId("edu.amherst.acdc").artifactId("acrepo-karaf")
.type("xml").classifier("features").versionAsInProject(),
"acrepo-services-activemq", "acrepo-connector-broadcast"),
......@@ -123,16 +128,17 @@ public class AcrepoBroadcastIT extends AbstractOSGiIT {
}
@Test
@Ignore("The test doesn't bind properly to the broker service ref")
public void testBroadcastingConnector() throws Exception {
final CamelContext ctx = getOsgiService(CamelContext.class, "(camel.context.name=AcrepoConnectorBroadcast)",
10000);
assertNotNull(ctx);
final String baseUrl = "http://localhost:" + System.getProperty("fcrepo.port") + "/fcrepo/rest";
final String url1 = post(baseUrl).replace(baseUrl, "");
final String url2 = post(baseUrl).replace(baseUrl, "");
final String url3 = post(baseUrl + url1).replace(baseUrl, "");
final String url4 = post(baseUrl + url2).replace(baseUrl, "");
final String url1 = post(baseUrl);
final String url2 = post(baseUrl);
final String url3 = post(url1);
final String url4 = post(url2);
final MockEndpoint queue1 = (MockEndpoint) ctx.getEndpoint("mock:queue1");
final MockEndpoint queue2 = (MockEndpoint) ctx.getEndpoint("mock:queue2");
......
......@@ -16,7 +16,6 @@
package edu.amherst.acdc.itests;
import static javax.xml.parsers.DocumentBuilderFactory.newInstance;
import static javax.xml.xpath.XPathConstants.NODESET;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
......@@ -34,14 +33,11 @@ import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.namespace.NamespaceContext;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import org.apache.camel.CamelContext;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -85,6 +81,8 @@ public class AcrepoExtsSerializeXmlIT extends AbstractOSGiIT {
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("edu.amherst.acdc").artifactId("acrepo-karaf")
.type("xml").classifier("features").versionAsInProject(),
"acrepo-exts-serialize-xml"),
......@@ -124,33 +122,18 @@ public class AcrepoExtsSerializeXmlIT extends AbstractOSGiIT {
final InputStream input = new ByteArrayInputStream(get(baseSvcUrl + id).getBytes("UTF-8"));
final Document doc = newInstance().newDocumentBuilder().parse(input);
final XPath xpath = XPathFactory.newInstance().newXPath();
xpath.setNamespaceContext(new NamespaceContext() {
public String getNamespaceURI(final String prefix) {
if (prefix.equals("oai_dc")) {
return "http://www.openarchives.org/OAI/2.0/oai_dc/";
} else if (prefix.equals("dc")) {
return "http://purl.org/dc/elements/1.1/";
} else if (prefix.equals("xsi")) {
return "http://www.w3.org/2001/XMLSchema-instance";
} else {
return null;
}
}
public Iterator getPrefixes(final String val) {
return null;
}
public String getPrefix(final String uri) {
return null;
}
});
final NodeList nodes = (NodeList)xpath.evaluate("/oai_dc:dc/dc:type", doc, NODESET);
final NodeList root = doc.getChildNodes();
assertEquals(1, root.getLength());
final NodeList properties = root.item(0).getChildNodes();
assertEquals(3, nodes.getLength());
final List<String> types = new ArrayList<>();
for (int i = 0; i < nodes.getLength(); i++) {
types.add(nodes.item(i).getTextContent());
for (int i = 0; i < properties.getLength(); i++) {
final Node node = properties.item(i);
if (node.getNodeName().equals("dc:type")) {
types.add(node.getTextContent());
}
}
assertTrue(types.contains("http://id.loc.gov/vocabulary/resourceTypes/txt"));
......
......@@ -74,6 +74,8 @@ public class AcrepoFitsIT extends AbstractOSGiIT {
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("edu.amherst.acdc").artifactId("acrepo-karaf")
.type("xml").classifier("features").versionAsInProject(),
"acrepo-exts-fits"),
......
......@@ -64,7 +64,7 @@ public class AcrepoJsonLDIT extends AbstractOSGiIT {
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 = "localhost:" + fcrepoPort + "/fcrepo/rest";
final String fcrepoBaseUrl = "http://localhost:" + fcrepoPort + "/fcrepo/rest";
final String sshPort = cm.getProperty("karaf.ssh.port");
return new Option[] {
......@@ -78,6 +78,8 @@ public class AcrepoJsonLDIT extends AbstractOSGiIT {
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("edu.amherst.acdc").artifactId("acrepo-karaf")
.type("xml").classifier("features").versionAsInProject(),
"acrepo-exts-jsonld", "acrepo-services-jsonld"),
......@@ -119,7 +121,10 @@ public class AcrepoJsonLDIT extends AbstractOSGiIT {
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));
final String resp = get(baseSvcUrl + id);
System.out.println(resp);
final JsonNode obj = mapper.readTree(resp);
//final JsonNode obj = mapper.readTree(get(baseSvcUrl + id));
Please register or sign in to reply
assertNotNull(obj.get("id"));
assertEquals(obj.get("id").asText(), baseUrl + id);
assertNotNull(obj.get("type"));
......
......@@ -80,6 +80,8 @@ public class AcrepoLdCacheIT extends AbstractOSGiIT {
configureConsole().ignoreLocalConsole(),
features(maven().groupId("org.apache.karaf.features").artifactId("standard")
.versionAsInProject().classifier("features").type("xml"), "scr", "wrap"),
features(maven().groupId("org.apache.camel.karaf").artifactId("apache-camel")
.type("xml").classifier("features").versionAsInProject()),
features(maven().groupId("edu.amherst.acdc").artifactId("acrepo-karaf")
.type("xml").classifier("features").versionAsInProject(),
"acrepo-services-ldcache", "acrepo-services-ldcache-file"),
......
......@@ -79,6 +79,8 @@ public class AcrepoPcdmIT extends AbstractOSGiIT {
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("edu.amherst.acdc").artifactId("acrepo-karaf")
.type("xml").classifier("features").versionAsInProject(),
"acrepo-exts-pcdm"),
......
......@@ -77,6 +77,8 @@ public class AcrepoServicesIT extends AbstractOSGiIT {
.type("xml").classifier("features").versionAsInProject(), "camel-blueprint"),
features(maven().groupId("org.apache.activemq").artifactId("activemq-karaf")
.type("xml").classifier("features").versionAsInProject(), "activemq-camel"),
features(maven().groupId("org.apache.camel.karaf").artifactId("apache-camel")
  • Why do these need to be explicitly added now? Really the question is how did this work before w/o apache-camel being added?

  • At present, the features.xml file identifies a particular version of camel to install. In retrospect, that was a bad idea (though it does make installation easier).

    I am removing that with this PR: !78 (diffs)

    This means that, in order to install these components, one must first identify the version of Camel that is to be installed. And that same thing applies to the pax-exam tests.

  • Okay, I was thinking that that was the case.

Please register or sign in to reply
.type("xml").classifier("features").versionAsInProject()),
features(maven().groupId("edu.amherst.acdc").artifactId("acrepo-karaf")
.type("xml").classifier("features").versionAsInProject(),
"acrepo-connector-broadcast",
......
......@@ -73,6 +73,8 @@ public class AcrepoTemplateIT extends AbstractOSGiIT {
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("edu.amherst.acdc").artifactId("acrepo-karaf")
.type("xml").classifier("features").versionAsInProject(),
"acrepo-exts-template", "acrepo-services-jsonld"),
......
</
<?xml version='1.0' encoding='UTF-8'?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" name="amherst-repo-services-${project.version}">
<repository>mvn:org.fcrepo.camel/fcrepo-camel/${fcrepoCamelVersion}/xml/features</repository>
<repository>mvn:org.apache.camel.karaf/apache-camel/${camelVersion}/xml/features</repository>
<repository>mvn:org.apache.activemq/activemq-karaf/${activemqVersion}/xml/features</repository>
<feature name="acrepo-connector-idiomatic" version="${project.version}">
<details>Installs the id mapping service</details>
......@@ -10,11 +8,11 @@
<feature>jndi</feature>
<feature>jdbc</feature>
<feature version="${camelVersion}">camel</feature>
<feature version="${camelVersion}">camel-blueprint</feature>
<feature version="${camelVersion}">camel-jetty9</feature>
<feature version="${camelVersion}">camel-jackson</feature>
<feature version="${camelVersion}">camel-sql</feature>
<feature version="${camelVersionRange}">camel</feature>
<feature version="${camelVersionRange}">camel-blueprint</feature>
<feature version="${camelVersionRange}">camel-jetty9</feature>
<feature version="${camelVersionRange}">camel-jackson</feature>
<feature version="${camelVersionRange}">camel-sql</feature>
<feature version="${fcrepoCamelVersion}">fcrepo-camel</feature>
<bundle dependency="true">mvn:org.codehaus.woodstox/woodstox-core-asl/${woodstoxVersion}</bundle>
......@@ -53,11 +51,11 @@
<feature name="acrepo-exts-image" version="${project.version}">
<details>Installs the image service</details>
<feature version="${camelVersion}">camel</feature>
<feature version="${camelVersion}">camel-blueprint</feature>
<feature version="${camelVersion}">camel-jetty9</feature>
<feature version="${camelVersion}">camel-http4</feature>
<feature version="${camelVersion}">camel-exec</feature>
<feature version="${camelVersionRange}">camel</feature>
<feature version="${camelVersionRange}">camel-blueprint</feature>
<feature version="${camelVersionRange}">camel-jetty9</feature>
<feature version="${camelVersionRange}">camel-http4</feature>
<feature version="${camelVersionRange}">camel-exec</feature>
<bundle>mvn:edu.amherst.acdc/acrepo-exts-image/${project.version}</bundle>
......@@ -67,9 +65,9 @@
<feature name="acrepo-exts-pcdm" version="${project.version}">
<details>Installs the image service</details>
<feature version="${camelVersion}">camel</feature>
<feature version="${camelVersion}">camel-blueprint</feature>