The basic modules
CastellCoreApi
The basic framework api interfaces that used to connect the different subprojects and to support a clean api with extensible implementations to back them.
[CastellCoreBase]
The basic frameworks implementations of the interfaces defined in CastellCoreApi. With this basic implementations the most of the core is backed to work.
[CastellCoreInterconnect]
The framework for connecting several instances of a server (cluster) or different implementations of servers (e.g. login, game, world) to exchange data. It's based on a nio-implementation of the RMI protocol (library called Simon) and so it follows and extends the the interface driven design of the framework. Server as well as the client have their interfaces defined which are shared between the servers to be remotely invoked as they were local object instances.
[CastellCoreMaven]
The maven compile plugin and archtype projects to support building new CastellCore server projects.
[CastellCoreObjectQuery]
The JoSQL backed implementation of an SQL like syntax to select over object-trees. This is the implementation of the @Query interface.
[CastellCoreParent]
Maven parent project to automatically build the whole instance of projects by a single "mvn install". It compiles the projects in correct order to suppress the need of handling dependencies.
[CastellCoreSecurity]
The @PermittedRoles and @DeniedRoles annotations are defined and handled by this package. It gives you automatic role based security features.
[CastellCoreStateMachine]
A simple but powerful annotation driven state machine to handle state based handling of permissions and business workflow.
[CastellCoreTesting]
The JUnit 4 extending testing framework to build unittests on top of CastellCore. Additional features like autowiring require the modules to be activated.
[CastellCoreUtils]
Basic utility classes to handle a lot of standarized stuff like bean serialization and deserialization.
[CastellCoreValidator]
The basic annotations for validate inputs against a regex schema are given and handled here (e.g. @Regex, @Required and @Default).
[CastellCoreWindowing]
This will be a AWT like windowing framework to manage any kind of windows ingame on clientside (like npc's messagewindows) by using dispatcher classes to connect client packets to the oo-driven window modell.
[CastellCoreWire]
The implementation of the so-called autowiring mechanism which is basically a kind of automatic dependency injection. It automatically sets a specified implementation against an interface by annotate it with @AutoWired. A similar way is available to use session variables with @SessionWired. For both implementations there are several scopes available in which the instances are living.
The module matrix
| Parent |
Api |
Base |
Utils |
Testing |
Interconnect |
ObjectQuery |
Security |
StateMachine |
Validator |
Windowing |
Wire |
Maven |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Api |
|||||||||||||
| Base |
|||||||||||||
| Utils |
|||||||||||||
| Testing |
|||||||||||||
| Interconnect |
|||||||||||||
| ObjectQuery |
|||||||||||||
| Security |
|||||||||||||
| StateMachine |
|||||||||||||
| Validator |
|||||||||||||
| Windowing |
|||||||||||||
| Wire |
|||||||||||||
| Maven |
