https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=465
465-ManagedBeanAnnotations
Javadocs and small changes related to managed bean annotations
M jsf-api/src/javax/faces/model/ApplicationScoped.java
M jsf-api/src/javax/faces/model/SessionScoped.java
M jsf-api/src/javax/faces/model/ManagedBean.java
M jsf-api/src/javax/faces/model/RequestScoped.java
- Fix PENDING with spec language
A jsf-api/src/javax/faces/model/ViewScoped.java
- Unless someone can demonstrate otherwise, I believe we need scope
annotations for every specified value for managed-bean-scope.
A jsf-api/src/javax/faces/model/NoneScoped.java
D jsf-api/src/javax/faces/model/UnScoped.java
- I believe NoneScoped is more consistent than UnScoped.
M jsf-ri/src/com/sun/faces/application/annotation/ManagedBeanConfigHandler.java
- Suggested implementation changes
I'll be checking in the javadoc only portion of these changes now but
will wait for review for the remainder.
SECTION: Diffs
Index: jsf-api/src/javax/faces/model/ApplicationScoped.java
===================================================================
--- jsf-api/src/javax/faces/model/ApplicationScoped.java (revision 5688)
+++ jsf-api/src/javax/faces/model/ApplicationScoped.java (working copy)
@@ -7,10 +7,12 @@
import java.lang.annotation.Inherited;
/**
- * RELEASE_PENDING (edburns,rogerk) Please update the docs.
- * <p class="changed_added_2_0">The presence of this annotation along with
- * {_at_link @ManagedBean} on a class indicates this managed bean is to be
- * <code>application</code> scoped.</p>
+
+ * <p class="changed_added_2_0">When this annotation, along with {_at_link
+ * ManagedBean} is found on a class, the runtime must act as if a
+ * <code><managed-bean-scope<application<managed-bean-scope></code>
+ * element was declared for the corresponding managed bean.</p>
+
*
* @since 2.0
*/
@@ -18,4 +20,4 @@
@Target(ElementType.TYPE)
@Inherited
public @interface ApplicationScoped {
-}
\ No newline at end of file
+}
Index: jsf-api/src/javax/faces/model/ViewScoped.java
===================================================================
--- jsf-api/src/javax/faces/model/ViewScoped.java (revision 0)
+++ jsf-api/src/javax/faces/model/ViewScoped.java (revision 0)
@@ -0,0 +1,21 @@
+package javax.faces.model;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+
+/**
+ * <p class="changed_added_2_0">When this annotation, along with {_at_link
+ * ManagedBean} is found on a class, the runtime must act as if a
+ * <code><managed-bean-scope<view<managed-bean-scope></code>
+ * element was declared for the corresponding managed bean.</p>
+ *
+ * @since 2.0
+ */
+_at_Retention(RetentionPolicy.RUNTIME)
+_at_Target(ElementType.TYPE)
+_at_Inherited
+public @interface ViewScoped {
+}
Index: jsf-api/src/javax/faces/model/UnScoped.java
===================================================================
--- jsf-api/src/javax/faces/model/UnScoped.java (revision 5688)
+++ jsf-api/src/javax/faces/model/UnScoped.java (working copy)
@@ -1,21 +0,0 @@
-package javax.faces.model;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-
-/**
- * RELEASE_PENDING (edburns,rogerk) Please update the docs.
- * <p class="changed_added_2_0">The presence of this annotation along with
- * {_at_link @ManagedBean} on a class indicates this managed bean is to be
- * <code>none</code> scoped.</p>
- *
- * @since 2.0
- */
-_at_Retention(RetentionPolicy.RUNTIME)
-_at_Target(ElementType.TYPE)
-_at_Inherited
-public @interface UnScoped {
-}
\ No newline at end of file
Index: jsf-api/src/javax/faces/model/SessionScoped.java
===================================================================
--- jsf-api/src/javax/faces/model/SessionScoped.java (revision 5688)
+++ jsf-api/src/javax/faces/model/SessionScoped.java (working copy)
@@ -7,10 +7,10 @@
import java.lang.annotation.Inherited;
/**
- * RELEASE_PENDING (edburns,rogerk) Please update the docs.
- * <p class="changed_added_2_0">The presence of this annotation along with
- * {_at_link @ManagedBean} on a class indicates this managed bean is to be
- * <code>session</code> scoped.</p>
+ * <p class="changed_added_2_0">When this annotation, along with {_at_link
+ * ManagedBean} is found on a class, the runtime must act as if a
+ * <code><managed-bean-scope<session<managed-bean-scope></code>
+ * element was declared for the corresponding managed bean.</p>
*
* @since 2.0
*/
@@ -18,4 +18,4 @@
@Target(ElementType.TYPE)
@Inherited
public @interface SessionScoped {
-}
\ No newline at end of file
+}
Index: jsf-api/src/javax/faces/model/ManagedBean.java
===================================================================
--- jsf-api/src/javax/faces/model/ManagedBean.java (revision 5688)
+++ jsf-api/src/javax/faces/model/ManagedBean.java (working copy)
@@ -67,13 +67,13 @@
* <em>managed-bean-name</em> is taken to be <code>Bean</code>. The
* fully qualified class name of the class to which this annotation is
* attached is taken to be the <em>managed-bean-class</em>.</p>
- *
- * // RELEASE_PENDING (edburns,rogerk) docs
- * <p>The scope of the managed bean declared using one of {_at_link RequestScoped},
- * {_at_link SessionScoped}, {_at_link ApplicationScoped}, or {_at_link UnScoped} annotations.
- * If the scope annotations are omitted, the bean is assumed to be <code>request</code>
- * scoped.</p>
- *
+
+ * <p>The scope of the managed bean is declared using one of {_at_link
+ * NoneScoped}, {_at_link RequestScoped}, {_at_link ViewScoped}, {_at_link
+ * SessionScoped}, {_at_link ApplicationScoped} annotations. If the scope
+ * annotations are omitted, the bean must be handled as if the {_at_link
+ * RequestScoped} annotation is present.</p>
+
* <p>
* If the value of the {_at_link #eager} attribute is
* <code>true</code>, the runtime must instantiate this class when the
Index: jsf-api/src/javax/faces/model/RequestScoped.java
===================================================================
--- jsf-api/src/javax/faces/model/RequestScoped.java (revision 5688)
+++ jsf-api/src/javax/faces/model/RequestScoped.java (working copy)
@@ -7,10 +7,10 @@
import java.lang.annotation.Inherited;
/**
- * RELEASE_PENDING (edburns,rogerk) Please update the docs.
- * <p class="changed_added_2_0">The presence of this annotation along with
- * {_at_link @ManagedBean} on a class indicates this managed bean is to be
- * <code>request</code> scoped.</p>
+ * <p class="changed_added_2_0">When this annotation, along with {_at_link
+ * ManagedBean} is found on a class, the runtime must act as if a
+ * <code><managed-bean-scope<request<managed-bean-scope></code>
+ * element was declared for the corresponding managed bean.</p>
*
* @since 2.0
*/
Index: jsf-api/src/javax/faces/model/NoneScoped.java
===================================================================
--- jsf-api/src/javax/faces/model/NoneScoped.java (revision 0)
+++ jsf-api/src/javax/faces/model/NoneScoped.java (revision 0)
@@ -0,0 +1,21 @@
+package javax.faces.model;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+
+/**
+ * <p class="changed_added_2_0">When this annotation, along with {_at_link
+ * ManagedBean} is found on a class, the runtime must act as if a
+ * <code><managed-bean-scope<none<managed-bean-scope></code>
+ * element was declared for the corresponding managed bean.</p>
+ *
+ * @since 2.0
+ */
+_at_Retention(RetentionPolicy.RUNTIME)
+_at_Target(ElementType.TYPE)
+_at_Inherited
+public @interface NoneScoped {
+}
Index: jsf-ri/src/com/sun/faces/application/annotation/ManagedBeanConfigHandler.java
===================================================================
--- jsf-ri/src/com/sun/faces/application/annotation/ManagedBeanConfigHandler.java (revision 5688)
+++ jsf-ri/src/com/sun/faces/application/annotation/ManagedBeanConfigHandler.java (working copy)
@@ -49,9 +49,10 @@
import javax.faces.model.ManagedBeans;
import javax.faces.model.ManagedProperty;
import javax.faces.model.RequestScoped;
+import javax.faces.model.ViewScoped;
import javax.faces.model.SessionScoped;
import javax.faces.model.ApplicationScoped;
-import javax.faces.model.UnScoped;
+import javax.faces.model.NoneScoped;
import javax.faces.context.FacesContext;
import com.sun.faces.application.ApplicationAssociate;
@@ -68,9 +69,10 @@
private static final Class<?>[] SCOPES = {
RequestScoped.class,
+ ViewScoped.class,
SessionScoped.class,
ApplicationScoped.class,
- UnScoped.class
+ NoneScoped.class
};
private static final Collection<Class<? extends Annotation>> HANDLES;
@@ -208,11 +210,13 @@
if (a != null) {
if (a instanceof RequestScoped) {
return "request";
- } else if (a instanceof SessionScoped) {
+ } else if (a instanceof ViewScoped) {
+ return "view";
+ } if (a instanceof SessionScoped) {
return "session";
} else if (a instanceof ApplicationScoped) {
return "application";
- } else if (a instanceof UnScoped) {
+ } else if (a instanceof NoneScoped) {
return "none";
}
}
--