You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by st...@apache.org on 2010/07/27 20:04:12 UTC
svn commit: r979787 - in /myfaces/extensions/cdi/trunk:
core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/
jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/
Author: struberg
Date: Tue Jul 27 18:04:11 2010
New Revision: 979787
URL: http://svn.apache.org/viewvc?rev=979787&view=rev
Log:
EXTCDI-33 special performance tuning for @ViewAccessScoped beans
Added:
myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/DefaultLiteral.java
Modified:
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversationKey.java
Added: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/DefaultLiteral.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/DefaultLiteral.java?rev=979787&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/DefaultLiteral.java (added)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/DefaultLiteral.java Tue Jul 27 18:04:11 2010
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.cdi.core.impl.utils;
+
+import javax.enterprise.inject.Default;
+import javax.enterprise.util.AnnotationLiteral;
+
+/**
+ * Literal for the {@link Default} annotation.
+ * <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
+ */
+public class DefaultLiteral extends AnnotationLiteral<Default> implements Default
+{
+}
\ No newline at end of file
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversationKey.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversationKey.java?rev=979787&r1=979786&r2=979787&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversationKey.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversationKey.java Tue Jul 27 18:04:11 2010
@@ -18,8 +18,8 @@
*/
package org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation;
+import org.apache.myfaces.extensions.cdi.core.impl.utils.DefaultLiteral;
import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.ConversationKey;
-import org.apache.myfaces.extensions.cdi.core.api.tools.annotate.DefaultAnnotation;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowScoped;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessScoped;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationGroup;
@@ -45,14 +45,15 @@ class DefaultConversationKey implements
private static final String INVALID_VIEW_ACCESS_SCOPE_DEFINITION =
": It isn't allowed to use qualifiers in combination with " + WindowScoped.class.getName();
- private final Class<?> groupKey;
- private final Set<Annotation> qualifiers = new HashSet<Annotation>();
+ private Class<?> groupKey;
+ private Set<Annotation> qualifiers;
- //TODO remove as soon as the new version is tested
- //old version
- //workaround
- //private static final ViewAccessScoped VIEW_ACCESS_SCOPED = DefaultAnnotation.of(ViewAccessScoped.class);
- private static final Default DEFAULT_QUALIFIER = DefaultAnnotation.of(Default.class);
+ private final static Annotation DEFAULT_LITERAL = new DefaultLiteral();
+
+ private final static Set<Annotation> DEFAULT_QUALIFIERS = new HashSet<Annotation>();
+ static {
+ DEFAULT_QUALIFIERS.add(DEFAULT_LITERAL);
+ }
//workaround
private boolean viewAccessScopedAnnotationPresent;
@@ -73,26 +74,29 @@ class DefaultConversationKey implements
}
else if(Any.class.isAssignableFrom(annotationType) ||
Default.class.isAssignableFrom(annotationType) ||
- Named.class.isAssignableFrom(annotationType) && "".equals(((Named)qualifier).value()) ||
+ Named.class.isAssignableFrom(annotationType) ||
ConversationGroup.class.isAssignableFrom(annotationType))
{
//won't be used for this key!
}
else
{
+ if (this.qualifiers == null)
+ {
+ this.qualifiers = new HashSet<Annotation>();
+ }
this.qualifiers.add(qualifier);
}
}
- //for easier manual usage of the WindowContextManager
- if(this.qualifiers.isEmpty())
- {
- this.qualifiers.add(DEFAULT_QUALIFIER);
- }
-
+ //X TODO drop and move validation to deploy time!
validate();
}
+
+ /**
+ * @deprecated TODO this must be validated at deploy time instead !
+ */
private void validate()
{
boolean defaultQualifierUsed = isDefaultQualifier();
@@ -126,6 +130,11 @@ class DefaultConversationKey implements
private boolean isDefaultQualifier()
{
+ if (qualifiers == null)
+ {
+ return true;
+ }
+
for(Annotation qualifier : this.qualifiers)
{
if(Default.class.isAssignableFrom(qualifier.getClass()))
@@ -143,6 +152,10 @@ class DefaultConversationKey implements
public Set<Annotation> getQualifiers()
{
+ if (qualifiers == null)
+ {
+ return Collections.EMPTY_SET;
+ }
return Collections.unmodifiableSet(this.qualifiers);
}
@@ -164,6 +177,15 @@ class DefaultConversationKey implements
{
return false;
}
+ if (qualifiers == null && that.qualifiers == null)
+ {
+ return true;
+ }
+ if (qualifiers != null && that.qualifiers == null)
+ {
+ return false;
+ }
+
if (!qualifiers.equals(that.qualifiers))
{
return false;
@@ -176,7 +198,10 @@ class DefaultConversationKey implements
public int hashCode()
{
int result = groupKey.hashCode();
- result = 31 * result + qualifiers.hashCode();
+ if (qualifiers != null)
+ {
+ result = 31 * result + qualifiers.hashCode();
+ }
return result;
}
}