Skip to content

Commit

Permalink
Merge branch 'master' into BETA_JAVA21
Browse files Browse the repository at this point in the history
  • Loading branch information
noopur2507 committed Sep 20, 2023
2 parents b7064c8 + dbe8101 commit 2325fe6
Show file tree
Hide file tree
Showing 229 changed files with 4,379 additions and 2,276 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ Snap.*
# maven
/*/target/
.DS_Store
org.eclipse.jdt.ui.examples.projects/archive/junit/org.eclipse.jdt.ui.junit.sampleproject-*.jar
org.eclipse.jdt.ui.examples.projects/jdtexamples.jar

2 changes: 1 addition & 1 deletion org.eclipse.jdt.astview.feature/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<parent>
<artifactId>eclipse.jdt.ui</artifactId>
<groupId>eclipse.jdt.ui</groupId>
<version>4.29.0-SNAPSHOT</version>
<version>4.30.0-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jdt.feature</groupId>
<artifactId>org.eclipse.jdt.astview.feature</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion org.eclipse.jdt.astview/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<parent>
<artifactId>eclipse.jdt.ui</artifactId>
<groupId>eclipse.jdt.ui</groupId>
<version>4.29.0-SNAPSHOT</version>
<version>4.30.0-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.astview</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion org.eclipse.jdt.bcoview.feature/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<parent>
<artifactId>eclipse.jdt.ui</artifactId>
<groupId>eclipse.jdt.ui</groupId>
<version>4.29.0-SNAPSHOT</version>
<version>4.30.0-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jdt.feature</groupId>
<artifactId>org.eclipse.jdt.bcoview.feature</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion org.eclipse.jdt.bcoview/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<parent>
<artifactId>eclipse.jdt.ui</artifactId>
<groupId>eclipse.jdt.ui</groupId>
<version>4.29.0-SNAPSHOT</version>
<version>4.30.0-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.bcoview</artifactId>
Expand Down
8 changes: 6 additions & 2 deletions org.eclipse.jdt.core.manipulation/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Automatic-Module-Name: org.eclipse.jdt.core.manipulation
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.jdt.core.manipulation; singleton:=true
Bundle-Version: 1.19.150.qualifier
Bundle-Version: 1.19.200.qualifier
Bundle-Vendor: %providerName
Bundle-Activator: org.eclipse.jdt.internal.core.manipulation.JavaManipulationPlugin
Bundle-Localization: plugin
Expand Down Expand Up @@ -60,15 +60,19 @@ Export-Package: org.eclipse.jdt.core.manipulation,
org.eclipse.jdt.internal.corext.util;manipulation=split;mandatory:=manipulation;x-friends:="org.eclipse.jdt.ui,org.eclipse.jdt.junit,org.eclipse.jdt.ui.unittest.junit",
org.eclipse.jdt.internal.jarpackager;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.browsing;manipulation=split;mandatory:=manipulation;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.dialogs;x-friends:="org.eclipse.jdt.ui,org.eclipse.jdt.junit,org.eclipse.jdt.ui.unittest.junit",
org.eclipse.jdt.internal.ui.fix;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.javaeditor;x-friends:="org.eclipse.jdt.debug.ui,org.eclipse.jdt.junit,org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.model;manipulation=split;mandatory:=manipulation;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.preferences;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.preferences.formatter;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.propertiesfileeditor;manipulation=split;mandatory:=manipulation;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.refactoring.contentassist;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.text;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.text.correction;x-friends:="org.eclipse.jdt.ui,org.eclipse.jdt.debug.ui",
org.eclipse.jdt.internal.ui.text.correction.proposals;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.text.template.contentassist;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.util;x-friends:="org.eclipse.jdt.ui,org.eclipse.jdt.astview,org.eclipse.jdt.junit.core"
org.eclipse.jdt.internal.ui.util;x-friends:="org.eclipse.jdt.ui,org.eclipse.jdt.astview,org.eclipse.jdt.junit.core",
org.eclipse.jdt.ui.refactoring;manipulation=split;mandatory:=manipulation;x-friends:="org.eclipse.jdt.ui"
Bundle-RequiredExecutionEnvironment: JavaSE-17
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2020 IBM Corporation and others.
* Copyright (c) 2000, 2023 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
Expand All @@ -20,11 +20,14 @@

import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.core.runtime.Status;

import org.eclipse.jdt.core.manipulation.JavaManipulation;

import org.eclipse.jdt.internal.ui.IJavaStatusConstants;

/**
* The main plug-in class to be used in the workbench.
*/
Expand Down Expand Up @@ -106,6 +109,20 @@ public static void log(IStatus status) {
ILog.of(JavaManipulationPlugin.class).log(status);
}

public static void logErrorMessage(String message) {
log(new Status(IStatus.ERROR, getPluginId(), IJavaStatusConstants.INTERNAL_ERROR, message, null));
}

