Reflection Project Framework

RPF is a java framework that utilizes tools such as Guice and org.reflections to create a productive development environment for programmers of any project type, by providing a plethora of libraries and bindings for your favourite APIs, automatically registering commands, managers, etc, and more.

Guice

org.reflections

YourKit

Get Started

RPF has extensive documentation available on the wiki, and of course there's the javadocs. Getting started is as simple as adding the repository and dependency to your build tool of choice, or if you're old fashioned, you can find binaries on jenkins.

Gradle:

repositories {
  mavenCentral()
  maven {
    url = "https://repo.piggypiglet.me/repository/maven-releases/"
  }
}

dependencies {
  compile "me.piggypiglet:framework-core:+"
}

Maven:

<repositories>
  <repository>
    <id>piggypiglet</id>
    <name>piggypiglet</name>
    <url>https://repo.piggypiglet.me/repository/maven-releases/</url>
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>me.piggypiglet</groupId>
    <artifactId>framework-core</artifactId>
    <version>LATEST</version>
  </dependency>
</dependencies>

Features

By far the most important feature of RPF, is it's registerable system, a flow chart of which can be seen on the right, or under if you're on a small screen.

To put it in words, the startup registerable system allows you to make guice bindings, and them immediately depend on them in the next registerables. A more in depth explanation with examples can be seen by clicking on the guice logo.

Another major selling point of RPF is it's automatic org.reflections integration for major components, such as commands, file types, loggers, and anything else that would normally have to be manually registered. Bindings also extend this functionality significantly. In layman's terms, normally when you create a new class, you'd have to reference it somewhere, so your application actually knows to execute it. Not with RPF, with the power of org.reflections' classpath scanning, the framework automatically registers anything you'd typically be doing manually. With exception to registerables of course, as they usually require a specific startup order. More info on this can be found by clicking on the reflections logo.

A full feature list can be found here.