]> git.argeo.org Git - gpl/argeo-jcr.git/blob - org.argeo.slc.repo/src/org/eclipse/aether/collection/DependencyGraphTransformer.java
Move Argeo SLC JCR components to Argeo JCR
[gpl/argeo-jcr.git] / org.argeo.slc.repo / src / org / eclipse / aether / collection / DependencyGraphTransformer.java
1 /*******************************************************************************
2 * Copyright (c) 2010, 2014 Sonatype, Inc.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * Sonatype, Inc. - initial API and implementation
10 *******************************************************************************/
11 package org.eclipse.aether.collection;
12
13 import org.eclipse.aether.RepositoryException;
14 import org.eclipse.aether.graph.DependencyNode;
15
16 /**
17 * Transforms a given dependency graph.
18 * <p>
19 * <strong>Note:</strong> Implementations must be stateless.
20 * <p>
21 * <em>Warning:</em> Dependency graphs may generally contain cycles. As such a graph transformer that cannot assume for
22 * sure that cycles have already been eliminated must gracefully handle cyclic graphs, e.g. guard against infinite
23 * recursion.
24 *
25 * @see org.eclipse.aether.RepositorySystemSession#getDependencyGraphTransformer()
26 */
27 public interface DependencyGraphTransformer
28 {
29
30 /**
31 * Transforms the dependency graph denoted by the specified root node. The transformer may directly change the
32 * provided input graph or create a new graph, the former is recommended for performance reasons.
33 *
34 * @param node The root node of the (possibly cyclic!) graph to transform, must not be {@code null}.
35 * @param context The graph transformation context, must not be {@code null}.
36 * @return The result graph of the transformation, never {@code null}.
37 * @throws RepositoryException If the transformation failed.
38 */
39 DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
40 throws RepositoryException;
41
42 }