From 8d9216eb587d94a36ebdbe3d4d87c48445d923d7 Mon Sep 17 00:00:00 2001 From: Danilo Costa Viana Date: Fri, 15 Apr 2016 14:56:01 -0300 Subject: [PATCH] Removendo produtores que conflitam com aqueles encontrados no CDI 1.1 --- archetype/jsf-jpa/src/main/resources/archetype-resources/pom.xml | 4 ++++ impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java | 40 +++++++++++++++------------------------- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CustomContextBootstrap.java | 4 ---- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/TemporaryViewContextImpl.java | 75 --------------------------------------------------------------------------- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java | 5 ++++- impl/core/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ViewScoped.java | 64 ---------------------------------------------------------------- impl/core/src/main/java/br/gov/frameworkdemoiselle/stereotype/ViewController.java | 72 ------------------------------------------------------------------------ impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java | 25 +++++++++++++++++-------- impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java | 5 +++-- impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/context/FacesViewBeanStore.java | 1 + impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ViewScoped.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/stereotype/ViewController.java | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpServletRequestProducer.java | 4 +++- impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpServletResponseProducer.java | 4 +++- impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpSessionProducer.java | 4 +++- 15 files changed, 184 insertions(+), 254 deletions(-) delete mode 100644 impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/TemporaryViewContextImpl.java delete mode 100644 impl/core/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ViewScoped.java delete mode 100644 impl/core/src/main/java/br/gov/frameworkdemoiselle/stereotype/ViewController.java create mode 100644 impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ViewScoped.java create mode 100644 impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/stereotype/ViewController.java diff --git a/archetype/jsf-jpa/src/main/resources/archetype-resources/pom.xml b/archetype/jsf-jpa/src/main/resources/archetype-resources/pom.xml index b1a2fd3..f023719 100755 --- a/archetype/jsf-jpa/src/main/resources/archetype-resources/pom.xml +++ b/archetype/jsf-jpa/src/main/resources/archetype-resources/pom.xml @@ -52,4 +52,8 @@ test + + + ${artifactId} + diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java index 6c1b57d..62f6dc9 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java @@ -36,33 +36,23 @@ */ package br.gov.frameworkdemoiselle.internal.bootstrap; -import java.lang.annotation.Annotation; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.logging.Logger; - -import javax.enterprise.event.Observes; -import javax.enterprise.inject.spi.AnnotatedMethod; -import javax.enterprise.inject.spi.AnnotatedType; -import javax.enterprise.inject.spi.Extension; -import javax.enterprise.inject.spi.ProcessAnnotatedType; - import br.gov.frameworkdemoiselle.DemoiselleException; -import br.gov.frameworkdemoiselle.context.ConversationContext; -import br.gov.frameworkdemoiselle.context.CustomContext; -import br.gov.frameworkdemoiselle.context.RequestContext; -import br.gov.frameworkdemoiselle.context.SessionContext; -import br.gov.frameworkdemoiselle.context.ViewContext; -import br.gov.frameworkdemoiselle.internal.context.TemporaryViewContextImpl; +import br.gov.frameworkdemoiselle.context.*; import br.gov.frameworkdemoiselle.internal.implementation.AnnotatedMethodProcessor; import br.gov.frameworkdemoiselle.util.Beans; import br.gov.frameworkdemoiselle.util.NameQualifier; import br.gov.frameworkdemoiselle.util.Reflections; import br.gov.frameworkdemoiselle.util.ResourceBundle; +import javax.enterprise.event.Observes; +import javax.enterprise.inject.spi.AnnotatedMethod; +import javax.enterprise.inject.spi.AnnotatedType; +import javax.enterprise.inject.spi.Extension; +import javax.enterprise.inject.spi.ProcessAnnotatedType; +import java.lang.annotation.Annotation; +import java.util.*; +import java.util.logging.Logger; + public abstract class AbstractLifecycleBootstrap implements Extension { private Class annotationClass; @@ -149,7 +139,7 @@ public abstract class AbstractLifecycleBootstrap implement if (!registered) { RequestContext requestContext = Beans.getReference(RequestContext.class); SessionContext sessionContext = Beans.getReference(SessionContext.class); - ViewContext viewContext = Beans.getReference(ViewContext.class); + // ViewContext viewContext = Beans.getReference(ViewContext.class); ConversationContext conversationContext = Beans.getReference(ConversationContext.class); if (requestContext != null) { @@ -166,7 +156,7 @@ public abstract class AbstractLifecycleBootstrap implement // Contexto temporário de visão precisa de tratamento especial // para evitar conflito com o contexto presente na extensão demoiselle-jsf - if (viewContext != null) { + /*if (viewContext != null) { if (TemporaryViewContextImpl.class.isInstance(viewContext)) { startedContextHere.put("view", viewContext.activate()); } else { @@ -185,7 +175,7 @@ public abstract class AbstractLifecycleBootstrap implement } } } - } + }*/ registered = true; } @@ -212,7 +202,7 @@ public abstract class AbstractLifecycleBootstrap implement // Contexto temporário de visão precisa de tratamento especial // para evitar conflito com o contexto presente na extensão demoiselle-jsf - if (viewContext != null) { + /*if (viewContext != null) { if (TemporaryViewContextImpl.class.isInstance(viewContext) && startedContextHere.get("view")) { viewContext.deactivate(); @@ -221,7 +211,7 @@ public abstract class AbstractLifecycleBootstrap implement backupContext = null; } } - } + }*/ } } } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CustomContextBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CustomContextBootstrap.java index 1043176..09da659 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CustomContextBootstrap.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CustomContextBootstrap.java @@ -15,7 +15,6 @@ import br.gov.frameworkdemoiselle.internal.context.StaticContextImpl; import br.gov.frameworkdemoiselle.internal.context.TemporaryConversationContextImpl; import br.gov.frameworkdemoiselle.internal.context.TemporaryRequestContextImpl; import br.gov.frameworkdemoiselle.internal.context.TemporarySessionContextImpl; -import br.gov.frameworkdemoiselle.internal.context.TemporaryViewContextImpl; import br.gov.frameworkdemoiselle.lifecycle.AfterShutdownProccess; /** @@ -54,9 +53,6 @@ public class CustomContextBootstrap implements Extension{ ctx = new StaticContextImpl(); contexts.add(ctx); - ctx = new TemporaryViewContextImpl(); - contexts.add(ctx); - ctx = new TemporaryConversationContextImpl(); contexts.add(ctx); diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/TemporaryViewContextImpl.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/TemporaryViewContextImpl.java deleted file mode 100644 index cbeb6e5..0000000 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/TemporaryViewContextImpl.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Demoiselle Framework - * Copyright (C) 2010 SERPRO - * ---------------------------------------------------------------------------- - * This file is part of Demoiselle Framework. - * - * Demoiselle Framework is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License version 3 - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License version 3 - * along with this program; if not, see - * or write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301, USA. - * ---------------------------------------------------------------------------- - * Este arquivo é parte do Framework Demoiselle. - * - * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou - * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação - * do Software Livre (FSF). - * - * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA - * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou - * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português - * para maiores detalhes. - * - * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título - * "LICENCA.txt", junto com esse programa. Se não, acesse - * ou escreva para a Fundação do Software Livre (FSF) Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. - */ -/* - * Demoiselle Framework Copyright (c) 2010 Serpro and other contributors as indicated by the @author tag. See the - * copyright.txt in the distribution for a full listing of contributors. Demoiselle Framework is an open source Java EE - * library designed to accelerate the development of transactional database Web applications. Demoiselle Framework is - * released under the terms of the LGPL license 3 http://www.gnu.org/licenses/lgpl.html LGPL License 3 This file is part - * of Demoiselle Framework. Demoiselle Framework is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License 3 as published by the Free Software Foundation. Demoiselle Framework - * is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You - * should have received a copy of the GNU Lesser General Public License along with Demoiselle Framework. If not, see - * . - */ -package br.gov.frameworkdemoiselle.internal.context; - -import javax.enterprise.inject.Alternative; - -import br.gov.frameworkdemoiselle.annotation.Priority; -import br.gov.frameworkdemoiselle.context.ViewContext; -import br.gov.frameworkdemoiselle.lifecycle.ViewScoped; - -/** - * - * Temporary context meant to replace the view context on environments - * that doesn't provide a default context for the view scope. Such - * environments include desktop applications or remote JMX calls, that by CDI - * specification doesn't provide scopes and only have the application scope active. - * - * @author serpro - * - */ -@Priority(Priority.MIN_PRIORITY) -@Alternative -public class TemporaryViewContextImpl extends AbstractThreadLocalContext implements ViewContext { - - public TemporaryViewContextImpl() { - super(ViewScoped.class); - } - -} diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java index fa28534..44586b2 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java @@ -73,7 +73,10 @@ public class ResourceBundleProducer implements Serializable { @Name("") @Produces public ResourceBundle createNamed(InjectionPoint ip) { - String baseName = ip.getAnnotated().getAnnotation(Name.class).value(); + String baseName = ""; + if (ip != null) { + baseName = ip.getAnnotated().getAnnotation(Name.class).value(); + } return new ResourceBundle(baseName, Beans.getReference(Locale.class)); } } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ViewScoped.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ViewScoped.java deleted file mode 100644 index 41eb8ee..0000000 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ViewScoped.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Demoiselle Framework - * Copyright (C) 2010 SERPRO - * ---------------------------------------------------------------------------- - * This file is part of Demoiselle Framework. - * - * Demoiselle Framework is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License version 3 - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License version 3 - * along with this program; if not, see - * or write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301, USA. - * ---------------------------------------------------------------------------- - * Este arquivo é parte do Framework Demoiselle. - * - * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou - * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação - * do Software Livre (FSF). - * - * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA - * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou - * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português - * para maiores detalhes. - * - * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título - * "LICENCA.txt", junto com esse programa. Se não, acesse - * ou escreva para a Fundação do Software Livre (FSF) Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. - */ -package br.gov.frameworkdemoiselle.lifecycle; - -import static java.lang.annotation.ElementType.FIELD; -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.ElementType.TYPE; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -import javax.enterprise.context.NormalScope; - -/** - * This scope maintains the context for viewed page; when the viewed page change, the data will be lost. - * - * @author SERPRO - * - * @deprecated - */ -@Inherited -@Target({ METHOD, TYPE, FIELD }) -@Retention(RUNTIME) -@NormalScope(passivating = true) -@Deprecated -public @interface ViewScoped { - -} diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/stereotype/ViewController.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/stereotype/ViewController.java deleted file mode 100644 index 0e233db..0000000 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/stereotype/ViewController.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Demoiselle Framework - * Copyright (C) 2010 SERPRO - * ---------------------------------------------------------------------------- - * This file is part of Demoiselle Framework. - * - * Demoiselle Framework is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License version 3 - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License version 3 - * along with this program; if not, see - * or write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301, USA. - * ---------------------------------------------------------------------------- - * Este arquivo é parte do Framework Demoiselle. - * - * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou - * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação - * do Software Livre (FSF). - * - * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA - * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou - * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português - * para maiores detalhes. - * - * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título - * "LICENCA.txt", junto com esse programa. Se não, acesse - * ou escreva para a Fundação do Software Livre (FSF) Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. - */ -package br.gov.frameworkdemoiselle.stereotype; - -import static java.lang.annotation.ElementType.TYPE; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -import javax.enterprise.inject.Stereotype; -import javax.inject.Named; - -import br.gov.frameworkdemoiselle.lifecycle.ViewScoped; - -/** - * Identifies a view controller class. A view controller class is intend to respond to events initiated in the - * application front-view. It should have attributes and methods intented to populate the view. - *

- * A View Controller is: - *

    - *
  • defined when annotated with {@code @ViewController}
  • - *
  • automatically injected whenever {@code @Inject} is used
  • - *
- * - * @author SERPRO - * @see @Controller - */ -@Named -@Controller -@Stereotype -@ViewScoped -@Inherited -@Target(TYPE) -@Retention(RUNTIME) -public @interface ViewController { -} diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java index 62180d0..8f22be7 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java @@ -46,10 +46,8 @@ import java.util.Set; import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.inject.AmbiguousResolutionException; -import javax.enterprise.inject.spi.Annotated; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; -import javax.enterprise.inject.spi.InjectionPoint; +import javax.enterprise.inject.Instance; +import javax.enterprise.inject.spi.*; import br.gov.frameworkdemoiselle.DemoiselleException; @@ -118,6 +116,16 @@ public final class Beans { * if no bean are avaliable to be injected for the given Class and qualifiers. */ public static T getReference(final Class beanClass, Annotation... qualifiers) { + + Instance selectedInstance = CDI.current().select(beanClass, qualifiers); + if (selectedInstance != null) + { + return selectedInstance.get(); + } + + return null; + + /* T instance; try { @@ -145,7 +153,7 @@ public final class Beans { throw new DemoiselleException(message, cause); } - return instance; + return instance;*/ } @SuppressWarnings("unchecked") @@ -158,15 +166,16 @@ public final class Beans { Bean bean = beans.iterator().next(); CreationalContext context = getBeanManager().createCreationalContext(bean); Type beanType = beanClass == null ? bean.getBeanClass() : beanClass; - InjectionPoint injectionPoint; + /*InjectionPoint injectionPoint; if (qualifiers == null) { injectionPoint = new ProgramaticInjectionPoint(bean, beanType); } else { injectionPoint = new ProgramaticInjectionPoint(bean, beanType, qualifiers); - } + }*/ - return (T) getBeanManager().getInjectableReference(injectionPoint, context); + //return (T) getBeanManager().getInjectableReference(injectionPoint, context); + return (T) getBeanManager().getReference(bean, beanType, context); } /* diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java index bede515..963191a 100644 --- a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java +++ b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java @@ -46,9 +46,10 @@ import br.gov.frameworkdemoiselle.internal.context.FacesViewContextImpl; import br.gov.frameworkdemoiselle.lifecycle.AfterShutdownProccess; import br.gov.frameworkdemoiselle.util.Beans; +@Deprecated public class JsfBootstrap implements Extension { - private FacesViewContextImpl context; + /*private FacesViewContextImpl context; private boolean contextActivatedHere; @@ -74,5 +75,5 @@ public class JsfBootstrap implements Extension { if (contextActivatedHere) { context.deactivate(); } - } + }*/ } diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/context/FacesViewBeanStore.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/context/FacesViewBeanStore.java index adde14b..d40112e 100644 --- a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/context/FacesViewBeanStore.java +++ b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/context/FacesViewBeanStore.java @@ -17,6 +17,7 @@ import br.gov.frameworkdemoiselle.util.ResourceBundle; * * @author SERPRO */ +@Deprecated public class FacesViewBeanStore implements Serializable { private static final long serialVersionUID = -8265458933971929432L; diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ViewScoped.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ViewScoped.java new file mode 100644 index 0000000..d398f1d --- /dev/null +++ b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ViewScoped.java @@ -0,0 +1,59 @@ +/* + * Demoiselle Framework + * Copyright (C) 2010 SERPRO + * ---------------------------------------------------------------------------- + * This file is part of Demoiselle Framework. + * + * Demoiselle Framework is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License version 3 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License version 3 + * along with this program; if not, see + * or write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301, USA. + * ---------------------------------------------------------------------------- + * Este arquivo é parte do Framework Demoiselle. + * + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação + * do Software Livre (FSF). + * + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português + * para maiores detalhes. + * + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título + * "LICENCA.txt", junto com esse programa. Se não, acesse + * ou escreva para a Fundação do Software Livre (FSF) Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. + */ +package br.gov.frameworkdemoiselle.lifecycle; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.enterprise.context.NormalScope; + +/** + * This scope maintains the context for viewed page; when the viewed page change, the data will be lost. + * + * @author SERPRO + * + * @deprecated Use {@link javax.faces.view.ViewScoped} instead. + */ +@javax.faces.view.ViewScoped +@Deprecated +public @interface ViewScoped {} diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/stereotype/ViewController.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/stereotype/ViewController.java new file mode 100644 index 0000000..0e233db --- /dev/null +++ b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/stereotype/ViewController.java @@ -0,0 +1,72 @@ +/* + * Demoiselle Framework + * Copyright (C) 2010 SERPRO + * ---------------------------------------------------------------------------- + * This file is part of Demoiselle Framework. + * + * Demoiselle Framework is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License version 3 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License version 3 + * along with this program; if not, see + * or write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301, USA. + * ---------------------------------------------------------------------------- + * Este arquivo é parte do Framework Demoiselle. + * + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação + * do Software Livre (FSF). + * + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português + * para maiores detalhes. + * + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título + * "LICENCA.txt", junto com esse programa. Se não, acesse + * ou escreva para a Fundação do Software Livre (FSF) Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. + */ +package br.gov.frameworkdemoiselle.stereotype; + +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.enterprise.inject.Stereotype; +import javax.inject.Named; + +import br.gov.frameworkdemoiselle.lifecycle.ViewScoped; + +/** + * Identifies a view controller class. A view controller class is intend to respond to events initiated in the + * application front-view. It should have attributes and methods intented to populate the view. + *

+ * A View Controller is: + *

    + *
  • defined when annotated with {@code @ViewController}
  • + *
  • automatically injected whenever {@code @Inject} is used
  • + *
+ * + * @author SERPRO + * @see @Controller + */ +@Named +@Controller +@Stereotype +@ViewScoped +@Inherited +@Target(TYPE) +@Retention(RUNTIME) +public @interface ViewController { +} diff --git a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpServletRequestProducer.java b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpServletRequestProducer.java index 3b91aeb..4d35f2b 100644 --- a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpServletRequestProducer.java +++ b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpServletRequestProducer.java @@ -39,18 +39,20 @@ package br.gov.frameworkdemoiselle.internal.producer; import java.io.Serializable; import javax.enterprise.context.RequestScoped; +import javax.enterprise.inject.Alternative; import javax.enterprise.inject.Default; import javax.enterprise.inject.Produces; import javax.servlet.http.HttpServletRequest; @RequestScoped +@Deprecated public class HttpServletRequestProducer implements Serializable { private static final long serialVersionUID = 1L; private transient HttpServletRequest request; - @Default + @Alternative @Produces public HttpServletRequest create() { return this.request; diff --git a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpServletResponseProducer.java b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpServletResponseProducer.java index ff76aee..68e0d33 100644 --- a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpServletResponseProducer.java +++ b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpServletResponseProducer.java @@ -39,18 +39,20 @@ package br.gov.frameworkdemoiselle.internal.producer; import java.io.Serializable; import javax.enterprise.context.RequestScoped; +import javax.enterprise.inject.Alternative; import javax.enterprise.inject.Default; import javax.enterprise.inject.Produces; import javax.servlet.http.HttpServletResponse; @RequestScoped +@Deprecated public class HttpServletResponseProducer implements Serializable { private static final long serialVersionUID = 1L; private transient HttpServletResponse response; - @Default + @Alternative @Produces public HttpServletResponse create() { return this.response; diff --git a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpSessionProducer.java b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpSessionProducer.java index 137a3df..004fe7f 100644 --- a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpSessionProducer.java +++ b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/HttpSessionProducer.java @@ -38,16 +38,18 @@ package br.gov.frameworkdemoiselle.internal.producer; import java.io.Serializable; +import javax.enterprise.inject.Alternative; import javax.enterprise.inject.Default; import javax.enterprise.inject.Produces; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +@Deprecated public class HttpSessionProducer implements Serializable { private static final long serialVersionUID = 1L; - @Default + @Alternative @Produces public HttpSession create(HttpServletRequest request) { return request != null ? request.getSession() : null; -- libgit2 0.21.2