public static void logErrorStatus(String message, IStatus status) {
if (status == null) {
logErrorMessage(message);
return;
}
MultiStatus multi= new MultiStatus(getPluginId(), IJavaStatusConstants.INTERNAL_ERROR, message, null);
multi.add(status);
log(multi);
}

public static String getPluginId() {
return JavaManipulation.ID_PLUGIN;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;

import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.core.manipulation.JavaManipulationPlugin;

import org.eclipse.jdt.internal.ui.browsing.LogicalPackage;
import org.eclipse.jdt.internal.ui.model.JavaModelProvider;

Expand Down Expand Up @@ -117,7 +118,7 @@ public IProject[] getProjects() {
try {
projects= fJavaModel.getJavaProjects();
} catch (JavaModelException e) {
JavaPlugin.log(e);
JavaManipulationPlugin.log(e);
return new IProject[0];
}
IProject[] result= new IProject[projects.length];
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*******************************************************************************
* Copyright (c) 2000, 2012 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.ui.propertiesfileeditor;

import org.eclipse.osgi.util.NLS;


/**
* Helper class to get NLSed messages.
*
* @since 3.1
*/
public final class PropertiesFileEditorCoreMessages extends NLS {
private static final String BUNDLE_NAME= PropertiesFileEditorCoreMessages.class.getName();

private PropertiesFileEditorCoreMessages() {
// Do not instantiate
}

public static String PropertiesFileHover_MalformedEncoding;

static {
NLS.initializeMessages(BUNDLE_NAME, PropertiesFileEditorCoreMessages.class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
###############################################################################
# Copyright (c) 2000, 2012 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################
PropertiesFileHover_MalformedEncoding=Malformed \\uxxxx encoding: {0}
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ public static String unescape(String s) throws CoreException {
// Read the xxxx
int value= 0;
if (x > len - 4) {
String exceptionMessage= Messages.format(PropertiesFileEditorMessages.PropertiesFileHover_MalformedEncoding, outBuffer.toString() + s.substring(x - 2));
String exceptionMessage= Messages.format(PropertiesFileEditorCoreMessages.PropertiesFileHover_MalformedEncoding, outBuffer.toString() + s.substring(x - 2));
throw new CoreException(new StatusInfo(IStatus.WARNING, exceptionMessage));
}
StringBuilder buf= new StringBuilder("\\u"); //$NON-NLS-1$
Expand Down Expand Up @@ -207,7 +207,7 @@ public static String unescape(String s) throws CoreException {
if (isValidEscapedString) {
return outBuffer.toString();
} else {
String exceptionMessage= Messages.format(PropertiesFileEditorMessages.PropertiesFileHover_MalformedEncoding, outBuffer.toString());
String exceptionMessage= Messages.format(PropertiesFileEditorCoreMessages.PropertiesFileHover_MalformedEncoding, outBuffer.toString());
throw new CoreException(new StatusInfo(IStatus.WARNING, exceptionMessage));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2021 IBM Corporation and others.
* Copyright (c) 2021, 2023 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
Expand All @@ -25,6 +25,7 @@

import org.eclipse.jface.text.link.LinkedPositionGroup;

import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.dom.AST;
Expand All @@ -39,12 +40,17 @@
import org.eclipse.jdt.core.dom.Expression;
import org.eclipse.jdt.core.dom.ExpressionMethodReference;
import org.eclipse.jdt.core.dom.ExpressionStatement;
import org.eclipse.jdt.core.dom.IAnnotationBinding;
import org.eclipse.jdt.core.dom.IBinding;
import org.eclipse.jdt.core.dom.IDocElement;
import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.IVariableBinding;
import org.eclipse.jdt.core.dom.Javadoc;
import org.eclipse.jdt.core.dom.LambdaExpression;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.MethodInvocation;
import org.eclipse.jdt.core.dom.MethodRef;
import org.eclipse.jdt.core.dom.MethodReference;
import org.eclipse.jdt.core.dom.Modifier;
import org.eclipse.jdt.core.dom.Name;
Expand All @@ -54,6 +60,8 @@
import org.eclipse.jdt.core.dom.Statement;
import org.eclipse.jdt.core.dom.SuperMethodInvocation;
import org.eclipse.jdt.core.dom.SuperMethodReference;
import org.eclipse.jdt.core.dom.TagElement;
import org.eclipse.jdt.core.dom.TextElement;
import org.eclipse.jdt.core.dom.ThisExpression;
import org.eclipse.jdt.core.dom.Type;
import org.eclipse.jdt.core.dom.TypeMethodReference;
Expand All @@ -64,11 +72,13 @@
import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;

import org.eclipse.jdt.internal.core.manipulation.StubUtility;
import org.eclipse.jdt.internal.core.manipulation.dom.ASTResolving;
import org.eclipse.jdt.internal.corext.dom.ASTNodes;
import org.eclipse.jdt.internal.corext.dom.Bindings;
import org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder;
import org.eclipse.jdt.internal.corext.dom.ScopeAnalyzer;
import org.eclipse.jdt.internal.corext.fix.LinkedProposalModelCore;
import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil;

public class QuickAssistProcessorUtil {

Expand Down Expand Up @@ -489,4 +499,133 @@ public static int getIndex(int offset, List<Statement> statements) {
return statements.size();
}

public static boolean isDeprecatedMethodCallWithReplacement(ASTNode node) {
if (!(node instanceof MethodInvocation)) {
node= node.getParent();
if (!(node instanceof MethodInvocation)) {
return false;
}
}
MethodInvocation methodInvocation= (MethodInvocation) node;
IMethodBinding methodBinding= methodInvocation.resolveMethodBinding();
if (methodBinding == null) {
return false;
}
IMethod method= (IMethod)methodBinding.getJavaElement();
if (method == null) {
return false;
}
IAnnotationBinding[] annotations= methodBinding.getAnnotations();
for (IAnnotationBinding annotation : annotations) {
if (annotation.getAnnotationType().getQualifiedName().equals("java.lang.Deprecated")) { //$NON-NLS-1$
CompilationUnit sourceCu= (CompilationUnit)node.getRoot();
CompilationUnit cu= findCUForMethod(sourceCu, (ICompilationUnit)sourceCu.getJavaElement(), methodBinding);
if (cu == null) {
return false;
}
try {
MethodDeclaration methodDeclaration= ASTNodeSearchUtil.getMethodDeclarationNode(method, cu);
Javadoc javadoc= methodDeclaration.getJavadoc();
if (javadoc == null) {
return false;
}
List<TagElement> tags= javadoc.tags();
for (TagElement tag : tags) {
if (tag.getTagName().equals("@deprecated")) { //$NON-NLS-1$
List<IDocElement> fragments= tag.fragments();
if (fragments.size() < 2) {
return false;
}
if (fragments.get(0) instanceof TextElement textElement) {
String text= textElement.getText().toLowerCase().trim();
if (text.endsWith("use") || text.endsWith("replace by")) { //$NON-NLS-1$ //$NON-NLS-2$
if (fragments.get(1) instanceof TagElement tagElement) {
if (tagElement.getTagName().equals("@link")) { //$NON-NLS-1$
List<IDocElement> linkFragments= tagElement.fragments();
if (linkFragments.size() == 1) {
IDocElement linkFragment= linkFragments.get(0);
if (linkFragment instanceof MethodRef methodRef) {
IMethodBinding refBinding= (IMethodBinding) methodRef.resolveBinding();
if (refBinding != null) {
class FindNewMethodVisitor extends ASTVisitor {
private boolean useMethodIsUsed= false;
private boolean referencesPrivate= false;
@Override
public boolean visit(MethodInvocation invocation) {
IMethodBinding binding= invocation.resolveMethodBinding();
if (binding != null) {
if (binding.isEqualTo(refBinding)) {
useMethodIsUsed= true;
}
}
return false;
}
@Override
public boolean visit(SimpleName name) {
IBinding binding= name.resolveBinding();
if (binding instanceof IVariableBinding varBinding
&& varBinding.isField()) {
int modifiers= varBinding.getModifiers();
if (Modifier.isPrivate(modifiers)) {
referencesPrivate= true;
}
}
return false;
}
public boolean isUseMethodUsed() {
return useMethodIsUsed;
}
public boolean referencesPrivateField() {
return referencesPrivate;
}
}
FindNewMethodVisitor findNewMethodVisitor= new FindNewMethodVisitor();
methodDeclaration.accept(findNewMethodVisitor);
if (!findNewMethodVisitor.isUseMethodUsed()) {
return false;
}
if (findNewMethodVisitor.referencesPrivateField()) {
if (methodInvocation.getRoot() != methodDeclaration.getRoot()) {
return false;
}
}
return true;
}
}
}
}
}
}
}
}
}
} catch (JavaModelException e) {
// ignore
}
}
}
return false;

}

private static CompilationUnit findCUForMethod(CompilationUnit compilationUnit, ICompilationUnit cu, IMethodBinding methodBinding) {
ASTNode methodDecl= compilationUnit.findDeclaringNode(methodBinding.getMethodDeclaration());
if (methodDecl == null) {
// is methodDecl defined in another CU?
ITypeBinding declaringTypeDecl= methodBinding.getDeclaringClass().getTypeDeclaration();
if (declaringTypeDecl.isFromSource()) {
ICompilationUnit targetCU= null;
try {
targetCU= ASTResolving.findCompilationUnitForBinding(cu, compilationUnit, declaringTypeDecl);
} catch (JavaModelException e) { /* can't do better */
}
if (targetCU != null) {
return ASTResolving.createQuickFixAST(targetCU, null);
}
}
return null;
}
return compilationUnit;
}

}

0 comments on commit 2325fe6

Please sign in to comment.