[jbosstools-commits] JBoss Tools SVN: r30299 - in trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core: META-INF and 6 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Mon Apr 4 18:04:19 EDT 2011


Author: scabanovich
Date: 2011-04-04 18:04:19 -0400 (Mon, 04 Apr 2011)
New Revision: 30299

Added:
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/BeanNameFeature.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderConstants.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderCoreExtension.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderCorePlugin.java
Removed:
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/solder/core/
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/BeanNameFeature.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderConstants.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderCoreExtension.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderCorePlugin.java
Modified:
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/META-INF/MANIFEST.MF
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/plugin.xml
Log:
JBIDE-8198
https://issues.jboss.org/browse/JBIDE-8198

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/META-INF/MANIFEST.MF
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/META-INF/MANIFEST.MF	2011-04-04 21:59:34 UTC (rev 30298)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/META-INF/MANIFEST.MF	2011-04-04 22:04:19 UTC (rev 30299)
@@ -1,9 +1,9 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Context and Dependency Injection Core
-Bundle-SymbolicName: org.jboss.tools.cdi.solder.core;singleton:=true
+Bundle-SymbolicName: org.jboss.tools.cdi.seam.solder.core;singleton:=true
 Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.jboss.tools.seam.solder.core.CDISolderCorePlugin
+Bundle-Activator: org.jboss.tools.cdi.seam.solder.core.CDISolderCorePlugin
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
@@ -28,5 +28,5 @@
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-Vendor: JBoss by Red Hat
-Export-Package: org.jboss.tools.seam.solder.core
+Export-Package: org.jboss.tools.cdi.seam.solder.core
 

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-04 21:59:34 UTC (rev 30298)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/plugin.xml	2011-04-04 22:04:19 UTC (rev 30299)
@@ -4,7 +4,7 @@
 	<extension
 	      point="org.jboss.tools.cdi.core.cdiextensions">
     <cdiextension
-          class="org.jboss.tools.seam.solder.core.CDISolderCoreExtension"
+          class="org.jboss.tools.cdi.seam.solder.core.CDISolderCoreExtension"
           runtime="org.jboss.seam.solder.core.CoreExtension">
     </cdiextension>
 	</extension>

