JavaParser Source Viewer

Home|JavaParser/com/github/javaparser/utils/ProjectRoot.java
1/*
2 * Copyright (C) 2007-2010 JĂșlio Vilmar Gesser.
3 * Copyright (C) 2011, 2013-2020 The JavaParser Team.
4 *
5 * This file is part of JavaParser.
6 *
7 * JavaParser can be used either under the terms of
8 * a) the GNU Lesser General Public License as published by
9 *     the Free Software Foundation, either version 3 of the License, or
10 *     (at your option) any later version.
11 * b) the terms of the Apache License
12 *
13 * You should have received a copy of both licenses in LICENCE.LGPL and
14 * LICENCE.APACHE. Please refer to those files for details.
15 *
16 * JavaParser is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU Lesser General Public License for more details.
20 */
21
22package com.github.javaparser.utils;
23
24import com.github.javaparser.ParserConfiguration;
25
26import java.nio.file.Path;
27import java.util.ArrayList;
28import java.util.List;
29import java.util.Map;
30import java.util.Optional;
31import java.util.concurrent.ConcurrentHashMap;
32
33/**
34 * The structure of a Java project directory.
35 * It was originally created specifically to quickly configure the symbol solver.
36 * You can use it as a general container for project information.
37 * <p/>A project has a root directory, and it has zero or more directories that contain source code.
38 * <p/>To create a ProjectRoot use a CollectionStrategy, or instantiate ProjectRoot yourself.
39 */
40public class ProjectRoot {
41
42    private final Path root;
43    private final Map<PathSourceRootcache = new ConcurrentHashMap<>();
44    private final ParserConfiguration parserConfiguration;
45
46    public ProjectRoot(Path root) {
47        this(root, new ParserConfiguration());
48    }
49
50    public ProjectRoot(Path rootParserConfiguration parserConfiguration) {
51        this.root = root;
52        this.parserConfiguration = parserConfiguration;
53    }
54
55    public Optional<SourceRootgetSourceRoot(Path sourceRoot) {
56        return Optional.ofNullable(cache.get(sourceRoot));
57    }
58
59    public List<SourceRootgetSourceRoots() {
60        return new ArrayList<>(cache.values());
61    }
62
63    public void addSourceRoot(Path path) {
64        cache.put(path, new SourceRoot(path).setParserConfiguration(parserConfiguration));
65    }
66
67    public Path getRoot() {
68        return root;
69    }
70
71    @Override
72    public String toString() {
73        return "ProjectRoot at " + root + " with " + cache.values().toString();
74    }
75}
76
MembersX
ProjectRoot:getSourceRoot
ProjectRoot:addSourceRoot
ProjectRoot:cache
ProjectRoot:getRoot
ProjectRoot:parserConfiguration
ProjectRoot:root
ProjectRoot:ProjectRoot
ProjectRoot:getSourceRoots
ProjectRoot:toString
Members
X