Package org.sonatype.nexus.capability.support.condition

Source Code of org.sonatype.nexus.capability.support.condition.CapabilityConditions

/*
* Sonatype Nexus (TM) Open Source Version
* Copyright (c) 2007-2014 Sonatype, Inc.
* All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions.
*
* This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0,
* which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html.
*
* Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks
* of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the
* Eclipse Foundation. All other trademarks are the property of their respective owners.
*/
package org.sonatype.nexus.capability.support.condition;

import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;

import org.sonatype.nexus.capability.CapabilityDescriptorRegistry;
import org.sonatype.nexus.capability.CapabilityRegistry;
import org.sonatype.nexus.capability.CapabilityType;
import org.sonatype.nexus.capability.Condition;
import org.sonatype.nexus.capability.Evaluable;
import org.sonatype.nexus.capability.condition.CapabilityHasNoFailures;
import org.sonatype.nexus.capability.condition.CapabilityOfTypeActiveCondition;
import org.sonatype.nexus.capability.condition.CapabilityOfTypeExistsCondition;
import org.sonatype.nexus.capability.condition.EvaluableCondition;
import org.sonatype.nexus.capability.condition.PassivateCapabilityDuringUpdateCondition;
import org.sonatype.sisu.goodies.eventbus.EventBus;

import static com.google.common.base.Preconditions.checkNotNull;

/**
* Factory of {@link Condition}s related to capabilities.
*
* @since capabilities 2.0
*/
@Named
@Singleton
public class CapabilityConditions
{

  private final CapabilityRegistry capabilityRegistry;

  private final EventBus eventBus;

  private final CapabilityDescriptorRegistry descriptorRegistry;

  @Inject
  public CapabilityConditions(final EventBus eventBus,
                              final CapabilityDescriptorRegistry descriptorRegistry,
                              final CapabilityRegistry capabilityRegistry)
  {
    this.descriptorRegistry = checkNotNull(descriptorRegistry);
    this.capabilityRegistry = checkNotNull(capabilityRegistry);
    this.eventBus = checkNotNull(eventBus);
  }

  /**
   * Creates a new condition that is satisfied when a capability of a specified type exists.
   *
   * @param type class of capability that should exist
   * @return created condition
   */
  public Condition capabilityOfTypeExists(final CapabilityType type) {
    return new CapabilityOfTypeExistsCondition(eventBus, descriptorRegistry, capabilityRegistry, type);
  }

  /**
   * Creates a new condition that is satisfied when a capability of a specified type exists and is in an active
   * state.
   *
   * @param type class of capability that should exist and be active
   * @return created condition
   */
  public Condition capabilityOfTypeActive(final CapabilityType type) {
    return new CapabilityOfTypeActiveCondition(eventBus, descriptorRegistry, capabilityRegistry, type);
  }

  /**
   * Creates a new condition that is becoming unsatisfied before an capability is updated and becomes satisfied after
   * capability was updated.
   *
   * @return created condition
   */
  public Condition passivateCapabilityDuringUpdate() {
    return new PassivateCapabilityDuringUpdateCondition(eventBus);
  }

  /**
   * Creates a new condition that is becoming unsatisfied before an capability is updated and becomes satisfied after
   * capability was updated when one of the enumerated properties changes.
   *
   * @param propertyNames list of properties names that should be checked if updated
   * @return created condition
   */
  public Condition passivateCapabilityWhenPropertyChanged(final String... propertyNames) {
    return new PassivateCapabilityDuringUpdateCondition(eventBus, propertyNames);
  }

  /**
   * Creates a new condition that is satisfied as long as capability has no failures.
   *
   * @return created condition
   * @since 2.7
   */
  public Condition capabilityHasNoFailures() {
    return new CapabilityHasNoFailures(eventBus);
  }

  /**
   * Creates a new condition that delegates to provided {@link Evaluable} for checking if the condition is satisfied.
   * {@link Evaluable#isSatisfied()} is reevaluated after each update of capability the condition is used for.
   *
   * @param condition delegate
   * @return created condition
   */
  public Condition evaluable(final Evaluable condition) {
    return new EvaluableCondition(eventBus, condition);
  }

}
TOP

Related Classes of org.sonatype.nexus.capability.support.condition.CapabilityConditions

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.