Copied: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/BeanNameFeature.java (from rev 30298, trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/BeanNameFeature.java)
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/BeanNameFeature.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/BeanNameFeature.java	2011-04-04 22:04:19 UTC (rev 30299)
@@ -0,0 +1,122 @@
+/******************************************************************************* 
+ * 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 java.beans.Introspector;
+
+import org.jboss.tools.cdi.core.CDIConstants;
+import org.jboss.tools.cdi.core.CDIUtil;
+import org.jboss.tools.cdi.core.IAnnotationDeclaration;
+import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.core.IClassBean;
+import org.jboss.tools.cdi.core.IProducerField;
+import org.jboss.tools.cdi.core.IProducerMethod;
+import org.jboss.tools.cdi.core.extension.feature.IBeanNameFeature;
+import org.jboss.tools.cdi.internal.core.impl.AbstractBeanElement;
+import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
+import org.jboss.tools.cdi.internal.core.impl.definition.AbstractMemberDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.AbstractTypeDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.PackageDefinition;
+import org.jboss.tools.common.util.BeanUtil;
+import org.jboss.tools.common.util.EclipseJavaUtil;
+
+/**
+ * 
+ * @author Viacheslav Kabanovich
+ * 
+ */
+public class BeanNameFeature implements IBeanNameFeature {
+	/**
+	 * The singleton instance that processes requests without building inner
+	 * state.
+	 */
+	public static final IBeanNameFeature instance = new BeanNameFeature();
+
+	public String computeBeanName(IBean bean) {
+		AbstractBeanElement abe = (AbstractBeanElement)bean;
+		AbstractMemberDefinition d = abe.getDefinition();
+		if(d == null) return null;
+		IAnnotationDeclaration named = CDIUtil.getNamedDeclaration(bean);
+
+		AbstractTypeDefinition t = d.getTypeDefinition();
+		PackageDefinition p = d.getPackageDefinition();
+		AnnotationDeclaration namedOnPackage = null;
+		AnnotationDeclaration fullyQualifiedOnPackage = null;
+		if(p != null) {
+			namedOnPackage = p.getAnnotation(CDIConstants.NAMED_QUALIFIER_TYPE_NAME);
+			fullyQualifiedOnPackage = p.getAnnotation(CDISolderConstants.FULLY_QUALIFIED_ANNOTATION_TYPE_NAME);
+		}
+
+		AnnotationDeclaration fullyQualified = d.getAnnotation(CDISolderConstants.FULLY_QUALIFIED_ANNOTATION_TYPE_NAME);
+		
+		//@FullyQualified
+		if((fullyQualified != null || fullyQualifiedOnPackage != null) && (named != null || namedOnPackage != null)) {
+			if(named == null) named = namedOnPackage;
+			String pkg = resolvePackageName(fullyQualified, fullyQualifiedOnPackage, t, p);
+			String simpleName = getSimpleBeanName(bean, named);
+			return (simpleName == null) ? null : pkg.length() > 0 ? pkg + "." + simpleName : simpleName;			
+		}
+
+		// @Named on package only
+		if(named == null && namedOnPackage != null) {
+			return getSimpleBeanName(bean, namedOnPackage);
+		}
+
+		return null;
+	}
+
+	private String getStringValue(IAnnotationDeclaration a) {
+		if(a == null) return null;
+		Object o = a.getMemberValue(null);
+		return o == null ? null : o.toString();
+	}
+
+	private String resolvePackageName(AnnotationDeclaration fullyQualified, AnnotationDeclaration fullyQualifiedOnPackage, AbstractTypeDefinition t, PackageDefinition p) {
+		String contextClass = null;
+		AnnotationDeclaration a = fullyQualified != null ? fullyQualified : fullyQualifiedOnPackage;
+		contextClass = getStringValue(a);
+		if(contextClass == null) {
+			contextClass = t == null ? "" : t.getQualifiedName();
+		} else if(fullyQualified != null && t != null) {
+			String resolved = EclipseJavaUtil.resolveType(t.getType(), contextClass);
+			if(resolved != null) contextClass = resolved;				
+		} else if(fullyQualifiedOnPackage != null) {
+			contextClass = p.resolveType(contextClass);
+		}
+		int dot = contextClass.lastIndexOf('.');
+		return dot < 0 ? "" : contextClass.substring(0, dot);
+	}
+
+	private String getSimpleBeanName(IBean bean, IAnnotationDeclaration named) {
+		String simpleName = null;
+		if(named != null) {
+			simpleName = getStringValue(named);
+		}
+		if(simpleName != null && simpleName.length() > 0) {
+			//do nothing
+		} else if(bean instanceof IClassBean) {
+			simpleName = Introspector.decapitalize(((IClassBean)bean).getBeanClass().getElementName());
+		} else if(bean instanceof IProducerField) {
+			simpleName = ((IProducerField)bean).getField().getElementName();
+		} else if(bean instanceof IProducerMethod) {
+			IProducerMethod m = (IProducerMethod)bean;
+			String mn = m.getMethod().getElementName();
+			if(BeanUtil.isGetter(m.getMethod())) {
+				simpleName = BeanUtil.getPropertyName(mn);
+			} else {
+				simpleName = mn;
+			}
+		}
+		
+		return simpleName;
+	}
+}


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

Copied: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderConstants.java (from rev 30298, trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderConstants.java)
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderConstants.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderConstants.java	2011-04-04 22:04:19 UTC (rev 30299)
@@ -0,0 +1,11 @@
+package org.jboss.tools.cdi.seam.solder.core;
+
+import org.jboss.tools.cdi.core.CDIConstants;
+
+public interface CDISolderConstants extends CDIConstants {
+	public String EXACT_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.core.Exact";
+	public String FULLY_QUALIFIED_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.core.FullyQualified";
+	public String REQUIRES_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.core.Requires";
+	public String VETO_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.core.Veto";
+
+}


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

