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

org.ehcache.spi.service.ServiceConfiguration Maven / Gradle / Ivy

There is a newer version: 3.10.8
Show newest version
/*
 * Copyright Terracotta, Inc.
 *
 * 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.
 */

package org.ehcache.spi.service;

/**
 * A configuration type to be used when interacting with a {@link Service}.
 *
 * @param  the service type this configuration works with
 * @param  the type of the detached representation
 */
public interface ServiceConfiguration {

  /**
   * Indicates which service this configuration works with.
   *
   * @return the service type
   */
  Class getServiceType();

  /**
   * Derive a detached representation from this configuration
   *
   * @return a detached representation
   * @throws UnsupportedOperationException if the configuration has no representation
   */
  default R derive() throws UnsupportedOperationException {
    throw new UnsupportedOperationException();
  }

  /**
   * Construct a new configuration from the given detached representation.
   *
   * @param representation a detached representation
   * @return a new configuration
   * @throws UnsupportedOperationException if the configuration has no representation
   */
  default ServiceConfiguration build(R representation) throws UnsupportedOperationException {
    throw new UnsupportedOperationException();
  }

  /**
   * Returns true if this configuration can co-exist with {@code other} in the same cache configuration.
   * 

* The default implementation of {@code compatibleWith} (as used by many of the implementations) considers any * instance of the same type (or a sub-type) to be incompatible with this instance. * * @param other other service configuration * @return {@code true} if the two configurations are compatible */ default boolean compatibleWith(ServiceConfiguration other) { return !getClass().isInstance(other); }; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy