FunctionalHolder.java

/*******************************************************************************
 * Copyright (c) 2025 Carsten Hammer 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:
 *     Carsten Hammer
 *******************************************************************************/
package org.sandbox.jdt.internal.corext.fix.helper;

import org.eclipse.jdt.core.dom.EnhancedForStatement;
import org.sandbox.jdt.internal.common.HelperVisitor;
import org.sandbox.jdt.internal.common.HelperVisitorProvider;
import org.sandbox.jdt.internal.common.ReferenceHolder;

/**
 * Data holder for functional loop conversion context.
 * 
 * <p>
 * This class serves as a container for the enhanced for-loop being analyzed
 * for potential conversion to functional stream operations. It implements
 * {@link HelperVisitorProvider} to integrate with the sandbox common visitor
 * framework.
 * </p>
 * 
 * <p><b>Usage:</b></p>
 * <pre>{@code
 * FunctionalHolder holder = new FunctionalHolder();
 * holder.setEnhancedForStatement(forLoop);
 * // Use holder in visitor pattern processing
 * }</pre>
 * 
 * @see HelperVisitorProvider
 * @see ReferenceHolder
 */
public class FunctionalHolder 
		implements HelperVisitorProvider<ReferenceHolder<String, Object>, String, FunctionalHolder> {

	/**
	 * The enhanced for-loop statement being analyzed for conversion.
	 */
	private EnhancedForStatement enhancedForStatement;
	
	/**
	 * The helper visitor used for traversing the AST.
	 */
	private HelperVisitor<FunctionalHolder, ReferenceHolder<String, Object>, String> helperVisitor;

	/**
	 * Default constructor.
	 */
	public FunctionalHolder() {
		// Default constructor
	}

	/**
	 * Gets the enhanced for-loop statement.
	 * 
	 * @return the enhanced for-loop statement, or null if not set
	 */
	public EnhancedForStatement getEnhancedForStatement() {
		return enhancedForStatement;
	}

	/**
	 * Sets the enhanced for-loop statement to analyze.
	 * 
	 * @param enhancedForStatement the for-loop to set
	 */
	public void setEnhancedForStatement(EnhancedForStatement enhancedForStatement) {
		this.enhancedForStatement = enhancedForStatement;
	}

	/**
	 * Legacy field access for backward compatibility.
	 * @deprecated Use {@link #getEnhancedForStatement()} instead
	 */
	@Deprecated
	public EnhancedForStatement minv;

	@Override
	public HelperVisitor<FunctionalHolder, ReferenceHolder<String, Object>, String> getHelperVisitor() {
		return helperVisitor;
	}

	@Override
	public void setHelperVisitor(HelperVisitor<FunctionalHolder, ReferenceHolder<String, Object>, String> hv) {
		this.helperVisitor = hv;
	}
}