Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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;
 
 import java.net.URL;
 import java.util.Map;
 
 import  javax.inject.Inject;
 import  javax.inject.Named;
 
 import  org.sonatype.sisu.goodies.common.ComponentSupport;
 import  org.sonatype.sisu.goodies.i18n.I18N;
 import  org.sonatype.sisu.goodies.i18n.MessageBundle;
 import  org.sonatype.sisu.goodies.template.TemplateEngine;
 import  org.sonatype.sisu.goodies.template.TemplateParameters;
 import  org.sonatype.sisu.goodies.template.TemplateThrowableAdapter;
 
 import  org.jetbrains.annotations.NonNls;
 import  org.jetbrains.annotations.Nullable;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;

Support for Capability implementations.

Since:
2.7
 
 public abstract class CapabilitySupport<ConfigT>
     extends ComponentSupport
     implements Capability
 {
   private static interface Messages
       extends MessageBundle
   {
     @DefaultMessage("FAILED: %s")
     String failure(String failureType);
   }
 
   private static final Messages messages = I18N.create(Messages.class);
 
   private CapabilityContext context;
 
   private ConfigT config;
 
   @Override
   public void init(final CapabilityContext context) {
     this. = checkNotNull(context);
   }
 
   protected CapabilityContext context() {
     return ;
   }
 
   @Override
   public String status() {
     // If there is a failure render it
     if (.hasFailure()) {
       return renderFailure(.failure());
     }
 
     // Otherwise attempt to render normal status
     try {
       return renderStatus();
     }
     catch (Exception e) {
       log.warn("Failed to render status"e);
     }
     return null;
   }
 
   protected String renderStatus() throws Exception {
     return null;
   }
 
   @Override
   public String description() {
     if (.hasFailure()) {
       return .failure(.failure().getClass().getName());
     }
     try {
       return renderDescription();
     }
     catch (Exception e) {
       log.warn("Failed to render description"e);
    }
    return null;
  }
  protected String renderDescription() throws Exception {
    return null;
  }
  protected boolean isConfigured() {
    return  != null;
  }
  protected void ensureConfigured() {
    checkState( != null"Capability is not configured");
  }
  protected abstract ConfigT createConfig(final Map<StringStringpropertiesthrows Exception;
  public ConfigT getConfig() {
    return ;
  }
  protected void configure(final ConfigT configthrows Exception {
    // nop
  }
  private void logLifecycle(final @NonNls String msgfinal ConfigT config) {
    if (log.isTraceEnabled()) {
      log.trace("{}: {}"msgconfig);
    }
    else if (log.isDebugEnabled()) {
      log.debug(msg);
    }
  }
  public void onCreate() throws Exception {
    checkState( == null);
    logLifecycle("Creating");
  }
  protected void onCreate(final ConfigT configthrows Exception {
    configure(config);
  }
  public void onLoad() throws Exception {
    checkState( == null);
    logLifecycle("Loading");
    onLoad();
  }
  protected void onLoad(final ConfigT configthrows Exception {
    configure(config);
  }
  public void onUpdate() throws Exception {
    logLifecycle("Updating");
  }
  protected void onUpdate(final ConfigT configthrows Exception {
    configure(config);
  }
  public void onRemove() throws Exception {
    logLifecycle("Removing");
  }
  protected void onRemove(final ConfigT configthrows Exception {
    // nop
  }
  public void onActivate() throws Exception {
    logLifecycle("Activating");
  }
  protected void onActivate(final ConfigT configthrows Exception {
    // nop
  }
  public void onPassivate() throws Exception {
    logLifecycle("Passivating");
  }
  protected void onPassivate(final ConfigT configthrows Exception {
    // nop
  }
    // no condition
    return null;
  }
    // no condition
    return null;
  }
  public String toString() {
    String id = null;
    if ( != null) {
      id = "'" + .id().toString() + "'";
    }
    return getClass().getSimpleName() + "{" +
        "id=" + id +
        ", config=" +  +
        '}';
  }
  //
  // Conditions support
  //
  private Conditions conditions;
  @Inject
  public void installConditionComponents(final Conditions conditions) {
    checkState(this. == null);
    this. = checkNotNull(conditions);
  }
  protected Conditions conditions() {
    checkState( != null);
    return ;
  }
  //
  // Template support
  //
  private TemplateEngine templateEngine;
  protected TemplateEngine getTemplateEngine() {
    checkState( != null);
    return ;
  }
  @Inject
  public void installTemplateEngine(final @Named("shared") TemplateEngine templateEngine) {
    checkState(this. == null);
    this. = checkNotNull(templateEngine);
  }
  protected String render(final @NonNls String template, @Nullable final Map<StringObjectparams) {
    return getTemplateEngine().render(thistemplateparams);
  }
  protected String render(final @NonNls String templatefinal TemplateParameters params) {
    return getTemplateEngine().render(thistemplateparams);
  }
  protected String render(final @NonNls String template) {
    return getTemplateEngine().render(thistemplate, (Map<StringObject>) null);
  }
  protected String renderFailure(final Throwable cause) {
    URL template = CapabilitySupport.class.getResource("failure.vm"); //NON-NLS
    return getTemplateEngine().render(thistemplatenew TemplateParameters()
        .set("cause"new TemplateThrowableAdapter(cause))
    );
  }
New to GrepCode? Check out our FAQ X