Author: scabanovich
Date: 2011-05-25 20:12:43 -0400 (Wed, 25 May 2011)
New Revision: 31502
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericBeanProducerField.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericBeanProducerMethod.java
Removed:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/definition/GenericProducerField.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/CDISeamSolderGenericBeanExtension.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericClassBean.java
Log:
JBIDE-8674
https://issues.jboss.org/browse/JBIDE-8674
Deleted:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/definition/GenericProducerField.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/definition/GenericProducerField.java 2011-05-26
00:10:29 UTC (rev 31501)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/definition/GenericProducerField.java 2011-05-26
00:12:43 UTC (rev 31502)
@@ -1,7 +0,0 @@
-package org.jboss.tools.cdi.seam.solder.core.definition;
-
-import org.jboss.tools.cdi.internal.core.impl.ProducerField;
-
-public class GenericProducerField extends ProducerField {
-
-}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/CDISeamSolderGenericBeanExtension.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/CDISeamSolderGenericBeanExtension.java 2011-05-26
00:10:29 UTC (rev 31501)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/CDISeamSolderGenericBeanExtension.java 2011-05-26
00:12:43 UTC (rev 31502)
@@ -104,12 +104,21 @@
ti.setType(t.getType(), context.getRootContext(), 0);
List<MethodDefinition> ps = ti.getMethods();
for (MethodDefinition m: ps) {
- if(m.isAnnotationPresent(PRODUCES_ANNOTATION_TYPE_NAME)) {
+ if(m.isAnnotationPresent(PRODUCES_ANNOTATION_TYPE_NAME)
+ || m.isAnnotationPresent(UNWRAPS_ANNOTATION_TYPE_NAME)) {
for (IAnnotationDeclaration d: list) {
m.addAnnotation(((AnnotationDeclaration)d).getDeclaration(),
context.getRootContext());
}
}
}
+ List<FieldDefinition> fs = ti.getFields();
+ for (FieldDefinition f: fs) {
+ if(f.isAnnotationPresent(PRODUCES_ANNOTATION_TYPE_NAME)) {
+ for (IAnnotationDeclaration d: list) {
+ f.addAnnotation(((AnnotationDeclaration)d).getDeclaration(),
context.getRootContext());
+ }
+ }
+ }
replaceGenericInjections(ti, list);
GenericClassBean cb = new GenericClassBean();
@@ -142,11 +151,13 @@
List<MethodDefinition> ms = ti.getMethods();
for (MethodDefinition m: ms) {
- if(m.isAnnotationPresent(INJECT_ANNOTATION_TYPE_NAME)) {
+ boolean isObserver = m.isObserver();
+ if(m.isAnnotationPresent(INJECT_ANNOTATION_TYPE_NAME) || isObserver) {
boolean isMethodGeneric = m.isAnnotationPresent(GENERIC_QUALIFIER_TYPE_NAME);
List<ParameterDefinition> ps = m.getParameters();
for (ParameterDefinition p: ps) {
- if(isMethodGeneric || p.isAnnotationPresent(GENERIC_QUALIFIER_TYPE_NAME)) {
+ if(isMethodGeneric || p.isAnnotationPresent(GENERIC_QUALIFIER_TYPE_NAME)
+ || (isObserver && p.isAnnotationPresent(OBSERVERS_ANNOTATION_TYPE_NAME)))
{
for (IAnnotationDeclaration d: list) {
p.addAnnotation(((AnnotationDeclaration)d).getDeclaration(),
context.getRootContext());
}
Copied:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericBeanProducerField.java
(from rev 31448,
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/definition/GenericProducerField.java)
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericBeanProducerField.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericBeanProducerField.java 2011-05-26
00:12:43 UTC (rev 31502)
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.cdi.seam.solder.core.generic;
+
+import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.core.IScope;
+import org.jboss.tools.cdi.internal.core.impl.ProducerField;
+import org.jboss.tools.cdi.seam.solder.core.CDISeamSolderConstants;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class GenericBeanProducerField extends ProducerField {
+
+ public GenericBeanProducerField() {}
+
+ public IScope getScope() {
+ IScope result = null;
+ if(definition.isAnnotationPresent(CDISeamSolderConstants.APPLY_SCOPE_ANNOTATION_TYPE_NAME))
{
+ if(getParent() instanceof GenericClassBean) {
+ IBean generic = ((GenericClassBean)getParent()).getGenericProducerBean();
+ if(generic != null) {
+ result = generic.getScope();
+ }
+ }
+ }
+ if(result == null) {
+ result = super.getScope();
+ }
+ return result;
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericBeanProducerField.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericBeanProducerMethod.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericBeanProducerMethod.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericBeanProducerMethod.java 2011-05-26
00:12:43 UTC (rev 31502)
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.cdi.seam.solder.core.generic;
+
+import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.core.IScope;
+import org.jboss.tools.cdi.internal.core.impl.ProducerMethod;
+import org.jboss.tools.cdi.seam.solder.core.CDISeamSolderConstants;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class GenericBeanProducerMethod extends ProducerMethod {
+
+ public GenericBeanProducerMethod() {}
+
+ public IScope getScope() {
+ IScope result = null;
+ if(definition.isAnnotationPresent(CDISeamSolderConstants.APPLY_SCOPE_ANNOTATION_TYPE_NAME))
{
+ if(getParent() instanceof GenericClassBean) {
+ IBean generic = ((GenericClassBean)getParent()).getGenericProducerBean();
+ if(generic != null) {
+ result = generic.getScope();
+ }
+ }
+ }
+ if(result == null) {
+ result = super.getScope();
+ }
+ return result;
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericBeanProducerMethod.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericClassBean.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericClassBean.java 2011-05-26
00:10:29 UTC (rev 31501)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/generic/GenericClassBean.java 2011-05-26
00:12:43 UTC (rev 31502)
@@ -15,7 +15,11 @@
import org.jboss.tools.cdi.core.IBean;
import org.jboss.tools.cdi.internal.core.impl.AbstractBeanElement;
import org.jboss.tools.cdi.internal.core.impl.ClassBean;
+import org.jboss.tools.cdi.internal.core.impl.ProducerField;
+import org.jboss.tools.cdi.internal.core.impl.ProducerMethod;
import org.jboss.tools.cdi.internal.core.impl.definition.AbstractMemberDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.FieldDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.MethodDefinition;
import org.jboss.tools.cdi.seam.solder.core.CDISeamSolderConstants;
/**
@@ -28,6 +32,14 @@
public GenericClassBean() {}
+ protected ProducerMethod newProducerMethod(MethodDefinition m) {
+ return new GenericBeanProducerMethod();
+ }
+
+ protected ProducerField newProducerField(FieldDefinition f) {
+ return new GenericBeanProducerField();
+ }
+
public void setGenericProducerBeanDefinition(AbstractMemberDefinition def) {
genericProducerBean = def;
}