io.inkstand:inkstand-core

The core package contains the configuration API, a launcher class and CDI extensions that are required for configuration and auto-discovery. The CDI extensions can be used without the full inkstand bundle by just using this core package.

License

License

GroupId

GroupId

io.inkstand
ArtifactId

ArtifactId

inkstand-core
Last Version

Last Version

0.1.3
Release Date

Release Date

Type

Type

jar
Description

Description

io.inkstand:inkstand-core
The core package contains the configuration API, a launcher class and CDI extensions that are required for configuration and auto-discovery. The CDI extensions can be used without the full inkstand bundle by just using this core package.

Download inkstand-core

How to add to project

<!-- https://jarcasting.com/artifacts/io.inkstand/inkstand-core/ -->
<dependency>
    <groupId>io.inkstand</groupId>
    <artifactId>inkstand-core</artifactId>
    <version>0.1.3</version>
</dependency>
// https://jarcasting.com/artifacts/io.inkstand/inkstand-core/
implementation 'io.inkstand:inkstand-core:0.1.3'
// https://jarcasting.com/artifacts/io.inkstand/inkstand-core/
implementation ("io.inkstand:inkstand-core:0.1.3")
'io.inkstand:inkstand-core:jar:0.1.3'
<dependency org="io.inkstand" name="inkstand-core" rev="0.1.3">
  <artifact name="inkstand-core" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.inkstand', module='inkstand-core', version='0.1.3')
)
libraryDependencies += "io.inkstand" % "inkstand-core" % "0.1.3"
[io.inkstand/inkstand-core "0.1.3"]

Dependencies

compile (3)

Group / Artifact Type Version
org.jboss.weld.se : weld-se jar 2.2.6.Final
javax : javaee-api jar 7.0
org.slf4j : slf4j-api jar 1.7.6

provided (1)

Group / Artifact Type Version
org.jacoco : jacoco-maven-plugin jar 0.7.2.201409121644

test (5)

Group / Artifact Type Version
org.apache.logging.log4j : log4j-slf4j-impl jar 2.0-rc1
org.apache.logging.log4j : log4j-api jar 2.0-rc1
org.apache.logging.log4j : log4j-core jar 2.0-rc1
junit : junit jar 4.11
org.mockito : mockito-all jar 1.9.5

Project Modules

There are no modules declared in this project.

Build Status

Inkstand

Inkstand, a lightweight integration of RestEasy, Undertow, and Weld, based on Hammock by John Ament.

In comparison to the original hammock project, Inkstand provides the following features:

  • default configuration, overridable with properties or JVM parameters
  • separation of webserver and application configuration
  • automatic Resource and Provider discovery per default
  • exchangeable / injectable HTTP container
  • exchangeable Resteasy deployment (CDI extension)
  • injectable JCR support (Jackrabbit 2)
  • global alternative support (CDI extension)
  • NO support for management resources

Configuration

Beyond Hammock, Inkstand provides a default configuration for the HTTP server (localhost:80) which can easily be overriden - either by providing JVM parameters -Dinkstand.http.port= -Dinkstand.http.listenaddress= or by providing a properties file by implementing org.apache.deltaspike.core.api.config.PropertyFileConfig containing the very same parameters. Alternatively, the parameters can be set by implementing the WebServerConfiguration interface.

Resources and Providers

Per default, inkstand scans the classpath for Path resources an Providers which are automatically published as REST services. The default contextRoot can be overridden by defining the property inkstand.rest.contextRoot (see above) or by implementing and injecting an implementation of ApplicationConfiguration.

HTTP Container and Rest Implementation

Inkstand allows to replace the http container (default: undertow) by providing an Alternative an the Rest implementation (default: Resteasy without security).

JCR support

For application integration, Inkstand provides injectable access to a Jackrabbit based JCR repository (OAK is planned).

Global Alternatives

One of the more important feature is the CDI Extention GlobalAlternativeSelector. The selector allows to define an alternative class or stereotype in an application jar's beans.xml, which are injectable as alternative in other bean deployment archive as long as they are annotation with @Priority. The default CDI 1.1 spec only supports the @Priority annotation, but does not allow to select a global alternative in a beans.xml. The feature was required for JCR Repository providers to be injected in REST service JARs, that are defined in another jar than the actual application. Example:

  • jar1: inkstand-jcr-jackrabbit (@Produces Repository)
  • jar2: my-rest-services (@Inject Repository)
  • jar3: standalone (depends: inkstand, inkstand-jcr-jackrabbit, my-rest-services, defines global alternative in beans.xml)
io.inkstand

Inkstand

Versions

Version
0.1.3
0.1.2
0.1.1