ow2-chameleon / fuchsia

Following the evolution law
Apache License 2.0
21 stars 15 forks source link

 Fuchsia

If you want to have more information about fuchsia, visit our website.

 Source Organization

This folder contains the code source of the OW2 Chameleon Fuchsia project.

 License

Fuchsia is licensed under the Apache License 2.0.

iPOJO usage conventions

Fuchsia rely heavily on iPojo. Each Fuchsia component is an iPOJO component.

Here a few rules to be consistent :

 Module hierarchy and naming conventions !Draft!

Bases modules

A base is a module which manage dependencies for a protocol. It uses Maven DependencyManagement but can also contains sub-modules which are providing shared bundles in between the fuchsia components of the protocol.

Directory :

bases/{protocol}

Maven configuration :

<artifactId>org.ow2.chameleon.fuchsia.base.{protocol}</artifactId>
<groupId>org.ow2.chameleon.fuchsia.base</groupId>
<name>OW2 Chameleon - Fuchsia Base {Protocol}</name>

<parent>
    <artifactId>fuchsia-bases</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.bases</groupId>
    <version>{}</version>
    <relativePath>../pom.xml</relativePath>
</parent>

Base sub-modules

Directory :

bases/{protocol}/{sub-module_name}

Maven configuration :

<artifactId>org.ow2.chameleon.fuchsia.base.{protocol}.{sub-module_name}</artifactId>
<groupId>org.ow2.chameleon.fuchsia.base.{protocol}</groupId>
<name>OW2 Chameleon - Fuchsia Base {Protocol} : {sub-module_name}</name>

<parent>
    <artifactId>org.ow2.chameleon.fuchsia.base.{protocol}</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.base</groupId>
    <version>{}</version>
    <relativePath>../pom.xml</relativePath>
</parent>

Importers modules

Importer implementation 

Directory :

importers/{protocol}

Maven configuration :

<artifactId>org.ow2.chameleon.fuchsia.importer.{protocol}</artifactId>
<groupId>org.ow2.chameleon.fuchsia.importer</groupId>
<name>OW2 Chameleon - Fuchsia Importer {Protocol}</name>

<parent>
    <artifactId>org.ow2.chameleon.fuchsia.base.{protocol}</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.base</groupId>
    <version>{}</version>
    <relativePath>../../bases/{protocol}/pom.xml</relativePath>
</parent>
<!-- OR -->
<parent>
    <artifactId>fuchsia-importers</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.importer</groupId>
    <version>{}</version>
    <relativePath>../pom.xml</relativePath>
</parent>

Importer integration tests

Directory :

importers/{protocol}-it

Maven configuration :

<artifactId>org.ow2.chameleon.fuchsia.importer.{protocol}-it</artifactId>
<groupId>org.ow2.chameleon.fuchsia.importer</groupId>
<name>OW2 Chameleon - Fuchsia Importer {Protocol} [IntegrationTests]</name>

<parent>
    <artifactId>org.ow2.chameleon.fuchsia.base.{protocol}</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.base</groupId>
    <version>{}</version>
    <relativePath>../../bases/{protocol}/pom.xml</relativePath>
</parent>
<!-- OR -->
<parent>
    <artifactId>fuchsia-importers</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.importer</groupId>
    <version>{}</version>
    <relativePath>../pom.xml</relativePath>
</parent>

Discoveries modules

Discovery implementation 

Directory :

discoveries/{protocol}

Maven configuration :

<artifactId>org.ow2.chameleon.fuchsia.discovery.{protocol}</artifactId>
<groupId>org.ow2.chameleon.fuchsia.discovery</groupId>
<name>OW2 Chameleon - Fuchsia Discovery {Protocol}</name>

<parent>
    <artifactId>org.ow2.chameleon.fuchsia.base.{protocol}</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.base</groupId>
    <version>{}</version>
    <relativePath>../../bases/{protocol}/pom.xml</relativePath>
</parent>
<!-- OR -->
<parent>
    <artifactId>fuchsia-discoveries</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.discovery</groupId>
    <version>{}</version>
    <relativePath>../pom.xml</relativePath>
</parent>

Discovery integration tests

Directory :

discoveries/{protocol}-it

Maven configuration :

<artifactId>org.ow2.chameleon.fuchsia.discovery.{protocol}-it</artifactId>
<groupId>org.ow2.chameleon.fuchsia.discovery</groupId>
<name>OW2 Chameleon - Fuchsia Discovery {Protocol} [IntegrationTests]</name>

<parent>
    <artifactId>org.ow2.chameleon.fuchsia.base.{protocol}</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.base</groupId>
    <version>{}</version>
    <relativePath>../../bases/{protocol}/pom.xml</relativePath>
</parent>
<!-- OR -->
<parent>
    <artifactId>fuchsia-discoveries</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.discovery</groupId>
    <version>{}</version>
    <relativePath>../pom.xml</relativePath>
</parent>

Examples modules

TODO

Tools modules

Tool implementation

Directory :

tools/{tool}

Maven configuration :

<artifactId>fuchsia-{tool}</artifactId>
<groupId>org.ow2.chameleon.fuchsia.tools</groupId>
<name>OW2 Chameleon - Fuchsia {Tool}</name>

<parent>
    <artifactId>fuchsia-tools</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.tools</groupId>
    <version>{}</version>
    <relativePath>../pom.xml</relativePath>
</parent>

Tool integration tests

Directory :

tools/{tool}-it

Maven configuration :

<artifactId>fuchsia-{tool}-it</artifactId>
<groupId>org.ow2.chameleon.fuchsia.tools</groupId>
<name>OW2 Chameleon - Fuchsia {Tool} [IntegrationTests]</name>

<parent>
    <artifactId>fuchsia-tools</artifactId>
    <groupId>org.ow2.chameleon.fuchsia.tools</groupId>
    <version>{}</version>
    <relativePath>../pom.xml</relativePath>
</parent>

 Package naming convention

The package name for the classes of a module must be equal to the artifactId of the module (i.e. for a discovery : "org.ow2.chameleon.fuchsia.discovery.{protocol}").

The tools are the exception, the package name for a tools must be : "org.ow2.chameleon.fuchsia.tools.{tool}".

 Commits convention