Dependency Injection

Content Forewords Constructor injection Containers and context Scopes and application control Forewords: One goal of foundationj is to facilitate the development of a modular application which supports collaborative development. We expect such an application to be composed of multiple modules contributed by developers who know little about each other. This implies that the following requirements need to be incorporated into the architecture of the application: The system must be easy to understand : Only public abstract layers should be visible and specific implementations should be well encapsulated into modular components. »

Set up a Plugin Development Environment

Contents Introduction Set up your environment Import the archetype catalog Create a project using the archetype Enable annotation processing Understanding the project’s structure src/main/java src/main/resources src/test/java target/ pom.xml Where Next? Introduction This tutorial explains how to setup your environment in order to create a new plugin for PickCells and provides explanations about the diverse components of a plugin project. Before you start, please note that there exists a number of projects which are maintained independently because of the third-party libraries they depend on. »

How to Contribute

Anyone can contribute to, regardless of their skills, as there are many ways to contribute. This page summarises what contributions can be made, how they are made, any conditions the contributions must conform to, and the process followed by the project in accepting the contribution. All contributions are under the terms of the Contributor Licence Agreement and Certificate of Origin detailed below. Contents Information on how PickCells has helped you Tutorials on using or developing PickCells for research Requests for changes to the web site or documentation Changes to the web site or documentation Blog posts Feature requests New features Bug reports Bug fixes Plugins Contributors Contributor Licence-Agreement-and-Certificate-of-Origin Information on how PickCells has helped you Share your experiences on the PickCells Colony forum. »

Accessing and querying the database

This page describes how to access and query the graph database from java code. The DataAccess interface The QueryFactory The DataAccess interface DataAccess is the entry point to the graph database. It provides access to 3 main database functions: The QueryFactory which enables you to perform read, write and update operations The MetaModel which provides information about the data graph currently stored in the database. For more information, see the MetaModel page Registration of listeners to obtain database change notifications. »

Collaborative Development

Contents Introduction What is core and non-core development? Open, by default Source code Coding standards Reuse not repetition Managing multiple developers and version control Build artefacts Release versioning Testing Continuous integration Issue tracker PickCells Colony forum Introduction In this page we document our approach to developing PickCells. What is core and non-core development? Core development of PickCells relates to development of the PickCells architecture and framework, developments which are held within the PickCells source code repositories and are distributed as part of PickCells. »

Set up a PickCells development environment

This page describes how to install third-party tools and packages required to develop PickCells and how to get the PickCells source code. Contents Terminology Install prerequisites Install Java 1.8 JDK Install OpenJDK Install Oracle Java Install Maven 3.3+ Install GraphViz Install Git Create and register an SSH key with Framagit Get PickCells repositories Fork a PickCells repository Clone a PickCells repository Build PickCells release Build PickCells release from the repositories Terminology In the following, when we say “open a bash window”: »

The MetaModel

This page describes the concept of the MetaModel. Although not mandatory, having read the [Accessing and querying the database] documentation may help understand this section. What is the MetaModel? (A brief summary with diagrams of what the MetaModel is conceptually) What is it useful for? (Provides examples of what the MetaModel can be used for with code examples) What is the MetaModel? PickCells organises the data in the form of a property graph (see also ‘PickCells Concepts’). »

Create Plugins

In this section you will find documentation on how to create your own plugin for PickCells. If you are new to creating plugins for PickCells, you should also look at how to set up a plugin development environment. There are several plugin types that you can create. The flowchart below is designed to help you find the type that you need. mermaid.initialize({startOnLoad:true}); graph LR db_access(I need access to the database ? »

Day-to-day development tasks

This page describes how to perform day-to-day development tasks on the PickCells source code. Contents Using Maven Getting started Common Maven commands Validate project Compile source code Compile and run tests Package project Verify project Install into local repository Deploy package to remote repository Remove build artifacts View Maven dependencies Create a test report Create JavaDoc Check coding style using Checkstyle Check code coverage using Jacoco Check test coverage using Cobertura Using continuous integration Run test coverage using Cobertura Browse PickCells JavaDoc Using Git and Framagit About the forking workflow Get PickCells repositories Use branches to develop features, enhancements or bug fixes Use merge requests to request PickCells maintainers review and merge your branch Using Maven and the Git JGit-Flow Plugin Install Manage a release Manage a hotfix Work on a feature branch Example Find out more Using Maven Getting started See Maven in 5 Minutes. »


This page describes how to troubleshoot day-to-day development tasks on the PickCells source code. Contents Failed to deploy artifacts… Not authorized Could not transfer artifact… Not authorized Could not resolve dependencies for project no suitable method found for collect Failed to deploy artifacts… Not authorized If, when running maven deploy, you get an error matching the following pattern: [ERROR] Failed to execute goal ...:deploy (default-deploy) on project . »