[weld-commits] Weld SVN: r6784 - in extensions/trunk/impl/src/main/java/org/jboss/weld/extensions: util and 1 other directory.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Fri Jul 23 18:05:16 EDT 2010


Author: pete.muir at jboss.org
Date: 2010-07-23 18:05:15 -0400 (Fri, 23 Jul 2010)
New Revision: 6784

Added:
   extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/util/Synthetic.java
Removed:
   extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/SyntheticQualifier.java
   extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/SyntheticQualifierManager.java
Modified:
   extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/GenericBeanExtension.java
   extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/ProducerFieldInjectionTarget.java
Log:
make Synthetic a generic utility, use AnnotationLiteral

Modified: extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/GenericBeanExtension.java
===================================================================
--- extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/GenericBeanExtension.java	2010-07-23 21:42:50 UTC (rev 6783)
+++ extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/GenericBeanExtension.java	2010-07-23 22:05:15 UTC (rev 6784)
@@ -45,6 +45,7 @@
 
 import org.jboss.weld.extensions.annotated.AnnotatedTypeBuilder;
 import org.jboss.weld.extensions.bean.BeanBuilder;
+import org.jboss.weld.extensions.util.Synthetic;
 import org.jboss.weld.extensions.util.properties.Properties;
 import org.jboss.weld.extensions.util.properties.Property;
 
@@ -65,19 +66,19 @@
    // A map of a generic annotation type to all instances of that type found on beans
    private final Map<Class<?>, Set<Annotation>> concreteGenerics;
    
-   private final SyntheticQualifierManager syntheticQualifierManager;
+   private final Synthetic.Provider syntheticProvider;
 
    GenericBeanExtension()
    {
       this.genericBeans = new HashMap<Class<?>, Set<AnnotatedType<?>>>();
       this.producerFields = new HashMap<Class<?>, Map<Member, Annotation>>();
       this.concreteGenerics = new HashMap<Class<?>, Set<Annotation>>();
-      this.syntheticQualifierManager = new SyntheticQualifierManager();
+      this.syntheticProvider = new Synthetic.Provider("org.jboss.weld.extensions.bean.generic");
    }
 
    void beforeBeanDiscovery(@Observes BeforeBeanDiscovery event)
    {
-      event.addQualifier(SyntheticQualifier.class);
+      event.addQualifier(Synthetic.class);
    }
 
    void processAnnotatedType(@Observes ProcessAnnotatedType<?> event)
@@ -160,7 +161,7 @@
             Property<Object> property = Properties.createProperty(field);
             setters.add(property);
          }
-         ProducerFieldInjectionTarget<T> it = new ProducerFieldInjectionTarget<T>(event.getInjectionTarget(), beanManager, setters, producers, syntheticQualifierManager);
+         ProducerFieldInjectionTarget<T> it = new ProducerFieldInjectionTarget<T>(event.getInjectionTarget(), beanManager, setters, producers, syntheticProvider);
          event.setInjectionTarget(it);
       }
       
