Project

General

Profile

1 19721 mateusz.fe
icm-iis-primer
2
==============
3
4
The aim of this project is to provide a reusability method for Oozie workflows,
5
scripts and other file types by utilising import links.
6
7
The Primer traverses a specified Java package, looking for import links. When
8
found, it resolves them by creating new elements in the containing directory,
9
in accordance with the import link. The primed package is stored in a new
10
directory.
11
12
## Import links ##
13
Import links are defined as files following the specified format. They are
14
always named `import.txt`.
15
16
### Exemplary import link
17
18
    ## This is a classpath-based import file (this header is required)
19
    from_jar classpath pl/edu/icm/coansys
20
    workflow coansys pl.edu.icm.coansys.citations:inner-workflow:1.2-SNAPSHOT
21
22
The file starts with a compulsory header. Then, every line consists of the
23
following fields separated by whitespaces:
24
25
 - destination - the name that will be given to the imported element
26
 - import type - the type of imported element
27
 - imported element description - additional information indentifying the
28
   imported element (import type-specific)
29
30
The import file presented above will create a directory `from_jar` and
31
copy all the contents of `pl/edu/icm/coansys` into it. Additionally, it will
32
unpack `inner-workflow` into `workflow` directory.
33
34
### Supported import types ###
35
36
#### Classpath element ####
37
The element will be imported from the classpath (it can be either a file or
38
directory).
39
40
 - **Import type:** `classpath`
41
 - **Element description:** fully qualified resource name, using forward slashes
42
   as separators.
43
44
#### CoAnSys Oozie Workflow Package ####
45
A CoAnSys Oozie Workflow Package will be imported and unpacked.
46
47
 - **Import type:** `coansys`
48
 - **Element description:** Maven-style package description, i.e.
49
   `groupId:artifactId:version`
50
51
## Execution ##
52
Primer is executed from a Maven plugin implemented in
53
`icm-iis-primer-maven-plugin` project. Plugin usage is presented in
54
`icm-iis-primer-example` project.
55
56
## For developer ##
57
The main element of Primer is `Loader` class. It is a close relative of
58
Java `ClassLoader`. It should be provided with `ClassProviders`, which tell
59
where it should look for resources. By default, `JarClassProvider` and
60
`FileSystemClassProvider` are supplied. `Loader.prime` method executes the
61
priming process.
62
63
Another important class is `Resolver`. It is used when resolving import links.
64
It groups various `ResolvingServices`. Each import type should be assigned a
65
`ResolvingService`. Currently implemented `ResolvingServices` are
66
`ClasspathResolvingService` and `CoansysResolvingService`.