You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/08/15 15:07:39 UTC

[tomcat] 03/03: Copy utility classes to back-port translations

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 57e0b2dc0eeb50e47049b7667fc297f52b895283
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Aug 15 16:07:07 2019 +0100

    Copy utility classes to back-port translations
---
 .../tomcat/buildutil/translate/BackportBase.java   | 65 +++++++++++++++++++++
 .../buildutil/translate/BackportEnglish.java       | 51 +++++++++++++++++
 .../buildutil/translate/BackportTranslations.java  | 66 ++++++++++++++++++++++
 3 files changed, 182 insertions(+)

diff --git a/java/org/apache/tomcat/buildutil/translate/BackportBase.java b/java/org/apache/tomcat/buildutil/translate/BackportBase.java
new file mode 100644
index 0000000..1a4830f
--- /dev/null
+++ b/java/org/apache/tomcat/buildutil/translate/BackportBase.java
@@ -0,0 +1,65 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.tomcat.buildutil.translate;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Base class providing common implementation for back-port utilities.
+ */
+public abstract class BackportBase {
+
+    protected final Map<String,Properties> sourceTranslations = new HashMap<>();
+    protected final Map<String,Properties> targetTranslations = new HashMap<>();
+    protected final File targetRoot;
+    protected final Properties sourceEnglish;
+    protected final Properties targetEnglish;
+    protected final File storageDir;
+
+    protected BackportBase(String... args) throws IOException {
+        if (args.length != 1) {
+            throw new IllegalArgumentException("Missing back-port target");
+        }
+        targetRoot = new File(args[0]);
+
+        if (!targetRoot.isDirectory()) {
+            throw new IllegalArgumentException("Back-port target not a directory");
+        }
+
+        File sourceRoot = new File(".");
+        for (String dir : Constants.SEARCH_DIRS) {
+            File directory = new File(dir);
+            Utils.processDirectory(sourceRoot, directory, sourceTranslations);
+        }
+
+        for (String dir : Constants.SEARCH_DIRS) {
+            File directory = new File(targetRoot, dir);
+            Utils.processDirectory(targetRoot, directory, targetTranslations);
+        }
+
+        sourceEnglish = sourceTranslations.get("");
+        targetEnglish = targetTranslations.get("");
+
+        storageDir = new File(targetRoot, Constants.STORAGE_DIR);
+    }
+
+    protected abstract void execute() throws IOException;
+}
diff --git a/java/org/apache/tomcat/buildutil/translate/BackportEnglish.java b/java/org/apache/tomcat/buildutil/translate/BackportEnglish.java
new file mode 100644
index 0000000..c6f9608
--- /dev/null
+++ b/java/org/apache/tomcat/buildutil/translate/BackportEnglish.java
@@ -0,0 +1,51 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.tomcat.buildutil.translate;
+
+import java.io.IOException;
+
+/**
+ * Generates a set of English property files to back-port updates to a previous
+ * version. Where a key exists in the source and target versions the value is
+ * copied from the source to the target, overwriting the value in the target.
+ * The expectation is that the changes will be manually reviewed before
+ * committing them.
+ */
+public class BackportEnglish extends BackportBase {
+
+    public static void main(String... args) throws IOException {
+        BackportEnglish backport = new BackportEnglish(args);
+        backport.execute();
+    }
+
+
+    protected BackportEnglish(String[] args) throws IOException {
+        super(args);
+    }
+
+
+    @Override
+    protected void execute() throws IOException {
+        for (Object key : sourceEnglish.keySet()) {
+            if (targetEnglish.containsKey(key)) {
+                targetEnglish.put(key, sourceEnglish.get(key));
+            }
+        }
+
+        Utils.export("", targetEnglish, storageDir);
+    }
+}
diff --git a/java/org/apache/tomcat/buildutil/translate/BackportTranslations.java b/java/org/apache/tomcat/buildutil/translate/BackportTranslations.java
new file mode 100644
index 0000000..6c27177
--- /dev/null
+++ b/java/org/apache/tomcat/buildutil/translate/BackportTranslations.java
@@ -0,0 +1,66 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.tomcat.buildutil.translate;
+
+import java.io.IOException;
+import java.util.Properties;
+
+/**
+ * Generates a set of translated property files to back-port updates to a
+ * previous version. If the source and target use the same value for the English
+ * key then any translated value for that key is copied from the source to the
+ * target.
+ */
+public class BackportTranslations extends BackportBase {
+
+    public static void main(String... args) throws IOException {
+        BackportTranslations backport = new BackportTranslations(args);
+        backport.execute();
+    }
+
+    protected BackportTranslations(String[] args) throws IOException {
+        super(args);
+    }
+
+
+    @Override
+    protected void execute() throws IOException {
+        for (String langauge : targetTranslations.keySet()) {
+            // Skip source
+            if (langauge.length() == 0) {
+                continue;
+            }
+
+            Properties sourceTranslated = sourceTranslations.get(langauge);
+            Properties targetTranslated = targetTranslations.get(langauge);
+            if (targetTranslated == null) {
+                targetTranslated = new Properties();
+                targetTranslations.put(langauge, targetTranslated);
+            }
+
+            for (Object key : targetEnglish.keySet()) {
+                if (sourceTranslated.containsKey(key) &&
+                        targetEnglish.get(key).equals(sourceEnglish.get(key))) {
+
+                    targetTranslated.put(key, sourceTranslated.get(key));
+                }
+            }
+
+            Utils.export(langauge, targetTranslated, storageDir);
+        }
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org