@@ -189,7 +190,7 @@
 
    private <X> Bean<X> redefineType(AnnotatedType<X> at, Annotation conc, BeanManager beanManager)
    {
-      SyntheticQualifier newQualifier = syntheticQualifierManager.getQualifierForGeneric(conc);
+      Synthetic newQualifier = syntheticProvider.get(conc);
 
       AnnotatedTypeBuilder<X> builder = AnnotatedTypeBuilder.newInstance(at).readAnnotationsFromUnderlyingType();
       builder.addToClass(newQualifier);

Modified: extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/ProducerFieldInjectionTarget.java
===================================================================
--- extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/ProducerFieldInjectionTarget.java	2010-07-23 21:42:50 UTC (rev 6783)
+++ extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/ProducerFieldInjectionTarget.java	2010-07-23 22:05:15 UTC (rev 6784)
@@ -28,6 +28,7 @@
 import javax.enterprise.inject.spi.InjectionTarget;
 
 import org.jboss.weld.extensions.bean.ForwardingInjectionTarget;
+import org.jboss.weld.extensions.util.Synthetic;
 import org.jboss.weld.extensions.util.properties.Property;
 
 /**
@@ -44,15 +45,15 @@
    private final BeanManager beanManager;
    private final List<Property<Object>> properties;
    private final Map<Member, Annotation> producers;
-   private final SyntheticQualifierManager syntheticQualifierManager;
+   private final Synthetic.Provider syntheticProvider;
 
-   public ProducerFieldInjectionTarget(InjectionTarget<T> delegate, BeanManager beanManager, List<Property<Object>> properties, Map<Member, Annotation> producers, SyntheticQualifierManager syntheticQualifierManager)
+   public ProducerFieldInjectionTarget(InjectionTarget<T> delegate, BeanManager beanManager, List<Property<Object>> properties, Map<Member, Annotation> producers, Synthetic.Provider syntheticProvider)
    {
       this.delegate = delegate;
       this.beanManager = beanManager;
       this.properties = properties;
       this.producers = producers;
-      this.syntheticQualifierManager = syntheticQualifierManager;
+      this.syntheticProvider = syntheticProvider;
    }
    
    @Override
@@ -66,7 +67,7 @@
    {
       for (Property<Object> property: properties)
       {
-         SyntheticQualifier qualifier = syntheticQualifierManager.getQualifierForGeneric(producers.get(property.getMember()));
+         Synthetic qualifier = syntheticProvider.get(producers.get(property.getMember()));
          Bean<?> bean = beanManager.resolve(beanManager.getBeans(property.getBaseType(), qualifier));
          if (bean == null)
          {

Deleted: extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/SyntheticQualifier.java
===================================================================
--- extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/SyntheticQualifier.java	2010-07-23 21:42:50 UTC (rev 6783)
+++ extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/SyntheticQualifier.java	2010-07-23 22:05:15 UTC (rev 6784)
@@ -1,37 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2010, Red Hat, Inc., and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.weld.extensions.bean.generic;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-import javax.inject.Qualifier;
-
-/**
- * qualifier that is added to Generic beans to that the correct one is injected
- * 
- * @author Stuart Douglas <stuart at baileyroberts.com.au>
- * 
- */
- at Retention(RetentionPolicy.RUNTIME)
-// even though this is not in a bean archive this is still needed to make
-// BeanImpl work
- at Qualifier
-public @interface SyntheticQualifier
-{
-   long value();
-}

Deleted: extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/SyntheticQualifierManager.java
===================================================================
--- extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/SyntheticQualifierManager.java	2010-07-23 21:42:50 UTC (rev 6783)
+++ extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/SyntheticQualifierManager.java	2010-07-23 22:05:15 UTC (rev 6784)
@@ -1,38 +0,0 @@
-package org.jboss.weld.extensions.bean.generic;
-
-import java.lang.annotation.Annotation;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.jboss.weld.extensions.util.AnnotationInstanceProvider;
-
-class SyntheticQualifierManager
-{
-
-
-   private final AnnotationInstanceProvider annotationProvider;
-   
-   //Map of generic Annotation instance to a SyntheticQualifier
-   private final Map<Annotation, SyntheticQualifier> qualifierMap;
-   
-   private long count;
-   
-   SyntheticQualifierManager()
-   {
-      this.qualifierMap = new HashMap<Annotation, SyntheticQualifier>();
-      this.annotationProvider = new AnnotationInstanceProvider();
-      this.count = 0;
-   }
-
-   SyntheticQualifier getQualifierForGeneric(Annotation annotation)
-   {
-      if (!qualifierMap.containsKey(annotation))
-      {
-         SyntheticQualifier qualifier = annotationProvider.get(SyntheticQualifier.class, Collections.singletonMap("value", count++));
-         qualifierMap.put(annotation, qualifier);
-      }
-      return qualifierMap.get(annotation);
-   }
-
-}

Copied: extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/util/Synthetic.java (from rev 6781, extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/bean/generic/SyntheticQualifier.java)
===================================================================
--- extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/util/Synthetic.java	                        (rev 0)
+++ extensions/trunk/impl/src/main/java/org/jboss/weld/extensions/util/Synthetic.java	2010-07-23 22:05:15 UTC (rev 6784)
@@ -0,0 +1,98 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc., and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.weld.extensions.util;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
+
+import javax.enterprise.util.AnnotationLiteral;
+import javax.inject.Qualifier;
+
+/**
+ * A synthetic qualifier that can be used to replace other user-supplied configuration at deployment 
+ * 
+ * @author Stuart Douglas <stuart at baileyroberts.com.au>
+ * @author Pete Muir
+ * 
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+// even though this is not in a bean archive this is still needed to make
+// BeanImpl work
+ at Qualifier
+public @interface Synthetic
+{
+   
+   long index();
+   
+   String namespace();
+   
+   public static class SyntheticLiteral extends AnnotationLiteral<Synthetic> implements Synthetic
+   {
+      
+      private final Long index;
+      
+      private final String namespace;
+      
+      public SyntheticLiteral(String namespace, Long index)
+      {
+         this.namespace = namespace;
+         this.index = index;
+      }
+
+      public long index()
+      {
+         return index;
+      }
+      
+      public String namespace()
+      {
+         return namespace;
+      }
+      
+   }
+   
+   public static class Provider
+   {
+      
+      //Map of generic Annotation instance to a SyntheticQualifier
+      private final Map<Annotation, Synthetic> synthetics;
+      private final String namespace;
+      
+      private AtomicLong count;
+      
+      public Provider(String namespace)
+      {
+         this.synthetics = new HashMap<Annotation, Synthetic>();
+         this.namespace = namespace;
+         this.count = new AtomicLong();
+      }
+
+      public Synthetic get(Annotation annotation)
+      {
+         if (!synthetics.containsKey(annotation))
+         {
+            synthetics.put(annotation, new Synthetic.SyntheticLiteral(namespace, count.getAndIncrement()));
+         }
+         return synthetics.get(annotation);
+      }
+   }
+   
+}



More information about the weld-commits mailing list