[jbosstools-commits] JBoss Tools SVN: r30663 - in trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core: src/org/jboss/tools/cdi/seam/solder/core and 1 other directory.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Tue Apr 19 14:36:10 EDT 2011


Author: scabanovich
Date: 2011-04-19 14:36:10 -0400 (Tue, 19 Apr 2011)
New Revision: 30663

Added:
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderUnwrapsExtension.java
Modified:
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/plugin.xml
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderConstants.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderCoreExtension.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderDefaultBeanExtension.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderLoggerExtension.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderServiceHandlerExtension.java
Log:
JBIDE--8715
https://issues.jboss.org/browse/JBIDE-8715

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/plugin.xml
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/plugin.xml	2011-04-19 18:20:18 UTC (rev 30662)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/plugin.xml	2011-04-19 18:36:10 UTC (rev 30663)
@@ -22,5 +22,11 @@
           class="org.jboss.tools.cdi.seam.solder.core.CDISeamSolderDefaultBeanExtension"
           runtime="org.jboss.seam.solder.bean.defaultbean.DefaultBeanExtension">
     </cdiextension>
+
+    <cdiextension
+          class="org.jboss.tools.cdi.seam.solder.core.CDISeamSolderUnwrapsExtension"
+          runtime="org.jboss.seam.solder.unwraps.UnwrapsExtension">
+    </cdiextension>
+
 	</extension>
 </plugin>

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderConstants.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderConstants.java	2011-04-19 18:20:18 UTC (rev 30662)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderConstants.java	2011-04-19 18:36:10 UTC (rev 30663)
@@ -15,4 +15,6 @@
 	public String SERVICE_ANNOTATION_KIND = "serviceAnnotation";
 
 	public String DEFAULT_BEAN_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.bean.defaultbean.DefaultBean";
+
+	public String UNWRAPS_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.unwraps.Unwraps";
 }

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderCoreExtension.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderCoreExtension.java	2011-04-19 18:20:18 UTC (rev 30662)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderCoreExtension.java	2011-04-19 18:36:10 UTC (rev 30663)
@@ -16,7 +16,6 @@
 import java.util.List;
 import java.util.Set;
 
-import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IMemberValuePair;
 import org.eclipse.jdt.core.JavaModelException;
 import org.jboss.tools.cdi.core.CDIConstants;
@@ -36,7 +35,6 @@
 import org.jboss.tools.cdi.internal.core.impl.definition.PackageDefinition;
 import org.jboss.tools.cdi.internal.core.impl.definition.ParameterDefinition;
 import org.jboss.tools.cdi.internal.core.impl.definition.TypeDefinition;
-import org.jboss.tools.common.model.util.EclipseResourceUtil;
 import org.jboss.tools.common.util.BeanUtil;
 import org.jboss.tools.common.util.EclipseJavaUtil;
 
