All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gemstone.gemfire.management.internal.cli.converters.EnumConverter Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you
 * may not use this file except in compliance with the License. You
 * may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License. See accompanying
 * LICENSE file.
 */
package com.gemstone.gemfire.management.internal.cli.converters;

import java.util.List;

import org.springframework.shell.core.Completion;
import org.springframework.shell.core.Converter;
import org.springframework.shell.core.MethodTarget;

/**
 * {@link Converter} for {@link Enum}.
 *
 * @author Abhishek Chaudhari
 * @since 7.0
 */
/*
 * Use this EnumConverter instead of SHL's EnumConverter. Added null check for
 * existingData in getAllPossibleValues 
 * 
 * Original authors: Ben Alex & Alan Stewart
 */
@SuppressWarnings("all") // Enum parameter warning
public class EnumConverter implements Converter {

	public Enum convertFromText(final String value, final Class requiredType, final String optionContext) {
		Class enumClass = (Class) requiredType;
		return Enum.valueOf(enumClass, value);
	}

	public boolean getAllPossibleValues(final List completions, 
	    final Class requiredType, final String existingData, 
	    final String optionContext, final MethodTarget target) {
		Class enumClass = (Class) requiredType;
		for (Enum enumValue : enumClass.getEnumConstants()) {
			String candidate = enumValue.name();
      // GemFire/gfsh addition - check 'existingData == null'. GfshParser can 
			// pass existingData as null  
      if ("".equals(existingData) || existingData == null
          || candidate.startsWith(existingData)
          || existingData.startsWith(candidate)
          || candidate.toUpperCase().startsWith(existingData.toUpperCase())
          || existingData.toUpperCase().startsWith(candidate.toUpperCase())) {
				completions.add(new Completion(candidate));
			}
		}
		return true;
	}

	public boolean supports(final Class requiredType, final String optionContext) {
		return Enum.class.isAssignableFrom(requiredType);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy