[Yanel-commits] rev 23413 - in public/yanel/trunk/src: contributions/resources/contact-form/src/java/org/wyona/yanel/impl/resources contributions/resources/nutch/src/java/org/wyona/yanel/impl/resources contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources core/java/org/wyona/yanel/core/map core/java/org/wyona/yanel/core/transformation core/java/org/wyona/yanel/servlet realms/use-cases/yanel/ac-identities/users realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources realms/yanel-website/config resources/add-realm/src/java/org/wyona/yanel/impl/resources resources/xml/src/java/org/wyona/yanel/impl/resources

josias at wyona.com josias at wyona.com
Mon Mar 26 17:06:31 CEST 2007


Author: josias
Date: 2007-03-26 17:06:29 +0200 (Mon, 26 Mar 2007)
New Revision: 23413

Modified:
   public/yanel/trunk/src/contributions/resources/contact-form/src/java/org/wyona/yanel/impl/resources/ContactResource.java
   public/yanel/trunk/src/contributions/resources/nutch/src/java/org/wyona/yanel/impl/resources/NutchResource.java
   public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer2.java
   public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java
   public/yanel/trunk/src/realms/use-cases/yanel/ac-identities/users/alice.xml
   public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateResource.java
   public/yanel/trunk/src/realms/yanel-website/config/yanel-realm-config.xml
   public/yanel/trunk/src/resources/add-realm/src/java/org/wyona/yanel/impl/resources/AddRealmResource.java
   public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java
Log:
made default language configurable per realm. fixes bug #5253, thanks to paloma

Modified: public/yanel/trunk/src/contributions/resources/contact-form/src/java/org/wyona/yanel/impl/resources/ContactResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/contact-form/src/java/org/wyona/yanel/impl/resources/ContactResource.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/contributions/resources/contact-form/src/java/org/wyona/yanel/impl/resources/ContactResource.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -152,7 +152,7 @@
             ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
             transformer.transform(new javax.xml.transform.stream.StreamSource(xmlFile), new StreamResult(byteArrayOutputStream));
             //translate the form
-            i18nTransformer = new I18nTransformer(messageBundle, language);
+            i18nTransformer = new I18nTransformer(messageBundle, language, getRealm().getDefaultLanguage());
             SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
             saxParser = SAXParserFactory.newInstance().newSAXParser();
             saxParser.parse(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()), i18nTransformer);
@@ -165,8 +165,8 @@
  
             byteArrayOutputStream = new ByteArrayOutputStream();
             transformer.transform(new StreamSource(i18nTransformer.getInputStream()), new StreamResult(byteArrayOutputStream));
-            //tranlate the page
-            i18nTransformer = new I18nTransformer("global", language);
+            //translate the page
+            i18nTransformer = new I18nTransformer("global", language, getRealm().getDefaultLanguage());
             saxParser = SAXParserFactory.newInstance().newSAXParser();
             saxParser.parse(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()), i18nTransformer);
             

Modified: public/yanel/trunk/src/contributions/resources/nutch/src/java/org/wyona/yanel/impl/resources/NutchResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/nutch/src/java/org/wyona/yanel/impl/resources/NutchResource.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/contributions/resources/nutch/src/java/org/wyona/yanel/impl/resources/NutchResource.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -89,7 +89,6 @@
     private long totalHits = 0;
     private String defaultFile = "nutch-default.xml";
     private String localFile = "nutch-local.xml";
-    private String DEFAULT_LANGUAGE = "en";
     private String searchTerm = "";
     private String show = ""; //default is empty, else show either CACHE, EXPLAIN, ANCHORS
     private String resourceBundle = "nutch";
@@ -106,6 +105,7 @@
      * 
      */
     public NutchResource() {
+        
     }
 
     /**
@@ -119,7 +119,7 @@
      * 
      */
     public View getView(Path path, String viewId) {
-        return getView(path, viewId, 0, 0, DEFAULT_LANGUAGE);
+        return getView(path, viewId, 0, 0, getRealm().getDefaultLanguage());
     }
 
     /**
@@ -333,7 +333,7 @@
                 log.debug("Back 2 realm: " + PathUtil.backToRealm(getPath()));
                 transformer.transform(new javax.xml.transform.dom.DOMSource(document), new StreamResult(byteArrayOutputStream));
                 InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
-                i18nTransformer = new I18nTransformer(resourceBundle, language);
+                i18nTransformer = new I18nTransformer(resourceBundle, language, getRealm().getDefaultLanguage());
                 SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
                 saxParser.parse(inputStream, i18nTransformer);
                 return applyGlobalXslIfExists(i18nTransformer.getInputStream(), searchTerm, language);
@@ -370,7 +370,7 @@
                 transformer.transform(new StreamSource(inputStream), new StreamResult(byteArrayOutputStream));
                 inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
                 log.debug("Language: " + language);
-                i18nTransformer = new I18nTransformer(resourceBundle, language);
+                i18nTransformer = new I18nTransformer(resourceBundle, language, getRealm().getDefaultLanguage());
                 SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
                 saxParser.parse(inputStream, i18nTransformer);
                 return i18nTransformer.getInputStream(); 
@@ -445,7 +445,7 @@
                     "<h3><i18n:message key=\"scoreForQuery\"/>" + query + "</h3>" + 
                     nutchBean.getExplanation(query, hit) + 
                     "</div></body></html>"; 
-            I18nTransformer i18nTransformer = new I18nTransformer(resourceBundle, language);
+            I18nTransformer i18nTransformer = new I18nTransformer(resourceBundle, language, getRealm().getDefaultLanguage());
             SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
             saxParser.parse(new StringBufferInputStream(content), i18nTransformer);
             return applyGlobalXslIfExists(i18nTransformer.getInputStream(), searchTerm, language);
@@ -485,7 +485,7 @@
             }
             content += "</div></body></html>"; 
             log.debug("content:\n" + content);
-            I18nTransformer i18nTransformer = new I18nTransformer(resourceBundle, language);
+            I18nTransformer i18nTransformer = new I18nTransformer(resourceBundle, language, getRealm().getDefaultLanguage());
             SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
             saxParser.parse(new StringBufferInputStream(content), i18nTransformer);
             return applyGlobalXslIfExists(i18nTransformer.getInputStream(), searchTerm, language);
@@ -709,7 +709,7 @@
         }
 
         if (language == null) {
-            language = DEFAULT_LANGUAGE;
+            language = getRealm().getDefaultLanguage();
         }
 
         log.debug("Language: " + language);

Modified: public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -65,8 +65,6 @@
     private HashMap properties = new HashMap();
     private final String DEFAULT_WIKI_PARSER_BEAN_ID = "jspWikiParser";
     
-    private String language = "en";
-    
     /**
      * 
      */
@@ -154,7 +152,7 @@
             }
 
             inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
-            I18nTransformer i18nTransformer = new I18nTransformer("global", language);
+            I18nTransformer i18nTransformer = new I18nTransformer("global", getRealm().getDefaultLanguage(), getRealm().getDefaultLanguage());
             saxParser = SAXParserFactory.newInstance().newSAXParser();
             saxParser.parse(inputStream, i18nTransformer);
 
@@ -170,15 +168,15 @@
      * 
      */
     public View getView(HttpServletRequest request, String viewId) {
-        String _language = language;
+        String _language = getRealm().getDefaultLanguage();
         try {
             _language = request.getParameter("yanel.meta.language");
         } catch(Exception e) {
             //use fallback language
-            _language = language;
+            _language = getRealm().getDefaultLanguage();
         }
-        if(_language == null || ("").equals(_language)) _language = language;
-        else language = _language;
+        //if(_language == null || ("").equals(_language)) _language = language;
+        //else language = _language;
         return getView(new Path(request.getServletPath()), viewId);
     }
 

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -31,6 +31,7 @@
     private String name;
     private String id;
     private String mountPoint;
+    private String defaultLanguage;
     private Repository repository;
     private Repository rtiRepository;
     private PolicyManager policyManager;
@@ -164,4 +165,12 @@
         this.policyManager = policyManager;
     }
 
+    public String getDefaultLanguage() {
+        return defaultLanguage;
+    }
+
+    public void setDefaultLanguage(String language) {
+        this.defaultLanguage = language;
+    }
+
 }

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -229,6 +229,16 @@
                         realm.setIdentityManager(identityManager);
                     }
                     
+                    repoConfigElement = realmConfig.getChild("default-language", false);
+                    if (repoConfigElement != null) {                       
+                        realm.setDefaultLanguage(repoConfigElement.getValue());
+                    } else {
+                        //Maintain backwards compatibility with realms
+                        realm.setDefaultLanguage("en");
+                    }
+                    
+                    
+                    
                     log.info("Realm: " + realm);
                     
                     hm.put(realmId, realm);

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -5,6 +5,7 @@
 import java.io.UnsupportedEncodingException;
 import java.util.Locale;
 import java.util.ResourceBundle;
+import java.util.MissingResourceException;
 import org.apache.log4j.Category;
 import org.xml.sax.Attributes;
 import org.xml.sax.EntityResolver;
@@ -22,9 +23,15 @@
     private String cachedEname;
     private EntityResolver entityResolver;
 
-    public I18nTransformer(String messages, String language) {
-        currentLocale = new Locale(language);
-        messageBundle = ResourceBundle.getBundle(messages, currentLocale);
+    public I18nTransformer(String messages, String language, String defaultLanguage) {
+        try {
+            currentLocale = new Locale(language);
+            messageBundle = ResourceBundle.getBundle(messages, currentLocale);
+        } catch (MissingResourceException e) {
+            currentLocale = new Locale(defaultLanguage);
+            messageBundle = ResourceBundle.getBundle(messages, currentLocale);
+        } 
+        
     }
 
     public void startDocument() throws SAXException {

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer2.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer2.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer2.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -4,12 +4,14 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.ResourceBundle;
+import java.util.MissingResourceException;
 
 import org.apache.log4j.Category;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.AttributesImpl;
 
+
 /**
  * Transformer to translate content to a certain language using a message catalogue. 
  * This i18n transformer supports two kinds of syntax:
@@ -42,9 +44,14 @@
 
     public static final String NS_URI = "http://www.wyona.org/yanel/i18n/1.0";
     
-    public I18nTransformer2(String messages, String language) {
-        currentLocale = new Locale(language);
-        messageBundle = ResourceBundle.getBundle(messages, currentLocale);
+    public I18nTransformer2(String messages, String language, String defaultLanguage) {
+        try {
+            currentLocale = new Locale(language);
+            messageBundle = ResourceBundle.getBundle(messages, currentLocale);
+        } catch (MissingResourceException e) {
+            currentLocale = new Locale(defaultLanguage);
+            messageBundle = ResourceBundle.getBundle(messages, currentLocale);
+        } 
     }
 
     public void startElement(String namespaceURI, String localName, String qName, Attributes attrs) throws SAXException {

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -1619,7 +1619,7 @@
                 xsltTransformer.getTransformer().setParameter("yanel.reservedPrefix", reservedPrefix);
                 
                 // create i18n transformer:
-                I18nTransformer2 i18nTransformer = new I18nTransformer2("global", getLanguage(request));
+                I18nTransformer2 i18nTransformer = new I18nTransformer2("global", getLanguage(request),yanel.getMap().getRealm(request.getServletPath()).getDefaultLanguage());
                 CatalogResolver catalogResolver = new CatalogResolver();
                 i18nTransformer.setEntityResolver(new CatalogResolver());
                 
@@ -1643,7 +1643,7 @@
     /**
      * Get language with the following priorization: 1) yanel.meta.language query string parameter, 2) Accept-Language header, 3) Default en
      */
-    private String getLanguage(HttpServletRequest request) {
+    private String getLanguage(HttpServletRequest request) throws Exception {
         String language = request.getParameter("yanel.meta.language");
         if (language == null) {
             language = request.getHeader("Accept-Language");
@@ -1659,7 +1659,7 @@
             }
         }
         if(language != null && language.length() > 0) return language;
-        return "en";
+        return yanel.getMap().getRealm(request.getServletPath()).getDefaultLanguage();
     }
 
     /**

Modified: public/yanel/trunk/src/realms/use-cases/yanel/ac-identities/users/alice.xml
===================================================================
--- public/yanel/trunk/src/realms/use-cases/yanel/ac-identities/users/alice.xml	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/realms/use-cases/yanel/ac-identities/users/alice.xml	2007-03-26 15:06:29 UTC (rev 23413)
@@ -2,5 +2,6 @@
 <user id="alice">
 <name>Michael Wechner</name>
 <email>michi at wyona.org</email>
-<password>e94ef563867e9c9df3fcc999bdb045f5</password>
+<password>9c62a68af3b80523ef2ffc8cb3eb9fb8</password>
+<salt>9a74c27e6cc2303e</salt>
 </user>

Modified: public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateResource.java
===================================================================
--- public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateResource.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateResource.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -54,13 +54,14 @@
 public class UpdateResource extends Resource implements ViewableV2 {
 
     private static Category log = Category.getInstance(UpdateResource.class);
-    private String defaultLanguage = "en";
+    private String defaultLanguage;
     private String language = null;
     
     /**
      * 
      */
     public UpdateResource() {
+        defaultLanguage = getRealm().getDefaultLanguage();
     }
 
     /**
@@ -90,7 +91,7 @@
         }
 
         Transformer transformer = null;
-        I18nTransformer i18nTransformer = new I18nTransformer("update", language);
+        I18nTransformer i18nTransformer = new I18nTransformer("update", language, defaultLanguage);
         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
         View defaultView = new View();
         DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

Modified: public/yanel/trunk/src/realms/yanel-website/config/yanel-realm-config.xml
===================================================================
--- public/yanel/trunk/src/realms/yanel-website/config/yanel-realm-config.xml	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/realms/yanel-website/config/yanel-realm-config.xml	2007-03-26 15:06:29 UTC (rev 23413)
@@ -6,4 +6,5 @@
   <data>repository.xml</data>
   <ac-policies>ac-policies-repository.xml</ac-policies>
   <ac-identities>ac-identities-repository.xml</ac-identities>
+  <default-language>en</default-language>
 </realm-config>

Modified: public/yanel/trunk/src/resources/add-realm/src/java/org/wyona/yanel/impl/resources/AddRealmResource.java
===================================================================
--- public/yanel/trunk/src/resources/add-realm/src/java/org/wyona/yanel/impl/resources/AddRealmResource.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/resources/add-realm/src/java/org/wyona/yanel/impl/resources/AddRealmResource.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -70,7 +70,7 @@
     private final static String SESSION_ATTR_REALM_ID = "org.wyona.yanel.addrealm.realm.id";
     private final static String SESSION_ATTR_REALM_NAME = "org.wyona.yanel.addrealm.realm.name";
     
-    private String defaultLanguage = "en";
+    private String defaultLanguage;
     private String language = null;
     private String parameterName = null;
     private String parameter = null;
@@ -83,6 +83,7 @@
      *
      */
     public AddRealmResource() {
+        defaultLanguage = getRealm().getDefaultLanguage();
     }
 
     /**
@@ -113,7 +114,7 @@
         }
 
         Transformer transformer = null;
-        I18nTransformer i18nTransformer = new I18nTransformer("add-realm", language);
+        I18nTransformer i18nTransformer = new I18nTransformer("add-realm", language, defaultLanguage);
         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
         View defaultView = new View();
 

Modified: public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java
===================================================================
--- public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java	2007-03-26 14:28:43 UTC (rev 23412)
+++ public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java	2007-03-26 15:06:29 UTC (rev 23413)
@@ -157,7 +157,7 @@
                 }
                 
                 // create i18n transformer:
-                I18nTransformer2 i18nTransformer = new I18nTransformer2("global", getLanguage());
+                I18nTransformer2 i18nTransformer = new I18nTransformer2("global", getLanguage(), getRealm().getDefaultLanguage());
                 i18nTransformer.setEntityResolver(catalogResolver);
                 
                 // create xinclude transformer:
@@ -206,7 +206,7 @@
             language = getRequest().getParameter("Accept-Language");
         }
         if(language != null && language.length() > 0) return language;
-        return "en";
+        return getRealm().getDefaultLanguage();
     }
 
 




More information about the Yanel-commits mailing list