[Yanel-commits] rev 59350 - public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources

michi at wyona.com michi at wyona.com
Wed Jul 13 20:58:26 CEST 2011


Author: michi
Date: 2011-07-13 20:58:25 +0200 (Wed, 13 Jul 2011)
New Revision: 59350

Modified:
   public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java
Log:
is mobile view introduced

Modified: public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java
===================================================================
--- public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java	2011-07-13 17:36:34 UTC (rev 59349)
+++ public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java	2011-07-13 18:58:25 UTC (rev 59350)
@@ -114,6 +114,7 @@
 
     protected static String DEFAULT_VIEW_ID = "default";
     protected static String SOURCE_VIEW_ID = "source";
+    protected static String MOBILE_VIEW_ID = "mobile";
 
     protected HashMap<String, ViewDescriptor> viewDescriptors;
 
@@ -261,6 +262,7 @@
 
     /**
      * @param xmlInputStream XML as input stream
+     * @param viewDescriptor View descriptor
      */
     private InputStream getTransformedInputStream(InputStream xmlInputStream, ConfigurableViewDescriptor viewDescriptor, StringWriter errorWriter) throws Exception {
         //log.debug("View descriptor: " + viewDescriptor.getId());
@@ -316,6 +318,7 @@
                 }
                 xsltHandlers[i].getTransformer().setURIResolver(uriResolver);
                 xsltHandlers[i].getTransformer().setErrorListener(errorListener);
+                //log.debug("Requested view ID: " + viewDescriptor.getId());
                 passTransformerParameters(xsltHandlers[i].getTransformer());
             }
 
@@ -456,6 +459,28 @@
             transformer.setParameter("is-mobile-device", "false");
         }
 
+        // INFO: Set whether mobile view should be set to true
+        String queryStringViewId = getEnvironment().getRequest().getParameter("yanel.resource.viewid");
+        if (queryStringViewId != null) {
+            if (queryStringViewId.equals(MOBILE_VIEW_ID)) {
+                if (getViewDescriptor(MOBILE_VIEW_ID) == null) {
+                    log.warn("No mobile view configured, but set 'is-mobile-view' XSLT parameter to true anyway!");
+                }
+                transformer.setParameter("is-mobile-view", "true");
+            } else {
+                transformer.setParameter("is-mobile-view", "false");
+            }
+        } else {
+            if (isMobileView()) {
+                if (getViewDescriptor(MOBILE_VIEW_ID) == null) {
+                    //log.debug("No mobile view configured (" + getPath() + "), but set 'is-mobile-view' XSLT parameter to true anyway!");
+                }
+                transformer.setParameter("is-mobile-view", "true");
+            } else {
+                transformer.setParameter("is-mobile-view", "false");
+            }
+        }
+
         // Set query string
         String queryString = getEnvironment().getRequest().getQueryString();
         if (queryString != null) {
@@ -502,6 +527,13 @@
     }
 
     /**
+     * Check whether mobile view is requested. Please overwrite this method in case there exist other rules than just being a mobile device.
+     */
+    protected boolean isMobileView() {
+        return isMobileDevice();
+    }
+
+    /**
      * Get operating system
      */
     protected String getOS(String userAgent) {



More information about the Yanel-commits mailing list