MethodSignatureAnalyzer.java
/*******************************************************************************
* Copyright (c) 2025 Carsten Hammer.
*
* 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:
* Carsten Hammer
*******************************************************************************/
package org.sandbox.jdt.internal.corext.fix.helper.lib;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
/**
* Method Signature Analyzer - Analyzes and compares method signatures
*
* This class helps determine if methods have compatible signatures
* that could be unified through refactoring.
*/
public class MethodSignatureAnalyzer {
/**
* Analyze a method signature
*
* @param method The method to analyze
*/
public static void analyzeSignature(MethodDeclaration method) {
// TODO: Implement signature analysis
// Extract:
// - Method name
// - Parameter types
// - Return type
// - Access modifiers
// - Throws clauses
}
/**
* Check if two method signatures are compatible
*
* @param method1 First method
* @param method2 Second method
* @return true if signatures are compatible for refactoring
*/
public static boolean areCompatible(MethodDeclaration method1, MethodDeclaration method2) {
// TODO: Implement compatibility check
// Compatible if:
// - Same number of parameters
// - Parameter types match or are compatible
// - Return types match or are compatible
// - Can be unified with reasonable refactoring
if (method1 == null || method2 == null) {
return false;
}
// Basic check: same parameter count
return method1.parameters().size() == method2.parameters().size();
}
/**
* Suggest signature harmonization
*
* @param method1 First method
* @param method2 Second method
* @return Suggestion for unified signature (placeholder)
*/
public static String suggestRefactoring(MethodDeclaration method1, MethodDeclaration method2) {
// TODO: Implement refactoring suggestion
// Analyze both signatures and suggest:
// - Common parameter types
// - Appropriate return type
// - Method name for extracted method
return "// Refactoring suggestion placeholder";
}
/**
* Extract parameter types from method
*
* @param method The method
* @return Array of parameter type names
*/
private static String[] getParameterTypes(MethodDeclaration method) {
List<?> params = method.parameters();
List<String> types = new ArrayList<>();
for (Object obj : params) {
if (obj instanceof SingleVariableDeclaration) {
SingleVariableDeclaration svd = (SingleVariableDeclaration) obj;
types.add(svd.getType() != null ? svd.getType().toString() : "");
}
}
return types.toArray(new String[0]);
}
}