cleanup (inspection "Java | Class structure | Utility class is not 'final'")
[idea/community.git] / jps / model-serialization / src / org / jetbrains / jps / model / serialization / JpsModelSerializationDataService.java
1 // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package org.jetbrains.jps.model.serialization;
3
4 import org.jetbrains.annotations.NotNull;
5 import org.jetbrains.annotations.Nullable;
6 import org.jetbrains.jps.model.JpsGlobal;
7 import org.jetbrains.jps.model.JpsProject;
8 import org.jetbrains.jps.model.module.JpsModule;
9 import org.jetbrains.jps.model.serialization.impl.JpsModuleSerializationDataExtensionImpl;
10 import org.jetbrains.jps.model.serialization.impl.JpsPathVariablesConfigurationImpl;
11 import org.jetbrains.jps.model.serialization.impl.JpsProjectSerializationDataExtensionImpl;
12 import org.jetbrains.jps.model.serialization.module.JpsModuleSerializationDataExtension;
13
14 import java.io.File;
15 import java.util.HashMap;
16 import java.util.Map;
17
18 public final class JpsModelSerializationDataService {
19   /**
20    * @deprecated use {@link #computeAllPathVariables(JpsGlobal)} instead
21    */
22   @Deprecated
23   @NotNull
24   public static Map<String, String> getAllPathVariables(JpsGlobal global) {
25     return computeAllPathVariables(global);
26   }
27
28   public static Map<String, String> computeAllPathVariables(JpsGlobal global) {
29     Map<String, String> pathVariables = new HashMap<>(PathMacroUtil.getGlobalSystemMacros(false));
30     JpsPathVariablesConfiguration configuration = getPathVariablesConfiguration(global);
31     if (configuration != null) {
32       pathVariables.putAll(configuration.getAllUserVariables());
33     }
34     return pathVariables;
35   }
36
37   @Nullable
38   public static JpsPathVariablesConfiguration getPathVariablesConfiguration(JpsGlobal global) {
39     return global.getContainer().getChild(JpsGlobalLoader.PATH_VARIABLES_ROLE);
40   }
41
42   @NotNull
43   public static JpsPathVariablesConfiguration getOrCreatePathVariablesConfiguration(JpsGlobal global) {
44     JpsPathVariablesConfiguration child = global.getContainer().getChild(JpsGlobalLoader.PATH_VARIABLES_ROLE);
45     if (child == null) {
46       return global.getContainer().setChild(JpsGlobalLoader.PATH_VARIABLES_ROLE, new JpsPathVariablesConfigurationImpl());
47     }
48     return child;
49   }
50
51
52   @Nullable
53   public static JpsProjectSerializationDataExtension getProjectExtension(@NotNull JpsProject project) {
54     return project.getContainer().getChild(JpsProjectSerializationDataExtensionImpl.ROLE);
55   }
56
57   @Nullable
58   public static File getBaseDirectory(@NotNull JpsProject project) {
59     JpsProjectSerializationDataExtension extension = getProjectExtension(project);
60     return extension != null ? extension.getBaseDirectory() : null;
61   }
62
63   @Nullable
64   public static JpsModuleSerializationDataExtension getModuleExtension(@NotNull JpsModule project) {
65     return project.getContainer().getChild(JpsModuleSerializationDataExtensionImpl.ROLE);
66   }
67
68   @Nullable
69   public static File getBaseDirectory(@NotNull JpsModule module) {
70     JpsModuleSerializationDataExtension extension = getModuleExtension(module);
71     return extension != null ? extension.getBaseDirectory() : null;
72   }
73
74   @Nullable
75   public static String getPathVariableValue(@NotNull JpsGlobal global, @NotNull String name) {
76     String value = PathMacroUtil.getGlobalSystemMacroValue(name, false);
77     if (value != null) {
78       return value;
79     }
80     JpsPathVariablesConfiguration configuration = getPathVariablesConfiguration(global);
81     return configuration != null ? configuration.getUserVariableValue(name) : null;
82   }
83 }