core/kernel/source/jetbrains/mps/reloading/CommonPaths.java (32 lines of code) (raw):

/* * Copyright 2003-2025 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.mps.reloading; import jetbrains.mps.util.ClassType; import jetbrains.mps.vfs.QualifiedPath; import org.jetbrains.mps.annotations.Internal; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; //todo [MM] rename this class, possibly make it a component public final class CommonPaths { //--------paths----------- public static List<QualifiedPath> getPaths(ClassType type) { Predicate<QualifiedPath> toolsPredicate = s -> s.getPath().contains("jdk.jdi") || s.getPath().contains("tools.jar"); if (type == ClassType.JDK) { return getJDKPathInternal().stream().filter(toolsPredicate.negate()).collect(Collectors.toList()); } else if (type == ClassType.JDK_TOOLS) { return getJDKPathInternal().stream().filter(toolsPredicate).collect(Collectors.toList()); } String s = "CommonPaths no longer serves as a list of hard-coded libraries, ClassType '%s' is not supported"; throw new IllegalArgumentException(String.format(s, type.getTypeString())); // it's only jdk/jdk-tools we can not manage in JDK.msd; for those PredefinedRootClassTypeConfig shall help // for (String path : new ClassPathReader(PathManager.getHomePath(), Collections.singletonList(type)).read()) { // // inactive code, it's unlikely we need to specify jdk/idea jars through idea.additional.classpath.txt; // // left as a reminder to deal with CPR some day (leave just to augment classpath for Launcher, perhaps)? // addIfExists(result, path); // } } /** * Don't use outside of MPS */ @Internal public static List<String> getJDKToolsPath() { // FIXME is there true need for the method? return getPaths(ClassType.JDK_TOOLS).stream().map(QualifiedPath::getPath).collect(Collectors.toList()); } @Deprecated(since = "2021.3", forRemoval = true) public static List<String> getJDKPath() { // XXX there's only 1 use of the method, does it justify its existence? return getJDKPathInternal().stream() .map(QualifiedPath::getPath) .collect(Collectors.toList()); } private static List<QualifiedPath> getJDKPathInternal() { return SDKDiscovery.discover(); } }