summaryrefslogtreecommitdiffstats
path: root/baseservice-i18n/src/main/java/org/openo/baseservice/i18n/JsonResourceScanner.java
diff options
context:
space:
mode:
authoryoubowu <wu.youbo@zte.com.cn>2017-02-08 10:58:20 +0800
committer6092002067 <wu.youbo@zte.com.cn>2017-02-13 11:24:21 +0800
commit5ffdd63a0bd74d1e7da97b58febaf0970493616e (patch)
tree4ef6d0d80d183888ae65a39850815fef941713cd /baseservice-i18n/src/main/java/org/openo/baseservice/i18n/JsonResourceScanner.java
parent6000f113793dce93bd1518a400f76835c018cb75 (diff)
Add international basic service module
Issue-ID:HOLMES-33 Change-Id: I2442ebfa65c6586a21655b226699b0dfbcbb3910 Signed-off-by: youbowu<wu.youbo@zte.com.cn>
Diffstat (limited to 'baseservice-i18n/src/main/java/org/openo/baseservice/i18n/JsonResourceScanner.java')
-rw-r--r--baseservice-i18n/src/main/java/org/openo/baseservice/i18n/JsonResourceScanner.java81
1 files changed, 81 insertions, 0 deletions
diff --git a/baseservice-i18n/src/main/java/org/openo/baseservice/i18n/JsonResourceScanner.java b/baseservice-i18n/src/main/java/org/openo/baseservice/i18n/JsonResourceScanner.java
new file mode 100644
index 0000000..9f5ef3a
--- /dev/null
+++ b/baseservice-i18n/src/main/java/org/openo/baseservice/i18n/JsonResourceScanner.java
@@ -0,0 +1,81 @@
+/**
+ * Copyright 2017 ZTE Corporation.
+ *
+ * Licensed 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.openo.baseservice.i18n;
+
+import org.reflections.Reflections;
+import org.reflections.scanners.ResourcesScanner;
+import org.reflections.util.ClasspathHelper;
+import org.reflections.util.ConfigurationBuilder;
+
+import java.io.File;
+import java.net.URL;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+final class JsonResourceScanner {
+ private static final org.slf4j.Logger LOG =
+ org.slf4j.LoggerFactory.getLogger(JsonResourceScanner.class);
+ private static final Pattern PATTERN_OF_I18N_FILE_NAME =
+ Pattern.compile(".*?\\-i18n\\-.*?\\.json");
+ private static final Pattern PATTERN_OF_ERROR_CODE_FILE_NAME =
+ Pattern.compile(".*?\\-errorcode\\-.*?\\.json");
+
+ private static Collection<String> findFromClassPath(Pattern pattern) {
+ ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
+ Collection<URL> urls = ClasspathHelper.forJavaClassPath();
+
+ for (Iterator<URL> iter = urls.iterator(); iter.hasNext();) {
+ URL url = iter.next();
+ boolean exist = false;
+ try {
+ exist = new File(url.getFile()).exists();
+ if (!exist) {
+ LOG.info("class path url ignored for not exists: " + url.toString());
+ }
+ } catch (Exception e) {
+ LOG.info("class path url ignored for exception: " + url.toString(), e);
+ exist = false;
+ }
+ if (!exist) {
+ iter.remove();
+ }
+ }
+ for (URL url : urls) {
+ LOG.info("class path url:" + url.toString());
+ }
+ configurationBuilder.addUrls(urls);
+ configurationBuilder.setScanners(new ResourcesScanner());
+ configurationBuilder.useParallelExecutor();
+ Reflections reflections = new Reflections(configurationBuilder);
+ Set<String> results = reflections.getResources(pattern);
+ if (results == null) {
+ return Collections.emptySet();
+ } else {
+ return results;
+ }
+ }
+
+ static Collection<String> findI18nPaths() {
+ return findFromClassPath(PATTERN_OF_I18N_FILE_NAME);
+ }
+
+ static Collection<String> findErrorCodePaths() {
+ return findFromClassPath(PATTERN_OF_ERROR_CODE_FILE_NAME);
+ }
+}