Copied: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderCoreExtension.java (from rev 30298, trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderCoreExtension.java)
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderCoreExtension.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderCoreExtension.java	2011-04-04 22:04:19 UTC (rev 30299)
@@ -0,0 +1,128 @@
+package org.jboss.tools.cdi.seam.solder.core;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.jboss.tools.cdi.core.IAnnotated;
+import org.jboss.tools.cdi.core.IAnnotationDeclaration;
+import org.jboss.tools.cdi.core.IParametedType;
+import org.jboss.tools.cdi.core.extension.ICDIExtension;
+import org.jboss.tools.cdi.core.extension.feature.IBeanNameFeature;
+import org.jboss.tools.cdi.core.extension.feature.IProcessAnnotatedTypeFeature;
+import org.jboss.tools.cdi.internal.core.impl.definition.DefinitionContext;
+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.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.EclipseJavaUtil;
+
+public class CDISolderCoreExtension implements ICDIExtension, IProcessAnnotatedTypeFeature {
+
+	public Object getAdapter(Class adapter) {
+		if(adapter == IBeanNameFeature.class) {
+			return BeanNameFeature.instance;
+		}
+		return null;
+	}
+
+	public void processAnnotatedType(TypeDefinition typeDefinition, DefinitionContext context) {
+		if(typeDefinition.isAnnotationPresent(CDISolderConstants.VETO_ANNOTATION_TYPE_NAME)
+			|| (typeDefinition.getPackageDefinition() != null 
+					&& typeDefinition.getPackageDefinition().isAnnotationPresent(CDISolderConstants.VETO_ANNOTATION_TYPE_NAME))) {
+			typeDefinition.veto();
+			return;
+		}
+
+		Set<String> requiredClasses = new HashSet<String>();
+		List<String> typeRequiredClasses = getRequiredClasses(typeDefinition);
+		if(typeRequiredClasses != null) requiredClasses.addAll(typeRequiredClasses);
+		List<String> packageRequiredClasses = getRequiredClasses(typeDefinition.getPackageDefinition());;
+		if(packageRequiredClasses != null) requiredClasses.addAll(packageRequiredClasses);
+		IJavaProject jp = EclipseResourceUtil.getJavaProject(context.getProject().getProject());
+		 if (!requiredClasses.isEmpty() && jp != null) {
+			 for (String c : requiredClasses) {
+				 try {
+					 if(EclipseJavaUtil.findType(jp, c) == null) {
+						 typeDefinition.veto();
+						 return;
+					 }
+				 } catch (JavaModelException e) {
+					 CDISolderCorePlugin.getDefault().logError(e);
+					 typeDefinition.veto();
+					 return;
+				 }
+			 }
+		 }
+
+		 List<FieldDefinition> fs = typeDefinition.getFields();
+		 for (FieldDefinition f: fs) {
+			 IParametedType exact = getExactType(f, typeDefinition.getType(), context);
+			 System.out.println("field:" + exact);
+			 if(exact != null) {
+				 
+			 }
+		 }
+		 
+		 List<MethodDefinition> ms = typeDefinition.getMethods();
+		 for (MethodDefinition m: ms) {
+			 List<ParameterDefinition> ps = m.getParameters();
+			 for (ParameterDefinition p: ps) {
+				 IParametedType exact = getExactType(p, typeDefinition.getType(), context);
+				 System.out.println("parameter:" + exact);
+				 if(exact != null) {
+					 
+				 }
+			 }
+		 }
+	}
+
+	private List<String> getRequiredClasses(IAnnotated d) {
+		if(d == null) return null;
+		IAnnotationDeclaration requires = d.getAnnotation(CDISolderConstants.REQUIRES_ANNOTATION_TYPE_NAME);
+		return requires != null ? getArrayValue(requires) : null;
+	}
+
+	private List<String> getArrayValue(IAnnotationDeclaration d) {
+		Object value = d.getMemberValue(null);
+		List<String> result = new ArrayList<String>();
+		if(value instanceof Object[]) {
+			Object[] array = (Object[])value;
+			for (int i = 0; i < array.length; i++) {
+				if(array[i] != null) result.add(array[i].toString());
+			}
+		} else if(value instanceof String) {
+			result.add(value.toString());
+		}
+		return result;
+	}
+
+	private IParametedType getExactType(IAnnotated annotated, IType declaringType, DefinitionContext context) {
+		 IAnnotationDeclaration a = annotated.getAnnotation(CDISolderConstants.EXACT_ANNOTATION_TYPE_NAME);
+		 if(a != null) {
+			 Object o = a.getMemberValue(null);
+			 if(o != null) {
+				 String s = o.toString();
+				 if(s.length() > 0) {
+					 String q = EclipseJavaUtil.resolveType(declaringType, s);
+					 if(q != null) {
+						try {
+							return context.getProject().getTypeFactory().getParametedType(declaringType, "Q" + q + ";");
+						} catch (JavaModelException e) {
+							CDISolderCorePlugin.getDefault().logError(e);
+						}
+						
+					 }
+				 }
+				 System.out.println("Exact:" + s);
+			 }
+		 }
+		 return null;
+	}
+
+}


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

