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;
- }
-
-}
-