Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
acdc
repository-extension-services
Commits
12dd05b2
Commit
12dd05b2
authored
Jan 25, 2016
by
acoburn
Browse files
API-X implementation
parent
38311560
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
1024 additions
and
1 deletion
+1024
-1
acrepo-apix/README.md
acrepo-apix/README.md
+60
-0
acrepo-apix/pom.xml
acrepo-apix/pom.xml
+132
-0
acrepo-apix/src/main/cfg/edu.amherst.acdc.apix.cfg
acrepo-apix/src/main/cfg/edu.amherst.acdc.apix.cfg
+8
-0
acrepo-apix/src/main/java/edu/amherst/acdc/apix/ApixHeaders.java
...apix/src/main/java/edu/amherst/acdc/apix/ApixHeaders.java
+34
-0
acrepo-apix/src/main/java/edu/amherst/acdc/apix/ApixRouter.java
...-apix/src/main/java/edu/amherst/acdc/apix/ApixRouter.java
+106
-0
acrepo-apix/src/main/java/edu/amherst/acdc/apix/ServiceProcessor.java
...src/main/java/edu/amherst/acdc/apix/ServiceProcessor.java
+69
-0
acrepo-apix/src/main/resources/OSGI-INF/blueprint/blueprint.xml
...-apix/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+97
-0
acrepo-apix/src/main/resources/logback.xml
acrepo-apix/src/main/resources/logback.xml
+22
-0
acrepo-karaf/src/main/resources/features.xml
acrepo-karaf/src/main/resources/features.xml
+22
-0
acrepo-registry-api/README.md
acrepo-registry-api/README.md
+25
-0
acrepo-registry-api/pom.xml
acrepo-registry-api/pom.xml
+97
-0
acrepo-registry-api/src/main/java/edu/amherst/acdc/registry/api/RegistryService.java
...n/java/edu/amherst/acdc/registry/api/RegistryService.java
+65
-0
acrepo-registry-memory/README.md
acrepo-registry-memory/README.md
+24
-0
acrepo-registry-memory/pom.xml
acrepo-registry-memory/pom.xml
+103
-0
acrepo-registry-memory/src/main/java/edu/amherst/acdc/registry/memory/RegistryServiceImpl.java
...edu/amherst/acdc/registry/memory/RegistryServiceImpl.java
+89
-0
acrepo-registry-memory/src/main/resources/OSGI-INF/blueprint/blueprint.xml
...emory/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+18
-0
acrepo-registry-memory/src/test/java/edu/amherst/acdc/registry/memory/RegistryServiceTest.java
...edu/amherst/acdc/registry/memory/RegistryServiceTest.java
+49
-0
pom.xml
pom.xml
+4
-1
No files found.
acrepo-apix/README.md
0 → 100644
View file @
12dd05b2
API Extension Framework for Fedora
==================================
This implements the API-X Framework for Fedora.
Building
--------
To build this project use
mvn install
Deploying in OSGi
-----------------
This project can be deployed in an OSGi container. For example using
[
Apache Karaf
](
http://karaf.apache.org
)
version 4.x and above, you can run the following
command from its shell:
feature:repo-add mvn:edu.amherst.acdc/repository-services/LATEST/xml/features
feature:install acrepo-apix
Or by copying the compiled bundle into
`$KARAF_HOME/deploy`
.
Configuration
-------------
The application can be configured by creating the following configuration
file
`$KARAF_HOME/etc/edu.amherst.acdc.apix.cfg`
. The following values
are available for configuration:
The REST endpoint prefix.
rest.prefix=/apix
The port on which the API-X service is available.
rest.port=13431
The service prefix
apix.prefix=svc:
The fedora base URL
fcrepo.baseUrl=localhost:8080/fcrepo/rest
The fedora username
fcrepo.authUsername=
The fedora password
fcrepo.authPassword=
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
acrepo-apix/pom.xml
0 → 100644
View file @
12dd05b2
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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.
-->
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
edu.amherst.acdc
</groupId>
<artifactId>
repository-services
</artifactId>
<version>
1.0.1-SNAPSHOT
</version>
</parent>
<artifactId>
acrepo-apix
</artifactId>
<packaging>
bundle
</packaging>
<name>
API-X Implementation
</name>
<description>
Camel-based service for implementing API-X
</description>
<properties>
<osgi.export.packages>
edu.amherst.acdc.apix;version=${project.version}
</osgi.export.packages>
</properties>
<dependencies>
<dependency>
<groupId>
org.apache.camel
</groupId>
<artifactId>
camel-core
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.camel
</groupId>
<artifactId>
camel-jetty9
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.camel
</groupId>
<artifactId>
camel-blueprint
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.camel
</groupId>
<artifactId>
camel-http4
</artifactId>
</dependency>
<dependency>
<groupId>
org.fcrepo.camel
</groupId>
<artifactId>
fcrepo-camel
</artifactId>
</dependency>
<!-- logging -->
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-api
</artifactId>
</dependency>
<dependency>
<groupId>
ch.qos.logback
</groupId>
<artifactId>
logback-core
</artifactId>
</dependency>
<dependency>
<groupId>
ch.qos.logback
</groupId>
<artifactId>
logback-classic
</artifactId>
</dependency>
<!-- testing -->
<dependency>
<groupId>
org.apache.camel
</groupId>
<artifactId>
camel-test-blueprint
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>
install
</defaultGoal>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-checkstyle-plugin
</artifactId>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
</plugin>
<!-- add configuration file to artifact set for OSGi deployment -->
<plugin>
<groupId>
org.codehaus.mojo
</groupId>
<artifactId>
build-helper-maven-plugin
</artifactId>
<executions>
<execution>
<phase>
package
</phase>
<goals>
<goal>
attach-artifact
</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>
src/main/cfg/edu.amherst.acdc.apix.cfg
</file>
<type>
cfg
</type>
<classifier>
configuration
</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>
org.apache.felix
</groupId>
<artifactId>
maven-bundle-plugin
</artifactId>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-failsafe-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
acrepo-apix/src/main/cfg/edu.amherst.acdc.apix.cfg
0 → 100644
View file @
12dd05b2
rest.prefix=/apix
rest.port=13431
# Fedora Repository location
fcrepo.baseUrl=localhost:8080/fcrepo/rest
fcrepo.authUsername=
fcrepo.authPassword=
apix.prefix=svc:
acrepo-apix/src/main/java/edu/amherst/acdc/apix/ApixHeaders.java
0 → 100644
View file @
12dd05b2
/**
* Copyright 2015 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.apix
;
/**
* @author acoburn
*/
public
final
class
ApixHeaders
{
public
static
final
String
SERVICE_NAME
=
"CamelApixService"
;
public
static
final
String
SERVICE_REGISTRATION
=
"CamelApixRegistration"
;
public
static
final
String
SERVICE_ENDPOINT
=
"CamelApixEndpoint"
;
private
ApixHeaders
()
{
// prevent instantiation
}
}
acrepo-apix/src/main/java/edu/amherst/acdc/apix/ApixRouter.java
0 → 100644
View file @
12dd05b2
/**
* Copyright 2015 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.apix
;
import
static
edu
.
amherst
.
acdc
.
apix
.
ApixHeaders
.
SERVICE_ENDPOINT
;
import
static
edu
.
amherst
.
acdc
.
apix
.
ApixHeaders
.
SERVICE_NAME
;
import
static
edu
.
amherst
.
acdc
.
apix
.
ApixHeaders
.
SERVICE_REGISTRATION
;
import
static
org
.
apache
.
camel
.
Exchange
.
HTTP_PATH
;
import
static
org
.
apache
.
camel
.
Exchange
.
HTTP_RESPONSE_CODE
;
import
static
org
.
apache
.
camel
.
Exchange
.
HTTP_URI
;
import
static
org
.
fcrepo
.
camel
.
FcrepoHeaders
.
FCREPO_IDENTIFIER
;
import
org.apache.camel.builder.RouteBuilder
;
/**
* A content router for API-X.
*
* @author Aaron Coburn
*/
public
class
ApixRouter
extends
RouteBuilder
{
/**
* Configure the message route workflow.
*/
public
void
configure
()
throws
Exception
{
/**
* REST routing
*/
rest
(
"{{rest.prefix}}/registry"
)
.
get
(
"/"
).
to
(
"direct:list"
)
.
get
(
"/{service}"
).
to
(
"direct:describe"
)
.
put
(
"/{service}"
).
to
(
"direct:register"
)
.
delete
(
"/{service}"
).
to
(
"direct:unregister"
);
rest
(
"{{rest.prefix}}/bind"
)
.
get
(
"/"
).
to
(
"direct:bind"
);
from
(
"direct:bind"
)
.
routeId
(
"ApixBind"
)
.
setBody
().
constant
(
"Here are the binders..."
);
from
(
"jetty:http://localhost:{{rest.port}}{{rest.prefix}}/rest?matchOnUriPrefix=true"
)
.
routeId
(
"ApixRest"
)
.
routeDescription
(
"The main API-X client REST interface"
)
.
process
(
new
ServiceProcessor
())
.
choice
()
.
when
(
header
(
SERVICE_NAME
).
isEqualTo
(
"list"
))
.
setHeader
(
"Link"
).
simple
(
"<${headers.CamelApixRegistration}>; rel=\"describedby\""
)
.
to
(
"direct:list"
)
.
when
(
header
(
SERVICE_NAME
).
isNotNull
())
.
to
(
"direct:route-service"
)
.
otherwise
()
.
to
(
"http4://{{fcrepo.baseUrl}}?authUsername={{fcrepo.authUsername}}"
+
"&authPassword={{fcrepo.authPassword}}&bridgeEndpoint=true"
)
.
setHeader
(
"Link"
)
.
simple
(
"<${headers.CamelHttpUri}/{{apix.prefix}}list>; rel=\"service\""
);
from
(
"direct:route-service"
)
.
routeId
(
"ApixServiceRouter"
)
.
routeDescription
(
"Route API-X service requests"
)
.
to
(
"direct:check-registered"
)
.
choice
()
.
when
(
header
(
SERVICE_ENDPOINT
).
isNotNull
())
.
to
(
"direct:proxy-to-endpoint"
)
.
when
(
header
(
SERVICE_REGISTRATION
).
isNotNull
())
.
to
(
"direct:unavailable"
)
.
otherwise
()
.
to
(
"direct:not-found"
);
from
(
"direct:unavailable"
)
.
routeId
(
"ApixServiceUnavailable"
)
.
routeDescription
(
"Respond appropriately if the service is unavailable"
)
.
setHeader
(
"Link"
).
simple
(
"<${headers.CamelApixRegistration}>; rel=\"describedby\""
)
.
setHeader
(
HTTP_RESPONSE_CODE
).
constant
(
503
)
.
transform
().
constant
(
"Service Unavailable"
);
from
(
"direct:not-found"
)
.
routeId
(
"ApixServiceNotFound"
)
.
routeDescription
(
"Respond appropriately if the service has not been registered"
)
.
setHeader
(
HTTP_RESPONSE_CODE
).
constant
(
404
)
.
transform
().
constant
(
"Not Found"
);
from
(
"direct:proxy-to-endpoint"
)
.
routeId
(
"ApixServiceProxy"
)
.
routeDescription
(
"Proxy requests to the remote service"
)
.
setHeader
(
"Link"
).
simple
(
"<${headers.CamelApixRegistration}>; rel=\"describedby\""
)
.
setHeader
(
HTTP_URI
).
header
(
SERVICE_ENDPOINT
)
.
setHeader
(
HTTP_PATH
).
header
(
FCREPO_IDENTIFIER
)
.
to
(
"http4://localhost"
);
}
}
acrepo-apix/src/main/java/edu/amherst/acdc/apix/ServiceProcessor.java
0 → 100644
View file @
12dd05b2
/**
* Copyright 2015 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.apix
;
import
static
edu
.
amherst
.
acdc
.
apix
.
ApixHeaders
.
SERVICE_NAME
;
import
static
org
.
apache
.
camel
.
Exchange
.
HTTP_PATH
;
import
static
org
.
fcrepo
.
camel
.
FcrepoHeaders
.
FCREPO_IDENTIFIER
;
import
java.util.Optional
;
import
org.apache.camel.Exchange
;
import
org.apache.camel.Message
;
import
org.apache.camel.Processor
;
import
org.apache.camel.RuntimeCamelException
;
/**
* A Processor to extract the API-X Service name.
*
* @author Aaron Coburn
*/
public
class
ServiceProcessor
implements
Processor
{
/**
* Process an exchange
*
* @param exchange The exchange
*/
public
void
process
(
final
Exchange
exchange
)
throws
Exception
{
final
Message
in
=
exchange
.
getIn
();
final
String
svcPrefix
;
final
String
restPrefix
;
try
{
svcPrefix
=
exchange
.
getContext
().
resolvePropertyPlaceholders
(
"{{apix.prefix}}"
);
restPrefix
=
exchange
.
getContext
().
resolvePropertyPlaceholders
(
"{{rest.prefix}}"
);
}
catch
(
final
Exception
ex
)
{
throw
new
RuntimeCamelException
(
"Could not resolve property placeholders"
,
ex
);
}
final
String
path
=
in
.
getHeader
(
HTTP_PATH
,
String
.
class
);
final
Optional
<
String
>
svcName
=
getServiceName
(
path
,
svcPrefix
);
svcName
.
ifPresent
(
x
->
in
.
setHeader
(
SERVICE_NAME
,
x
));
in
.
setHeader
(
FCREPO_IDENTIFIER
,
path
.
replaceAll
(
"/"
+
svcPrefix
+
".*$"
,
""
));
}
private
Optional
<
String
>
getServiceName
(
final
String
path
,
final
String
prefix
)
{
final
int
idx1
=
path
.
lastIndexOf
(
"/"
+
prefix
);
final
int
idx2
=
path
.
lastIndexOf
(
"/"
);
if
(
idx1
==
idx2
)
{
final
String
svcName
=
path
.
substring
(
path
.
lastIndexOf
(
"/"
)
+
prefix
.
length
()
+
1
);
return
Optional
.
of
(
svcName
);
}
return
Optional
.
empty
();
}
}
acrepo-apix/src/main/resources/OSGI-INF/blueprint/blueprint.xml
0 → 100644
View file @
12dd05b2
<?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.apix"
update-strategy=
"reload"
>
<cm:default-properties>
<cm:property
name=
"rest.prefix"
value=
"/apix"
/>
<cm:property
name=
"rest.port"
value=
"13431"
/>
<cm:property
name=
"fcrepo.baseUrl"
value=
"localhost:8080/fcrepo/rest"
/>
<cm:property
name=
"fcrepo.authUsername"
value=
""
/>
<cm:property
name=
"fcrepo.authPassword"
value=
""
/>
<cm:property
name=
"apix.prefix"
value=
"svc:"
/>
</cm:default-properties>
</cm:property-placeholder>
<reference
id=
"registryService"
interface=
"edu.amherst.acdc.registry.api.RegistryService"
filter=
"(osgi.jndi.service.name=registry)"
/>
<camelContext
xmlns=
"http://camel.apache.org/schema/blueprint"
>
<package>
edu.amherst.acdc.apix
</package>
<restConfiguration
component=
"jetty"
host=
"localhost"
port=
"{{rest.port}}"
/>
<route
id=
"ApixUnregister"
>
<from
uri=
"direct:unregister"
/>
<choice>
<when>
<method
ref=
"registryService"
method=
"remove(${header.service})"
/>
<setBody>
<constant>
OK
</constant>
</setBody>
</when>
<otherwise>
<setBody>
<constant>
Not OK
</constant>
</setBody>
</otherwise>
</choice>
</route>
<route
id=
"ApixRegister"
>
<from
uri=
"direct:register"
/>
<convertBodyTo
type=
"java.lang.String"
/>
<choice>
<when>
<method
ref=
"registryService"
method=
"put(${header.service}, ${body})"
/>
<setBody>
<constant>
OK
</constant>
</setBody>
</when>
<otherwise>
<setBody>
<constant>
Not OK
</constant>
</setBody>
</otherwise>
</choice>
</route>
<route
id=
"ApixDescribe"
>
<from
uri=
"direct:describe"
/>
<setBody>
<method
ref=
"registryService"
method=
"get(${header.service})"
/>
</setBody>
</route>
<route
id=
"ApixCheckRegistered"
>
<from
uri=
"direct:check-registered"
/>
<filter>
<method
ref=
"registryService"
method=
"exists(${header.CamelApixService})"
/>
<setHeader
headerName=
"CamelApixRegistration"
>
<simple>
{{rest.prefix}}/registry/${header.CamelApixService}
</simple>
</setHeader>
<setHeader
headerName=
"CamelApixEndpoint"
>
<constant>
http://localhost:8282/jsonld
</constant>
</setHeader>
</filter>
</route>
<route
id=
"ApixServiceList"
>
<from
uri=
"direct:list"
/>
<setHeader
headerName=
"Link"
>
<method
ref=
"registryService"
method=
"list()"
/>
</setHeader>
<setBody>
<constant>
These are the services...
</constant>
</setBody>
</route>
</camelContext>
</blueprint>
acrepo-apix/src/main/resources/logback.xml
0 → 100644
View file @
12dd05b2
<?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.idiomatic"
additivity=
"false"
level=
"INFO"
>
<appender-ref
ref=
"STDOUT"
/>
</logger>
<logger
name=
"org.apache.camel"
additivity=
"false"
level=
"DEBUG"
>
<appender-ref
ref=
"STDOUT"
/>
</logger>
<logger
name=
"org.fcrepo.camel"
additivity=
"false"
level=
"INFO"
>
<appender-ref
ref=
"STDOUT"
/>
</logger>
<root
additivity=
"false"
level=
"WARN"
>
<appender-ref
ref=
"STDOUT"
/>
</root>
</configuration>
acrepo-karaf/src/main/resources/features.xml
View file @
12dd05b2
...
...
@@ -116,4 +116,26 @@
<configfile
finalname=
"/etc/edu.amherst.acdc.template.mustache.cfg"
>
mvn:edu.amherst.acdc/acrepo-template-mustache/${project.version}/cfg/configuration
</configfile>
</feature>
<feature
name=
"acrepo-registry-api"
version=
"${project.version}"
resolver=
"(orb)"
start-level=
"50"
>
<details>
Installs the registry API
</details>
<bundle>
mvn:edu.amherst.acdc/acrepo-registry-api/${project.version}
</bundle>
</feature>
<feature
name=
"acrepo-registry-memory"
version=
"${project.version}"
resolver=
"(orb)"
start-level=
"50"
>
<details>
Installs an in-memory implementation of the API-X registry API
</details>
<feature
version=
"${project.version}"
>
acrepo-registry-api
</feature>
<bundle>
mvn:edu.amherst.acdc/acrepo-registry-memory/${project.version}
</bundle>
</feature>
<feature
name=
"acrepo-apix"
version=
"${project.version}"
resolver=
"(orb)"
start-level=
"50"
>
<details>
Installs the API-X Framework
</details>
<feature
version=
"${project.version}"
>
acrepo-registry-api
</feature>
<bundle>
mvn:edu.amherst.acdc/acrepo-apix/${project.version}
</bundle>
</feature>
</features>
acrepo-registry-api/README.md
0 → 100644
View file @
12dd05b2
API-X Service Registry API
==========================
This is the Service Registry API for the API-X Framework.
A registry implementation needs only to implement this API.
Building
--------
To build this project use
mvn install
Deploying in OSGi
-----------------
Each of these 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-registry-api
Or by copying any of the compiled bundles into
`$KARAF_HOME/deploy`
.
acrepo-registry-api/pom.xml
0 → 100644
View file @
12dd05b2
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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.