Copied: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderCorePlugin.java (from rev 30298, trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderCorePlugin.java)
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderCorePlugin.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISolderCorePlugin.java	2011-04-04 22:04:19 UTC (rev 30299)
@@ -0,0 +1,65 @@
+/******************************************************************************* 
+ * 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.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.jboss.tools.common.log.BaseUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class CDISolderCorePlugin extends BaseUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.jboss.tools.cdi.solder.core";
+
+	// The shared instance
+	private static CDISolderCorePlugin plugin;
+
+	/**
+	 * The constructor
+	 */
+	public CDISolderCorePlugin() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static CDISolderCorePlugin getDefault() {
+		return plugin;
+	}
+
+}
+


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

Deleted: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/BeanNameFeature.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/BeanNameFeature.java	2011-04-04 21:59:34 UTC (rev 30298)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/BeanNameFeature.java	2011-04-04 22:04:19 UTC (rev 30299)
@@ -1,122 +0,0 @@
-/******************************************************************************* 
- * 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.seam.solder.core;
-
-
-import java.beans.Introspector;
-
-import org.jboss.tools.cdi.core.CDIConstants;
-import org.jboss.tools.cdi.core.CDIUtil;
-import org.jboss.tools.cdi.core.IAnnotationDeclaration;
-import org.jboss.tools.cdi.core.IBean;
-import org.jboss.tools.cdi.core.IClassBean;
-import org.jboss.tools.cdi.core.IProducerField;
-import org.jboss.tools.cdi.core.IProducerMethod;
-import org.jboss.tools.cdi.core.extension.feature.IBeanNameFeature;
-import org.jboss.tools.cdi.internal.core.impl.AbstractBeanElement;
-import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
-import org.jboss.tools.cdi.internal.core.impl.definition.AbstractMemberDefinition;
-import org.jboss.tools.cdi.internal.core.impl.definition.AbstractTypeDefinition;
-import org.jboss.tools.cdi.internal.core.impl.definition.PackageDefinition;
-import org.jboss.tools.common.util.BeanUtil;
-import org.jboss.tools.common.util.EclipseJavaUtil;
-
-/**
- * 
- * @author Viacheslav Kabanovich
- * 
- */
-public class BeanNameFeature implements IBeanNameFeature {
-	/**
-	 * The singleton instance that processes requests without building inner
-	 * state.
-	 */
-	public static final IBeanNameFeature instance = new BeanNameFeature();
-
-	public String computeBeanName(IBean bean) {
-		AbstractBeanElement abe = (AbstractBeanElement)bean;
-		AbstractMemberDefinition d = abe.getDefinition();
-		if(d == null) return null;
-		IAnnotationDeclaration named = CDIUtil.getNamedDeclaration(bean);
-
-		AbstractTypeDefinition t = d.getTypeDefinition();
-		PackageDefinition p = d.getPackageDefinition();
-		AnnotationDeclaration namedOnPackage = null;
-		AnnotationDeclaration fullyQualifiedOnPackage = null;
-		if(p != null) {
-			namedOnPackage = p.getAnnotation(CDIConstants.NAMED_QUALIFIER_TYPE_NAME);
-			fullyQualifiedOnPackage = p.getAnnotation(CDISolderConstants.FULLY_QUALIFIED_ANNOTATION_TYPE_NAME);
-		}
-
-		AnnotationDeclaration fullyQualified = d.getAnnotation(CDISolderConstants.FULLY_QUALIFIED_ANNOTATION_TYPE_NAME);
-		
-		//@FullyQualified
-		if((fullyQualified != null || fullyQualifiedOnPackage != null) && (named != null || namedOnPackage != null)) {
-			if(named == null) named = namedOnPackage;
-			String pkg = resolvePackageName(fullyQualified, fullyQualifiedOnPackage, t, p);
-			String simpleName = getSimpleBeanName(bean, named);
-			return (simpleName == null) ? null : pkg.length() > 0 ? pkg + "." + simpleName : simpleName;			
-		}
-
-		// @Named on package only
-		if(named == null && namedOnPackage != null) {
-			return getSimpleBeanName(bean, namedOnPackage);
-		}
-
-		return null;
-	}
-
-	private String getStringValue(IAnnotationDeclaration a) {
-		if(a == null) return null;
-		Object o = a.getMemberValue(null);
-		return o == null ? null : o.toString();
-	}
-
-	private String resolvePackageName(AnnotationDeclaration fullyQualified, AnnotationDeclaration fullyQualifiedOnPackage, AbstractTypeDefinition t, PackageDefinition p) {
-		String contextClass = null;
-		AnnotationDeclaration a = fullyQualified != null ? fullyQualified : fullyQualifiedOnPackage;
-		contextClass = getStringValue(a);
-		if(contextClass == null) {
-			contextClass = t == null ? "" : t.getQualifiedName();
-		} else if(fullyQualified != null && t != null) {
-			String resolved = EclipseJavaUtil.resolveType(t.getType(), contextClass);
-			if(resolved != null) contextClass = resolved;				
-		} else if(fullyQualifiedOnPackage != null) {
-			contextClass = p.resolveType(contextClass);
-		}
-		int dot = contextClass.lastIndexOf('.');
-		return dot < 0 ? "" : contextClass.substring(0, dot);
-	}
-
-	private String getSimpleBeanName(IBean bean, IAnnotationDeclaration named) {
-		String simpleName = null;
-		if(named != null) {
-			simpleName = getStringValue(named);
-		}
-		if(simpleName != null && simpleName.length() > 0) {
-			//do nothing
-		} else if(bean instanceof IClassBean) {
-			simpleName = Introspector.decapitalize(((IClassBean)bean).getBeanClass().getElementName());
-		} else if(bean instanceof IProducerField) {
-			simpleName = ((IProducerField)bean).getField().getElementName();
-		} else if(bean instanceof IProducerMethod) {
-			IProducerMethod m = (IProducerMethod)bean;
-			String mn = m.getMethod().getElementName();
-			if(BeanUtil.isGetter(m.getMethod())) {
-				simpleName = BeanUtil.getPropertyName(mn);
-			} else {
-				simpleName = mn;
-			}
-		}
-		
-		return simpleName;
-	}
-}

