public class DependencyGraphParser
extends java.lang.Object
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)?)? ":" versionThe 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.
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
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.
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.
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.
Modifier and Type | Class and Description |
---|---|
(package private) static class |
DependencyGraphParser.LineContext |
(package private) class |
DependencyGraphParser.NodeEntry |
Modifier and Type | Field and Description |
---|---|
private java.lang.String |
prefix |
private java.util.Collection<java.lang.String> |
substitutions |
private VersionScheme |
versionScheme |
Constructor and 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.
|
Modifier and Type | Method and Description |
---|---|
private void |
addNode(DependencyNode root,
int level,
java.util.List<DependencyGraphParser.NodeEntry> entries) |
private DependencyNode |
build(DependencyNode parent,
DependencyGraphParser.LineContext ctx,
boolean isRoot) |
private static DependencyGraphParser.LineContext |
createContext(java.lang.String line) |
private static java.lang.String |
cutComment(java.lang.String line) |
java.lang.String |
dump(DependencyNode root) |
java.util.Collection<java.lang.String> |
getSubstitutions() |
private static boolean |
isEmpty(java.lang.String line) |
private boolean |
isEOFMarker(java.lang.String line) |
private DependencyNode |
parse(java.io.BufferedReader in) |
DependencyNode |
parse(java.net.URL resource)
Parse the graph definition read from the given URL.
|
DependencyNode |
parseLiteral(java.lang.String dependencyGraph)
Parse the given graph definition.
|
java.util.List<DependencyNode> |
parseMultiResource(java.lang.String resource)
Parse multiple graphs in one resource, divided by "---".
|
DependencyNode |
parseResource(java.lang.String resource)
Parse the graph definition read from the given classpath resource.
|
void |
setSubstitutions(java.util.Collection<java.lang.String> substitutions) |
void |
setSubstitutions(java.lang.String... substitutions) |
private final VersionScheme versionScheme
private final java.lang.String prefix
private java.util.Collection<java.lang.String> substitutions
public DependencyGraphParser(java.lang.String prefix, java.util.Collection<java.lang.String> substitutions)
parseResource(String)
public DependencyGraphParser(java.lang.String prefix)
parseResource(String)
public DependencyGraphParser()
public DependencyNode parseLiteral(java.lang.String dependencyGraph) throws java.io.IOException
java.io.IOException
public DependencyNode parseResource(java.lang.String resource) throws java.io.IOException
java.io.IOException
public java.util.List<DependencyNode> parseMultiResource(java.lang.String resource) throws java.io.IOException
java.io.IOException
public DependencyNode parse(java.net.URL resource) throws java.io.IOException
java.io.IOException
private DependencyNode parse(java.io.BufferedReader in) throws java.io.IOException
java.io.IOException
private boolean isEOFMarker(java.lang.String line)
private static boolean isEmpty(java.lang.String line)
private static java.lang.String cutComment(java.lang.String line)
private DependencyNode build(DependencyNode parent, DependencyGraphParser.LineContext ctx, boolean isRoot)
public java.lang.String dump(DependencyNode root)
private void addNode(DependencyNode root, int level, java.util.List<DependencyGraphParser.NodeEntry> entries)
private static DependencyGraphParser.LineContext createContext(java.lang.String line)
public java.util.Collection<java.lang.String> getSubstitutions()
public void setSubstitutions(java.util.Collection<java.lang.String> substitutions)
public void setSubstitutions(java.lang.String... substitutions)