< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java

Print this page




  60 import java.util.Map;
  61 import java.util.Objects;
  62 import java.util.NoSuchElementException;
  63 import java.util.Set;
  64 import java.util.function.Predicate;
  65 import java.util.regex.Matcher;
  66 import java.util.regex.Pattern;
  67 import java.util.stream.Collectors;
  68 import java.util.stream.Stream;
  69 import java.util.jar.Attributes;
  70 import java.util.jar.Manifest;
  71 
  72 import javax.lang.model.SourceVersion;
  73 import javax.tools.JavaFileManager;
  74 import javax.tools.JavaFileManager.Location;
  75 import javax.tools.JavaFileObject;
  76 import javax.tools.StandardJavaFileManager;
  77 import javax.tools.StandardJavaFileManager.PathFactory;
  78 import javax.tools.StandardLocation;
  79 


  80 import com.sun.tools.javac.code.Lint;
  81 import com.sun.tools.javac.code.Lint.LintCategory;
  82 import com.sun.tools.javac.main.Option;
  83 import com.sun.tools.javac.resources.CompilerProperties.Errors;
  84 import com.sun.tools.javac.resources.CompilerProperties.Warnings;
  85 import com.sun.tools.javac.util.DefinedBy;
  86 import com.sun.tools.javac.util.DefinedBy.Api;
  87 import com.sun.tools.javac.util.JDK9Wrappers;
  88 import com.sun.tools.javac.util.ListBuffer;
  89 import com.sun.tools.javac.util.Log;
  90 import com.sun.tools.javac.jvm.ModuleNameReader;
  91 import com.sun.tools.javac.util.Iterators;
  92 import com.sun.tools.javac.util.Pair;
  93 import com.sun.tools.javac.util.StringUtils;
  94 
  95 import static javax.tools.StandardLocation.PLATFORM_CLASS_PATH;
  96 
  97 import static com.sun.tools.javac.main.Option.BOOT_CLASS_PATH;
  98 import static com.sun.tools.javac.main.Option.DJAVA_ENDORSED_DIRS;
  99 import static com.sun.tools.javac.main.Option.DJAVA_EXT_DIRS;
 100 import static com.sun.tools.javac.main.Option.ENDORSEDDIRS;
 101 import static com.sun.tools.javac.main.Option.EXTDIRS;
 102 import static com.sun.tools.javac.main.Option.XBOOTCLASSPATH;
 103 import static com.sun.tools.javac.main.Option.XBOOTCLASSPATH_APPEND;
 104 import static com.sun.tools.javac.main.Option.XBOOTCLASSPATH_PREPEND;
 105 
 106 /**
 107  * This class converts command line arguments, environment variables and system properties (in


1434                     }
1435 
1436                     // finally clean up the module name
1437                     mn =  mn.replaceAll("[^A-Za-z0-9]", ".")  // replace non-alphanumeric
1438                             .replaceAll("(\\.)(\\1)+", ".")   // collapse repeating dots
1439                             .replaceAll("^\\.", "")           // drop leading dots
1440                             .replaceAll("\\.$", "");          // drop trailing dots
1441 
1442 
1443                     if (!mn.isEmpty()) {
1444                         return new Pair<>(mn, p);
1445                     }
1446 
1447                     log.error(Errors.LocnCantGetModuleNameForJar(p));
1448                     return null;
1449                 }
1450 
1451                 if (p.getFileName().toString().endsWith(".jmod")) {
1452                     try {
1453                         // check if the JMOD file is valid
1454                         JDK9Wrappers.JmodFile.checkMagic(p);
1455 
1456                         // No JMOD file system.  Use JarFileSystem to
1457                         // workaround for now
1458                         FileSystem fs = fileSystems.get(p);
1459                         if (fs == null) {
1460                             FileSystemProvider jarFSProvider = fsInfo.getJarFSProvider();
1461                             if (jarFSProvider == null) {
1462                                 log.error(Errors.LocnCantReadFile(p));
1463                                 return null;
1464                             }
1465                             fs = jarFSProvider.newFileSystem(p, Collections.emptyMap());
1466                             try {
1467                                 Path moduleInfoClass = fs.getPath("classes/module-info.class");
1468                                 String moduleName = readModuleName(moduleInfoClass);
1469                                 Path modulePath = fs.getPath("classes");
1470                                 fileSystems.put(p, fs);
1471                                 closeables.add(fs);
1472                                 fs = null; // prevent fs being closed in the finally clause
1473                                 return new Pair<>(moduleName, modulePath);
1474                             } finally {




  60 import java.util.Map;
  61 import java.util.Objects;
  62 import java.util.NoSuchElementException;
  63 import java.util.Set;
  64 import java.util.function.Predicate;
  65 import java.util.regex.Matcher;
  66 import java.util.regex.Pattern;
  67 import java.util.stream.Collectors;
  68 import java.util.stream.Stream;
  69 import java.util.jar.Attributes;
  70 import java.util.jar.Manifest;
  71 
  72 import javax.lang.model.SourceVersion;
  73 import javax.tools.JavaFileManager;
  74 import javax.tools.JavaFileManager.Location;
  75 import javax.tools.JavaFileObject;
  76 import javax.tools.StandardJavaFileManager;
  77 import javax.tools.StandardJavaFileManager.PathFactory;
  78 import javax.tools.StandardLocation;
  79 
  80 import jdk.internal.jmod.JmodFile;
  81 
  82 import com.sun.tools.javac.code.Lint;
  83 import com.sun.tools.javac.code.Lint.LintCategory;
  84 import com.sun.tools.javac.main.Option;
  85 import com.sun.tools.javac.resources.CompilerProperties.Errors;
  86 import com.sun.tools.javac.resources.CompilerProperties.Warnings;
  87 import com.sun.tools.javac.util.DefinedBy;
  88 import com.sun.tools.javac.util.DefinedBy.Api;

  89 import com.sun.tools.javac.util.ListBuffer;
  90 import com.sun.tools.javac.util.Log;
  91 import com.sun.tools.javac.jvm.ModuleNameReader;
  92 import com.sun.tools.javac.util.Iterators;
  93 import com.sun.tools.javac.util.Pair;
  94 import com.sun.tools.javac.util.StringUtils;
  95 
  96 import static javax.tools.StandardLocation.PLATFORM_CLASS_PATH;
  97 
  98 import static com.sun.tools.javac.main.Option.BOOT_CLASS_PATH;
  99 import static com.sun.tools.javac.main.Option.DJAVA_ENDORSED_DIRS;
 100 import static com.sun.tools.javac.main.Option.DJAVA_EXT_DIRS;
 101 import static com.sun.tools.javac.main.Option.ENDORSEDDIRS;
 102 import static com.sun.tools.javac.main.Option.EXTDIRS;
 103 import static com.sun.tools.javac.main.Option.XBOOTCLASSPATH;
 104 import static com.sun.tools.javac.main.Option.XBOOTCLASSPATH_APPEND;
 105 import static com.sun.tools.javac.main.Option.XBOOTCLASSPATH_PREPEND;
 106 
 107 /**
 108  * This class converts command line arguments, environment variables and system properties (in


1435                     }
1436 
1437                     // finally clean up the module name
1438                     mn =  mn.replaceAll("[^A-Za-z0-9]", ".")  // replace non-alphanumeric
1439                             .replaceAll("(\\.)(\\1)+", ".")   // collapse repeating dots
1440                             .replaceAll("^\\.", "")           // drop leading dots
1441                             .replaceAll("\\.$", "");          // drop trailing dots
1442 
1443 
1444                     if (!mn.isEmpty()) {
1445                         return new Pair<>(mn, p);
1446                     }
1447 
1448                     log.error(Errors.LocnCantGetModuleNameForJar(p));
1449                     return null;
1450                 }
1451 
1452                 if (p.getFileName().toString().endsWith(".jmod")) {
1453                     try {
1454                         // check if the JMOD file is valid
1455                         JmodFile.checkMagic(p);
1456 
1457                         // No JMOD file system.  Use JarFileSystem to
1458                         // workaround for now
1459                         FileSystem fs = fileSystems.get(p);
1460                         if (fs == null) {
1461                             FileSystemProvider jarFSProvider = fsInfo.getJarFSProvider();
1462                             if (jarFSProvider == null) {
1463                                 log.error(Errors.LocnCantReadFile(p));
1464                                 return null;
1465                             }
1466                             fs = jarFSProvider.newFileSystem(p, Collections.emptyMap());
1467                             try {
1468                                 Path moduleInfoClass = fs.getPath("classes/module-info.class");
1469                                 String moduleName = readModuleName(moduleInfoClass);
1470                                 Path modulePath = fs.getPath("classes");
1471                                 fileSystems.put(p, fs);
1472                                 closeables.add(fs);
1473                                 fs = null; // prevent fs being closed in the finally clause
1474                                 return new Pair<>(moduleName, modulePath);
1475                             } finally {


< prev index next >