Deleted: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderConstants.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderConstants.java	2011-04-04 21:59:34 UTC (rev 30298)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderConstants.java	2011-04-04 22:04:19 UTC (rev 30299)
@@ -1,11 +0,0 @@
-package org.jboss.tools.seam.solder.core;
-
-import org.jboss.tools.cdi.core.CDIConstants;
-
-public interface CDISolderConstants extends CDIConstants {
-	public String EXACT_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.core.Exact";
-	public String FULLY_QUALIFIED_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.core.FullyQualified";
-	public String REQUIRES_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.core.Requires";
-	public String VETO_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.core.Veto";
-
-}

Deleted: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderCoreExtension.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderCoreExtension.java	2011-04-04 21:59:34 UTC (rev 30298)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderCoreExtension.java	2011-04-04 22:04:19 UTC (rev 30299)
@@ -1,128 +0,0 @@
-package org.jboss.tools.seam.solder.core;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.JavaModelException;
-import org.jboss.tools.cdi.core.IAnnotated;
-import org.jboss.tools.cdi.core.IAnnotationDeclaration;
-import org.jboss.tools.cdi.core.IParametedType;
-import org.jboss.tools.cdi.core.extension.ICDIExtension;
-import org.jboss.tools.cdi.core.extension.feature.IBeanNameFeature;
-import org.jboss.tools.cdi.core.extension.feature.IProcessAnnotatedTypeFeature;
-import org.jboss.tools.cdi.internal.core.impl.definition.DefinitionContext;
-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.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.EclipseJavaUtil;
-
-public class CDISolderCoreExtension implements ICDIExtension, IProcessAnnotatedTypeFeature {
-
-	public Object getAdapter(Class adapter) {
-		if(adapter == IBeanNameFeature.class) {
-			return BeanNameFeature.instance;
-		}
-		return null;
-	}
-
-	public void processAnnotatedType(TypeDefinition typeDefinition, DefinitionContext context) {
-		if(typeDefinition.isAnnotationPresent(CDISolderConstants.VETO_ANNOTATION_TYPE_NAME)
-			|| (typeDefinition.getPackageDefinition() != null 
-					&& typeDefinition.getPackageDefinition().isAnnotationPresent(CDISolderConstants.VETO_ANNOTATION_TYPE_NAME))) {
-			typeDefinition.veto();
-			return;
-		}
-
-		Set<String> requiredClasses = new HashSet<String>();
-		List<String> typeRequiredClasses = getRequiredClasses(typeDefinition);
-		if(typeRequiredClasses != null) requiredClasses.addAll(typeRequiredClasses);
-		List<String> packageRequiredClasses = getRequiredClasses(typeDefinition.getPackageDefinition());;
-		if(packageRequiredClasses != null) requiredClasses.addAll(packageRequiredClasses);
-		IJavaProject jp = EclipseResourceUtil.getJavaProject(context.getProject().getProject());
-		 if (!requiredClasses.isEmpty() && jp != null) {
-			 for (String c : requiredClasses) {
-				 try {
-					 if(EclipseJavaUtil.findType(jp, c) == null) {
-						 typeDefinition.veto();
-						 return;
-					 }
-				 } catch (JavaModelException e) {
-					 CDISolderCorePlugin.getDefault().logError(e);
-					 typeDefinition.veto();
-					 return;
-				 }
-			 }
-		 }
-
-		 List<FieldDefinition> fs = typeDefinition.getFields();
-		 for (FieldDefinition f: fs) {
-			 IParametedType exact = getExactType(f, typeDefinition.getType(), context);
-			 System.out.println("field:" + exact);
-			 if(exact != null) {
-				 
-			 }
-		 }
-		 
-		 List<MethodDefinition> ms = typeDefinition.getMethods();
-		 for (MethodDefinition m: ms) {
-			 List<ParameterDefinition> ps = m.getParameters();
-			 for (ParameterDefinition p: ps) {
-				 IParametedType exact = getExactType(p, typeDefinition.getType(), context);
-				 System.out.println("parameter:" + exact);
-				 if(exact != null) {
-					 
-				 }
-			 }
-		 }
-	}
-
-	private List<String> getRequiredClasses(IAnnotated d) {
-		if(d == null) return null;
-		IAnnotationDeclaration requires = d.getAnnotation(CDISolderConstants.REQUIRES_ANNOTATION_TYPE_NAME);
-		return requires != null ? getArrayValue(requires) : null;
-	}
-
-	private List<String> getArrayValue(IAnnotationDeclaration d) {
-		Object value = d.getMemberValue(null);
-		List<String> result = new ArrayList<String>();
-		if(value instanceof Object[]) {
-			Object[] array = (Object[])value;
-			for (int i = 0; i < array.length; i++) {
-				if(array[i] != null) result.add(array[i].toString());
-			}
-		} else if(value instanceof String) {
-			result.add(value.toString());
-		}
-		return result;
-	}
-
-	private IParametedType getExactType(IAnnotated annotated, IType declaringType, DefinitionContext context) {
-		 IAnnotationDeclaration a = annotated.getAnnotation(CDISolderConstants.EXACT_ANNOTATION_TYPE_NAME);
-		 if(a != null) {
-			 Object o = a.getMemberValue(null);
-			 if(o != null) {
-				 String s = o.toString();
-				 if(s.length() > 0) {
-					 String q = EclipseJavaUtil.resolveType(declaringType, s);
-					 if(q != null) {
-						try {
-							return context.getProject().getTypeFactory().getParametedType(declaringType, "Q" + q + ";");
-						} catch (JavaModelException e) {
-							CDISolderCorePlugin.getDefault().logError(e);
-						}
-						
-					 }
-				 }
-				 System.out.println("Exact:" + s);
-			 }
-		 }
-		 return null;
-	}
-
-}

Deleted: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderCorePlugin.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderCorePlugin.java	2011-04-04 21:59:34 UTC (rev 30298)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/seam/solder/core/CDISolderCorePlugin.java	2011-04-04 22:04:19 UTC (rev 30299)
@@ -1,65 +0,0 @@
-/******************************************************************************* 
- * 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.seam.solder.core;
-
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.jboss.tools.common.log.BaseUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class CDISolderCorePlugin extends BaseUIPlugin {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.jboss.tools.cdi.solder.core";
-
-	// The shared instance
-	private static CDISolderCorePlugin plugin;
-
-	/**
-	 * The constructor
-	 */
-	public CDISolderCorePlugin() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		plugin = this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 *
-	 * @return the shared instance
-	 */
-	public static CDISolderCorePlugin getDefault() {
-		return plugin;
-	}
-
-}
-



More information about the jbosstools-commits mailing list