private void generateAndWriteToDiscoveredDirs(final GeneratorContext context, final String source) { OutputDirectoryUtil .generateClassFileInDiscoveredDirs( context, SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME, SOURCE_OUTPUT_TMP, source); }
public static Set<File> findAllMatching(final String fileName, final File from) { final HashSet<File> matching = new HashSet<File>(); _findAllMatching(matching, fileName, from); return matching; }
public static Set<File> findMatchingOutputDirectoryByModel(final Map<String, String> toMatch, final File from) { final HashSet<File> matching = new HashSet<File>(); _findMatchingOutputDirectoryByModel(matching, toMatch, from); return matching; }
@Override protected String generate(final TreeLogger treeLogger, final GeneratorContext context) { logger.info("Generating {}.{}...", SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME); final String source = NonGwtEventQualifierSerializerGenerator.generateSource(TranslatableAnnotationUtils.getTranslatableQualifiers(context.getTypeOracle())); logger.info("Generating class file for server."); if (EnvUtil.isProdMode()) { if (OutputDirectoryUtil.OUTPUT_DIR.isPresent()) { logger.info("Output directory set to {}. Attempting to write class file to this directory.", OutputDirectoryUtil.OUTPUT_DIR.get()); generateAndWriteToDir(OutputDirectoryUtil.OUTPUT_DIR.get(), source); } else { logger.info("No output directory set. Attempting to discover target directory and write class file."); generateAndWriteToDiscoveredDirs(context, source); } } else { logger.info("Running in JUnit or Classic Dev Mode. Attempting to generate class in tmp directory {}", OUTPUT_TMP); final String tmpPath = new File(OUTPUT_TMP).getAbsolutePath(); OutputDirectoryUtil.generateClassFileInTmpDir(SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME, source, tmpPath); } return source; }
private static void _findMatchingOutputDirectoryByModel(final Set<File> matching, final Map<String, String> toMatch, final File from) { if (from.getName().startsWith(".")) return; if (from.isDirectory()) { final File[] files = from.listFiles(); if (files != null) { for (final File file : files) { _findMatchingOutputDirectoryByModel(matching, toMatch, file); } } } else { String name = from.getName(); if (name.endsWith(".class") && toMatch.containsKey(name = name.substring(0, name.length() - 6)) && Arrays.stream(candidateOutputDirectories).anyMatch(s -> from.getAbsolutePath().contains(s))) { final String full = toMatch.get(name); final ReverseMatchResult res = reversePathMatch(full, from); if (res.isMatch()) { matching.add(res.getMatchRoot()); } } } }
public static void generateClassFileInDiscoveredDirs(final GeneratorContext context, final String packageName, final String simpleClassName, final String sourceOutputTemp, final String source) { forEachDiscoveredOutputDir(context, outputDirCdt -> { try { final String classFilePath = ClassChangeUtil.generateClassFile(packageName, simpleClassName, sourceOutputTemp, source, outputDirCdt.getAbsolutePath()); log.info("** Wrote {}.{} class to {}", packageName, simpleClassName, classFilePath); } catch (final Throwable t) { log.warn("Encountered error while trying to generate {}.{} class in {}", packageName, simpleClassName, outputDirCdt.getAbsolutePath()); } }); }
@Override public Set<String> getCandidate(final GeneratorContext context, final DiscoveryContext discoveryContext) { final ServerMappingContext ctx = MappingContextSingleton.get(); final Map<String, String> matchNames = new HashMap<String, String>(); for (final MetaClass cls : ctx.getDefinitionsFactory().getExposedClasses()) { matchNames.put(cls.getName(), cls.getName()); } final File cwd = new File("").getAbsoluteFile(); final Set<File> roots = findMatchingOutputDirectoryByModel(matchNames, cwd); if (roots.isEmpty()) { discoveryContext.veto(); } final Set<String> rootsPaths = new HashSet<String>(); for (final File f : roots) { rootsPaths.add(f.getAbsolutePath()); } return rootsPaths; } }
@Override public Set<String> getCandidate(final GeneratorContext context, final DiscoveryContext veto) { final File cwd = new File("").getAbsoluteFile(); final Set<File> matching = findAllMatching("classlist.mf", cwd); final Set<String> candidateDirectories = new HashSet<String>();
OutputDirectoryUtil.generateClassFileInTmpDir(SERVER_MARSHALLER_PACKAGE_NAME, SERVER_MARSHALLER_CLASS_NAME, serverSource, tmpLocation);
private static void _findMatchingOutputDirectoryByModel(final Set<File> matching, final Map<String, String> toMatch, final File from) { if (from.getName().startsWith(".")) return; if (from.isDirectory()) { final File[] files = from.listFiles(); if (files != null) { for (final File file : files) { _findMatchingOutputDirectoryByModel(matching, toMatch, file); } } } else { String name = from.getName(); if (name.endsWith(".class") && toMatch.containsKey(name = name.substring(0, name.length() - 6)) && Arrays.stream(candidateOutputDirectories).anyMatch(s -> from.getAbsolutePath().contains(s))) { final String full = toMatch.get(name); final ReverseMatchResult res = reversePathMatch(full, from); if (res.isMatch()) { matching.add(res.getMatchRoot()); } } } }
public static void generateClassFileInDiscoveredDirs(final GeneratorContext context, final String packageName, final String simpleClassName, final String sourceOutputTemp, final String source) { forEachDiscoveredOutputDir(context, outputDirCdt -> { try { final String classFilePath = ClassChangeUtil.generateClassFile(packageName, simpleClassName, sourceOutputTemp, source, outputDirCdt.getAbsolutePath()); log.info("** Wrote {}.{} class to {}", packageName, simpleClassName, classFilePath); } catch (final Throwable t) { log.warn("Encountered error while trying to generate {}.{} class in {}", packageName, simpleClassName, outputDirCdt.getAbsolutePath()); } }); }
@Override public Set<String> getCandidate(final GeneratorContext context, final DiscoveryContext discoveryContext) { final ServerMappingContext ctx = MappingContextSingleton.get(); final Map<String, String> matchNames = new HashMap<String, String>(); for (final MetaClass cls : ctx.getDefinitionsFactory().getExposedClasses()) { matchNames.put(cls.getName(), cls.getName()); } final File cwd = new File("").getAbsoluteFile(); final Set<File> roots = findMatchingOutputDirectoryByModel(matchNames, cwd); if (roots.isEmpty()) { discoveryContext.veto(); } final Set<String> rootsPaths = new HashSet<String>(); for (final File f : roots) { rootsPaths.add(f.getAbsolutePath()); } return rootsPaths; } }
@Override public Set<String> getCandidate(final GeneratorContext context, final DiscoveryContext veto) { final File cwd = new File("").getAbsoluteFile(); final Set<File> matching = findAllMatching("classlist.mf", cwd); final Set<String> candidateDirectories = new HashSet<String>();
private static void writeServerSideMarshallerToDiscoveredOutputDirs(final GeneratorContext context, final String source) { OutputDirectoryUtil.generateClassFileInDiscoveredDirs(context, SERVER_MARSHALLER_PACKAGE_NAME, SERVER_MARSHALLER_CLASS_NAME, sourceOutputTemp, source); }
OutputDirectoryUtil.generateClassFileInTmpDir(SERVER_MARSHALLER_PACKAGE_NAME, SERVER_MARSHALLER_CLASS_NAME, serverSource, tmpLocation);
public static Set<File> findAllMatching(final String fileName, final File from) { final HashSet<File> matching = new HashSet<File>(); _findAllMatching(matching, fileName, from); return matching; }
public static Set<File> findMatchingOutputDirectoryByModel(final Map<String, String> toMatch, final File from) { final HashSet<File> matching = new HashSet<File>(); _findMatchingOutputDirectoryByModel(matching, toMatch, from); return matching; }
private static void writeServerSideMarshallerToDiscoveredOutputDirs(final GeneratorContext context, final String source) { OutputDirectoryUtil.generateClassFileInDiscoveredDirs(context, SERVER_MARSHALLER_PACKAGE_NAME, SERVER_MARSHALLER_CLASS_NAME, sourceOutputTemp, source); }
public static void _findAllMatching(final HashSet<File> matching, final String fileName, final File from) { if (from.isDirectory()) { final File[] files = from.listFiles(); if (files != null) { for (final File file : files) { _findAllMatching(matching, fileName, file); } } else { log.debug("Failed to read: " + from.getAbsolutePath()); } } else { if (fileName.equals(from.getName())) { matching.add(from); } } }
public static void _findAllMatching(final HashSet<File> matching, final String fileName, final File from) { if (from.isDirectory()) { final File[] files = from.listFiles(); if (files != null) { for (final File file : files) { _findAllMatching(matching, fileName, file); } } else { log.debug("Failed to read: " + from.getAbsolutePath()); } } else { if (fileName.equals(from.getName())) { matching.add(from); } } }