= External Examples and Templates

:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

A number of DeltaSpike examples and templates have been developed external to the DeltaSpike project. These extend the DeltaSpike resources from which you can see DeltaSpike in action. Brief information is given here about the examples and templates, with details of where they can be obtained from.

== Books (free/online)

**CDI@Work (chapter about DeltaSpike):** http://cdiatwork.irian.at/

CDI@Work is a free online book about CDI as well as Apache DeltaSpike.
It covers basic information about CDI and DeltaSpike up to more advanced use-cases.
An example for the latter is a type-safe configuration (interface-only)
which allows you to resolve the configured values even from dynamic config-sources like a database and
store them in a custom Config-Scoped cache which can be refreshed via CDI-events or a CRON based task or manually via JMX.

The https://github.com/CDIatWork/[GitHub account] contains repositories e.g. for the sample application called IdeaFork.
The commit-history follows the steps in the book. In most cases every commit translates to one step in the book.
(Chapters are released once they are ready.)

== Presentations

=== Apache DeltaSpike: The CDI toolbox
CDI portable extensions are one of greatest features of Java EE allowing the platform to be extended in a clean and portable way. But allowing extension is just part of the story. CDI opens the door to a whole new eco-system for Java EE, but it’s not the role of the specification to create these extensions. 
Apache DeltaSpike is the project that leads this brand new eco-system by providing useful extension modules for CDI applications as well as tools to ease the creation of new ones.
In this session, we’ll start by presenting the DeltaSpike toolbox and show how it helps you to develop for CDI. Then we’ll describe the major extensions included in Deltaspike, including  'configuration', 'scheduling' and 'data'.


**Slides:** http://www.slideshare.net/antoinesd/apache-deltaspike-the-cdi-toolbox

**Video:** https://www.youtube.com/watch?v=QbNdFvNPvVU

**Event:** http://www.meetup.com/JBoss-User-Group-Worldwide/events/218755922/

=== DeltaSpike: CDI extensions of the world, unite!
Several popular CDI extension frameworks like Seam 3 and MyFaces CODI have faded out over the years. But not to worry - their functionality is taken over by projects like Picketlink, Agorava, and mainly DeltaSpike, a new Apache project that wants CDI extension authors to unite in an effort to make the life of web application developers easier. Even without a five year plan! 

**Slides:** http://devconf.cz/filebrowser/download/414

**Video:** https://www.youtube.com/watch?v=2FUNpzd1Nb8

=== Apache DeltaSpike
Presentation about Apache DeltaSpike

**Slides:** http://www.slideshare.net/os890/apache-deltaspike

=== MyFaces CODI and JBoss Seam3 become Apache DeltaSpike
These slides show how to use type-safe mechanisms provided by MyFaces CODI for developing JSF applications which are more type-safe and easier to maintain as well as common pitfalls. Beyond that there is an basic overview of Apache DeltaSpike.

**Slides:** http://www.slideshare.net/os890/myfaces-codi-and-jboss-seam3-become-apache-deltaspike

=== Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
This talk is a detailed case study about the migration of a JSF-based web application from Spring 3 to Java EE 7 and CDI. It is presented at the JavaOne 2014 conference. 

**Slides:** http://www.slideshare.net/MarioLeanderReimer/migrating-a-jsfbased-web-application-from-spring-3-to-java-ee-7-and-cdi

**Video:** https://parleys.com/play/543faae5e4b06e1184ae423a/about

=== [de] Flexibilitaet mit CDI und Apache DeltaSpike
Presentation about DeltaSpike

**Slides:** http://www.slideshare.net/os890/flexibilitaet-mit-cdi-und-apache-delta-spike

=== [pt-BR] Deixando de refazer a roda com Apache DeltaSpike
CDI e DeltaSpike presentation in TDC - The Developers Conference 2015

**Video and Slides:** http://www.infoq.com/br/presentations/deixando-de-refazer-a-roda-com-apache-deltaspike

=== Apache Deltaspike the CDI Toolbox (Java One 2015)

**Slides:** https://pt.slideshare.net/antoinesd/apache-deltaspike-the-cdi-toolbox-java-one-2015

=== JavaOne 2015 - Rafael Benevides - Apache DeltaSpike, the CDI Toolbox

**Video:** https://www.youtube.com/watch?v=3McmEi3cs_s

=== Simplificando la persistencia de datos con Apache DeltaSpike Data (Java User Group de Nicaragua)

**Slide:** https://speakerdeck.com/danieldiasjava/simplificando-la-persistencia-de-datos-con-apache-deltaspike-data

**Video:** https://youtu.be/djM51tlJuLs

**Example:** https://github.com/Daniel-Dos/danieldiasjava-palestras/tree/master/JUGNicaragua

== Examples

=== IdeaFork (full)
This example is a Java EE6 application which illustrates several features of CDI and DeltaSpike.
It covers features of all modules provided by DeltaSpike.
There are profiles to create web-archives for Apache TomEE, JBoss AS7 (and WildFly) and Oracle GlassFish3.
The complexity is mixed. There are some simple examples as well as some more advanced cases.
The repository contains every step (one commit is one step) described in the online-book.

**Source code:** https://github.com/CDIatWork/IdeaFork

=== IdeaFork (lite)
This example is based on IdeaFork (full),
but without some indirections which were needed to demonstrate different features of CDI and DeltaSpike (in a simple Application).

**Source code (beta - work in progress):** https://github.com/CDIatWork/IdeaForkLite_Beta


=== Confess 2012 Workshop Demo
This example was prepared for the Confess workshop and demonstrates how to use DeltaSpike instead of and side-by-side with MyFaces CODI. The secured web application demonstrates presenting users with differentiating content based on their account status.

