com.openshift.restclient.capability.ICapable Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2015 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.
******************************************************************************/
package com.openshift.restclient.capability;
/**
* ICapable allows a source to be queried and identify its
* capabilities
*
* @author Jeff Cantrill
*/
public interface ICapable {
/**
* Gets the capability of the desired type
*
* @param capability
* @return an implementation of the given capability
*/
T getCapability(Class capability);
/**
* Determines if the client supports the desired capability
*
* @param capability
* @return true if the client is able to offer this capability
*/
boolean supports(Class extends ICapability> capability);
/**
* Uses the given visitor to access the desired capability if it
* is supported
*
* @param visitor A visitor looking for a given Capability type
* @param visitor A capability visitor
* @param unsupportedCapabililityValue The value to return when the capability is not supported
* @return A type that is expected by the caller
*/
R accept(CapabilityVisitor visitor, R unsupportedCapabililityValue);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy