[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