Author: pete.muir(a)jboss.org
Date: 2009-03-29 20:39:23 -0400 (Sun, 29 Mar 2009)
New Revision: 2260
Added:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducer.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerTest.java
Removed:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/ejb/
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractStandardBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/MethodSignatureImpl.java
Log:
WBRI-212
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-03-30
00:05:55 UTC (rev 2259)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-03-30
00:39:23 UTC (rev 2260)
@@ -532,29 +532,5 @@
return getAnnotatedItem().isAnnotationPresent(Specializes.class);
}
- @Override
- // TODO Fix this!!!
- public boolean equals(Object other)
- {
- if (other instanceof AbstractBean)
- {
- AbstractBean<?, ?> that = (AbstractBean<?, ?>) other;
- boolean equal = this.getTypes().equals(that.getTypes()) &&
this.getBindings().equals(that.getBindings());
- return equal;
- }
- else
- {
- return false;
- }
- }
- @Override
- public int hashCode()
- {
- int result = 17;
- result = 31 * result + getTypes().hashCode();
- result = 31 * result + getBindings().hashCode();
- return result;
- }
-
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-03-30
00:05:55 UTC (rev 2259)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-03-30
00:39:23 UTC (rev 2260)
@@ -66,6 +66,8 @@
// The initializer methods
private Set<MethodInjectionPoint<?>> initializerMethods;
private Set<String> dependencies;
+
+ private final String id;
/**
* Constructor
@@ -77,6 +79,7 @@
{
super(manager);
this.annotatedItem = type;
+ this.id = createId(getClass().getSimpleName() + "-" + type.getName());
}
/**
@@ -344,19 +347,11 @@
{
return Production.class;
}
-
+
@Override
- public boolean equals(Object other)
+ public String getId()
{
- if (other instanceof AbstractClassBean)
- {
- AbstractClassBean<?> that = (AbstractClassBean<?>) other;
- return super.equals(other) && that.getType().equals(this.getType());
- }
- else
- {
- return false;
- }
+ return id;
}
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java 2009-03-30
00:05:55 UTC (rev 2259)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java 2009-03-30
00:39:23 UTC (rev 2260)
@@ -381,18 +381,4 @@
return buffer.toString();
}
- @Override
- public boolean equals(Object other)
- {
- if (other instanceof AbstractProducerBean)
- {
- AbstractProducerBean<?, ?> that = (AbstractProducerBean<?, ?>)
other;
- return super.equals(other) &&
this.getAnnotatedItem().getDeclaringClass().equals(that.getAnnotatedItem().getDeclaringClass());
- }
- else
- {
- return false;
- }
- }
-
}
\ No newline at end of file
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java 2009-03-30
00:05:55 UTC (rev 2259)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java 2009-03-30
00:39:23 UTC (rev 2260)
@@ -37,6 +37,7 @@
{
// The underlying field
private AnnotatedField<T> field;
+ private final String id;
/**
* Creates a producer field Web Bean
@@ -65,6 +66,7 @@
initType();
initTypes();
initBindings();
+ this.id = createId("ProducerField-" + declaringBean.getType().getName() +
"-"+ field.getName());
}
@Override
@@ -140,5 +142,11 @@
{
return false;
}
+
+ @Override
+ public String getId()
+ {
+ return id;
+ }
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java 2009-03-30
00:05:55 UTC (rev 2259)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java 2009-03-30
00:39:23 UTC (rev 2260)
@@ -51,6 +51,8 @@
private AnnotatedMethod<?> disposalMethod;
private ProducerMethodBean<?> specializedBean;
+
+ private final String id;
/**
* Creates a producer method Web Bean
@@ -75,6 +77,7 @@
initType();
initTypes();
initBindings();
+ this.id = createId("ProducerField-" + declaringBean.getType().getName() +
"-"+ method.getSignature().toString());
}
protected T produceInstance(CreationalContext<T> creationalContext)
@@ -254,4 +257,10 @@
this.specializedBean = environment.getProducerMethod(superClassMethod);
}
+ @Override
+ public String getId()
+ {
+ return id;
+ }
+
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java 2009-03-30 00:05:55
UTC (rev 2259)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java 2009-03-30 00:39:23
UTC (rev 2260)
@@ -17,6 +17,8 @@
package org.jboss.webbeans.bean;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
import javax.context.Dependent;
@@ -34,19 +36,22 @@
public abstract class RIBean<T> extends Bean<T>
{
- private static final AtomicInteger idGenerator = new AtomicInteger();
+ private static final ConcurrentMap<String, AtomicInteger> ids = new
ConcurrentHashMap<String, AtomicInteger>();
private final ManagerImpl manager;
-
- private final String id;
protected RIBean(ManagerImpl manager)
{
super(manager);
this.manager = manager;
// TODO better ID strategy (human readable)
- this.id = getClass().getName() + "-" + idGenerator.getAndIncrement();
}
+
+ protected static String createId(String prefix)
+ {
+ AtomicInteger i = ids.putIfAbsent(prefix, new AtomicInteger());
+ return prefix + "-" + i;
+ }
@Override
protected ManagerImpl getManager()
@@ -73,9 +78,26 @@
public abstract RIBean<?> getSpecializedBean();
- public String getId()
+ public abstract String getId();
+
+ @Override
+ public boolean equals(Object obj)
{
- return id;
+ if (obj instanceof RIBean)
+ {
+ RIBean<?> that = (RIBean<?>) obj;
+ return this.getId().equals(that.getId());
+ }
+ else
+ {
+ return false;
+ }
}
+
+ @Override
+ public int hashCode()
+ {
+ return getId().hashCode();
+ }
}
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractStandardBean.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractStandardBean.java 2009-03-30
00:05:55 UTC (rev 2259)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractStandardBean.java 2009-03-30
00:39:23 UTC (rev 2260)
@@ -18,9 +18,15 @@
public abstract class AbstractStandardBean<T> extends RIBean<T>
{
+ private static final Annotation[] DEFAULT_BINDING_ARRAY = { new CurrentLiteral() };
+ private static final Set<Annotation> DEFAULT_BINDING = new
HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
+
+ private final String id;
+
protected AbstractStandardBean(ManagerImpl manager)
{
super(manager);
+ this.id = getClass().getSimpleName();
}
@Override
@@ -29,9 +35,8 @@
// No-op
}
- private static final Annotation[] DEFAULT_BINDING_ARRAY = { new CurrentLiteral() };
- private static final Set<Annotation> DEFAULT_BINDING = new
HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
+
@Override
public Set<Annotation> getBindings()
{
@@ -98,4 +103,10 @@
return false;
}
+ @Override
+ public String getId()
+ {
+ return id;
+ }
+
}
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/MethodSignatureImpl.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/MethodSignatureImpl.java 2009-03-30
00:05:55 UTC (rev 2259)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/MethodSignatureImpl.java 2009-03-30
00:39:23 UTC (rev 2260)
@@ -55,4 +55,10 @@
return parameterTypes;
}
+ @Override
+ public String toString()
+ {
+ return getMethodName() +
Arrays.asList(getParameterTypes()).toString().replace('[',
'(').replace(']', ')');
+ }
+
}
\ No newline at end of file
Added:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducer.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducer.java
(rev 0)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducer.java 2009-03-30
00:39:23 UTC (rev 2260)
@@ -0,0 +1,21 @@
+package org.jboss.webbeans.test.unit.implementation.producer.method;
+
+import javax.annotation.Named;
+import javax.inject.Produces;
+
+public class NamedProducer
+{
+ @Named("itoen")
+ @Produces
+ public String[] createName()
+ {
+ return new String[] { "oh", "otya" };
+ }
+
+ @Named("iemon")
+ @Produces
+ public String[] createName2()
+ {
+ return new String[] { "fukujyuen", "iemon", "otya"
};
+ }
+}
Property changes on:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducer.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerTest.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerTest.java
(rev 0)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerTest.java 2009-03-30
00:39:23 UTC (rev 2260)
@@ -0,0 +1,19 @@
+package org.jboss.webbeans.test.unit.implementation.producer.method;
+
+import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.webbeans.test.unit.AbstractWebBeansTest;
+import org.testng.annotations.Test;
+
+@Artifact
+public class NamedProducerTest extends AbstractWebBeansTest
+{
+ @Test
+ public void testNamedProducer()
+ {
+ String[] iemon = (String[]) manager.getInstanceByName("iemon");
+ assert iemon.length == 3;
+ String[] itoen = (String[]) manager.getInstanceByName("itoen");
+ assert itoen.length == 2;
+ }
+
+}
Property changes on:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain