From c6be812da3d3147377766ed00fbe6030a0a720f1 Mon Sep 17 00:00:00 2001 From: Mark Roberts Date: Wed, 3 Jul 2024 14:38:07 -0700 Subject: [PATCH] allow old 'enum' package to compile and run (#585) --- framework/core/Project/Lang.pm | 19 +++++++++++++++---- .../Lang/compile-errors/test-65-65.diff | 16 ++++++++++++++++ 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 framework/projects/Lang/compile-errors/test-65-65.diff diff --git a/framework/core/Project/Lang.pm b/framework/core/Project/Lang.pm index ef7ff31a8..ac342960e 100644 --- a/framework/core/Project/Lang.pm +++ b/framework/core/Project/Lang.pm @@ -89,10 +89,21 @@ sub _post_checkout { Utils::convert_file_encoding($work_dir."/".$result->{src}."/org/apache/commons/lang3/text/translate/EntityArrays.java"); Utils::convert_file_encoding($work_dir."/".$result->{src}."/org/apache/commons/lang/Entities.java"); - # remove old pre Java 1.5 code - print($work_dir."/".$result->{src}."/org/apache/commons/lang/enum\n"); - rmtree($work_dir."/".$result->{src}."/org/apache/commons/lang/enum"); - rmtree($work_dir."/".$result->{test}."/org/apache/commons/lang/enum"); + # Some of the Lang tests were created pre Java 1.5 and contain an 'enum' package. + # The is now a reserved word in Java so we convert all references to 'oldenum'. + my $cmd = "grep -lR '\.enum;' $work_dir'/'$result->{src}'/org/apache/commons/lang/enum/'"; + my $log = `$cmd`; + my $ret = $?; + if ($ret == 0 && length($log) > 0) { + Utils::exec_cmd("grep -lR '\\.enum;' $work_dir'/'$result->{src}'/org/apache/commons/lang/enum/' | xargs sed -i'' 's/\\.enum;/\\.oldenum;/'", "Rename enum 1") or die; + } + + $cmd = "grep -lR '\.enum;' $work_dir'/'$result->{test}'/org/apache/commons/lang/enum/'"; + $log = `$cmd`; + $ret = $?; + if ($ret == 0 && length($log) > 0) { + Utils::exec_cmd("grep -lR '\\.enum;' $work_dir'/'$result->{test}'/org/apache/commons/lang/enum/' | xargs sed -i'' 's/\\.enum;/\\.oldenum;/'", "Rename enum 2") or die; + } # Fix compilation errors if necessary my $compile_errors = "$PROJECTS_DIR/$self->{pid}/compile-errors/"; diff --git a/framework/projects/Lang/compile-errors/test-65-65.diff b/framework/projects/Lang/compile-errors/test-65-65.diff new file mode 100644 index 000000000..9d525f693 --- /dev/null +++ b/framework/projects/Lang/compile-errors/test-65-65.diff @@ -0,0 +1,16 @@ +index 38d578aba..a0ae9fc73 100644 +--- a/src/java/org/apache/commons/lang/enum/ValuedEnum.java ++++ b/src/java/org/apache/commons/lang/enum/ValuedEnum.java +@@ -140,9 +140,9 @@ public abstract class ValuedEnum extends Enum { + } + List list = Enum.getEnumList(enumClass); + for (Iterator it = list.iterator(); it.hasNext();) { +- ValuedEnum enum = (ValuedEnum) it.next(); +- if (enum.getValue() == value) { +- return enum; ++ ValuedEnum enumer = (ValuedEnum) it.next(); ++ if (enumer.getValue() == value) { ++ return enumer; + } + } + return null;