**Source code:** https://github.com/confess/confess2012_deltaspike

=== Fullstack EE6+ with DeltaSpike
Simple example based on Java EE6+ and DeltaSpike (tested with EE6 and EE7).

**Source code:** https://github.com/os890/ee6-ds-demo

=== Fullstack CODI to DeltaSpike
This pair of examples show how to achieve the most important MyFaces CODI features with DeltaSpike and also how to migrate a CODI project to DeltaSpike. The examples are basic, compacting core CODI features into just a few JSF pages, and are intended for deployment with TomEE. 

**Source code:** https://github.com/os890/tomee_mf_stack_001

* CODI version in master branch
* Migrated DeltaSpike version in codi2ds branch

=== JBoss Quickstarts 
The JBoss quickstarts are small working examples that demonstrate recommended practices for specific Java EE technology use cases. A subset of these quickstarts are dedicated to demonstrating DeltaSpike, including custom authorization restrictions using annotations, constructing and modifying beans, extending the influence of CDI using BeanManager, and deactivating DeltaSpike features.

**Source code:** https://github.com/jboss-developer/jboss-wfk-quickstarts

=== DeltaSpike Examples
A collection of example applications demonstrating the features of the DeltaSpike project.

**Source code:** https://github.com/rsmeral/deltaspike-examples

=== [pt-BR] DeltaSpike microblog example
Application that shows a microblog using DeltaSpike

**Source code:** https://github.com/rafabene/demo_deltaspike

=== Why you should consider using Apache DeltaSpike
Blog post demonstrating 5 features of Apache DeltaSpike

**Blog post:** http://www.thedevpiece.com/why-you-should-consider-using-apache-deltaspike/

=== [pt-BR] Rest Application with DeltaSpike Data
Simple example based on MicroProfile(OpenApi,Payara-Micro) and DeltaSpike-data

**Source code:** https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/ProjetoDeltaSpike

=== [pt-BR] CRUD-Deltaspike-CDI-Angular
Simple CRUD example based on SparkJava and DeltaSpike-data

**Source code:** https://github.com/SouJava-Rio/soujava-rio-labs/tree/master/microframeworks/spark-samples/CRUD-Deltaspike-CDI-Angular

=== [pt-BR] CRUD-Deltaspike-CDI-Angular
Simple CRUD example based on JavaLin and DeltaSpike-data

**Source code:** https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/Projeto-Cloud/javalin

=== [pt-BR] jax-rs-sample-cdi-deltaspike-data
Simple CRUD example based on jax-rs(resteasy) and DeltaSpike-data for Tomcat

**Source code:** https://github.com/SouJava-Rio/soujava-rio-labs/tree/master/jax-rs-samples/Jax-rs-deltaspike-angular2-4/jax-rs-sample-cdi-deltaspike-data

=== [spanish] Oracle Helidon with DeltaSpike-Data
Simple CRUD example based on Helidon and DeltaSpike-data

**Source code:** https://github.com/Daniel-Dos/danieldiasjava-palestras/tree/master/JUGNicaragua

=== [pt-BR] Eclipse vertx with DeltaSpike-Data
Simple example based on vertx and DeltaSpike-data

**Source code:** https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/Projeto-Cloud/vertx

=== [pt-BR] Eclipse vertx with DeltaSpike-Data
Simple example based on vertx and DeltaSpike-data

**Source code:** https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/Projeto-Cloud/vertx

=== [pt-BR] Javalin with DeltaSpike-Data
Simple example based on Javalin and DeltaSpike-data

**Source code:** https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/Projeto-Cloud/javalin

== Magazines

=== [pt-BR] Brazilian Java Magazine
Apache DeltaSpike: CDI Programável

**Online article:** http://www.devmedia.com.br/apache-deltaspike-cdi-programavel/31982

== Interviews

=== [pt-BR] InfoQ Brazil
Apache DeltaSpike, a API de extensions do CDI

**Online interview:** http://www.infoq.com/br/interviews/entrevista-rafael-benevides-delta-spike

=== [pt-BR] InfoQ Brazil
O que é DeltaSpike?

**Online interview:** https://www.youtube.com/watch?v=jtCuxfPxDE8

== Templates
=== Java SE + CDI + DS
**Source code:** https://github.com/os890/javase-cdi-ds-project-template

=== JSF + CDI + DS (Servlet-Container)
**Source code:** https://github.com/os890/javaweb-cdi-ds-project-template
 
=== EJB + CDI + DS (Module)
**Source code:** https://github.com/os890/javaee_cdi_ejb_ds_project_template

=== JSF + EJB + CDI + DS (EE-Server)
**Source code:** https://github.com/os890/javaee_jsf_cdi_ejb_ds_project_template

=== JSF + JPA + CDI + DS-Data (diff. EE-Server-Profiles)
**Source code:** https://github.com/os890/javaee_jsf_cdi_jpa_data_ds_project_template

=== JSF + JPA + CDI + DS-Data (Apache TomEE)
**Source code:** https://github.com/os890/ds-data-project-template

=== JSF + CDI + DS (Apache TomEE)
**Source code:** https://github.com/os890/tomee-ds-project-template

== Add-ons

=== lbitonti@github
This GitHub account contains e.g. a DBUnit Add-on for the Test-Control-Module of DeltaSpike.

**Source code:** https://github.com/lbitonti/deltaspike-dbunit

=== os890@github
This GitHub account contains several DeltaSpike Add-ons e.g. to integrate CDI with other frameworks.

**Source code:** https://github.com/os890/

=== rmannibucau@github
This GitHub account contains several DeltaSpike Add-ons e.g. an integration with the TomEE PasswordCipher API.

**Source code:** https://github.com/rmannibucau/

