You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2016/07/15 13:19:10 UTC

[43/50] [abbrv] struts git commit: Adds support for I18N

Adds support for I18N


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/47c6467f
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/47c6467f
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/47c6467f

Branch: refs/heads/master
Commit: 47c6467fe024b4164709f840187b89fbcb0a7ac7
Parents: 42628da
Author: Lukasz Lenart <lu...@gmail.com>
Authored: Fri Jan 15 10:12:25 2016 +0100
Committer: Lukasz Lenart <lu...@gmail.com>
Committed: Tue Jan 19 16:19:20 2016 +0100

----------------------------------------------------------------------
 .../tiles/StrutsApplicationResource.java        | 55 ++++++++++++++++++++
 ...StrutsWildcardServletApplicationContext.java | 15 ++++--
 2 files changed, 67 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/47c6467f/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsApplicationResource.java
----------------------------------------------------------------------
diff --git a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsApplicationResource.java b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsApplicationResource.java
new file mode 100644
index 0000000..6884e9a
--- /dev/null
+++ b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsApplicationResource.java
@@ -0,0 +1,55 @@
+/*
+ * 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.struts2.tiles;
+
+import org.apache.tiles.request.locale.PostfixedApplicationResource;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+public class StrutsApplicationResource extends PostfixedApplicationResource {
+
+    private final URL url;
+
+    public StrutsApplicationResource(URL url) {
+        super(url.getPath());
+        this.url = url;
+    }
+
+    @Override
+    public InputStream getInputStream() throws IOException {
+        if (new File(url.getPath()).exists()) {
+            return url.openStream();
+        }
+        return null;
+    }
+
+    @Override
+    public long getLastModified() throws IOException {
+        File file = new File(url.getPath());
+        if (file.exists()) {
+            return file.lastModified();
+        }
+        return 0;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/47c6467f/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletApplicationContext.java
----------------------------------------------------------------------
diff --git a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletApplicationContext.java b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletApplicationContext.java
index b8f10f9..2f67f04 100644
--- a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletApplicationContext.java
+++ b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletApplicationContext.java
@@ -26,13 +26,13 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.message.MessageFormatMessage;
 import org.apache.tiles.request.ApplicationResource;
-import org.apache.tiles.request.locale.URLApplicationResource;
 import org.apache.tiles.request.servlet.ServletApplicationContext;
 
 import javax.servlet.ServletContext;
 import java.io.File;
 import java.io.IOException;
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.util.Collection;
 import java.util.Enumeration;
@@ -96,7 +96,16 @@ public class StrutsWildcardServletApplicationContext extends ServletApplicationC
     }
 
     public ApplicationResource getResource(ApplicationResource base, Locale locale) {
-        return base;
+        String localePath = base.getLocalePath(locale);
+        if (new File(localePath).exists()) {
+            try {
+                return new StrutsApplicationResource(URI.create("file://" + localePath).toURL());
+            } catch (MalformedURLException e) {
+                LOG.warn(new MessageFormatMessage("Cannot access [{}]", localePath), e);
+                return null;
+            }
+        }
+        return null;
     }
 
     protected Set<ApplicationResource> findResources(String path) throws IOException {
@@ -110,7 +119,7 @@ public class StrutsWildcardServletApplicationContext extends ServletApplicationC
         for (String resource : matches.keySet()) {
             if (pattern.matcher(resource).matches()) {
                 URL url = matches.get(resource);
-                resources.add(new URLApplicationResource(url.getPath(), url));
+                resources.add(new StrutsApplicationResource(url));
             }
         }