Author: dazarov
Date: 2011-08-19 20:44:31 -0400 (Fri, 19 Aug 2011)
New Revision: 34110
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeInjectedPointUnambiguousMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/wizard/xpl/AddQualifiersToBeanComposite.java
Log:
https://issues.jboss.org/browse/JBIDE-9476
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeInjectedPointUnambiguousMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeInjectedPointUnambiguousMarkerResolution.java 2011-08-19
23:34:03 UTC (rev 34109)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeInjectedPointUnambiguousMarkerResolution.java 2011-08-20
00:44:31 UTC (rev 34110)
@@ -122,7 +122,7 @@
for(IBean bean: beans){
if(bean.equals(selectedBean))
continue;
- if(AddQualifiersToBeanComposite.checkBeanQualifiers(selectedBean, bean, qualifiers))
+ if(MarkerResolutionUtils.checkBeanQualifiers(selectedBean, bean, qualifiers))
return true;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java 2011-08-19
23:34:03 UTC (rev 34109)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java 2011-08-20
00:44:31 UTC (rev 34110)
@@ -51,6 +51,7 @@
import org.jboss.tools.cdi.core.IQualifier;
import org.jboss.tools.cdi.core.IQualifierDeclaration;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
+import org.jboss.tools.cdi.ui.wizard.xpl.AddQualifiersToBeanComposite.ValuedQualifier;
import org.jboss.tools.common.EclipseUtil;
import org.jboss.tools.common.model.util.EclipseJavaUtil;
@@ -203,7 +204,7 @@
}
}
- public static void addQualifier(String qualifiedName, ICompilationUnit compilationUnit,
IJavaElement element) throws JavaModelException{
+ public static void addQualifier(String qualifiedName, String value, ICompilationUnit
compilationUnit, IJavaElement element) throws JavaModelException{
if(!(element instanceof ISourceReference))
return;
IAnnotation annotation = findAnnotation(element, qualifiedName);
@@ -217,19 +218,49 @@
IBuffer buffer = compilationUnit.getBuffer();
String shortName = getShortName(qualifiedName);
+ if(!value.isEmpty())
+ value = "(\""+value+"\")";
+
if(duplicateShortName)
shortName = qualifiedName;
annotation = findAnnotation(element, CDIConstants.INJECT_ANNOTATION_TYPE_NAME);
if(annotation != null && annotation.exists())
- buffer.replace(annotation.getSourceRange().getOffset()+annotation.getSourceRange().getLength(),
0, lineDelim+AT+shortName);
+ buffer.replace(annotation.getSourceRange().getOffset()+annotation.getSourceRange().getLength(),
0, lineDelim+AT+shortName+value);
else
- buffer.replace(((ISourceReference)element).getSourceRange().getOffset(), 0,
AT+shortName+lineDelim);
+ buffer.replace(((ISourceReference)element).getSourceRange().getOffset(), 0,
AT+shortName+value+lineDelim);
synchronized(compilationUnit) {
compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
}
}
+
+ public static void updateQualifier(String qualifiedName, String value, ICompilationUnit
compilationUnit, IJavaElement element) throws JavaModelException{
+ if(!(element instanceof ISourceReference))
+ return;
+ IAnnotation annotation = findAnnotation(element, qualifiedName);
+ if(annotation == null || !annotation.exists())
+ return;
+
+ boolean duplicateShortName = addImport(qualifiedName, compilationUnit);
+
+ //String lineDelim = SPACE;
+
+ IBuffer buffer = compilationUnit.getBuffer();
+ String shortName = getShortName(qualifiedName);
+
+ if(!value.isEmpty())
+ value = "(\""+value+"\")";
+
+ if(duplicateShortName)
+ shortName = qualifiedName;
+
+ buffer.replace(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), AT+shortName+value);
+
+ synchronized(compilationUnit) {
+ compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
+ }
+ }
public static String getShortName(String qualifiedName){
int lastDot = qualifiedName.lastIndexOf(DOT);
@@ -283,9 +314,9 @@
return null;
}
- private static boolean contains(IQualifierDeclaration declaration, Set<IQualifier>
qualifiers){
- for(IQualifier qualifier : qualifiers){
- if(declaration.getQualifier().getSourceType().getFullyQualifiedName().equals(qualifier.getSourceType().getFullyQualifiedName()))
+ private static boolean contains(IQualifierDeclaration declaration,
Set<IQualifierDeclaration> declarations){
+ for(IQualifierDeclaration d : declarations){
+ if(declaration.getQualifier().getSourceType().getFullyQualifiedName().equals(d.getQualifier().getSourceType().getFullyQualifiedName()))
return true;
}
return false;
@@ -311,7 +342,7 @@
}
}
- private static List<IQualifier> findQualifiersToDelete(IInjectionPoint
injectionPoint, Set<IQualifier> qualifiers){
+ private static List<IQualifier> findQualifiersToDelete(IInjectionPoint
injectionPoint, Set<IQualifierDeclaration> qualifiers){
ArrayList<IQualifier> list = new ArrayList<IQualifier>();
Set<IQualifierDeclaration> declarations =
injectionPoint.getQualifierDeclarations();
for(IQualifierDeclaration declaration : declarations){
@@ -321,19 +352,19 @@
return list;
}
- private static void addQualifiersToParameter(ICompilationUnit compilationUnit,
IInjectionPoint injectionPoint, Set<IQualifier> qualifiers){
+ private static void addQualifiersToParameter(ICompilationUnit compilationUnit,
IInjectionPoint injectionPoint, Set<IQualifierDeclaration> declarations){
HashMap<IQualifier, Boolean> duplicants = new HashMap<IQualifier,
Boolean>();
if(!(injectionPoint instanceof IInjectionPointParameter))
return;
try{
- for(IQualifier qualifier : qualifiers){
- String qualifierName = qualifier.getSourceType().getFullyQualifiedName();
+ for(IQualifierDeclaration declaration : declarations){
+ String qualifierName =
declaration.getQualifier().getSourceType().getFullyQualifiedName();
boolean duplicant = false;
if(!qualifierName.equals(CDIConstants.ANY_QUALIFIER_TYPE_NAME) &&
!qualifierName.equals(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME)){
duplicant = addImport(qualifierName, compilationUnit);
}
- duplicants.put(qualifier, new Boolean(duplicant));
+ duplicants.put(declaration.getQualifier(), new Boolean(duplicant));
}
String paramName = ((IInjectionPointParameter)injectionPoint).getName();
@@ -350,17 +381,22 @@
StringBuffer b = new StringBuffer();
if(index > 0)
b.append(SPACE);
- for(IQualifier qualifier : qualifiers){
- String qualifierName = qualifier.getSourceType().getFullyQualifiedName();
+ for(IQualifierDeclaration declaration : declarations){
+ String qualifierName =
declaration.getQualifier().getSourceType().getFullyQualifiedName();
+ String value = findQualifierValue(declaration);
+
+ if(!value.isEmpty())
+ value = "(\""+value+"\")";
+
if(!qualifierName.equals(CDIConstants.ANY_QUALIFIER_TYPE_NAME) &&
!qualifierName.equals(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME)){
- boolean duplicant = duplicants.get(qualifier).booleanValue();
+ boolean duplicant = duplicants.get(declaration.getQualifier()).booleanValue();
String annotation = getShortName(qualifierName);
if(duplicant)
annotation = qualifierName;
- if(qualifierName.equals(CDIConstants.NAMED_QUALIFIER_TYPE_NAME))
- b.append(AT+annotation+"(\""+parameters[index].getElementName()+"\")"+SPACE);
- else
- b.append(AT+annotation+SPACE);
+ //if(qualifierName.equals(CDIConstants.NAMED_QUALIFIER_TYPE_NAME))
+ // b.append(AT+annotation+"(\""+parameters[index].getElementName()+"\")"+SPACE);
+ //else
+ b.append(AT+annotation+value+SPACE);
}
}
b.append(Signature.getSignatureSimpleName(parameters[index].getTypeSignature())+SPACE);
@@ -394,9 +430,9 @@
try{
ICompilationUnit original =
injectionPoint.getClassBean().getBeanClass().getCompilationUnit();
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
- Set<IQualifier> qualifiers = bean.getQualifiers();
+ Set<IQualifierDeclaration> declarations = bean.getQualifierDeclarations();
if(injectionPoint instanceof IInjectionPointParameter){
- addQualifiersToParameter(compilationUnit, injectionPoint, qualifiers);
+ addQualifiersToParameter(compilationUnit, injectionPoint, declarations);
}else{
IJavaElement element = getInjectedJavaElement(compilationUnit, injectionPoint);
if(element == null || !element.exists())
@@ -404,16 +440,18 @@
// delete unneeded qualifiers
- List<IQualifier> toDelete = findQualifiersToDelete(injectionPoint,
qualifiers);
+ List<IQualifier> toDelete = findQualifiersToDelete(injectionPoint,
declarations);
for(IQualifier qualifier : toDelete){
deleteQualifierAnnotation(compilationUnit, element, qualifier);
}
- for(IQualifier qualifier : qualifiers){
- String qualifierName = qualifier.getSourceType().getFullyQualifiedName();
+ for(IQualifierDeclaration declaration : declarations){
+ String qualifierName =
declaration.getQualifier().getSourceType().getFullyQualifiedName();
+ String value = findQualifierValue(declaration);
if(!qualifierName.equals(CDIConstants.ANY_QUALIFIER_TYPE_NAME) &&
!qualifierName.equals(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME)){
- MarkerResolutionUtils.addQualifier(qualifierName, compilationUnit, element);
+ MarkerResolutionUtils.addQualifier(qualifierName, value, compilationUnit,
element);
+ MarkerResolutionUtils.updateQualifier(qualifierName, value, compilationUnit,
element);
}
}
}
@@ -595,5 +633,63 @@
}
return null;
}
+
+ public static boolean checkBeanQualifiers(IBean selectedBean, IBean bean,
Set<IQualifier> qualifiers){
+ HashSet<ValuedQualifier> valuedQualifiers = new
HashSet<ValuedQualifier>();
+ for(IQualifier qualifier : qualifiers){
+ valuedQualifiers.add(new ValuedQualifier(qualifier));
+ }
+ return checkValuedQualifiers(selectedBean, bean, valuedQualifiers);
+ }
+
+ public static boolean checkValuedQualifiers(IBean selectedBean, IBean bean,
Set<ValuedQualifier> qualifiers){
+ for(ValuedQualifier qualifier : qualifiers){
+ if(!isBeanContainQualifier(bean, qualifier)){
+ return false;
+ }
+ }
+ if(bean.getQualifiers().size() == qualifiers.size())
+ return true;
+ return false;
+ }
+
+ private static boolean isBeanContainQualifier(IBean bean, ValuedQualifier
valuedQualifier){
+
+ Set<IQualifier> qualifiers = bean.getQualifiers();
+ for(IQualifier q : qualifiers){
+ String value = findQualifierValue(bean, q);
+ if(q.getSourceType().getFullyQualifiedName().equals(valuedQualifier.getQualifier().getSourceType().getFullyQualifiedName())
&&
+ value.equals(valuedQualifier.getValue()))
+ return true;
+ }
+ return false;
+ }
+
+ public static String findQualifierValue(IBean bean, IQualifier qualifier){
+ IQualifierDeclaration declaration = findQualifierDeclaration(bean, qualifier);
+ if(declaration == null)
+ return "";
+
+ return findQualifierValue(declaration);
+ }
+
+ private static String findQualifierValue(IQualifierDeclaration declaration){
+ Object value = declaration.getMemberValue(null);
+
+ return value == null ? "" : value.toString();
+ }
+
+ private static IQualifierDeclaration findQualifierDeclaration(IBean bean, IQualifier
qualifier){
+ Set<IQualifierDeclaration> declarations = bean.getQualifierDeclarations();
+
+ if(declarations == null)
+ return null;
+
+ for(IQualifierDeclaration declaration : declarations){
+ if(declaration.getQualifier().getSourceType().getFullyQualifiedName().equals(qualifier.getSourceType().getFullyQualifiedName()))
+ return declaration;
+ }
+ return null;
+ }
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/wizard/xpl/AddQualifiersToBeanComposite.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/wizard/xpl/AddQualifiersToBeanComposite.java 2011-08-19
23:34:03 UTC (rev 34109)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/wizard/xpl/AddQualifiersToBeanComposite.java 2011-08-20
00:44:31 UTC (rev 34110)
@@ -132,7 +132,7 @@
this.bean = bean;
originalQualifiers = new ArrayList<ValuedQualifier>();
for(IQualifier q : bean.getQualifiers()){
- String value = findQualifierValue(bean, q);
+ String value = MarkerResolutionUtils.findQualifierValue(bean, q);
originalQualifiers.add(new ValuedQualifier(q, value));
}
@@ -226,68 +226,13 @@
for(IBean b: beans){
if(b.equals(bean))
continue;
- if(checkValuedQualifiers(bean, b, qfs))
+ if(MarkerResolutionUtils.checkValuedQualifiers(bean, b, qfs))
return false;
}
return true;
}
- public static boolean checkBeanQualifiers(IBean selectedBean, IBean bean,
Set<IQualifier> qualifiers){
- HashSet<ValuedQualifier> valuedQualifiers = new
HashSet<ValuedQualifier>();
- for(IQualifier qualifier : qualifiers){
- valuedQualifiers.add(new ValuedQualifier(qualifier));
- }
- return checkValuedQualifiers(selectedBean, bean, valuedQualifiers);
- }
-
- private static boolean checkValuedQualifiers(IBean selectedBean, IBean bean,
Set<ValuedQualifier> qualifiers){
- for(ValuedQualifier qualifier : qualifiers){
- if(!isBeanContainQualifier(bean, qualifier)){
- return false;
- }
- }
- if(bean.getQualifiers().size() == qualifiers.size())
- return true;
- return false;
- }
-
- private static boolean isBeanContainQualifier(IBean bean, ValuedQualifier
valuedQualifier){
-
- Set<IQualifier> qualifiers = bean.getQualifiers();
- for(IQualifier q : qualifiers){
- String value = findQualifierValue(bean, q);
- if(q.getSourceType().getFullyQualifiedName().equals(valuedQualifier.getQualifier().getSourceType().getFullyQualifiedName())
&&
- value.equals(valuedQualifier.getValue()))
- return true;
- }
- return false;
- }
-
- private static String findQualifierValue(IBean bean, IQualifier qualifier){
- IQualifierDeclaration declaration = findQualifierDeclaration(bean, qualifier);
- if(declaration == null)
- return "";
-
- Object value = declaration.getMemberValue(null);
-
- return value == null ? "" : value.toString();
- }
-
- private static IQualifierDeclaration findQualifierDeclaration(IBean bean, IQualifier
qualifier){
- Set<IQualifierDeclaration> declarations = bean.getQualifierDeclarations();
-
- if(declarations == null)
- return null;
-
- for(IQualifierDeclaration declaration : declarations){
- if(declaration.getQualifier().getSourceType().getFullyQualifiedName().equals(qualifier.getSourceType().getFullyQualifiedName()))
- return declaration;
- }
- return null;
- }
-
-
protected void createControl() {
GridLayout layout = new GridLayout();
layout.horizontalSpacing = 4;
@@ -712,10 +657,6 @@
moveAll(qualifiers, false);
}
-// public ArrayList<ValuedQualifier> getAvailableValuedQualifiers(){
-// return qualifiers;
-// }
-
public ArrayList<IQualifier> getAvailableQualifiers(){
ArrayList<IQualifier> result = new ArrayList<IQualifier>();
for(ValuedQualifier vq : qualifiers){