36
demoiselle framework 2.0

Demoiselle 2.0 no JavaOne Brasil 2010

Embed Size (px)

DESCRIPTION

Slides que apresentei no primeiro JavaOne Brasil em 2010 sobre a nova versão 2.0 do framework Demoiselle. Para mais detalhes, acesse: http://cleversonsacramento.wordpress.com/2010/12/14/o-primeiro-javaone-no-brasil/

Citation preview

Page 1: Demoiselle 2.0 no JavaOne Brasil 2010

demoiselleframework

2.0

Page 2: Demoiselle 2.0 no JavaOne Brasil 2010
Page 3: Demoiselle 2.0 no JavaOne Brasil 2010
Page 4: Demoiselle 2.0 no JavaOne Brasil 2010

zyc/

cleversonsacramento. . com

robsonximenes/

robsonximenes@ .com

Page 5: Demoiselle 2.0 no JavaOne Brasil 2010

2.0

Page 6: Demoiselle 2.0 no JavaOne Brasil 2010

mar20080.1

dez20081.0

abr20091.0.3

nov20091.1.0

ago20101.1.5

dez20102.0.0

dez20101.2.0

dez20102.0.0-B2

Page 7: Demoiselle 2.0 no JavaOne Brasil 2010
Page 8: Demoiselle 2.0 no JavaOne Brasil 2010

JSF?

Hibernate?

AspectJ?

Eclipse?

JBoss?

Page 9: Demoiselle 2.0 no JavaOne Brasil 2010

Seam?Guice?Spring?

Page 10: Demoiselle 2.0 no JavaOne Brasil 2010
Page 11: Demoiselle 2.0 no JavaOne Brasil 2010

contextdependency

injection

and

jsr 299

Page 12: Demoiselle 2.0 no JavaOne Brasil 2010
Page 13: Demoiselle 2.0 no JavaOne Brasil 2010

c o r eextensions

components

jpa jsf swing

Page 14: Demoiselle 2.0 no JavaOne Brasil 2010

br.gov.frameworkdemoisellestereotype

message

annotation

exceptiontemplate

transaction

util

Page 15: Demoiselle 2.0 no JavaOne Brasil 2010

br.gov.frameworkdemoiselle.internalbootstrap

factoryproxy

interceptor

impl

Page 16: Demoiselle 2.0 no JavaOne Brasil 2010
Page 17: Demoiselle 2.0 no JavaOne Brasil 2010

class B { @Inject A a;}

class A {}

Page 18: Demoiselle 2.0 no JavaOne Brasil 2010

class B {

@Inject FacesContext context;

}

Page 19: Demoiselle 2.0 no JavaOne Brasil 2010

class FacesContextFactory {

@Producespublic FacesContext create() {

return FacesContext.getCurrentInstance();}

}

Page 20: Demoiselle 2.0 no JavaOne Brasil 2010

class LoggerFactory {

@Producespublic Logger create(InjectionPoint ip) {

return create(ip.getMember().getDeclaringClass());}

private Logger create(Class type) {Logger logger = LoggerFactory.getLogger(type);return new LoggerProxy(logger);

}}

Page 21: Demoiselle 2.0 no JavaOne Brasil 2010

class A {

@Inject EntityManager em;

public inserir (String s) {...}}

class B {

@Inject A a;

@Transactional public carga () { a.inserir(“1”); a.inserir(“2”); }}

Page 22: Demoiselle 2.0 no JavaOne Brasil 2010

@InterceptorBinding@Target({METHOD, TYPE})public @interface Transactional { }

Page 23: Demoiselle 2.0 no JavaOne Brasil 2010

@Interceptor @Transactionalclass TransactionInterceptor {

...

@AroundInvokepublic Object manage(InvocationContext ctx) {

initiate(); // begin

Object result = null;try {

result = ctx.proceed();

} catch (Exception cause) {handleException(cause); // marca para rollbackthrow cause;

} finally {complete(); // commit ou rollback

}

return result;}

}

Page 24: Demoiselle 2.0 no JavaOne Brasil 2010

# demoiselle.properties

frameworkdemoiselle.transaction.class=

br.gov.frameworkdemoiselle.transaction.NoTransaction*br.gov.frameworkdemoiselle.transaction.JPATransactionbr.gov.frameworkdemoiselle.transaction.JTATransaction

seupacote.SuaEstrategiaDeTransacao

Page 25: Demoiselle 2.0 no JavaOne Brasil 2010

class B {

@Startup @Transactional

public carga () {…}

@Shutdown @Transactional

public descarga () {…}}

Page 26: Demoiselle 2.0 no JavaOne Brasil 2010

@PersistenceControllerclass A {

@Inject EntityManager em;

}

@BusinessControllerclass B {

@Inject A a;

}

Page 27: Demoiselle 2.0 no JavaOne Brasil 2010

@Controller@Stereotype@Target(TYPE)public @interface PersistenceController { }

@Controller@Stereotype@Target(TYPE)public @interface BusinessController { }

Page 28: Demoiselle 2.0 no JavaOne Brasil 2010
Page 29: Demoiselle 2.0 no JavaOne Brasil 2010

arquitetura cebola

Page 30: Demoiselle 2.0 no JavaOne Brasil 2010

@Controller@Stereotype@Target(TYPE)public @interface PersistenceController { }

@Controller@Stereotype@Target(TYPE)public @interface BusinessController { }

Page 31: Demoiselle 2.0 no JavaOne Brasil 2010

@BusinessControllerclass B {

@Startup @Transactional

public carga () {…}

@ExceptionHandler public trata (CrecaException e) {…}}

Page 32: Demoiselle 2.0 no JavaOne Brasil 2010

@Interceptor @Controllerclass TransactionInterceptor {

...

@AroundInvokepublic Object manage(InvocationContext ctx) {

Object result = null;try {

result = ctx.proceed();

} catch (Exception cause) {

if (!handleException(cause)) { // delega aos tratadoresthrow cause;

}}

return result;}

}

Page 33: Demoiselle 2.0 no JavaOne Brasil 2010

http://demoiselle.svn.sf.net/svnroot/demoiselle/framework

/branches/demoiselle-2.0

Page 34: Demoiselle 2.0 no JavaOne Brasil 2010

forum.frameworkdemoiselle.gov.br

Page 35: Demoiselle 2.0 no JavaOne Brasil 2010

demoiselle-proposal

Page 36: Demoiselle 2.0 no JavaOne Brasil 2010