You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2019/04/19 18:59:46 UTC
svn commit: r1857826 -
/uima/uv3/uimaj-v3/trunk/uimaj-v3migration-jcas/src/main/java/org/apache/uima/migratev3/jcas/MigrateJCas.java
Author: schor
Date: Fri Apr 19 18:59:46 2019
New Revision: 1857826
URL: http://svn.apache.org/viewvc?rev=1857826&view=rev
Log:
[UIMA-6025] extend migration tool to work on 1 source file.
Modified:
uima/uv3/uimaj-v3/trunk/uimaj-v3migration-jcas/src/main/java/org/apache/uima/migratev3/jcas/MigrateJCas.java
Modified: uima/uv3/uimaj-v3/trunk/uimaj-v3migration-jcas/src/main/java/org/apache/uima/migratev3/jcas/MigrateJCas.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-v3migration-jcas/src/main/java/org/apache/uima/migratev3/jcas/MigrateJCas.java?rev=1857826&r1=1857825&r2=1857826&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-v3migration-jcas/src/main/java/org/apache/uima/migratev3/jcas/MigrateJCas.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-v3migration-jcas/src/main/java/org/apache/uima/migratev3/jcas/MigrateJCas.java Fri Apr 19 18:59:46 2019
@@ -127,6 +127,7 @@ import com.github.javaparser.printer.Pre
* <ul><li>converts these to v3</li></ul></li></ul>
*
* <li>also can receive a list of individual class names</li>
+ * <li>also can do a single source file</li>
* </ul>
*
* <p>Creates summary and detailed reports of its actions.
@@ -206,7 +207,7 @@ import com.github.javaparser.printer.Pre
* - compiles the results
* - does reassembly for Jars and PEARs, replacing the JCas classes.
*
- * Mode 2: Given sources-roots
+ * Mode 2: Given sources-roots or a single source java file
* scans the sources-routes looking for candidates
* - migrates that decompiled source.
* </pre>
@@ -289,6 +290,7 @@ public class MigrateJCas extends VoidVis
final List<V3CompiledPathAndContainerItemPath> v3CompiledPathAndContainerItemPath = new ArrayList<>();
final boolean isPear;
final boolean isJar;
+ final boolean isSingleJavaSource;
/** can't use Path as the type, because the equals for Path is object == */
final Set<String> _Types = new HashSet<>(); // has the non_Type path only if the _Type is found
boolean haveDifferentCapitalizedNamesCollidingOnWindows = false;
@@ -309,6 +311,7 @@ public class MigrateJCas extends VoidVis
String s = root.toString().toLowerCase();
isJar = s.endsWith(".jar");
isPear = s.endsWith(".pear");
+ isSingleJavaSource = s.endsWith(".java");
this.root = (isPear || isJar)
? installJarOrPear()
: root;
@@ -2205,13 +2208,16 @@ public class MigrateJCas extends VoidVis
private void getAndProcessCandidatesInContainer(Container container) {
// current_paths2RootIds = top_paths2RootIds; // don't do lower, that's called within Jars etc.
-
- try (Stream<Path> stream = Files.walk(container.root, FileVisitOption.FOLLOW_LINKS)) { // needed to release file handles
- stream.forEachOrdered(
- // only puts into the RootIds possible Fqcn (ending in either .class or .java)
- p -> getCandidates_processFile2(p, container));
- } catch (IOException e) {
- throw new RuntimeException(e);
+ if (container.isSingleJavaSource) {
+ getCandidates_processFile2(container.root, container);
+ } else {
+ try (Stream<Path> stream = Files.walk(container.root, FileVisitOption.FOLLOW_LINKS)) { // needed to release file handles
+ stream.forEachOrdered(
+ // only puts into the RootIds possible Fqcn (ending in either .class or .java)
+ p -> getCandidates_processFile2(p, container));
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
}
// walk from root container, remove items not JCas candidates
@@ -2310,7 +2316,7 @@ public class MigrateJCas extends VoidVis
// System.out.println("debug container._Types did contain " + candidate);
// }
// }
- if (!container._Types.contains(candidate)) {
+ if (!container.isSingleJavaSource && !container._Types.contains(candidate)) {
it.remove();
}
}
@@ -2924,7 +2930,7 @@ public class MigrateJCas extends VoidVis
private void printUsage() {
System.out.println(
"Usage: java org.apache.uima.migratev3.jcas.MigrateJCas \n"
- + " [-sourcesRoots <One-or-more-directories-or-jars-separated-by-Path-separator>]\n"
+ + " [-sourcesRoots <One-or-more-directories-or-jars-separated-by-Path-separator, or a path to a single JCas source class>]\n"
+ " [-classesRoots <One-or-more-directories-or-jars-or-pears-separated-by-Path-separator>]\n"
+ " [-outputDirectory a-writable-directory-path (optional)\n"
+ " if omitted, a temporary directory is used\n"