[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