IMPLEMENTED |
Status: IMPLEMENTED
In issue SLING-83 Betrand proposes to improve our project layout to make it easier to developers to find their way through the projects making up Sling. On this page, I would like to propose a new structure for further discussion.
org.apache.sling
/
and dashes -
replaced by dots .
. See below for exceptions.The final artifact name - pom.build.finalName
- is the Maven 2 default consisting of the artifactId and the version. The Bundle-SymbolicName
is defined in the parent pom as being just the artifactId.
Exceptions to artifactId rule
sling
sling
folder is just the project name without the parent folder sling
, e.g core
for the Sling core project.maven
folder follow the naming convention for Maven 2 plugins.Each project consists of a series of Java Packages. To prevent collision between projects with respect to Java Packages, each project has a root Java Package which is the fully qualified Maven 2 project name consisting of the artifactId such that the Bundle symbolic name and the root Java Package are the same.
Status |
Who |
Folder |
Artifact ID |
Description |
---|---|---|---|---|
OK |
fmeschbe |
|
|
Parent Project |
OK |
fmeschbe |
|
|
Core API |
The Sling parent project and the Sling API projects are the only remaining projects at the top level of the repository.
Status |
Who |
Folder |
Artifact ID |
Description |
---|---|---|---|---|
OK |
fmeschbe |
|
|
JSON support from json.org |
OK |
fmeschbe |
|
|
Generalized MIME type mapping service |
These projects in the commons
folder contain common functionality used by multiple other projects and may be either referred to by way of OSGi package import or by inlining the respective packages/classes into the bundle.
Status |
Who |
Folder |
Artifact ID |
Description |
---|---|---|---|---|
OK |
fmeschbe |
|
|
Bundle-ized JCR/Jackrabbit API + Session Pooling |
OK |
fmeschbe |
|
|
JCR based ResourceResolver, Mapping (formerly the |
OK |
fmeschbe |
|
|
JCR based ClassLoader |
OK |
fmeschbe |
|
|
Access existing JCR Repository |
OK |
fmeschbe |
|
|
Embedded JCR Repository |
OK |
fmeschbe |
|
|
Jackrabbit Query Extensions |
The projects in the jcr
folder are related to JCR.
Status |
Who |
Folder |
Artifact ID |
Description |
---|---|---|---|---|
OK |
fmeschbe |
|
|
Command line Sling launcher (embedded Jetty) (formerly the |
OK |
fmeschbe |
|
|
Sling launcher Web Application (formerly the |
Launchers for Sling are located in the launcher
folder. Two projects currently exist. The app
project which launches Sling from the command line and the webapp
project which is a web application which launches Sling as a web application in a servlet container.
Status |
Who |
Folder |
Artifact ID |
Description |
---|---|---|---|---|
OK |
cziegeler |
|
|
JavaDoc Tag support for JCR OCM Mapping |
OK |
fmeschbe |
|
|
JSP Compiler for bundled JSPs |
OK |
cziegeler |
|
|
Various helper goals |
The maven
folder contains Maven 2 plugin projects which simplify development of Sling itself as well as applications extending Sling.
Status |
Who |
Folder |
Artifact ID |
Description |
---|---|---|---|---|
OK |
fmeschbe |
|
– |
Container for microsling |
– |
– |
|
|
microsling Core Implementation |
– |
– |
|
|
microsling Web Application |
The microsling
folder contains the microsling projects which is a very simple implementation of the Sling API. microsling is only statically extensible (as opposed to Sling, which is extensible dynamically at run time).
Status |
Who |
Folder |
Artifact ID |
Description |
---|---|---|---|---|
OK |
fmeschbe |
|
|
LogService impl and Log API provider |
OK |
fmeschbe |
|
|
Assembly packaging (this project will be removed in the future because it provides a subset of the functionality of the new Deployment Package Service contained in the OSGi Compendium Service Specification R 4.1) |
OK |
fmeschbe |
|
|
OSGi Bundle Repository server |
OK |
fmeschbe |
|
|
Web Based OSGi management console |
The projects in the osgi
folder are used to extend the functionality of an OSGi framework. These projects are used to implement running Sling instances but do not directly influence Sling itself.
Status |
Who |
Folder |
Artifact ID |
Description |
---|---|---|---|---|
In Progress |
fmeschbe |
|
|
ScriptResolver implementation and Engine support |
OK |
fmeschbe |
|
|
JSP (includes Jasper) |
OK |
cziegeler/fmeschbe |
|
|
JSP TagLib for Sling |
OK |
cziegeler |
|
|
JavaScript using Rhino (includes ESP support) |
OK |
cziegeler |
|
|
Velocity Templating |
OK |
cziegeler |
|
|
Freemarker Templating |
OK |
cziegeler |
|
|
Ruby Templating |
– |
– |
|
|
more scripting engines, e.g. JSR-223 |
One of the most notable extensions of the Sling API compared to the Component API is the better definition of implementing scripting. Formerly scripting was supported as just a special way of a Component requiring more or less complex setup in the repository. The projects in the scripting
folder implement the new SlingScriptingEngine
interface for various script languages. The resolver
project implements the SlingScriptResolver
interface for Sling.
Status |
Who |
Folder |
Artifact ID |
Description |
---|---|---|---|---|
OK |
fmeschbe |
|
|
The Core Sling engine. See note below. |
– |
– |
|
|
Output caching of response data (currently empty) |
OK |
cziegeler |
|
|
Distributed Eventing using JCR |
OK |
fmeschbe |
|
|
Sample Servlets and JSPs |
OK |
cziegeler |
|
|
Quartz-based Scheduler for Sling |
OK |
fmeschbe |
|
|
Standard Servlets, e.g. |
The projects in the sling
folder are the core Sling API implementation projects. In addition added value projects such as scheduling and distributed eventing projects are also located in this folder.
Note on sling/core
: The core project is currently almost a complete implementation of the Sling framework. Only the JCR Repository access and Object Content Mapping functionality is not part of the core. This project should be broken apart such that only the bare minimum of the functionality is contained. This is to be further analyzed.
component-api
project defining the old Component API is replaced by the new api
project defining the Sling API. Therefore the component-api
project is removed.jasper-sling
is not a standalone project any more. It has been integrated into the project implementing the SlingScriptingEngine
for JSP script/jsp
.