incubator-syncope-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Francesco Chicchiriccò <ilgro...@apache.org>
Subject Overall architecture and build: a quick intro
Date Sun, 19 Feb 2012 12:31:01 GMT
Hi all,
here is a brief introduction about Syncope architecture and the way the 
build is organized.
Let's assume you've checkout /trunk.

+ pom.xml
This is the root pom.xml: when launching mvn from here, only client, 
core, console and parent modules will be involved in the build, by default.

+ parent/
This module actually contains only the main pom.xml, defining 
dependencies, plugins, repositories and so on for all other modules: 
also projects generated using archetype (see below) will have this as 
parent pom, thus having one place where dependencies are defined.
This pom currently extends Sonatype OSS pom: AFAIK we must change this 
with Apache parent pom.

+ quality/
This includes custom rulesets for PMD, Findbugs and Checkstyle that will 
be enforced by all other modules.

+ hibernate-enhancer/
Syncope empowers OpenJPA as JPA implementation: however, when deploying 
to JBoss AS (see below), Hibernate is embedded in the container; some 
additional tweaks are needed in order to make everything work properly, 
in this case.

+ archetype/
Maven archertype for generating Syncope projects: see [1] for more details.

+ build-tools/
This is actually a webapp that, upon startup, will launch an ApacheDS 
instance and an H2/TCP db instance. This will provide two external 
resources (LDAP and JDBC) for running Syncope core integration tests.

+ client/
All classes (mainly transfer objects) needed when communicating with 
Syncope core RESTful services.

+ core/
A Spring-powered RESTful server, managing entity persistence through a 
JPA 2.0 DAO layer. More information can be found at [2].
Besides unit tests, integration tests are run against a Tomcat 7 
instance with 3 webapps deployed: build-tools, wssample (reference 
implementation of ConnId's SOAP server) and Syncope core itself.
In this way, three kind of external resources are available for tests: 
JDBC, LDAP and SOAP. Internal persistence is based on another 
(in-memory) H2 db instance.
However, more build profiles are provided here:
  - dev: Tomcat 7 + in-memory H2 (same configurations for integration 
tests); useful for developing and debugging
  - jrebel: like as dev, but with JRebel reloading features enabled
  - notification-test: for testing e-mail notification
  - postgres-it: run integration tests by replacing in-memory H2 
instance with a PostgreSQL instance
  - mysql-it: run integration tests by replacing in-memory H2 instance 
with a MySQL instance
  - oracle-it: run integration tests by replacing in-memory H2 instance 
with an Oracle instance
  - glassfish-it: run integration tests by replacing Tomcat 7 with 
Glassfish 3.1.1
  - jboss-it: run integration tests by replacing Tomcat 7 with JBoss AS 7.1

+ console/
A Wicket-based webapp acting as a REST client for core.
Some additional profiles are provided here as well:
  - dev: build the same environment as for core integration tests; 
useful for developing and debugging
  - jrebel: like as dev, but with JRebel reloading features enabled
  - selenium: launch Selenium-based integration tests

NOTE: all additional profiles for core and console assume that you've 
already built and installed everything from toplevel, i.e. "mvn -P all 
clean install".

Hope this helps in getting started with Syncope development.
Regards.

[1] 
http://wiki.syncope-idm.org/index.php?title=GettingStarted/CreateAProject
[2] http://wiki.syncope-idm.org/index.php?title=Architecture

-- 
Francesco Chicchiriccò

Apache Cocoon Committer and PMC Member
http://people.apache.org/~ilgrosso/


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message