@@ -54,10 +52,6 @@
  */
 public class CDISeamSolderCoreExtension implements ICDIExtension, IProcessAnnotatedTypeFeature {
 
-	public Object getAdapter(Class adapter) {
-		return null;
-	}
-
 	public void processAnnotatedType(TypeDefinition typeDefinition, IRootDefinitionContext context) {
 
 		if(processVeto(typeDefinition, context)) {
@@ -99,17 +93,9 @@
 		;
 		if (packageRequiredClasses != null)
 			requiredClasses.addAll(packageRequiredClasses);
-		IJavaProject jp = EclipseResourceUtil.getJavaProject(context
-				.getProject().getProject());
-		if (!requiredClasses.isEmpty() && jp != null) {
+		if (!requiredClasses.isEmpty()) {
 			for (String c : requiredClasses) {
-				try {
-					if (EclipseJavaUtil.findType(jp, c) == null) {
-						typeDefinition.veto();
-						return true;
-					}
-				} catch (JavaModelException e) {
-					CDISeamSolderCorePlugin.getDefault().logError(e);
+				if (context.getProject().getType(c) == null) {
 					typeDefinition.veto();
 					return true;
 				}

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderDefaultBeanExtension.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderDefaultBeanExtension.java	2011-04-19 18:20:18 UTC (rev 30662)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderDefaultBeanExtension.java	2011-04-19 18:36:10 UTC (rev 30663)
@@ -14,12 +14,9 @@
 import java.util.List;
 import java.util.Set;
 
-import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IMemberValuePair;
 import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.JavaModelException;
 import org.jboss.tools.cdi.core.CDIConstants;
-import org.jboss.tools.cdi.core.CDICorePlugin;
 import org.jboss.tools.cdi.core.IAnnotationDeclaration;
 import org.jboss.tools.cdi.core.IBean;
 import org.jboss.tools.cdi.core.IClassBean;
@@ -34,8 +31,6 @@
 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.internal.core.impl.definition.TypeDefinition;
-import org.jboss.tools.common.model.util.EclipseResourceUtil;
-import org.jboss.tools.common.util.EclipseJavaUtil;
 
 /**
  * Implements support for org.jboss.seam.solder.bean.defaultbean.DefaultBeanExtension.
@@ -51,10 +46,6 @@
  */
 public class CDISeamSolderDefaultBeanExtension implements ICDIExtension, IProcessAnnotatedTypeFeature, IAmbiguousBeanResolverFeature {
 
-	public Object getAdapter(Class adapter) {
-		return null;
-	}
-
 	public void processAnnotatedType(TypeDefinition typeDefinition, IRootDefinitionContext context) {
 		boolean defaultBean = typeDefinition.isAnnotationPresent(CDISeamSolderConstants.DEFAULT_BEAN_ANNOTATION_TYPE_NAME);
 		IJavaAnnotation beanTyped = null;
@@ -94,16 +85,10 @@
 		Object n = a.getMemberValue(null);
 		String defaultType = null;
 		if(n != null && n.toString().length() > 0) {
-			IJavaProject jp = EclipseResourceUtil.getJavaProject(context.getProject().getProject());
-			IType typedAnnotation = null;
-			try {
-				typedAnnotation = EclipseJavaUtil.findType(jp, CDIConstants.TYPED_ANNOTATION_TYPE_NAME);
-			} catch (JavaModelException e) {
-				CDICorePlugin.getDefault().logError(e);
-				return null;
-			}
 			defaultType = n.toString();
-			return new AnnotationLiteral(def.getResource(), a.getStartPosition(), a.getLength(), defaultType, IMemberValuePair.K_CLASS, typedAnnotation);
+			IType typedAnnotation = context.getProject().getType(CDIConstants.TYPED_ANNOTATION_TYPE_NAME);
+			return (typedAnnotation == null) ? null 
+				: new AnnotationLiteral(def.getResource(), a.getStartPosition(), a.getLength(), defaultType, IMemberValuePair.K_CLASS, typedAnnotation);
 		}
 		return null;
 	 

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderLoggerExtension.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderLoggerExtension.java	2011-04-19 18:20:18 UTC (rev 30662)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderLoggerExtension.java	2011-04-19 18:36:10 UTC (rev 30663)
@@ -42,10 +42,6 @@
 	CDICoreNature project;
 	LoggerDefinitionContext context = new LoggerDefinitionContext();
 
-	public Object getAdapter(Class adapter) {
-		return null;
-	}
-
 	public void setProject(CDICoreNature n) {
 		project = n;
 	}

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderServiceHandlerExtension.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderServiceHandlerExtension.java	2011-04-19 18:20:18 UTC (rev 30662)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderServiceHandlerExtension.java	2011-04-19 18:36:10 UTC (rev 30663)
@@ -50,10 +50,6 @@
 	CDICoreNature project;
 	ServiceHandlerDefinitionContext context = new ServiceHandlerDefinitionContext();
 
-	public Object getAdapter(Class adapter) {
-		return null;
-	}
-
 	public void setProject(CDICoreNature n) {
 		project = n;
 	}

Added: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderUnwrapsExtension.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderUnwrapsExtension.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderUnwrapsExtension.java	2011-04-19 18:36:10 UTC (rev 30663)
@@ -0,0 +1,56 @@
+/******************************************************************************* 
+ * 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;
+
+import org.eclipse.jdt.core.IMemberValuePair;
+import org.eclipse.jdt.core.IType;
+import org.jboss.tools.cdi.core.CDIConstants;
+import org.jboss.tools.cdi.core.IAnnotationDeclaration;
+import org.jboss.tools.cdi.core.IJavaAnnotation;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
+import org.jboss.tools.cdi.core.extension.ICDIExtension;
+import org.jboss.tools.cdi.core.extension.feature.IProcessAnnotatedMemberFeature;
+import org.jboss.tools.cdi.internal.core.impl.AnnotationLiteral;
+import org.jboss.tools.cdi.internal.core.impl.definition.AbstractMemberDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.BeanMemberDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.MethodDefinition;
+
+/**
+ * This implementation detects @Unwrap annotation at methods and makes CDI builder aware of 
+ * it being a producer method by adding fake annotation literal for @Produces annotation based 
+ * on the unwrap annotation.
+ * 
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class CDISeamSolderUnwrapsExtension implements ICDIExtension, IProcessAnnotatedMemberFeature {
+
+	public void processAnnotatedMember(BeanMemberDefinition memberDefinition, IRootDefinitionContext context) {
+		if(memberDefinition instanceof MethodDefinition) {
+			if(memberDefinition.isAnnotationPresent(CDISeamSolderConstants.UNWRAPS_ANNOTATION_TYPE_NAME)) {
+				IJavaAnnotation ja = createFakeProducesAnnotation(memberDefinition, context);
+				if(ja != null) {
+					memberDefinition.addAnnotation(ja, context);
+				}
+			}
+		}
+
+	}
+
+	IJavaAnnotation createFakeProducesAnnotation(AbstractMemberDefinition def, IRootDefinitionContext context) {
+		IAnnotationDeclaration a = def.getAnnotation(CDISeamSolderConstants.UNWRAPS_ANNOTATION_TYPE_NAME);
+		if(a == null) return null;
+		IType producesAnnotation = context.getProject().getType(CDIConstants.PRODUCES_ANNOTATION_TYPE_NAME);
+		return (producesAnnotation == null) ? null
+			: new AnnotationLiteral(def.getResource(), a.getStartPosition(), a.getLength(), null, IMemberValuePair.K_UNKNOWN, producesAnnotation);
+	}
+
+}


Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderUnwrapsExtension.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain



More information about the jbosstools-commits mailing list