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