/*******************************************************************************
*
* Copyright (c) 2010-2011 Sonatype, Inc.
*
* All rights reserved. This program and the accompanying materials
* are 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:
*
*
*
*
*******************************************************************************/
package org.hudsonci.service.internal;
import static org.hudsonci.service.internal.ServicePreconditions.*;
import hudson.model.BuildListener;
import hudson.model.DependencyGraph;
import hudson.model.TaskListener;
import hudson.model.AbstractBuild;
import hudson.tasks.BuildTrigger;
import javax.inject.Singleton;
import org.hudsonci.service.DependencyGraphService;
/**
* Default implementation of {@link DependencyGraphService}.
*
* @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
* @since 2.1.0
*/
@Singleton
public class DependencyGraphServiceImpl extends ServiceSupport implements DependencyGraphService {
public DependencyGraph getGraph() {
return getHudson().getDependencyGraph();
}
public void rebuild() {
log.debug("Rebuilding dependency graph");
getHudson().rebuildDependencyGraph();
}
public void triggerDependents(final AbstractBuild<?, ?> build, final TaskListener listener) {
checkNotNull(build, "build");
checkNotNull(listener, "listener");
if (log.isDebugEnabled()) {
log.debug("Maybe triggering dependents of build: {}", build.getFullDisplayName());
}
// FIXME: In a more perfect world, the BuildTrigger would use this
// service, instead of us calling it directly here
BuildTrigger.execute(build, (BuildListener) listener);
}
}