Author: dazarov
Date: 2011-12-19 21:11:31 -0500 (Mon, 19 Dec 2011)
New Revision: 37447
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIMarkerResolutionUtils.java
trunk/common/plugins/org.jboss.tools.common/src/org/jboss/tools/common/refactoring/
trunk/common/plugins/org.jboss.tools.common/src/org/jboss/tools/common/refactoring/MarkerResolutionUtils.java
Removed:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/MarkerResolutionUtils.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/AddQualifiersToBeanProcessor.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/src/org/jboss/tools/cdi/seam/text/ext/hyperlink/CDISeamResourceLoadingHyperlinkDetector.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddAnnotationMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddLocalBeanMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddRetentionAnnotationMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddSerializableInterfaceMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddTargetAnnotationMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIProblemMarkerResolutionGenerator.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/ChangeAnnotationMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CreateCDIElementMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAllDisposerDuplicantMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAllInjectedConstructorsMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAnnotationMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeBeanScopedDependentMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeFieldProtectedMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeFieldStaticMarkerResolution.java
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/MakeMethodBusinessMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeMethodPublicMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/SelectBeanMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/wizard/SelectBeanWizard.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/wizard/xpl/AddQualifiersToBeanComposite.java
trunk/common/plugins/org.jboss.tools.common/META-INF/MANIFEST.MF
Log:
Java Seam and CDI quick fixes: after quick fix, editor is scrolled to the beginning. If
Undo/Redo commands are used, the entire file content gets selected
https://issues.jboss.org/browse/JBIDE-10536
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/AddQualifiersToBeanProcessor.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/AddQualifiersToBeanProcessor.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/AddQualifiersToBeanProcessor.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -95,7 +95,7 @@
MultiTextEdit edit = new MultiTextEdit();
- MarkerResolutionUtils.addQualifiersToBean(qualifiers, selectedBean, compilationUnit,
edit);
+ CDIMarkerResolutionUtils.addQualifiersToBean(qualifiers, selectedBean, compilationUnit,
edit);
IFile file2 = (IFile)injectionPoint.getClassBean().getResource();
ICompilationUnit original2 =
injectionPoint.getClassBean().getBeanClass().getCompilationUnit();
@@ -118,7 +118,7 @@
compilationUnit2 = compilationUnit;
}
- MarkerResolutionUtils.addQualifiersToInjectionPoint(qualifiers, injectionPoint,
compilationUnit2, edit);
+ CDIMarkerResolutionUtils.addQualifiersToInjectionPoint(qualifiers, injectionPoint,
compilationUnit2, edit);
if(edit.getChildrenSize() > 0){
fileChange.setEdit(edit);
Copied:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIMarkerResolutionUtils.java
(from rev 37434,
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/MarkerResolutionUtils.java)
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIMarkerResolutionUtils.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIMarkerResolutionUtils.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -0,0 +1,413 @@
+/*******************************************************************************
+ * Copyright (c) 2010 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.internal.core.refactoring;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IAnnotation;
+import org.eclipse.jdt.core.IBuffer;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.ILocalVariable;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.ISourceRange;
+import org.eclipse.jdt.core.ISourceReference;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
+import org.eclipse.text.edits.InsertEdit;
+import org.eclipse.text.edits.MultiTextEdit;
+import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.text.edits.TextEdit;
+import org.jboss.tools.cdi.core.CDIConstants;
+import org.jboss.tools.cdi.core.CDICorePlugin;
+import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.core.IBeanField;
+import org.jboss.tools.cdi.core.IBeanMethod;
+import org.jboss.tools.cdi.core.IInjectionPoint;
+import org.jboss.tools.cdi.core.IInjectionPointField;
+import org.jboss.tools.cdi.core.IInjectionPointParameter;
+import org.jboss.tools.cdi.core.IQualifier;
+import org.jboss.tools.cdi.core.IQualifierDeclaration;
+import org.jboss.tools.common.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.common.util.BeanUtil;
+
+/**
+ * @author Daniel Azarov
+ */
+public class CDIMarkerResolutionUtils extends MarkerResolutionUtils{
+
+ public static void addQualifier(String qualifiedName, String value, ICompilationUnit
compilationUnit, IJavaElement element, MultiTextEdit rootEdit) throws JavaModelException{
+ if(!(element instanceof ISourceReference))
+ return;
+ IAnnotation annotation = findAnnotation(element, qualifiedName);
+ if(annotation != null && annotation.exists())
+ return;
+
+ boolean duplicateShortName = addImport(qualifiedName, compilationUnit, rootEdit);
+
+ String lineDelim = SPACE;
+
+ 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(rootEdit != null){
+ if(annotation != null && annotation.exists()){
+ TextEdit edit = new
InsertEdit(annotation.getSourceRange().getOffset()+annotation.getSourceRange().getLength(),
lineDelim+AT+shortName+value);
+ rootEdit.addChild(edit);
+ }else{
+ TextEdit edit = new
InsertEdit(((ISourceReference)element).getSourceRange().getOffset(),
AT+shortName+value+lineDelim);
+ rootEdit.addChild(edit);
+ }
+ }else{
+ if(annotation != null && annotation.exists()){
+ buffer.replace(annotation.getSourceRange().getOffset()+annotation.getSourceRange().getLength(),
0, lineDelim+AT+shortName+value);
+ }else{
+ 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, MultiTextEdit rootEdit) throws JavaModelException{
+ if(!(element instanceof ISourceReference))
+ return;
+ IAnnotation annotation = findAnnotation(element, qualifiedName);
+ if(annotation == null || !annotation.exists())
+ return;
+
+ boolean duplicateShortName = addImport(qualifiedName, compilationUnit, rootEdit);
+
+ IBuffer buffer = compilationUnit.getBuffer();
+ String shortName = getShortName(qualifiedName);
+
+ if(!value.isEmpty())
+ value = "(\""+value+"\")";
+
+ if(duplicateShortName)
+ shortName = qualifiedName;
+
+ String newValue = AT+shortName+value;
+
+ if(!annotation.getSource().equals(newValue)){
+ if(rootEdit != null){
+ TextEdit edit = new ReplaceEdit(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), newValue);
+ rootEdit.addChild(edit);
+ }else{
+ buffer.replace(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), newValue);
+
+ synchronized(compilationUnit) {
+ compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
+ }
+ }
+ }
+ }
+
+ private static boolean contains(IQualifierDeclaration declaration,
List<ValuedQualifier> declarations){
+ for(ValuedQualifier d : declarations){
+ if(declaration.getQualifier().getSourceType().getFullyQualifiedName().equals(d.getQualifier().getSourceType().getFullyQualifiedName()))
+ return true;
+ }
+ return false;
+ }
+
+ private static List<IQualifier> findQualifiersToDelete(IInjectionPoint
injectionPoint, List<ValuedQualifier> qualifiers){
+ ArrayList<IQualifier> list = new ArrayList<IQualifier>();
+ Set<IQualifierDeclaration> declarations =
injectionPoint.getQualifierDeclarations();
+ for(IQualifierDeclaration declaration : declarations){
+ if(!contains(declaration, qualifiers))
+ list.add(declaration.getQualifier());
+ }
+ return list;
+ }
+
+ private static void addQualifiersToParameter(ICompilationUnit compilationUnit,
IInjectionPoint injectionPoint, List<ValuedQualifier> declarations, MultiTextEdit
rootEdit){
+ HashMap<IQualifier, Boolean> duplicants = new HashMap<IQualifier,
Boolean>();
+ if(!(injectionPoint instanceof IInjectionPointParameter))
+ return;
+ try{
+ for(ValuedQualifier 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, rootEdit);
+ }
+ duplicants.put(declaration.getQualifier(), new Boolean(duplicant));
+ }
+
+ String paramName = ((IInjectionPointParameter)injectionPoint).getName();
+ IMethod method =
((IInjectionPointParameter)injectionPoint).getBeanMethod().getMethod();
+ IType type = method.getDeclaringType();
+ IType t = compilationUnit.getType(type.getElementName());
+ IMethod m = t.getMethod(method.getElementName(), method.getParameterTypes());
+
+ IBuffer buffer = compilationUnit.getBuffer();
+
+ ILocalVariable[] parameters = m.getParameters();
+ for(int index = 0; index < parameters.length; index++){
+ if(parameters[index].getElementName().equals(paramName)){
+ StringBuffer b = new StringBuffer();
+ if(index > 0)
+ b.append(SPACE);
+ for(ValuedQualifier declaration : declarations){
+ String qualifierName =
declaration.getQualifier().getSourceType().getFullyQualifiedName();
+ String value = declaration.getValue();
+
+ if(!value.isEmpty())
+ value = "(\""+value+"\")";
+
+ if(!qualifierName.equals(CDIConstants.ANY_QUALIFIER_TYPE_NAME) &&
!qualifierName.equals(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME)){
+ boolean duplicant = duplicants.get(declaration.getQualifier()).booleanValue();
+ String annotation = getShortName(qualifierName);
+ if(duplicant)
+ annotation = qualifierName;
+ b.append(AT+annotation+value+SPACE);
+ }
+ }
+ b.append(Signature.getSignatureSimpleName(parameters[index].getTypeSignature())+SPACE);
+ b.append(parameters[index].getElementName());
+
+ String newValue = b.toString();
+
+ if(!parameters[index].getSource().equals(newValue)){
+ if(rootEdit != null){
+ TextEdit edit = new ReplaceEdit(parameters[index].getSourceRange().getOffset(),
parameters[index].getSourceRange().getLength(), b.toString());
+ rootEdit.addChild(edit);
+ }else{
+ buffer.replace(parameters[index].getSourceRange().getOffset(),
parameters[index].getSourceRange().getLength(), b.toString());
+
+ synchronized(compilationUnit) {
+ compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
+ }
+ }
+ }
+ }
+ }
+
+ }catch(JavaModelException ex){
+ CDICorePlugin.getDefault().logError(ex);
+ }
+ }
+
+ public static ISourceRange getParameterRegion(IInjectionPointParameter
injectionParameter){
+ try{
+ String paramName = injectionParameter.getName();
+ IMethod method = injectionParameter.getBeanMethod().getMethod();
+
+ for(ILocalVariable parameter : method.getParameters()){
+ if(parameter.getElementName().equals(paramName)){
+ return parameter.getSourceRange();
+ }
+ }
+ }catch(JavaModelException ex){
+ CDICorePlugin.getDefault().logError(ex);
+ }
+ return null;
+ }
+
+ public static void addQualifiersToInjectionPoint(List<ValuedQualifier> deployed,
IInjectionPoint injectionPoint, ICompilationUnit compilationUnit, MultiTextEdit edit){
+ try{
+ if(injectionPoint instanceof IInjectionPointParameter){
+ addQualifiersToParameter(compilationUnit, injectionPoint, deployed, edit);
+ }else{
+ IJavaElement element = getInjectedJavaElement(compilationUnit, injectionPoint);
+ if(element == null || !element.exists())
+ return;
+
+ // delete unneeded qualifiers
+ List<IQualifier> toDelete = findQualifiersToDelete(injectionPoint, deployed);
+
+ for(IQualifier qualifier : toDelete){
+ deleteAnnotation(qualifier.getSourceType().getFullyQualifiedName(),
compilationUnit, element, edit);
+ }
+
+ for(ValuedQualifier declaration : deployed){
+ String qualifierName =
declaration.getQualifier().getSourceType().getFullyQualifiedName();
+ String value = declaration.getValue();
+ if(!qualifierName.equals(CDIConstants.ANY_QUALIFIER_TYPE_NAME) &&
!qualifierName.equals(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME)){
+ addQualifier(qualifierName, value, compilationUnit, element, edit);
+ updateQualifier(qualifierName, value, compilationUnit, element, edit);
+ }
+ }
+ }
+ }catch(CoreException ex){
+ CDICorePlugin.getDefault().logError(ex);
+ }
+
+ }
+
+ public static void addQualifiersToBean(List<ValuedQualifier> deployed, IBean bean,
ICompilationUnit compilationUnit, MultiTextEdit edit){
+ IJavaElement beanElement = null;
+ if(bean instanceof IBeanField){
+ beanElement = ((IBeanField) bean).getField();
+ }else if(bean instanceof IBeanMethod){
+ beanElement = ((IBeanMethod) bean).getMethod();
+ }else{
+ beanElement = bean.getBeanClass();
+ }
+
+ try{
+ for(IQualifierDeclaration declaration : bean.getQualifierDeclarations()){
+ IQualifier qualifier = declaration.getQualifier();
+ String qualifierName = qualifier.getSourceType().getFullyQualifiedName();
+ if(!isQualifierNeeded(deployed, qualifier)){
+ deleteAnnotation(qualifierName, compilationUnit, beanElement, edit);
+ }
+ }
+
+ for(ValuedQualifier vq : deployed){
+ String qualifierName = vq.getQualifier().getSourceType().getFullyQualifiedName();
+ String value = vq.getValue();
+ String elName = getELName(bean);
+
+ if(!value.isEmpty() && (!value.equals(elName) ||
!qualifierName.equals(CDIConstants.NAMED_QUALIFIER_TYPE_NAME))){
+ value = "(\""+value+"\")";
+ }else{
+ value = "";
+ }
+
+ if(!qualifierName.equals(CDIConstants.ANY_QUALIFIER_TYPE_NAME) &&
!qualifierName.equals(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME)){
+ addAnnotation(qualifierName, compilationUnit, beanElement, value, edit);
+ updateAnnotation(qualifierName, compilationUnit, beanElement, value, edit);
+ }
+
+ }
+ }catch(CoreException ex){
+ CDICorePlugin.getDefault().logError(ex);
+ }
+
+ }
+
+ private static boolean isQualifierNeeded(List<ValuedQualifier> vQualifiers,
IQualifier qualifier){
+ for(ValuedQualifier vq : vQualifiers){
+ if(vq.getQualifier().equals(qualifier))
+ return true;
+ }
+ return false;
+ }
+
+ private static IJavaElement getInjectedJavaElement(ICompilationUnit compilationUnit,
IInjectionPoint injectionPoint){
+ if(injectionPoint instanceof IInjectionPointField){
+ IField field = ((IInjectionPointField)injectionPoint).getField();
+ IType type = field.getDeclaringType();
+ IType t = compilationUnit.getType(type.getElementName());
+ IField f = t.getField(field.getElementName());
+
+ return f;
+ }else if(injectionPoint instanceof IInjectionPointParameter){
+ IMethod method =
((IInjectionPointParameter)injectionPoint).getBeanMethod().getMethod();
+ IType type = method.getDeclaringType();
+ IType t = compilationUnit.getType(type.getElementName());
+ IMethod m = t.getMethod(method.getElementName(), method.getParameterTypes());
+ // Why method? Why not Java element for parameter?
+ return m;
+ }
+ 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){
+ if(q.getSourceType().getFullyQualifiedName().equals(valuedQualifier.getQualifier().getSourceType().getFullyQualifiedName()))
+ return true;
+ }
+ return false;
+ }
+
+ public static String findQualifierValue(IBean bean, IQualifier qualifier){
+ IQualifierDeclaration declaration = findQualifierDeclaration(bean, qualifier);
+ if(declaration == null)
+ return "";
+
+ return findQualifierValue(bean, declaration);
+ }
+
+ public static String findQualifierValue(IBean bean, IQualifierDeclaration declaration){
+ Object value = declaration.getMemberValue(null);
+
+ String result = value == null ? "" : value.toString();
+
+ if("".equals(result) &&
declaration.getQualifier().getSourceType().getFullyQualifiedName().equals(CDIConstants.NAMED_QUALIFIER_TYPE_NAME))
+ result = getELName(bean);
+
+ return result;
+ }
+
+ public 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;
+ }
+
+ public static String getELName(IBean bean){
+ String name;
+ if(bean instanceof IBeanField){
+ name = ((IBeanField) bean).getField().getElementName();
+ }else if(bean instanceof IBeanMethod){
+ name = ((IBeanMethod) bean).getMethod().getElementName();
+ if(BeanUtil.isGetter(((IBeanMethod) bean).getMethod())) {
+ return BeanUtil.getPropertyName(name);
+ }
+ }else{
+ name = bean.getBeanClass().getElementName();
+ if(name.length() > 0) {
+ name = name.substring(0, 1).toLowerCase() + name.substring(1);
+ }
+ }
+
+ return name;
+ }
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIMarkerResolutionUtils.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Deleted:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/MarkerResolutionUtils.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/MarkerResolutionUtils.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/MarkerResolutionUtils.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -1,887 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 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.internal.core.refactoring;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jdt.core.Flags;
-import org.eclipse.jdt.core.IAnnotatable;
-import org.eclipse.jdt.core.IAnnotation;
-import org.eclipse.jdt.core.IBuffer;
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.core.IField;
-import org.eclipse.jdt.core.IImportContainer;
-import org.eclipse.jdt.core.IImportDeclaration;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.ILocalVariable;
-import org.eclipse.jdt.core.IMember;
-import org.eclipse.jdt.core.IMethod;
-import org.eclipse.jdt.core.IPackageDeclaration;
-import org.eclipse.jdt.core.ISourceRange;
-import org.eclipse.jdt.core.ISourceReference;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.ITypeParameter;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.Signature;
-import org.eclipse.text.edits.DeleteEdit;
-import org.eclipse.text.edits.InsertEdit;
-import org.eclipse.text.edits.MultiTextEdit;
-import org.eclipse.text.edits.ReplaceEdit;
-import org.eclipse.text.edits.TextEdit;
-import org.jboss.tools.cdi.core.CDIConstants;
-import org.jboss.tools.cdi.core.CDICorePlugin;
-import org.jboss.tools.cdi.core.IBean;
-import org.jboss.tools.cdi.core.IBeanField;
-import org.jboss.tools.cdi.core.IBeanMethod;
-import org.jboss.tools.cdi.core.IInjectionPoint;
-import org.jboss.tools.cdi.core.IInjectionPointField;
-import org.jboss.tools.cdi.core.IInjectionPointParameter;
-import org.jboss.tools.cdi.core.IQualifier;
-import org.jboss.tools.cdi.core.IQualifierDeclaration;
-import org.jboss.tools.common.model.util.EclipseJavaUtil;
-import org.jboss.tools.common.util.BeanUtil;
-
-/**
- * @author Daniel Azarov
- */
-public class MarkerResolutionUtils {
- public static final String DOT = "."; //$NON-NLS-1$
- public static final String COMMA = ","; //$NON-NLS-1$
- public static final String SEMICOLON = ";"; //$NON-NLS-1$
- public static final String SPACE = " "; //$NON-NLS-1$
- public static final String AT = "@"; //$NON-NLS-1$
- public static final String IMPLEMENTS = "implements"; //$NON-NLS-1$
- public static final String IMPORT = "import"; //$NON-NLS-1$
- public static final String EXTENDS = "extends"; //$NON-NLS-1$
- public static final String OPEN_BRACE = "{"; //$NON-NLS-1$
- public static final String CLOSE_BRACE = "}"; //$NON-NLS-1$
-
- static final HashSet<String> primitives = new HashSet<String>();
- static{
- primitives.add("void"); //$NON-NLS-1$
- primitives.add("int"); //$NON-NLS-1$
- primitives.add("java.lang.Integer"); //$NON-NLS-1$
- primitives.add("char"); //$NON-NLS-1$
- primitives.add("java.lang.Character"); //$NON-NLS-1$
- primitives.add("boolean"); //$NON-NLS-1$
- primitives.add("java.lang.Boolean"); //$NON-NLS-1$
- primitives.add("short"); //$NON-NLS-1$
- primitives.add("java.lang.Short"); //$NON-NLS-1$
- primitives.add("long"); //$NON-NLS-1$
- primitives.add("java.lang.Long"); //$NON-NLS-1$
- primitives.add("float"); //$NON-NLS-1$
- primitives.add("java.lang.Float"); //$NON-NLS-1$
- primitives.add("double"); //$NON-NLS-1$
- primitives.add("java.lang.Double"); //$NON-NLS-1$
- primitives.add("byte"); //$NON-NLS-1$
- primitives.add("java.lang.Byte"); //$NON-NLS-1$
- primitives.add("java.lang.String"); //$NON-NLS-1$
- }
-
- /**
- *
- * @param qualifiedName
- * @param compilationUnit
- * @return true if there is import in compilation unit with the same short name
- * @throws JavaModelException
- */
- public static boolean addImport(String qualifiedName, ICompilationUnit compilationUnit)
throws JavaModelException{
- return addImport(qualifiedName, compilationUnit, false, null);
- }
-
- public static boolean addImport(String qualifiedName, ICompilationUnit compilationUnit,
MultiTextEdit rootEdit) throws JavaModelException{
- return addImport(qualifiedName, compilationUnit, false, rootEdit);
- }
-
- /**
- *
- * @param qualifiedName
- * @param compilationUnit
- * @param staticFlag
- * @return true if there is import in compilation unit with the same short name
- * @throws JavaModelException
- */
- public static boolean addImport(String qualifiedName, ICompilationUnit compilationUnit,
boolean staticFlag) throws JavaModelException{
- return addImport(qualifiedName, compilationUnit, staticFlag, null);
- }
-
- public static boolean addImport(String qualifiedName, ICompilationUnit compilationUnit,
boolean staticFlag, MultiTextEdit rootEdit) throws JavaModelException{
- if(primitives.contains(qualifiedName))
- return false;
-
- if(qualifiedName != null){
- String shortName = getShortName(qualifiedName);
-
- IPackageDeclaration[] packages = compilationUnit.getPackageDeclarations();
-
- // local classes do not need to be imported
- if(qualifiedName.indexOf(DOT) >= 0){
- String typePackage = qualifiedName.substring(0,qualifiedName.lastIndexOf(DOT));
-
- for(IPackageDeclaration packageDeclaration : packages){
- if(packageDeclaration.getElementName().equals(typePackage))
- return false;
- }
-
- for(IPackageDeclaration packageDeclaration : packages){
- IType type =
compilationUnit.getJavaProject().findType(packageDeclaration.getElementName()+DOT+shortName);
- if(type != null && type.exists())
- return true;
- }
- }
-
- IImportDeclaration[] importDeclarations = compilationUnit.getImports();
-
- for(IImportDeclaration importDeclaration : importDeclarations){
- String importName = importDeclaration.getElementName();
- String elementShort = getShortName(importName);
- if(importDeclaration.isOnDemand()){
- int importLastDot = importName.lastIndexOf(DOT);
- if(importLastDot == -1) return false; // invalid import declaration
- int elementLastDot = qualifiedName.lastIndexOf(DOT);
- if(elementLastDot == -1) return false; // invalid import declaration
-
- if(qualifiedName.substring(0, elementLastDot).equals(importName.substring(0,
importLastDot)))
- return false;
- }
-
- if(importName.equals(qualifiedName))
- return false;
- if(elementShort.equals(shortName))
- return true;
-
- }
- if(rootEdit == null){
- if(staticFlag){
- compilationUnit.createImport(qualifiedName, null, Flags.AccStatic, new
NullProgressMonitor());
- }else{
- compilationUnit.createImport(qualifiedName, null, new NullProgressMonitor());
- }
- }else{
- String text =
compilationUnit.findRecommendedLineSeparator()+IMPORT+SPACE+qualifiedName+SEMICOLON;
- if(!isDuplicate(rootEdit, text)){
- int importPosition = findPositionForImport(compilationUnit);
- TextEdit edit = new InsertEdit(importPosition, text);
- rootEdit.addChild(edit);
- }
- }
- }
- return false;
- }
-
-
- private static int findPositionForImport(ICompilationUnit compilationUnit) throws
JavaModelException{
- if(compilationUnit.getImportContainer().exists()){
- return
compilationUnit.getImportContainer().getSourceRange().getOffset()+compilationUnit.getImportContainer().getSourceRange().getLength();
- }else{
- IPackageDeclaration[] packageDeclarations = compilationUnit.getPackageDeclarations();
- if(packageDeclarations.length == 0){
- return 0;
- }
- int position = 0;
- for(IPackageDeclaration declaration : packageDeclarations){
- position =
declaration.getSourceRange().getOffset()+declaration.getSourceRange().getLength();
- }
- return position;
- }
- }
-
- private static boolean isDuplicate(MultiTextEdit rootEdit, String text){
- for(TextEdit edit : rootEdit.getChildren()){
- if(edit instanceof InsertEdit && ((InsertEdit) edit).getText().equals(text))
- return true;
- }
- return false;
- }
-
- public static void addAnnotation(String qualifiedName, ICompilationUnit compilationUnit,
IJavaElement element) throws JavaModelException{
- addAnnotation(qualifiedName, compilationUnit, element, "");
- }
- public static void updateAnnotation(String qualifiedName, ICompilationUnit
compilationUnit, IJavaElement element, String params) throws JavaModelException{
- updateAnnotation(qualifiedName, compilationUnit, element, params, null);
- }
-
- public static void updateAnnotation(String qualifiedName, ICompilationUnit
compilationUnit, IJavaElement element, String params, MultiTextEdit rootEdit) throws
JavaModelException{
- IJavaElement workingCopyElement = findWorkingCopy(compilationUnit, element);
- if(workingCopyElement == null){
- return;
- }
-
- if(!(workingCopyElement instanceof IMember))
- return;
-
- IMember workingCopyMember = (IMember) workingCopyElement;
-
- IAnnotation annotation = findAnnotation(workingCopyMember, qualifiedName);
- if(annotation == null || !annotation.exists())
- return;
-
- boolean duplicateShortName = addImport(qualifiedName, compilationUnit, null);
-
- IBuffer buffer = compilationUnit.getBuffer();
- String shortName = getShortName(qualifiedName);
-
- if(duplicateShortName)
- shortName = qualifiedName;
-
- String newValue = AT+shortName+params;
-
- if(!annotation.getSource().equals(newValue)){
- if(rootEdit != null){
- TextEdit edit = new ReplaceEdit(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), newValue);
- rootEdit.addChild(edit);
- }else{
- buffer.replace(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), newValue);
-
- synchronized(compilationUnit) {
- compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
- }
- }
- }
-
- }
-
- public static void addAnnotation(String qualifiedName, ICompilationUnit compilationUnit,
IJavaElement element, String params) throws JavaModelException{
- addAnnotation(qualifiedName, compilationUnit, element, params, null);
- }
-
- public static void addAnnotation(String qualifiedName, ICompilationUnit compilationUnit,
IJavaElement element, String params, MultiTextEdit rootEdit) throws JavaModelException{
- IJavaElement workingCopyElement = findWorkingCopy(compilationUnit, element);
- if(workingCopyElement == null){
- return;
- }
-
- if(!(workingCopyElement instanceof IMember))
- return;
-
- IMember workingCopyMember = (IMember) workingCopyElement;
-
- IAnnotation annotation = findAnnotation(workingCopyMember, qualifiedName);
- if(annotation != null && annotation.exists())
- return;
-
- boolean duplicateShortName = addImport(qualifiedName, compilationUnit, rootEdit);
-
- IBuffer buffer = compilationUnit.getBuffer();
- String shortName = getShortName(qualifiedName);
-
- if(duplicateShortName)
- shortName = qualifiedName;
-
- String str = AT+shortName+params;
-
- if(workingCopyMember instanceof IType){
- str += compilationUnit.findRecommendedLineSeparator();
- }else{
- str += SPACE;
- }
-
- if(rootEdit != null){
- TextEdit edit = new InsertEdit(workingCopyMember.getSourceRange().getOffset(), str);
- rootEdit.addChild(edit);
- }else{
- buffer.replace(workingCopyMember.getSourceRange().getOffset(), 0, str);
-
- synchronized(compilationUnit) {
- compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
- }
- }
-
-
-
- }
-
- public static void addQualifier(String qualifiedName, String value, ICompilationUnit
compilationUnit, IJavaElement element, MultiTextEdit rootEdit) throws JavaModelException{
- if(!(element instanceof ISourceReference))
- return;
- IAnnotation annotation = findAnnotation(element, qualifiedName);
- if(annotation != null && annotation.exists())
- return;
-
- boolean duplicateShortName = addImport(qualifiedName, compilationUnit, rootEdit);
-
- String lineDelim = SPACE;
-
- 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(rootEdit != null){
- if(annotation != null && annotation.exists()){
- TextEdit edit = new
InsertEdit(annotation.getSourceRange().getOffset()+annotation.getSourceRange().getLength(),
lineDelim+AT+shortName+value);
- rootEdit.addChild(edit);
- }else{
- TextEdit edit = new
InsertEdit(((ISourceReference)element).getSourceRange().getOffset(),
AT+shortName+value+lineDelim);
- rootEdit.addChild(edit);
- }
- }else{
- if(annotation != null && annotation.exists()){
- buffer.replace(annotation.getSourceRange().getOffset()+annotation.getSourceRange().getLength(),
0, lineDelim+AT+shortName+value);
- }else{
- 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, MultiTextEdit rootEdit) throws JavaModelException{
- if(!(element instanceof ISourceReference))
- return;
- IAnnotation annotation = findAnnotation(element, qualifiedName);
- if(annotation == null || !annotation.exists())
- return;
-
- boolean duplicateShortName = addImport(qualifiedName, compilationUnit, rootEdit);
-
- IBuffer buffer = compilationUnit.getBuffer();
- String shortName = getShortName(qualifiedName);
-
- if(!value.isEmpty())
- value = "(\""+value+"\")";
-
- if(duplicateShortName)
- shortName = qualifiedName;
-
- String newValue = AT+shortName+value;
-
- if(!annotation.getSource().equals(newValue)){
- if(rootEdit != null){
- TextEdit edit = new ReplaceEdit(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), newValue);
- rootEdit.addChild(edit);
- }else{
- buffer.replace(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), newValue);
-
- synchronized(compilationUnit) {
- compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
- }
- }
- }
- }
-
- public static String getShortName(String qualifiedName){
- int lastDot = qualifiedName.lastIndexOf(DOT);
- String name;
- if(lastDot < 0)
- name = qualifiedName;
- else
- name = qualifiedName.substring(lastDot+1);
- return name;
- }
-
- public static String getPackageName(String qualifiedName){
- int lastDot = qualifiedName.lastIndexOf(DOT);
- String name;
- if(lastDot < 0)
- name = "";
- else
- name = qualifiedName.substring(0, lastDot);
- return name;
- }
-
- public static String[] getShortNames(String[] qualifiedNames){
- String[] shortNames = new String[qualifiedNames.length];
- for(int i = 0; i < qualifiedNames.length; i++){
- shortNames[i] = getShortName(qualifiedNames[i]);
- }
- return shortNames;
- }
-
- public static String getTotalList(String[] names){
- String list = "";
- for(int i = 0; i < names.length; i++){
- if(i != 0)
- list += ", ";
- list += names[i];
- }
- return list;
- }
-
- public static IAnnotation findAnnotation(IJavaElement element, String qualifiedName){
- if(element instanceof IAnnotatable){
- String name = getShortName(qualifiedName);
- IAnnotation annotation = ((IAnnotatable)element).getAnnotation(qualifiedName);
- if (!annotation.exists()) {
- annotation = ((IAnnotatable)element).getAnnotation(name);
- } else {
- return annotation;
- }
- if(annotation.exists()) {
- IType type=null;
- if(element instanceof IType){
- type = (IType)element;
- }else if(element instanceof IMember){
- type = ((IMember)element).getDeclaringType();
- }else if(element instanceof ITypeParameter){
- type = ((ITypeParameter)element).getDeclaringMember().getDeclaringType();
- }else if(element instanceof ILocalVariable){
- type = ((ILocalVariable)element).getDeclaringMember().getDeclaringType();
- }
- if (type != null && annotation != null &&
qualifiedName.equals(EclipseJavaUtil.resolveType(type, name))) {
- return annotation;
- }
- }
- }
- return null;
- }
-
- private static boolean contains(IQualifierDeclaration declaration,
List<ValuedQualifier> declarations){
- for(ValuedQualifier d : declarations){
- if(declaration.getQualifier().getSourceType().getFullyQualifiedName().equals(d.getQualifier().getSourceType().getFullyQualifiedName()))
- return true;
- }
- return false;
- }
-
- private static List<IQualifier> findQualifiersToDelete(IInjectionPoint
injectionPoint, List<ValuedQualifier> qualifiers){
- ArrayList<IQualifier> list = new ArrayList<IQualifier>();
- Set<IQualifierDeclaration> declarations =
injectionPoint.getQualifierDeclarations();
- for(IQualifierDeclaration declaration : declarations){
- if(!contains(declaration, qualifiers))
- list.add(declaration.getQualifier());
- }
- return list;
- }
-
- private static void addQualifiersToParameter(ICompilationUnit compilationUnit,
IInjectionPoint injectionPoint, List<ValuedQualifier> declarations, MultiTextEdit
rootEdit){
- HashMap<IQualifier, Boolean> duplicants = new HashMap<IQualifier,
Boolean>();
- if(!(injectionPoint instanceof IInjectionPointParameter))
- return;
- try{
- for(ValuedQualifier 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, rootEdit);
- }
- duplicants.put(declaration.getQualifier(), new Boolean(duplicant));
- }
-
- String paramName = ((IInjectionPointParameter)injectionPoint).getName();
- IMethod method =
((IInjectionPointParameter)injectionPoint).getBeanMethod().getMethod();
- IType type = method.getDeclaringType();
- IType t = compilationUnit.getType(type.getElementName());
- IMethod m = t.getMethod(method.getElementName(), method.getParameterTypes());
-
- IBuffer buffer = compilationUnit.getBuffer();
-
- ILocalVariable[] parameters = m.getParameters();
- for(int index = 0; index < parameters.length; index++){
- if(parameters[index].getElementName().equals(paramName)){
- StringBuffer b = new StringBuffer();
- if(index > 0)
- b.append(SPACE);
- for(ValuedQualifier declaration : declarations){
- String qualifierName =
declaration.getQualifier().getSourceType().getFullyQualifiedName();
- String value = declaration.getValue();
-
- if(!value.isEmpty())
- value = "(\""+value+"\")";
-
- if(!qualifierName.equals(CDIConstants.ANY_QUALIFIER_TYPE_NAME) &&
!qualifierName.equals(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME)){
- boolean duplicant = duplicants.get(declaration.getQualifier()).booleanValue();
- String annotation = getShortName(qualifierName);
- if(duplicant)
- annotation = qualifierName;
- b.append(AT+annotation+value+SPACE);
- }
- }
- b.append(Signature.getSignatureSimpleName(parameters[index].getTypeSignature())+SPACE);
- b.append(parameters[index].getElementName());
-
- String newValue = b.toString();
-
- if(!parameters[index].getSource().equals(newValue)){
- if(rootEdit != null){
- TextEdit edit = new ReplaceEdit(parameters[index].getSourceRange().getOffset(),
parameters[index].getSourceRange().getLength(), b.toString());
- rootEdit.addChild(edit);
- }else{
- buffer.replace(parameters[index].getSourceRange().getOffset(),
parameters[index].getSourceRange().getLength(), b.toString());
-
- synchronized(compilationUnit) {
- compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
- }
- }
- }
- }
- }
-
- }catch(JavaModelException ex){
- CDICorePlugin.getDefault().logError(ex);
- }
- }
-
- public static ISourceRange getParameterRegion(IInjectionPointParameter
injectionParameter){
- try{
- String paramName = injectionParameter.getName();
- IMethod method = injectionParameter.getBeanMethod().getMethod();
-
- for(ILocalVariable parameter : method.getParameters()){
- if(parameter.getElementName().equals(paramName)){
- return parameter.getSourceRange();
- }
- }
- }catch(JavaModelException ex){
- CDICorePlugin.getDefault().logError(ex);
- }
- return null;
- }
-
- public static void addQualifiersToInjectionPoint(List<ValuedQualifier> deployed,
IInjectionPoint injectionPoint, ICompilationUnit compilationUnit, MultiTextEdit edit){
- try{
- if(injectionPoint instanceof IInjectionPointParameter){
- addQualifiersToParameter(compilationUnit, injectionPoint, deployed, edit);
- }else{
- IJavaElement element = getInjectedJavaElement(compilationUnit, injectionPoint);
- if(element == null || !element.exists())
- return;
-
- // delete unneeded qualifiers
- List<IQualifier> toDelete = findQualifiersToDelete(injectionPoint, deployed);
-
- for(IQualifier qualifier : toDelete){
- deleteAnnotation(qualifier.getSourceType().getFullyQualifiedName(),
compilationUnit, element, edit);
- }
-
- for(ValuedQualifier declaration : deployed){
- String qualifierName =
declaration.getQualifier().getSourceType().getFullyQualifiedName();
- String value = declaration.getValue();
- if(!qualifierName.equals(CDIConstants.ANY_QUALIFIER_TYPE_NAME) &&
!qualifierName.equals(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME)){
- addQualifier(qualifierName, value, compilationUnit, element, edit);
- updateQualifier(qualifierName, value, compilationUnit, element, edit);
- }
- }
- }
- }catch(CoreException ex){
- CDICorePlugin.getDefault().logError(ex);
- }
-
- }
-
- public static void addQualifiersToBean(List<ValuedQualifier> deployed, IBean bean,
ICompilationUnit compilationUnit, MultiTextEdit edit){
- IJavaElement beanElement = null;
- if(bean instanceof IBeanField){
- beanElement = ((IBeanField) bean).getField();
- }else if(bean instanceof IBeanMethod){
- beanElement = ((IBeanMethod) bean).getMethod();
- }else{
- beanElement = bean.getBeanClass();
- }
-
- try{
- for(IQualifierDeclaration declaration : bean.getQualifierDeclarations()){
- IQualifier qualifier = declaration.getQualifier();
- String qualifierName = qualifier.getSourceType().getFullyQualifiedName();
- if(!isQualifierNeeded(deployed, qualifier)){
- deleteAnnotation(qualifierName, compilationUnit, beanElement, edit);
- }
- }
-
- for(ValuedQualifier vq : deployed){
- String qualifierName = vq.getQualifier().getSourceType().getFullyQualifiedName();
- String value = vq.getValue();
- String elName = getELName(bean);
-
- if(!value.isEmpty() && (!value.equals(elName) ||
!qualifierName.equals(CDIConstants.NAMED_QUALIFIER_TYPE_NAME))){
- value = "(\""+value+"\")";
- }else{
- value = "";
- }
-
- if(!qualifierName.equals(CDIConstants.ANY_QUALIFIER_TYPE_NAME) &&
!qualifierName.equals(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME)){
- addAnnotation(qualifierName, compilationUnit, beanElement, value, edit);
- updateAnnotation(qualifierName, compilationUnit, beanElement, value, edit);
- }
-
- }
- }catch(CoreException ex){
- CDICorePlugin.getDefault().logError(ex);
- }
-
- }
-
- private static boolean isQualifierNeeded(List<ValuedQualifier> vQualifiers,
IQualifier qualifier){
- for(ValuedQualifier vq : vQualifiers){
- if(vq.getQualifier().equals(qualifier))
- return true;
- }
- return false;
- }
-
- public static void addInterfaceToClass(ICompilationUnit compilationUnit, IType type,
String qualifiedName) throws JavaModelException{
- String shortName = getShortName(qualifiedName);
-
- IType[] types = compilationUnit.getTypes();
- IType workingType = null;
- for(IType t : types){
- if(t.getElementName().equals(type.getElementName())){
- workingType = t;
- break;
- }
- }
-
- if(workingType != null){
- addImport(qualifiedName, compilationUnit, null);
-
- IBuffer buffer = compilationUnit.getBuffer();
-
- String text = buffer.getText(workingType.getSourceRange().getOffset(),
workingType.getSourceRange().getLength());
-
- int namePosition = text.indexOf(workingType.getElementName());
- if(namePosition >= 0){
- int implementsPosition = text.indexOf(IMPLEMENTS,namePosition);
- if(implementsPosition > 0){
- buffer.replace(workingType.getSourceRange().getOffset()+implementsPosition+IMPLEMENTS.length(),0,SPACE+shortName+COMMA);
- }else{
- int extedsPosition = text.indexOf(EXTENDS,namePosition);
- if(extedsPosition > 0){
- int bracePosition = text.indexOf(OPEN_BRACE, extedsPosition);
- String str = IMPLEMENTS+SPACE+shortName+SPACE;
- if(!text.substring(bracePosition-1,bracePosition).equals(SPACE))
- str = SPACE+str;
- buffer.replace(workingType.getSourceRange().getOffset()+bracePosition,0,str);
- }else{
- buffer.replace(workingType.getSourceRange().getOffset()+namePosition+workingType.getElementName().length(),0,SPACE+IMPLEMENTS+SPACE+shortName);
- }
- }
- }
- }
-
- }
-
- private static IJavaElement getInjectedJavaElement(ICompilationUnit compilationUnit,
IInjectionPoint injectionPoint){
- if(injectionPoint instanceof IInjectionPointField){
- IField field = ((IInjectionPointField)injectionPoint).getField();
- IType type = field.getDeclaringType();
- IType t = compilationUnit.getType(type.getElementName());
- IField f = t.getField(field.getElementName());
-
- return f;
- }else if(injectionPoint instanceof IInjectionPointParameter){
- IMethod method =
((IInjectionPointParameter)injectionPoint).getBeanMethod().getMethod();
- IType type = method.getDeclaringType();
- IType t = compilationUnit.getType(type.getElementName());
- IMethod m = t.getMethod(method.getElementName(), method.getParameterTypes());
- // Why method? Why not Java element for parameter?
- return m;
- }
- return null;
- }
-
- @SuppressWarnings("unchecked")
- public static <T extends IJavaElement> T findWorkingCopy(ICompilationUnit
compilationUnit, T element) throws JavaModelException{
- if(element instanceof IAnnotation){
- IJavaElement parent = findWorkingCopy(compilationUnit, element.getParent());
- if(parent instanceof IAnnotatable){
- for(IAnnotation a : ((IAnnotatable)parent).getAnnotations()){
- if(a.getElementName().equals(element.getElementName()))
- return (T)a;
- }
- }
- }else if(element instanceof ILocalVariable && ((ILocalVariable)
element).isParameter()){
- IJavaElement parent = findWorkingCopy(compilationUnit, element.getParent());
- if(parent instanceof IMethod){
- for(ILocalVariable parameter : ((IMethod)parent).getParameters()){
- if(parameter.getElementName().equals(element.getElementName()) &&
parameter.getTypeSignature().equals(((ILocalVariable)element).getTypeSignature()))
- return (T)parameter;
- }
- }
- }else{
- IJavaElement[] elements = compilationUnit.findElements(element);
- if(elements != null){
- for(IJavaElement e : elements){
- if(e.getClass().equals(element.getClass()))
- return (T)e;
- }
- }
- }
- return null;
- }
-
- public static void deleteAnnotation(String qualifiedName, ICompilationUnit
compilationUnit, IJavaElement element) throws JavaModelException{
- deleteAnnotation(qualifiedName, compilationUnit, element, null);
- }
-
- public static void deleteAnnotation(String qualifiedName, ICompilationUnit
compilationUnit, IJavaElement element, MultiTextEdit rootEdit) throws JavaModelException{
- IJavaElement workingCopyElement = findWorkingCopy(compilationUnit, element);
- if(workingCopyElement == null){
- return;
- }
-
- IAnnotation annotation = findAnnotation(workingCopyElement, qualifiedName);
- if(annotation != null){
- IBuffer buffer = compilationUnit.getBuffer();
-
- int position = annotation.getSourceRange().getOffset() +
annotation.getSourceRange().getLength();
- int numberOfSpaces = 0;
- if(position < buffer.getLength()-1){
- char c = buffer.getChar(position);
- while((c == ' ' || c == '\t' || c == '\n' || c ==
'\r') && position < buffer.getLength()-1){
- numberOfSpaces++;
- position++;
- c = buffer.getChar(position);
- }
- }
-
- // delete annotation
- if(rootEdit != null){
- TextEdit edit = new DeleteEdit(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength());
- rootEdit.addChild(edit);
- }else{
- buffer.replace(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength()+numberOfSpaces, "");
- }
-
- // check and delete import
- IImportDeclaration importDeclaration = compilationUnit.getImport(qualifiedName);
- IImportContainer importContainer = compilationUnit.getImportContainer();
- if(importDeclaration.exists() && importContainer.exists()){
- int importSize =
importContainer.getSourceRange().getOffset()+importContainer.getSourceRange().getLength();
-
- if(rootEdit != null){
- int annotationStart = annotation.getSourceRange().getOffset();
- int annotationEnd = annotationStart+annotation.getSourceRange().getLength();
- String textBefore = buffer.getText(importSize, annotationStart-importSize);
- String textAfter = buffer.getText(annotationEnd,
buffer.getLength()-annotationEnd);
- if(checkImport(textBefore, qualifiedName) && checkImport(textAfter,
qualifiedName)){
- TextEdit edit = new DeleteEdit(importDeclaration.getSourceRange().getOffset(),
importDeclaration.getSourceRange().getLength());
- rootEdit.addChild(edit);
- }
- }else{
- String text = buffer.getText(importSize, buffer.getLength()-importSize);
- if(checkImport(text, qualifiedName)){
- importDeclaration.delete(false, new NullProgressMonitor());
- }
- }
- }
-
- if(rootEdit == null){
- synchronized(compilationUnit) {
- compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
- }
- }
- }
- }
-
- private static boolean checkImport(String text, String qualifiedName){
- String name = getShortName(qualifiedName);
-
- Pattern p = Pattern.compile(".*\\W"+name+"\\W.*",Pattern.DOTALL);
//$NON-NLS-1$ //$NON-NLS-2$
- Matcher m = p.matcher(text);
- return !m.matches();
- }
-
- public static IMember getJavaMember(IJavaElement element){
- while(element != null){
- if(element instanceof IMember)
- return (IMember)element;
- element = element.getParent();
- }
- 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){
- if(q.getSourceType().getFullyQualifiedName().equals(valuedQualifier.getQualifier().getSourceType().getFullyQualifiedName()))
- return true;
- }
- return false;
- }
-
- public static String findQualifierValue(IBean bean, IQualifier qualifier){
- IQualifierDeclaration declaration = findQualifierDeclaration(bean, qualifier);
- if(declaration == null)
- return "";
-
- return findQualifierValue(bean, declaration);
- }
-
- public static String findQualifierValue(IBean bean, IQualifierDeclaration declaration){
- Object value = declaration.getMemberValue(null);
-
- String result = value == null ? "" : value.toString();
-
- if("".equals(result) &&
declaration.getQualifier().getSourceType().getFullyQualifiedName().equals(CDIConstants.NAMED_QUALIFIER_TYPE_NAME))
- result = getELName(bean);
-
- return result;
- }
-
- public 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;
- }
-
- public static String getELName(IBean bean){
- String name;
- if(bean instanceof IBeanField){
- name = ((IBeanField) bean).getField().getElementName();
- }else if(bean instanceof IBeanMethod){
- name = ((IBeanMethod) bean).getMethod().getElementName();
- if(BeanUtil.isGetter(((IBeanMethod) bean).getMethod())) {
- return BeanUtil.getPropertyName(name);
- }
- }else{
- name = bean.getBeanClass().getElementName();
- if(name.length() > 0) {
- name = name.substring(0, 1).toLowerCase() + name.substring(1);
- }
- }
-
- return name;
- }
-}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/src/org/jboss/tools/cdi/seam/text/ext/hyperlink/CDISeamResourceLoadingHyperlinkDetector.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/src/org/jboss/tools/cdi/seam/text/ext/hyperlink/CDISeamResourceLoadingHyperlinkDetector.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/src/org/jboss/tools/cdi/seam/text/ext/hyperlink/CDISeamResourceLoadingHyperlinkDetector.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -31,7 +31,7 @@
import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector;
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.ui.texteditor.ITextEditor;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.seam.text.ext.CDISeamExtPlugin;
import org.jboss.tools.common.EclipseUtil;
@@ -74,7 +74,7 @@
IJavaElement element = cu.getElementAt(offset);
if(element != null){
if(element instanceof IField){
- IAnnotation annotation = MarkerResolutionUtils.findAnnotation(element,
RESOURCE_ANNOTATION);
+ IAnnotation annotation = CDIMarkerResolutionUtils.findAnnotation(element,
RESOURCE_ANNOTATION);
if(annotation != null && annotation.exists()){
IRegion annotationRegion = getAnnotationRegion(document, annotation);
String text = getValue(annotation);
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddAnnotationMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddAnnotationMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddAnnotationMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -20,11 +20,13 @@
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.cdi.core.CDIImages;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
@@ -37,7 +39,7 @@
public AddAnnotationMarkerResolution(IJavaElement element, String qualifiedName){
this.element = element;
this.qualifiedName = qualifiedName;
- String shortName = MarkerResolutionUtils.getShortName(qualifiedName);
+ String shortName = CDIMarkerResolutionUtils.getShortName(qualifiedName);
String type = "";
if(element instanceof IType){
try {
@@ -63,28 +65,41 @@
label = NLS.bind(CDIUIMessages.ADD_ANNOTATION_MARKER_RESOLUTION_TITLE, new
String[]{shortName, element.getElementName(), type});
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void run(IMarker marker) {
try{
- ICompilationUnit original =
MarkerResolutionUtils.getJavaMember(element).getCompilationUnit();
+ ICompilationUnit original =
CDIMarkerResolutionUtils.getJavaMember(element).getCompilationUnit();
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
- MarkerResolutionUtils.addAnnotation(qualifiedName, compilationUnit, element);
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
+ MultiTextEdit edit = new MultiTextEdit();
+
+ change.setEdit(edit);
+
+ CDIMarkerResolutionUtils.addAnnotation(qualifiedName, compilationUnit, element,
"", edit);
+
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
+ }
compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
CDIUIPlugin.getDefault().logError(ex);
}
}
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_ADD;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddLocalBeanMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddLocalBeanMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddLocalBeanMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -53,10 +53,12 @@
this.file = file;
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void run(IMarker marker) {
try{
ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
@@ -121,10 +123,12 @@
}
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_ADD;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddRetentionAnnotationMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddRetentionAnnotationMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddRetentionAnnotationMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -15,12 +15,14 @@
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.cdi.core.CDIConstants;
import org.jboss.tools.cdi.core.CDIImages;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
@@ -34,30 +36,43 @@
label = NLS.bind(CDIUIMessages.ADD_RETENTION_MARKER_RESOLUTION_TITLE,
type.getElementName());
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void run(IMarker marker) {
try{
ICompilationUnit original = type.getCompilationUnit();
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
- MarkerResolutionUtils.addImport(CDIConstants.RETENTION_POLICY_RUNTIME_TYPE_NAME,
compilationUnit, true);
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
- MarkerResolutionUtils.addAnnotation(CDIConstants.RETENTION_ANNOTATION_TYPE_NAME,
compilationUnit, type, "(RUNTIME)");
+ MultiTextEdit edit = new MultiTextEdit();
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
+ change.setEdit(edit);
+
+ CDIMarkerResolutionUtils.addImport(CDIConstants.RETENTION_POLICY_RUNTIME_TYPE_NAME,
compilationUnit, true, edit);
+
+ CDIMarkerResolutionUtils.addAnnotation(CDIConstants.RETENTION_ANNOTATION_TYPE_NAME,
compilationUnit, type, "(RUNTIME)", edit);
+
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
+ }
compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
CDIUIPlugin.getDefault().logError(ex);
}
}
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_ADD;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddSerializableInterfaceMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddSerializableInterfaceMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddSerializableInterfaceMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -18,10 +18,12 @@
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.cdi.core.CDIImages;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
import org.jboss.tools.common.EclipseUtil;
@@ -54,11 +56,19 @@
ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
- MarkerResolutionUtils.addInterfaceToClass(compilationUnit, type, SERIALIZABLE);
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
+ MultiTextEdit edit = new MultiTextEdit();
+
+ change.setEdit(edit);
+
+ CDIMarkerResolutionUtils.addInterfaceToClass(compilationUnit, type, SERIALIZABLE,
edit);
+
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
+ }
compilationUnit.discardWorkingCopy();
-
}catch(CoreException ex){
CDIUIPlugin.getDefault().logError(ex);
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddTargetAnnotationMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddTargetAnnotationMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddTargetAnnotationMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -15,12 +15,14 @@
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.cdi.core.CDIConstants;
import org.jboss.tools.cdi.core.CDIImages;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
@@ -35,27 +37,37 @@
public AddTargetAnnotationMarkerResolution(IType type, String[] typeNames){
this.qualifiedNames = typeNames;
this.type = type;
- shortNames = MarkerResolutionUtils.getShortNames(qualifiedNames);
- totalList =
MarkerResolutionUtils.OPEN_BRACE+MarkerResolutionUtils.getTotalList(shortNames)+MarkerResolutionUtils.CLOSE_BRACE;
+ shortNames = CDIMarkerResolutionUtils.getShortNames(qualifiedNames);
+ totalList =
CDIMarkerResolutionUtils.OPEN_BRACE+CDIMarkerResolutionUtils.getTotalList(shortNames)+CDIMarkerResolutionUtils.CLOSE_BRACE;
label = NLS.bind(CDIUIMessages.ADD_TARGET_MARKER_RESOLUTION_TITLE, totalList,
type.getElementName());
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void run(IMarker marker) {
try{
ICompilationUnit original = type.getCompilationUnit();
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
+
+ MultiTextEdit edit = new MultiTextEdit();
+
+ change.setEdit(edit);
for(String qualifiedName : qualifiedNames){
- MarkerResolutionUtils.addImport(qualifiedName, compilationUnit, true);
+ CDIMarkerResolutionUtils.addImport(qualifiedName, compilationUnit, true, edit);
}
- MarkerResolutionUtils.addAnnotation(CDIConstants.TARGET_ANNOTATION_TYPE_NAME,
compilationUnit, type, "("+totalList+")");
+ CDIMarkerResolutionUtils.addAnnotation(CDIConstants.TARGET_ANNOTATION_TYPE_NAME,
compilationUnit, type, "("+totalList+")", edit);
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
+ }
compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
CDIUIPlugin.getDefault().logError(ex);
@@ -64,10 +76,12 @@
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_ADD;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIProblemMarkerResolutionGenerator.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIProblemMarkerResolutionGenerator.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIProblemMarkerResolutionGenerator.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -50,7 +50,7 @@
import org.jboss.tools.cdi.core.IStereotype;
import org.jboss.tools.cdi.core.IStereotyped;
import org.jboss.tools.cdi.internal.core.impl.CDIProject;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.internal.core.validation.CDIValidationErrorManager;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
import org.jboss.tools.common.EclipseUtil;
@@ -67,6 +67,7 @@
private static final String XML_EXTENSION = "xml"; //$NON-NLS-1$
private static final int MARKER_RESULUTION_NUMBER_LIMIT = 7;
+ @Override
public IMarkerResolution[] getResolutions(IMarker marker) {
try {
return findResolutions(marker);
@@ -662,7 +663,7 @@
String injectionPointTypeName =
injectionPoint.getClassBean().getBeanClass().getFullyQualifiedName();
String injectionPointPackage = null;
- int dotLastIndex = injectionPointTypeName.lastIndexOf(MarkerResolutionUtils.DOT);
+ int dotLastIndex = injectionPointTypeName.lastIndexOf(CDIMarkerResolutionUtils.DOT);
if(dotLastIndex < 0)
injectionPointPackage = "";
@@ -681,7 +682,7 @@
String beanTypeName = bean.getBeanClass().getFullyQualifiedName();
String beanPackage = null;
- dotLastIndex = beanTypeName.lastIndexOf(MarkerResolutionUtils.DOT);
+ dotLastIndex = beanTypeName.lastIndexOf(CDIMarkerResolutionUtils.DOT);
if(dotLastIndex < 0)
beanPackage = "";
@@ -744,7 +745,7 @@
if(javaElement != null && javaElement instanceof IType){
IType type = (IType)javaElement;
if(!type.isBinary()){
- String shortName =
MarkerResolutionUtils.getShortName(AddSerializableInterfaceMarkerResolution.SERIALIZABLE);
+ String shortName =
CDIMarkerResolutionUtils.getShortName(AddSerializableInterfaceMarkerResolution.SERIALIZABLE);
String[] interfaces = type.getSuperInterfaceNames();
for(String name : interfaces){
if(name.equals(shortName))
@@ -859,6 +860,7 @@
return null;
}
+ @Override
public boolean hasResolutions(IMarker marker) {
try {
return getMessageID(marker) >= 0;
@@ -870,7 +872,7 @@
private IAnnotation getAnnotation(IJavaElement element, String
annotationQualifiedName){
if(element instanceof IAnnotatable){
- String shortName = MarkerResolutionUtils.getShortName(annotationQualifiedName);
+ String shortName = CDIMarkerResolutionUtils.getShortName(annotationQualifiedName);
IAnnotation[] annotations;
try {
annotations = ((IAnnotatable)element).getAnnotations();
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/ChangeAnnotationMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/ChangeAnnotationMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/ChangeAnnotationMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -14,15 +14,18 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.IAnnotation;
-import org.eclipse.jdt.core.IBuffer;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.MultiTextEdit;
+import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.text.edits.TextEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.cdi.core.CDIConstants;
import org.jboss.tools.cdi.core.CDIImages;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
@@ -31,7 +34,7 @@
private IAnnotation annotation;
private String sourceString = "";
- private String changeString = MarkerResolutionUtils.AT;
+ private String changeString = CDIMarkerResolutionUtils.AT;
private boolean useBraces = true;
private String[] qualifiedNames = new String[0];
@@ -52,7 +55,7 @@
this(annotation);
qualifiedNames = new String[]{parameter};
- String shortName = MarkerResolutionUtils.getShortName(parameter);
+ String shortName = CDIMarkerResolutionUtils.getShortName(parameter);
changeString += "("+shortName+")";
}
@@ -61,10 +64,10 @@
this(annotation);
this.qualifiedNames = typeNames;
- String[] shortNames = MarkerResolutionUtils.getShortNames(qualifiedNames);
- String totalList = MarkerResolutionUtils.getTotalList(shortNames);
+ String[] shortNames = CDIMarkerResolutionUtils.getShortNames(qualifiedNames);
+ String totalList = CDIMarkerResolutionUtils.getTotalList(shortNames);
if(useBraces)
- totalList =
MarkerResolutionUtils.OPEN_BRACE+totalList+MarkerResolutionUtils.CLOSE_BRACE;
+ totalList =
CDIMarkerResolutionUtils.OPEN_BRACE+totalList+CDIMarkerResolutionUtils.CLOSE_BRACE;
changeString += "("+totalList+")";
}
@@ -74,38 +77,52 @@
this.useBraces = useBraces;
}
+ @Override
public String getLabel() {
return NLS.bind(CDIUIMessages.CHANGE_ANNOTATION_MARKER_RESOLUTION_TITLE, sourceString,
changeString);
}
+ @Override
public void run(IMarker marker) {
try{
- ICompilationUnit original =
MarkerResolutionUtils.getJavaMember(annotation).getCompilationUnit();
+ ICompilationUnit original =
CDIMarkerResolutionUtils.getJavaMember(annotation).getCompilationUnit();
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
+
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
- MarkerResolutionUtils.addImport(CDIConstants.TARGET_ANNOTATION_TYPE_NAME,
compilationUnit);
+ MultiTextEdit edit = new MultiTextEdit();
+ change.setEdit(edit);
+ CDIMarkerResolutionUtils.addImport(CDIConstants.TARGET_ANNOTATION_TYPE_NAME,
compilationUnit, edit);
+
for(String qualifiedName : qualifiedNames){
- MarkerResolutionUtils.addImport(qualifiedName, compilationUnit, true);
+ CDIMarkerResolutionUtils.addImport(qualifiedName, compilationUnit, true, edit);
}
- IAnnotation workingCopyAnnotation =
MarkerResolutionUtils.findWorkingCopy(compilationUnit, annotation);
+ IAnnotation workingCopyAnnotation =
CDIMarkerResolutionUtils.findWorkingCopy(compilationUnit, annotation);
- IBuffer buffer = compilationUnit.getBuffer();
+ //IBuffer buffer = compilationUnit.getBuffer();
+ TextEdit re = new ReplaceEdit(workingCopyAnnotation.getSourceRange().getOffset(),
workingCopyAnnotation.getSourceRange().getLength(), changeString);
+ edit.addChild(re);
- buffer.replace(workingCopyAnnotation.getSourceRange().getOffset(),
workingCopyAnnotation.getSourceRange().getLength(), changeString);
+ //buffer.replace(workingCopyAnnotation.getSourceRange().getOffset(),
workingCopyAnnotation.getSourceRange().getLength(), changeString);
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
+ }
compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
CDIUIPlugin.getDefault().logError(ex);
}
}
+ @Override
public String getDescription() {
return NLS.bind(CDIUIMessages.CHANGE_ANNOTATION_MARKER_RESOLUTION_TITLE, sourceString,
changeString);
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_CHANGE;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CreateCDIElementMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CreateCDIElementMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CreateCDIElementMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -20,7 +20,7 @@
import org.eclipse.ui.IMarkerResolution2;
import org.eclipse.ui.PlatformUI;
import org.jboss.tools.cdi.core.CDIImages;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.wizard.NewBeanCreationWizard;
import org.jboss.tools.cdi.ui.wizard.NewCDIElementWizard;
@@ -62,6 +62,7 @@
return "";
}
+ @Override
public void run(IMarker marker){
internal_run(marker, false);
}
@@ -91,7 +92,7 @@
}
NewTypeWizardAdapter adapter = new NewTypeWizardAdapter(project);
- adapter.setRawPackageName(MarkerResolutionUtils.getPackageName(qualifiedName));
+ adapter.setRawPackageName(CDIMarkerResolutionUtils.getPackageName(qualifiedName));
adapter.setRawClassName(qualifiedName);
adapter.setRawSuperClassName(OBJECT);
wizard.setAdapter(adapter);
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAllDisposerDuplicantMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAllDisposerDuplicantMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAllDisposerDuplicantMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -38,11 +38,13 @@
this.file = file;
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void run(IMarker marker) {
DeleteAllDisposerAnnotationsProcessor processor = new
DeleteAllDisposerAnnotationsProcessor(file, method, label);
ProcessorBasedRefactoring refactoring = new ProcessorBasedRefactoring(processor);
@@ -51,14 +53,17 @@
wizard.showWizard();
}
+ @Override
public RefactoringProcessor getRefactoringProcessor(){
return new DeleteAllDisposerAnnotationsProcessor(file, method, label);
}
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_REMOVE;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAllInjectedConstructorsMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAllInjectedConstructorsMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAllInjectedConstructorsMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -48,11 +48,13 @@
this.file = file;
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void run(IMarker marker) {
DeleteAllInjectedConstructorsProcessor processor = new
DeleteAllInjectedConstructorsProcessor(file, method, label);
ProcessorBasedRefactoring refactoring = new ProcessorBasedRefactoring(processor);
@@ -61,14 +63,17 @@
wizard.showWizard();
}
+ @Override
public RefactoringProcessor getRefactoringProcessor(){
return new DeleteAllInjectedConstructorsProcessor(file, method, label);
}
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_REMOVE;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAnnotationMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAnnotationMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAnnotationMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -20,11 +20,13 @@
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.cdi.core.CDIImages;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
@@ -37,7 +39,7 @@
public DeleteAnnotationMarkerResolution(IJavaElement element, String qualifiedName){
this.element = element;
this.qualifiedName = qualifiedName;
- String shortName = MarkerResolutionUtils.getShortName(qualifiedName);
+ String shortName = CDIMarkerResolutionUtils.getShortName(qualifiedName);
String type = "";
if(element instanceof IType){
try {
@@ -63,28 +65,41 @@
label = NLS.bind(CDIUIMessages.DELETE_ANNOTATION_MARKER_RESOLUTION_TITLE, new
String[]{shortName, element.getElementName(), type});
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void run(IMarker marker) {
try{
- ICompilationUnit original =
MarkerResolutionUtils.getJavaMember(element).getCompilationUnit();
+ ICompilationUnit original =
CDIMarkerResolutionUtils.getJavaMember(element).getCompilationUnit();
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
+
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
- MarkerResolutionUtils.deleteAnnotation(qualifiedName, compilationUnit, element);
+ MultiTextEdit edit = new MultiTextEdit();
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
+ change.setEdit(edit);
+
+ CDIMarkerResolutionUtils.deleteAnnotation(qualifiedName, compilationUnit, element,
edit);
+
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
+ }
compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
CDIUIPlugin.getDefault().logError(ex);
}
}
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_REMOVE;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeBeanScopedDependentMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeBeanScopedDependentMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeBeanScopedDependentMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -26,13 +26,18 @@
import org.eclipse.jdt.core.IImportContainer;
import org.eclipse.jdt.core.IImportDeclaration;
import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.DeleteEdit;
+import org.eclipse.text.edits.MultiTextEdit;
+import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.text.edits.TextEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.cdi.core.CDIConstants;
import org.jboss.tools.cdi.core.CDIImages;
import org.jboss.tools.cdi.core.IBean;
import org.jboss.tools.cdi.core.IScopeDeclaration;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
import org.jboss.tools.common.EclipseUtil;
@@ -65,20 +70,29 @@
ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
- MarkerResolutionUtils.addImport(CDIConstants.DEPENDENT_ANNOTATION_TYPE_NAME,
compilationUnit);
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
+ MultiTextEdit edit = new MultiTextEdit();
+
+ change.setEdit(edit);
+
+ CDIMarkerResolutionUtils.addImport(CDIConstants.DEPENDENT_ANNOTATION_TYPE_NAME,
compilationUnit, edit);
+
IAnnotation workingCopyAnnotation = getWorkingCopyAnnotation(originalAnnotation,
compilationUnit);
if(workingCopyAnnotation != null){
- String shortName =
MarkerResolutionUtils.getShortName(CDIConstants.DEPENDENT_ANNOTATION_TYPE_NAME);
+ String shortName =
CDIMarkerResolutionUtils.getShortName(CDIConstants.DEPENDENT_ANNOTATION_TYPE_NAME);
+ TextEdit re = new ReplaceEdit(workingCopyAnnotation.getSourceRange().getOffset(),
workingCopyAnnotation.getSourceRange().getLength(),
CDIMarkerResolutionUtils.AT+shortName);
+ edit.addChild(re);
+
IBuffer buffer = compilationUnit.getBuffer();
- buffer.replace(workingCopyAnnotation.getSourceRange().getOffset(),
workingCopyAnnotation.getSourceRange().getLength(), MarkerResolutionUtils.AT+shortName);
+ //buffer.replace(workingCopyAnnotation.getSourceRange().getOffset(),
workingCopyAnnotation.getSourceRange().getLength(),
CDIMarkerResolutionUtils.AT+shortName);
- synchronized(compilationUnit) {
- compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
- }
+ //synchronized(compilationUnit) {
+ // compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
+ //}
// delete import
String qualifiedName = getFullyQualifiedName();
@@ -88,13 +102,19 @@
if(importDeclaration != null && importContainer != null){
int importSize =
importContainer.getSourceRange().getOffset()+importContainer.getSourceRange().getLength();
String text = buffer.getText(importSize, buffer.getLength()-importSize);
- if(checkImport(text, originalAnnotation.getElementName()))
- importDeclaration.delete(false, new NullProgressMonitor());
+ if(checkImport(text, originalAnnotation.getElementName())){
+ TextEdit de = new DeleteEdit(importDeclaration.getSourceRange().getOffset(),
importDeclaration.getSourceRange().getLength());
+ edit.addChild(de);
+ //importDeclaration.delete(false, new NullProgressMonitor());
+ }
}
}
}
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
+ }
compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
CDIUIPlugin.getDefault().logError(ex);
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeFieldProtectedMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeFieldProtectedMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeFieldProtectedMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -20,9 +20,13 @@
import org.eclipse.jdt.core.IBuffer;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.text.edits.MultiTextEdit;
+import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.text.edits.TextEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.eclipse.ui.PlatformUI;
import org.jboss.tools.cdi.core.CDIImages;
@@ -72,7 +76,12 @@
try{
ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
+
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
+ MultiTextEdit edit = new MultiTextEdit();
+
+ change.setEdit(edit);
IBuffer buffer = compilationUnit.getBuffer();
int flag = field.getFlags();
@@ -82,10 +91,15 @@
int position = field.getSourceRange().getOffset();
if((flag & Flags.AccPublic) != 0){
position += text.indexOf(PUBLIC);
- buffer.replace(position, PUBLIC.length(), PROTECTED);
+ TextEdit re = new ReplaceEdit(position, PUBLIC.length(), PROTECTED);
+ edit.addChild(re);
+ //buffer.replace(position, PUBLIC.length(), PROTECTED);
}
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
+ }
compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
CDIUIPlugin.getDefault().logError(ex);
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeFieldStaticMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeFieldStaticMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeFieldStaticMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -21,7 +21,10 @@
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.InsertEdit;
+import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.cdi.core.CDIImages;
import org.jboss.tools.cdi.ui.CDIUIMessages;
@@ -48,15 +51,22 @@
this.file = file;
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void run(IMarker marker) {
try{
ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
+
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
+ MultiTextEdit edit = new MultiTextEdit();
+
+ change.setEdit(edit);
IBuffer buffer = compilationUnit.getBuffer();
int flag = field.getFlags();
@@ -66,30 +76,43 @@
int position = field.getSourceRange().getOffset();
if((flag & Flags.AccPublic) != 0){
position += text.indexOf(PUBLIC)+PUBLIC.length();
- buffer.replace(position, 0, SPACE+STATIC);
+ InsertEdit ie = new InsertEdit(position, SPACE+STATIC);
+ edit.addChild(ie);
+ //buffer.replace(position, 0, SPACE+STATIC);
}else if((flag & Flags.AccPrivate) != 0){
position += text.indexOf(PRIVATE)+PRIVATE.length();
- buffer.replace(position, 0, SPACE+STATIC);
+ InsertEdit ie = new InsertEdit(position, SPACE+STATIC);
+ edit.addChild(ie);
+ //buffer.replace(position, 0, SPACE+STATIC);
}else if((flag & Flags.AccProtected) != 0){
position += text.indexOf(PROTECTED)+PROTECTED.length();
- buffer.replace(position, 0, SPACE+STATIC);
+ InsertEdit ie = new InsertEdit(position, SPACE+STATIC);
+ edit.addChild(ie);
+ //buffer.replace(position, 0, SPACE+STATIC);
}else{
String type = Signature.getSignatureSimpleName(field.getTypeSignature());
position += text.indexOf(type);
- buffer.replace(position, 0, STATIC+SPACE);
+ InsertEdit ie = new InsertEdit(position, SPACE+STATIC);
+ edit.addChild(ie);
+ //buffer.replace(position, 0, STATIC+SPACE);
}
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
+ }
compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
CDIUIPlugin.getDefault().logError(ex);
}
}
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_EDIT;
}
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-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeInjectedPointUnambiguousMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -40,14 +40,17 @@
this.label = MessageFormat.format(CDIUIMessages.MAKE_INJECTED_POINT_UNAMBIGUOUS_TITLE,
new Object[]{selectedBean.getElementName()});
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void runForTest(IMarker marker){
internal_run(marker, true);
}
+ @Override
public void run(IMarker marker) {
internal_run(marker, false);
}
@@ -75,10 +78,12 @@
// }
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_EDIT;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeMethodBusinessMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeMethodBusinessMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeMethodBusinessMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -26,7 +26,7 @@
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.cdi.core.CDIImages;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
import org.jboss.tools.common.EclipseUtil;
@@ -54,10 +54,12 @@
this.file = file;
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void run(IMarker marker) {
try{
ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
@@ -138,14 +140,16 @@
private void addImport(IType originalType, String simpleName, ICompilationUnit
compilationUnit) throws JavaModelException{
String qualifiedName = EclipseJavaUtil.resolveType(originalType, simpleName);
- MarkerResolutionUtils.addImport(qualifiedName, compilationUnit);
+ CDIMarkerResolutionUtils.addImport(qualifiedName, compilationUnit);
}
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_ADD;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeMethodPublicMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeMethodPublicMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MakeMethodPublicMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -21,9 +21,14 @@
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.InsertEdit;
+import org.eclipse.text.edits.MultiTextEdit;
+import org.eclipse.text.edits.ReplaceEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.cdi.core.CDIImages;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
import org.jboss.tools.common.EclipseUtil;
@@ -47,48 +52,68 @@
this.file = file;
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void run(IMarker marker) {
try{
ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
+
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
+ MultiTextEdit edit = new MultiTextEdit();
+
+ change.setEdit(edit);
IBuffer buffer = compilationUnit.getBuffer();
- int flag = method.getFlags();
-
- String text = buffer.getText(method.getSourceRange().getOffset(),
method.getSourceRange().getLength());
-
- // make method public
- int position = method.getSourceRange().getOffset();
- if((flag & Flags.AccPublic) != 0){
- // do nothing
- }else if((flag & Flags.AccPrivate) != 0){
- position += text.indexOf(PRIVATE);
- buffer.replace(position, PRIVATE.length(), PUBLIC);
- }else if((flag & Flags.AccProtected) != 0){
- position += text.indexOf(PROTECTED);
- buffer.replace(position, PROTECTED.length(), PUBLIC);
- }else{
- String type = Signature.getSignatureSimpleName(method.getReturnType());
- position += text.indexOf(type);
- buffer.replace(position, 0, PUBLIC+SPACE);
+ IMethod workingCopyMethod = CDIMarkerResolutionUtils.findWorkingCopy(compilationUnit,
method);
+ if(workingCopyMethod != null){
+ int flag = workingCopyMethod.getFlags();
+
+ String text = buffer.getText(workingCopyMethod.getSourceRange().getOffset(),
workingCopyMethod.getSourceRange().getLength());
+
+ // make method public
+ int position = workingCopyMethod.getSourceRange().getOffset();
+ if((flag & Flags.AccPublic) != 0){
+ // do nothing
+ }else if((flag & Flags.AccPrivate) != 0){
+ position += text.indexOf(PRIVATE);
+ ReplaceEdit re = new ReplaceEdit(position, PRIVATE.length(), PUBLIC);
+ edit.addChild(re);
+ //buffer.replace(position, PRIVATE.length(), PUBLIC);
+ }else if((flag & Flags.AccProtected) != 0){
+ position += text.indexOf(PROTECTED);
+ ReplaceEdit re = new ReplaceEdit(position, PROTECTED.length(), PUBLIC);
+ edit.addChild(re);
+ //buffer.replace(position, PROTECTED.length(), PUBLIC);
+ }else{
+ String type = Signature.getSignatureSimpleName(workingCopyMethod.getReturnType());
+ position += text.indexOf(type);
+ InsertEdit ie = new InsertEdit(position, PUBLIC+SPACE);
+ edit.addChild(ie);
+ //buffer.replace(position, 0, PUBLIC+SPACE);
+ }
}
-
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
+ }
compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
CDIUIPlugin.getDefault().logError(ex);
}
}
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_EDIT;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/SelectBeanMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/SelectBeanMarkerResolution.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/SelectBeanMarkerResolution.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -37,14 +37,17 @@
this.beans = beans;;
}
+ @Override
public String getLabel() {
return label;
}
+ @Override
public void runForTest(IMarker marker){
internal_run(marker, true);
}
+ @Override
public void run(IMarker marker) {
internal_run(marker, false);
}
@@ -117,10 +120,12 @@
// MarkerResolutionUtils.addQualifiersToInjectionPoint(injectionPoint, selectedBean,
rootChange);
}
+ @Override
public String getDescription() {
return label;
}
+ @Override
public Image getImage() {
return CDIImages.QUICKFIX_EDIT;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/wizard/SelectBeanWizard.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/wizard/SelectBeanWizard.java 2011-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/wizard/SelectBeanWizard.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -42,7 +42,7 @@
import org.jboss.tools.cdi.core.CDIImages;
import org.jboss.tools.cdi.core.IBean;
import org.jboss.tools.cdi.core.IQualifier;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.internal.core.refactoring.ValuedQualifier;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.common.model.ui.ModelUIImages;
@@ -229,7 +229,7 @@
if(element instanceof IBean){
IBean bean = (IBean)element;
String beanTypeName = bean.getBeanClass().getFullyQualifiedName();
- String beanPackage =
beanTypeName.substring(0,beanTypeName.lastIndexOf(MarkerResolutionUtils.DOT));
+ String beanPackage =
beanTypeName.substring(0,beanTypeName.lastIndexOf(CDIMarkerResolutionUtils.DOT));
String name = bean.getElementName();
return name+" - "+beanPackage;
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-12-20
01:59:12 UTC (rev 37446)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/wizard/xpl/AddQualifiersToBeanComposite.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -77,7 +77,7 @@
import org.jboss.tools.cdi.core.IInjectionPoint;
import org.jboss.tools.cdi.core.IQualifier;
import org.jboss.tools.cdi.core.IQualifierDeclaration;
-import org.jboss.tools.cdi.internal.core.refactoring.MarkerResolutionUtils;
+import org.jboss.tools.cdi.internal.core.refactoring.CDIMarkerResolutionUtils;
import org.jboss.tools.cdi.internal.core.refactoring.ValuedQualifier;
import org.jboss.tools.cdi.ui.CDIUIMessages;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
@@ -134,13 +134,13 @@
public void init(IBean bean){
this.bean = bean;
- String beanName = MarkerResolutionUtils.getELName(bean);
+ String beanName = CDIMarkerResolutionUtils.getELName(bean);
originalQualifiers.clear();
deployed.clear();
for(IQualifier q : bean.getQualifiers()){
- IQualifierDeclaration declaration =
MarkerResolutionUtils.findQualifierDeclaration(bean, q);
+ IQualifierDeclaration declaration =
CDIMarkerResolutionUtils.findQualifierDeclaration(bean, q);
if(declaration != null){
- String value = MarkerResolutionUtils.findQualifierValue(bean, declaration);
+ String value = CDIMarkerResolutionUtils.findQualifierValue(bean, declaration);
ValuedQualifier vq = new ValuedQualifier(q, value);
deployed.add(vq);
}else{
@@ -177,15 +177,15 @@
}
private ValuedQualifier loadAvailableQualifiers(){
- String beanName = MarkerResolutionUtils.getELName(bean);
+ String beanName = CDIMarkerResolutionUtils.getELName(bean);
ValuedQualifier lastQualifier = null;
String beanTypeName = bean.getBeanClass().getFullyQualifiedName();
- String beanPackage =
beanTypeName.substring(0,beanTypeName.lastIndexOf(MarkerResolutionUtils.DOT));
+ String beanPackage =
beanTypeName.substring(0,beanTypeName.lastIndexOf(CDIMarkerResolutionUtils.DOT));
IJavaProject beanJavaProject = bean.getBeanClass().getJavaProject();
String injectionPointTypeName =
injectionPoint.getClassBean().getBeanClass().getFullyQualifiedName();
- String injectionPointPackage =
injectionPointTypeName.substring(0,injectionPointTypeName.lastIndexOf(MarkerResolutionUtils.DOT));
+ String injectionPointPackage =
injectionPointTypeName.substring(0,injectionPointTypeName.lastIndexOf(CDIMarkerResolutionUtils.DOT));
IJavaProject injectionPointJavaProject =
injectionPoint.getBean().getBeanClass().getJavaProject();
boolean samePackage = beanPackage.equals(injectionPointPackage);
@@ -199,7 +199,7 @@
boolean isPublic = Flags.isPublic(q.getSourceType().getFlags());
String qualifierTypeName = q.getSourceType().getFullyQualifiedName();
- String qualifierPackage =
qualifierTypeName.substring(0,qualifierTypeName.lastIndexOf(MarkerResolutionUtils.DOT));
+ String qualifierPackage =
qualifierTypeName.substring(0,qualifierTypeName.lastIndexOf(CDIMarkerResolutionUtils.DOT));
if((isPublic || (samePackage &&
injectionPointPackage.equals(qualifierPackage))) ){
if(beanJavaProject.findType(qualifierTypeName) != null &&
injectionPointJavaProject.findType(qualifierTypeName) != null){
if(q.getSourceType().getFullyQualifiedName().equals(CDIConstants.NAMED_QUALIFIER_TYPE_NAME))
@@ -247,7 +247,7 @@
for(IBean b: beans){
if(b.equals(bean))
continue;
- if(MarkerResolutionUtils.checkValuedQualifiers(bean, b, qfs))
+ if(CDIMarkerResolutionUtils.checkValuedQualifiers(bean, b, qfs))
return false;
}
@@ -726,7 +726,7 @@
if(element instanceof ValuedQualifier){
ValuedQualifier vq = (ValuedQualifier)element;
String qualifierTypeName =
vq.getQualifier().getSourceType().getFullyQualifiedName();
- String qualifierPackage =
qualifierTypeName.substring(0,qualifierTypeName.lastIndexOf(MarkerResolutionUtils.DOT));
+ String qualifierPackage =
qualifierTypeName.substring(0,qualifierTypeName.lastIndexOf(CDIMarkerResolutionUtils.DOT));
String name = vq.getQualifier().getSourceType().getElementName();
return name+" - "+qualifierPackage;
Modified: trunk/common/plugins/org.jboss.tools.common/META-INF/MANIFEST.MF
===================================================================
--- trunk/common/plugins/org.jboss.tools.common/META-INF/MANIFEST.MF 2011-12-20 01:59:12
UTC (rev 37446)
+++ trunk/common/plugins/org.jboss.tools.common/META-INF/MANIFEST.MF 2011-12-20 02:11:31
UTC (rev 37447)
@@ -12,11 +12,12 @@
org.jboss.tools.common.jobs,
org.jboss.tools.common.log,
org.jboss.tools.common.preferences,
+ org.jboss.tools.common.refactoring,
org.jboss.tools.common.reporting,
org.jboss.tools.common.text,
org.jboss.tools.common.util,
+ org.jboss.tools.common.web,
org.jboss.tools.common.xml,
- org.jboss.tools.common.web,
org.jboss.tools.common.zip
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0",
org.eclipse.wst.xml.core;bundle-version="1.1.600";visibility:=reexport,
@@ -37,7 +38,8 @@
org.eclipse.ui.workbench.texteditor;bundle-version="3.7.0",
org.eclipse.jface.text;bundle-version="3.7.0",
org.apache.commons.httpclient;bundle-version="3.1.0",
- org.eclipse.ui.editors;bundle-version="3.7.0"
+ org.eclipse.ui.editors;bundle-version="3.7.0",
+ org.eclipse.jpt.common.core;bundle-version="1.0.0"
Bundle-Version: 3.3.0.qualifier
Bundle-ActivationPolicy: lazy
Bundle-ManifestVersion: 2
Added:
trunk/common/plugins/org.jboss.tools.common/src/org/jboss/tools/common/refactoring/MarkerResolutionUtils.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common/src/org/jboss/tools/common/refactoring/MarkerResolutionUtils.java
(rev 0)
+++
trunk/common/plugins/org.jboss.tools.common/src/org/jboss/tools/common/refactoring/MarkerResolutionUtils.java 2011-12-20
02:11:31 UTC (rev 37447)
@@ -0,0 +1,558 @@
+/*******************************************************************************
+ * Copyright (c) 2010 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.common.refactoring;
+
+import java.util.HashSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.core.IAnnotatable;
+import org.eclipse.jdt.core.IAnnotation;
+import org.eclipse.jdt.core.IBuffer;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IImportContainer;
+import org.eclipse.jdt.core.IImportDeclaration;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.ILocalVariable;
+import org.eclipse.jdt.core.IMember;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IPackageDeclaration;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.ITypeParameter;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.internal.core.JavaElement;
+import org.eclipse.jpt.common.core.internal.utility.jdt.ASTTools;
+import org.eclipse.text.edits.DeleteEdit;
+import org.eclipse.text.edits.InsertEdit;
+import org.eclipse.text.edits.MultiTextEdit;
+import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.text.edits.TextEdit;
+import org.jboss.tools.common.util.EclipseJavaUtil;
+
+public class MarkerResolutionUtils {
+ public static final String DOT = "."; //$NON-NLS-1$
+ public static final String COMMA = ","; //$NON-NLS-1$
+ public static final String SEMICOLON = ";"; //$NON-NLS-1$
+ public static final String SPACE = " "; //$NON-NLS-1$
+ public static final String AT = "@"; //$NON-NLS-1$
+ public static final String IMPLEMENTS = "implements"; //$NON-NLS-1$
+ public static final String IMPORT = "import"; //$NON-NLS-1$
+ public static final String STATIC = "static"; //$NON-NLS-1$
+ public static final String EXTENDS = "extends"; //$NON-NLS-1$
+ public static final String OPEN_BRACE = "{"; //$NON-NLS-1$
+ public static final String CLOSE_BRACE = "}"; //$NON-NLS-1$
+
+ public static final char C_SPACE = ' '; //$NON-NLS-1$
+ public static final char C_TAB = '\t';
+ public static final char C_CARRIAGE_RETURN = '\r';
+ public static final char C_NEW_LINE = '\n';
+
+ static final HashSet<String> primitives = new HashSet<String>();
+ static{
+ primitives.add("void"); //$NON-NLS-1$
+ primitives.add("int"); //$NON-NLS-1$
+ primitives.add("java.lang.Integer"); //$NON-NLS-1$
+ primitives.add("char"); //$NON-NLS-1$
+ primitives.add("java.lang.Character"); //$NON-NLS-1$
+ primitives.add("boolean"); //$NON-NLS-1$
+ primitives.add("java.lang.Boolean"); //$NON-NLS-1$
+ primitives.add("short"); //$NON-NLS-1$
+ primitives.add("java.lang.Short"); //$NON-NLS-1$
+ primitives.add("long"); //$NON-NLS-1$
+ primitives.add("java.lang.Long"); //$NON-NLS-1$
+ primitives.add("float"); //$NON-NLS-1$
+ primitives.add("java.lang.Float"); //$NON-NLS-1$
+ primitives.add("double"); //$NON-NLS-1$
+ primitives.add("java.lang.Double"); //$NON-NLS-1$
+ primitives.add("byte"); //$NON-NLS-1$
+ primitives.add("java.lang.Byte"); //$NON-NLS-1$
+ primitives.add("java.lang.String"); //$NON-NLS-1$
+ primitives.add("java.lang.SuppressWarnings"); //$NON-NLS-1$
+ }
+ /**
+ *
+ * @param qualifiedName
+ * @param compilationUnit
+ * @return true if there is import in compilation unit with the same short name
+ * @throws JavaModelException
+ */
+ public static boolean addImport(String qualifiedName, ICompilationUnit compilationUnit)
throws JavaModelException{
+ return addImport(qualifiedName, compilationUnit, false, null);
+ }
+
+ public static boolean addImport(String qualifiedName, ICompilationUnit compilationUnit,
MultiTextEdit rootEdit) throws JavaModelException{
+ return addImport(qualifiedName, compilationUnit, false, rootEdit);
+ }
+
+ /**
+ *
+ * @param qualifiedName
+ * @param compilationUnit
+ * @param staticFlag
+ * @return true if there is import in compilation unit with the same short name
+ * @throws JavaModelException
+ */
+ public static boolean addImport(String qualifiedName, ICompilationUnit compilationUnit,
boolean staticFlag) throws JavaModelException{
+ return addImport(qualifiedName, compilationUnit, staticFlag, null);
+ }
+
+ private static int findPositionForImport(ICompilationUnit compilationUnit) throws
JavaModelException{
+ if(compilationUnit.getImportContainer().exists()){
+ return
compilationUnit.getImportContainer().getSourceRange().getOffset()+compilationUnit.getImportContainer().getSourceRange().getLength();
+ }else{
+ IPackageDeclaration[] packageDeclarations = compilationUnit.getPackageDeclarations();
+ if(packageDeclarations.length == 0){
+ return 0;
+ }
+ int position = 0;
+ for(IPackageDeclaration declaration : packageDeclarations){
+ position =
declaration.getSourceRange().getOffset()+declaration.getSourceRange().getLength();
+ }
+ return position;
+ }
+ }
+
+ private static boolean isDuplicate(MultiTextEdit rootEdit, String text){
+ for(TextEdit edit : rootEdit.getChildren()){
+ if(edit instanceof InsertEdit && ((InsertEdit) edit).getText().equals(text))
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean addImport(String qualifiedName, ICompilationUnit compilationUnit,
boolean staticFlag, MultiTextEdit rootEdit) throws JavaModelException{
+ if(primitives.contains(qualifiedName))
+ return false;
+
+ if(qualifiedName != null){
+ String shortName = getShortName(qualifiedName);
+
+ IPackageDeclaration[] packages = compilationUnit.getPackageDeclarations();
+
+ // local classes do not need to be imported
+ if(qualifiedName.indexOf(DOT) >= 0){
+ String typePackage = qualifiedName.substring(0,qualifiedName.lastIndexOf(DOT));
+
+ for(IPackageDeclaration packageDeclaration : packages){
+ if(packageDeclaration.getElementName().equals(typePackage))
+ return false;
+ }
+
+ for(IPackageDeclaration packageDeclaration : packages){
+ IType type =
compilationUnit.getJavaProject().findType(packageDeclaration.getElementName()+DOT+shortName);
+ if(type != null && type.exists())
+ return true;
+ }
+ }
+
+ IImportDeclaration[] importDeclarations = compilationUnit.getImports();
+
+ for(IImportDeclaration importDeclaration : importDeclarations){
+ String importName = importDeclaration.getElementName();
+ String elementShort = getShortName(importName);
+ if(importDeclaration.isOnDemand()){
+ int importLastDot = importName.lastIndexOf(DOT);
+ if(importLastDot == -1) return false; // invalid import declaration
+ int elementLastDot = qualifiedName.lastIndexOf(DOT);
+ if(elementLastDot == -1) return false; // invalid import declaration
+
+ if(qualifiedName.substring(0, elementLastDot).equals(importName.substring(0,
importLastDot)))
+ return false;
+ }
+
+ if(importName.equals(qualifiedName))
+ return false;
+ if(elementShort.equals(shortName))
+ return true;
+
+ }
+ if(rootEdit == null){
+ if(staticFlag){
+ compilationUnit.createImport(qualifiedName, null, Flags.AccStatic, new
NullProgressMonitor());
+ }else{
+ compilationUnit.createImport(qualifiedName, null, new NullProgressMonitor());
+ }
+ }else{
+ String staticStr = "";
+ if(staticFlag){
+ staticStr = STATIC+SPACE;
+ }
+ String text =
compilationUnit.findRecommendedLineSeparator()+IMPORT+SPACE+staticStr+qualifiedName+SEMICOLON;
+ if(!isDuplicate(rootEdit, text)){
+ int importPosition = findPositionForImport(compilationUnit);
+ TextEdit edit = new InsertEdit(importPosition, text);
+ rootEdit.addChild(edit);
+ }
+ }
+ }
+ return false;
+ }
+
+ public static String getShortName(String qualifiedName){
+ int lastDot = qualifiedName.lastIndexOf(DOT);
+ String name;
+ if(lastDot < 0)
+ name = qualifiedName;
+ else
+ name = qualifiedName.substring(lastDot+1);
+ return name;
+ }
+
+ public static String getPackageName(String qualifiedName){
+ int lastDot = qualifiedName.lastIndexOf(DOT);
+ String name;
+ if(lastDot < 0)
+ name = "";
+ else
+ name = qualifiedName.substring(0, lastDot);
+ return name;
+ }
+
+ public static String[] getShortNames(String[] qualifiedNames){
+ String[] shortNames = new String[qualifiedNames.length];
+ for(int i = 0; i < qualifiedNames.length; i++){
+ shortNames[i] = getShortName(qualifiedNames[i]);
+ }
+ return shortNames;
+ }
+
+ public static String getTotalList(String[] names){
+ String list = "";
+ for(int i = 0; i < names.length; i++){
+ if(i != 0)
+ list += ", ";
+ list += names[i];
+ }
+ return list;
+ }
+
+ public static void addAnnotation(String qualifiedName, ICompilationUnit compilationUnit,
IJavaElement element) throws JavaModelException{
+ addAnnotation(qualifiedName, compilationUnit, element, "");
+ }
+
+ public static void updateAnnotation(String qualifiedName, ICompilationUnit
compilationUnit, IJavaElement element, String params) throws JavaModelException{
+ updateAnnotation(qualifiedName, compilationUnit, element, params, null);
+ }
+
+ public static void updateAnnotation(String qualifiedName, ICompilationUnit
compilationUnit, IJavaElement element, String params, MultiTextEdit rootEdit) throws
JavaModelException{
+ IJavaElement workingCopyElement = findWorkingCopy(compilationUnit, element);
+ if(workingCopyElement == null){
+ return;
+ }
+
+ if(!(workingCopyElement instanceof IMember))
+ return;
+
+ IMember workingCopyMember = (IMember) workingCopyElement;
+
+ IAnnotation annotation = findAnnotation(workingCopyMember, qualifiedName);
+ if(annotation == null || !annotation.exists())
+ return;
+
+ boolean duplicateShortName = addImport(qualifiedName, compilationUnit, null);
+
+ IBuffer buffer = compilationUnit.getBuffer();
+ String shortName = getShortName(qualifiedName);
+
+ if(duplicateShortName)
+ shortName = qualifiedName;
+
+ String newValue = AT+shortName+params;
+
+ if(!annotation.getSource().equals(newValue)){
+ if(rootEdit != null){
+ TextEdit edit = new ReplaceEdit(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), newValue);
+ rootEdit.addChild(edit);
+ }else{
+ buffer.replace(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), newValue);
+
+ synchronized(compilationUnit) {
+ compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
+ }
+ }
+ }
+
+ }
+
+ public static void addAnnotation(String qualifiedName, ICompilationUnit compilationUnit,
IJavaElement element, String params) throws JavaModelException{
+ addAnnotation(qualifiedName, compilationUnit, element, params, null);
+ }
+
+ public static void addAnnotation(String qualifiedName, ICompilationUnit compilationUnit,
IJavaElement element, String params, MultiTextEdit rootEdit) throws JavaModelException{
+ IJavaElement workingCopyElement = findWorkingCopy(compilationUnit, element);
+ if(workingCopyElement == null){
+ return;
+ }
+
+ if(!(workingCopyElement instanceof IMember))
+ return;
+
+ IMember workingCopyMember = (IMember) workingCopyElement;
+
+ IAnnotation annotation = findAnnotation(workingCopyMember, qualifiedName);
+ if(annotation != null && annotation.exists())
+ return;
+
+ CompilationUnit cuNode = ASTTools.buildASTRoot(compilationUnit);
+
+ ASTNode elementNode = null;
+ if(workingCopyElement instanceof JavaElement){
+ elementNode = ((JavaElement) workingCopyElement).findNode(cuNode);
+ }
+
+ boolean duplicateShortName = addImport(qualifiedName, compilationUnit, rootEdit);
+
+ IBuffer buffer = compilationUnit.getBuffer();
+ String shortName = getShortName(qualifiedName);
+
+ if(duplicateShortName)
+ shortName = qualifiedName;
+
+ String str = AT+shortName+params;
+
+ int position = workingCopyMember.getSourceRange().getOffset();
+
+ if(elementNode != null){
+ position = elementNode.getStartPosition();
+ }
+
+ if(!(workingCopyMember instanceof ILocalVariable)){
+
+ str += compilationUnit.findRecommendedLineSeparator();
+
+ int index = position;
+ while(index >= 0){
+ char c = buffer.getChar(index);
+ if(c == C_CARRIAGE_RETURN || c == C_NEW_LINE)
+ break;
+ index--;
+ }
+ index++;
+ if(index != position){
+ String spaces = buffer.getText(index, position-index);
+ str += spaces;
+ }
+
+ }else{
+ str += SPACE;
+ }
+
+ if(rootEdit != null){
+ TextEdit edit = new InsertEdit(position, str);
+ rootEdit.addChild(edit);
+ }else{
+ buffer.replace(position, 0, str);
+
+ synchronized(compilationUnit) {
+ compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T extends IJavaElement> T findWorkingCopy(ICompilationUnit
compilationUnit, T element) throws JavaModelException{
+ if(element instanceof IAnnotation){
+ IJavaElement parent = findWorkingCopy(compilationUnit, element.getParent());
+ if(parent instanceof IAnnotatable){
+ for(IAnnotation a : ((IAnnotatable)parent).getAnnotations()){
+ if(a.getElementName().equals(element.getElementName()))
+ return (T)a;
+ }
+ }
+ }else if(element instanceof ILocalVariable && ((ILocalVariable)
element).isParameter()){
+ IJavaElement parent = findWorkingCopy(compilationUnit, element.getParent());
+ if(parent instanceof IMethod){
+ for(ILocalVariable parameter : ((IMethod)parent).getParameters()){
+ if(parameter.getElementName().equals(element.getElementName()) &&
parameter.getTypeSignature().equals(((ILocalVariable)element).getTypeSignature()))
+ return (T)parameter;
+ }
+ }
+ }else{
+ IJavaElement[] elements = compilationUnit.findElements(element);
+ if(elements != null){
+ for(IJavaElement e : elements){
+ if(e.getClass().equals(element.getClass()))
+ return (T)e;
+ }
+ }
+ }
+ return null;
+ }
+
+ public static IAnnotation findAnnotation(IJavaElement element, String qualifiedName){
+ if(element instanceof IAnnotatable){
+ String name = getShortName(qualifiedName);
+ IAnnotation annotation = ((IAnnotatable)element).getAnnotation(qualifiedName);
+ if (!annotation.exists()) {
+ annotation = ((IAnnotatable)element).getAnnotation(name);
+ } else {
+ return annotation;
+ }
+ if(annotation.exists()) {
+ IType type=null;
+ if(element instanceof IType){
+ type = (IType)element;
+ }else if(element instanceof IMember){
+ type = ((IMember)element).getDeclaringType();
+ }else if(element instanceof ITypeParameter){
+ type = ((ITypeParameter)element).getDeclaringMember().getDeclaringType();
+ }else if(element instanceof ILocalVariable){
+ type = ((ILocalVariable)element).getDeclaringMember().getDeclaringType();
+ }
+ if (type != null && annotation != null &&
qualifiedName.equals(EclipseJavaUtil.resolveType(type, name))) {
+ return annotation;
+ }
+ }
+ }
+ return null;
+ }
+
+ public static void addInterfaceToClass(ICompilationUnit compilationUnit, IType type,
String qualifiedName, MultiTextEdit rootEdit) throws JavaModelException{
+ String shortName = getShortName(qualifiedName);
+
+ IType[] types = compilationUnit.getTypes();
+ IType workingType = null;
+ for(IType t : types){
+ if(t.getElementName().equals(type.getElementName())){
+ workingType = t;
+ break;
+ }
+ }
+
+ if(workingType != null){
+ addImport(qualifiedName, compilationUnit, rootEdit);
+
+ IBuffer buffer = compilationUnit.getBuffer();
+
+ String text = buffer.getText(workingType.getSourceRange().getOffset(),
workingType.getSourceRange().getLength());
+
+ int namePosition = text.indexOf(workingType.getElementName());
+ if(namePosition >= 0){
+ int implementsPosition = text.indexOf(IMPLEMENTS,namePosition);
+ if(implementsPosition > 0){
+ if(rootEdit != null){
+ TextEdit edit = new
InsertEdit(workingType.getSourceRange().getOffset()+implementsPosition+IMPLEMENTS.length(),
SPACE+shortName+COMMA);
+ rootEdit.addChild(edit);
+ }else{
+ buffer.replace(workingType.getSourceRange().getOffset()+implementsPosition+IMPLEMENTS.length(),0,SPACE+shortName+COMMA);
+ }
+ }else{
+ int extedsPosition = text.indexOf(EXTENDS,namePosition);
+ if(extedsPosition > 0){
+ int bracePosition = text.indexOf(OPEN_BRACE, extedsPosition);
+ String str = IMPLEMENTS+SPACE+shortName+SPACE;
+ if(!text.substring(bracePosition-1,bracePosition).equals(SPACE))
+ str = SPACE+str;
+ if(rootEdit != null){
+ TextEdit edit = new
InsertEdit(workingType.getSourceRange().getOffset()+bracePosition, str);
+ rootEdit.addChild(edit);
+ }else{
+ buffer.replace(workingType.getSourceRange().getOffset()+bracePosition,0,str);
+ }
+ }else{
+ if(rootEdit != null){
+ TextEdit edit = new
InsertEdit(workingType.getSourceRange().getOffset()+namePosition+workingType.getElementName().length(),
SPACE+IMPLEMENTS+SPACE+shortName);
+ rootEdit.addChild(edit);
+ }else{
+ buffer.replace(workingType.getSourceRange().getOffset()+namePosition+workingType.getElementName().length(),0,SPACE+IMPLEMENTS+SPACE+shortName);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public static void deleteAnnotation(String qualifiedName, ICompilationUnit
compilationUnit, IJavaElement element) throws JavaModelException{
+ deleteAnnotation(qualifiedName, compilationUnit, element, null);
+ }
+
+ public static void deleteAnnotation(String qualifiedName, ICompilationUnit
compilationUnit, IJavaElement element, MultiTextEdit rootEdit) throws JavaModelException{
+ IJavaElement workingCopyElement = findWorkingCopy(compilationUnit, element);
+ if(workingCopyElement == null){
+ return;
+ }
+
+ IAnnotation annotation = findAnnotation(workingCopyElement, qualifiedName);
+ if(annotation != null){
+ IBuffer buffer = compilationUnit.getBuffer();
+
+ int position = annotation.getSourceRange().getOffset() +
annotation.getSourceRange().getLength();
+ int numberOfSpaces = 0;
+ if(position < buffer.getLength()-1){
+ char c = buffer.getChar(position);
+ while((c == C_SPACE || c == C_TAB || c == C_NEW_LINE || c == C_CARRIAGE_RETURN)
&& position < buffer.getLength()-1){
+ numberOfSpaces++;
+ position++;
+ c = buffer.getChar(position);
+ }
+ }
+
+ // delete annotation
+ if(rootEdit != null){
+ TextEdit edit = new DeleteEdit(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength()+numberOfSpaces);
+ rootEdit.addChild(edit);
+ }else{
+ buffer.replace(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength()+numberOfSpaces, "");
+ }
+
+ // check and delete import
+ IImportDeclaration importDeclaration = compilationUnit.getImport(qualifiedName);
+ IImportContainer importContainer = compilationUnit.getImportContainer();
+ if(importDeclaration.exists() && importContainer.exists()){
+ int importSize =
importContainer.getSourceRange().getOffset()+importContainer.getSourceRange().getLength();
+
+ if(rootEdit != null){
+ int annotationStart = annotation.getSourceRange().getOffset();
+ int annotationEnd = annotationStart+annotation.getSourceRange().getLength();
+ String textBefore = buffer.getText(importSize, annotationStart-importSize);
+ String textAfter = buffer.getText(annotationEnd,
buffer.getLength()-annotationEnd);
+ if(checkImport(textBefore, qualifiedName) && checkImport(textAfter,
qualifiedName)){
+ TextEdit edit = new DeleteEdit(importDeclaration.getSourceRange().getOffset(),
importDeclaration.getSourceRange().getLength());
+ rootEdit.addChild(edit);
+ }
+ }else{
+ String text = buffer.getText(importSize, buffer.getLength()-importSize);
+ if(checkImport(text, qualifiedName)){
+ importDeclaration.delete(false, new NullProgressMonitor());
+ }
+ }
+ }
+
+ if(rootEdit == null){
+ synchronized(compilationUnit) {
+ compilationUnit.reconcile(ICompilationUnit.NO_AST, true, null, null);
+ }
+ }
+ }
+ }
+
+ private static boolean checkImport(String text, String qualifiedName){
+ String name = getShortName(qualifiedName);
+
+ Pattern p = Pattern.compile(".*\\W"+name+"\\W.*",Pattern.DOTALL);
//$NON-NLS-1$ //$NON-NLS-2$
+ Matcher m = p.matcher(text);
+ return !m.matches();
+ }
+
+ public static IMember getJavaMember(IJavaElement element){
+ while(element != null){
+ if(element instanceof IMember)
+ return (IMember)element;
+ element = element.getParent();
+ }
+ return null;
+ }
+
+}
Property changes on:
trunk/common/plugins/org.jboss.tools.common/src/org/jboss/tools/common/refactoring/MarkerResolutionUtils.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain