Class DependencyGraphParser


  • public class DependencyGraphParser
    extends java.lang.Object
    Creates a dependency graph from a text description.

    Definition

    Each (non-empty) line in the input defines one node of the resulting graph:
     line      ::= (indent? ("(null)" | node | reference))? comment?
     comment   ::= "#" rest-of-line
     indent    ::= "|  "*  ("+" | "\\") "- "
     reference ::= "^" id
     node      ::= coords (range)? space (scope("<" premanagedScope)?)? space "optional"? space
                      ("relocations=" coords ("," coords)*)? ("(" id ")")?
     coords    ::= groupId ":" artifactId (":" extension (":" classifier)?)? ":" version
     
    The special token (null) may be used to indicate an "empty" root node with no dependency.

    If indent is empty, the line defines the root node. Only one root node may be defined. The level is calculated by the distance from the beginning of the line. One level is three characters of indentation.

    The ^id syntax allows to reuse a previously built node to share common sub graphs among different parent nodes.

    Example

     gid:aid:ver
     +- gid:aid2:ver scope
     |  \- gid:aid3:ver        (id1)    # assign id for reference below
     +- gid:aid4:ext:ver scope
     \- ^id1                            # reuse previous node
     

    Multiple definitions in one resource

    By using parseMultiResource(String), definitions divided by a line beginning with "---" can be read from the same resource. The rest of the line is ignored.

    Substitutions

    You may define substitutions (see setSubstitutions(String...), DependencyGraphParser(String, Collection)). Every '%s' in the definition will be substituted by the next String in the defined substitutions.

    Example

     parser.setSubstitutions( "foo", "bar" );
     String def = "gid:%s:ext:ver\n" + "+- gid:%s:ext:ver";
     
    The first node will have "foo" as its artifact id, the second node (child to the first) will have "bar" as its artifact id.
    • Constructor Summary

      Constructors 
      Constructor Description
      DependencyGraphParser()
      Create a parser with an empty prefix.
      DependencyGraphParser​(java.lang.String prefix)
      Create a parser with the given prefix.
      DependencyGraphParser​(java.lang.String prefix, java.util.Collection<java.lang.String> substitutions)
      Create a parser with the given prefix and the given substitution strings.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String dump​(org.eclipse.aether.graph.DependencyNode root)  
      java.util.Collection<java.lang.String> getSubstitutions()  
      org.eclipse.aether.graph.DependencyNode parse​(java.net.URL resource)
      Parse the graph definition read from the given URL.
      org.eclipse.aether.graph.DependencyNode parseLiteral​(java.lang.String dependencyGraph)
      Parse the given graph definition.
      java.util.List<org.eclipse.aether.graph.DependencyNode> parseMultiResource​(java.lang.String resource)
      Parse multiple graphs in one resource, divided by "---".
      org.eclipse.aether.graph.DependencyNode parseResource​(java.lang.String resource)
      Parse the graph definition read from the given classpath resource.
      void setSubstitutions​(java.lang.String... substitutions)  
      void setSubstitutions​(java.util.Collection<java.lang.String> substitutions)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • parseLiteral

        public org.eclipse.aether.graph.DependencyNode parseLiteral​(java.lang.String dependencyGraph)
                                                             throws java.io.IOException
        Parse the given graph definition.
        Throws:
        java.io.IOException
      • parseResource

        public org.eclipse.aether.graph.DependencyNode parseResource​(java.lang.String resource)
                                                              throws java.io.IOException
        Parse the graph definition read from the given classpath resource. If a prefix is set, this method will load the resource from 'prefix + resource'.
        Throws:
        java.io.IOException
      • parseMultiResource

        public java.util.List<org.eclipse.aether.graph.DependencyNode> parseMultiResource​(java.lang.String resource)
                                                                                   throws java.io.IOException
        Parse multiple graphs in one resource, divided by "---".
        Throws:
        java.io.IOException
      • parse

        public org.eclipse.aether.graph.DependencyNode parse​(java.net.URL resource)
                                                      throws java.io.IOException
        Parse the graph definition read from the given URL.
        Throws:
        java.io.IOException
      • dump

        public java.lang.String dump​(org.eclipse.aether.graph.DependencyNode root)
      • getSubstitutions

        public java.util.Collection<java.lang.String> getSubstitutions()
      • setSubstitutions

        public void setSubstitutions​(java.util.Collection<java.lang.String> substitutions)
      • setSubstitutions

        public void setSubstitutions​(java.lang.String... substitutions)