You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Ovidiu Predescu <ov...@cup.hp.com> on 2000/10/30 02:49:33 UTC

Re: [PATCH] browser database capabilities

All right, I'll try to do it for C2 too.

Thanks,
Ovidiu

On Sun, 29 Oct 2000 16:23:50 -0800 (PST), Davanum Srinivas <di...@yahoo.com> 
wrote:

> Yes, I am interested in this :) (Assuming this is for C2).
> 
> Thanks,
> dims
> --- Ovidiu Predescu <ov...@cup.hp.com> wrote:
> > The following patch extends the browser support in Cocoon 1.x, adding the
> > ability to detect the browser type using the Accept: header, in addition to the
> > User-agent: header. This way WAP browsers not described by their user-agent
> > still work correctly as long as they send the text/vnd.wap.wml MIME type in the
> > Accept: header.
> > 
> > In addition to this, browser descriptions have been moved out of
> > cocoon.properties into an XML file, which is intended to hierarchically
> > describe browsers and their capabilities. Currently the browser description is
> > very WAP-oriented, however new browsers can be described easily. A particular
> > browser description is passed as an argument to the XSLT processor so that
> > decisions based on it can be taken at the time of page generation.
> > 
> > The XML browser capabilities file is translated at compile time into a Java
> > class. The class can be dynamically reloaded at runtime when the XML file
> > changes; I don't plan support for this feature in C1, in C2 things seem to be a
> > easier.
> > 
> > The browser capabilities database is an important piece of the WML support, as
> > determining what features are available on a device is currently impossible.
> > The CC/PP standard will take some time to be implemented by various vendors and
> > until then this seems to be the only reasonable way to implement it. I plan to
> > extend the current support with a way to determine changing of dynamic features
> > in the browser (like Java(Script) enabled/disabled, accept/disallow fax receive
> > on cell phones etc.).
> > 
> > I believe this is a good feature to have, is anybody interested in having it?
> > 
> > Regards,
> > Ovidiu
> > 
> > -- 
> > Ovidiu Predescu <ov...@cup.hp.com>
> > http://orion.nsr.hp.com/ (inside HP's firewall only)
> > http://www.geocities.com/SiliconValley/Monitor/7464/
> > 
> > > diff -ruN -x TAGS -x *docs* -x *CVS* -x .cvsignore -x *.jar Cocoon.orig/build.xml
> > cocoon/build.xml
> > --- Cocoon.orig/build.xml	Wed Sep 27 16:32:22 2000
> > +++ cocoon/build.xml	Tue Oct 24 20:38:00 2000
> > @@ -267,9 +267,22 @@
> >    </target>
> >  
> >    <!-- =================================================================== -->
> > +  <!-- Generate the Java code from XML using XSLT                          -->
> > +  <!-- =================================================================== -->
> > +  <target name="generate-java-code">
> > +    <delete dir="${build.src}/org/apache/cocoon/browser"
> > +	    includes="Browser.java"/>
> > +    <style basedir="${src.dir}/org/apache/cocoon/browser"
> > +	   destdir="${build.src}/org/apache/cocoon/browser"
> > +	   includes="Browser.xml"
> > +	   extension=".java"
> > +	   style="Browser.xsl"/>
> > +  </target>
> > +
> > +  <!-- =================================================================== -->
> >    <!-- Compiles the source directory                                       -->
> >    <!-- =================================================================== -->
> > -  <target name="compile" depends="prepare-src">
> > +  <target name="compile" depends="prepare-src, generate-java-code">
> >      <javac srcdir="${build.src}"
> >             destdir="${build.dest}"
> >             debug="${debug}"
> > diff -ruN -x TAGS -x *docs* -x *CVS* -x .cvsignore -x *.jar
> > Cocoon.orig/src/org/apache/cocoon/Browsers.java cocoon/src/org/apache/cocoon/Browsers.java
> > --- Cocoon.orig/src/org/apache/cocoon/Browsers.java	Sun Feb 13 10:29:16 2000
> > +++ cocoon/src/org/apache/cocoon/Browsers.java	Tue Oct 24 20:38:04 2000
> > @@ -1,124 +0,0 @@
> > -/*-- $Id: Browsers.java,v 1.4 2000/02/13 18:29:16 stefano Exp $ -- 
> > -
> > - ============================================================================
> > -                   The Apache Software License, Version 1.1
> > - ============================================================================
> > - 
> > - Copyright (C) @year@ The Apache Software Foundation. All rights reserved.
> > - 
> > - Redistribution and use in source and binary forms, with or without modifica-
> > - tion, are permitted provided that the following conditions are met:
> > - 
> > - 1. Redistributions of  source code must  retain the above copyright  notice,
> > -    this list of conditions and the following disclaimer.
> > - 
> > - 2. Redistributions in binary form must reproduce the above copyright notice,
> > -    this list of conditions and the following disclaimer in the documentation
> > -    and/or other materials provided with the distribution.
> > - 
> > - 3. The end-user documentation included with the redistribution, if any, must
> > -    include  the following  acknowledgment:  "This product includes  software
> > -    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
> > -    Alternately, this  acknowledgment may  appear in the software itself,  if
> > -    and wherever such third-party acknowledgments normally appear.
> > - 
> > - 4. The names "Cocoon" and  "Apache Software Foundation"  must not be used to
> > -    endorse  or promote  products derived  from this  software without  prior
> > -    written permission. For written permission, please contact
> > -    apache@apache.org.
> > - 
> > - 5. Products  derived from this software may not  be called "Apache", nor may
> > -    "Apache" appear  in their name,  without prior written permission  of the
> > -    Apache Software Foundation.
> > - 
> > - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
> > - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
> > - FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
> > - APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
> > - INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
> > - DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
> > - OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
> > - ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
> > - (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
> > - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> > - 
> > - This software  consists of voluntary contributions made  by many individuals
> > - on  behalf of the Apache Software  Foundation and was  originally created by
> > - Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache 
> > - Software Foundation, please see <http://www.apache.org/>.
> > - 
> > - */
> > -package org.apache.cocoon;
> > -
> > -import java.util.*;
> > -import org.apache.cocoon.framework.*;
> > -
> > -/**
> > - * This inner class is used to store the mapping between browser names
> > - * and those signature fragments used for mapping.
> > - *
> > - * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
> > - * @version $Revision: 1.4 $ $Date: 2000/02/13 18:29:16 $
> > - */
> > -
> > -public class Browsers extends Vector implements Configurable, Status {
> > -
> > -    /**
> > -     * Inner class that contains single browser information.
> > -     */
> > -    public class Browser {
> > -
> > -        public String name;
> > -        public String signature;
> > -
> > -        public Browser(String name, String signature) {
> > -            this.name = name;
> > -            this.signature = signature;
> > -        }
> > -
> > -        public String toString() {
> > -            return "( " + name + ", " + signature + " )";
> > -        }
> > -    }
> > -
> > -    /**
> > -     * Initialize the map with the mapping rules.
> > -     */
> > -    public void init(Configurations conf) throws InitializationException {
> > -        for (int i = 0; ; i++) {
> > -            String filter = (String) conf.get(Integer.toString(i));
> > -            if (filter == null) break;
> > -            int index = filter.indexOf('=');
> > -            this.addElement(new Browser(filter.substring(0, index), filter.subs
> > tring(index + 1)));
> > -        }
> > -    }
> > -
> > -    /**
> > -     * This method maps the "user-Agent" request parameter to a browser name
> > -     * following the search rules defined in the servlet properties.
> > -     */
> > -    public String map(String agent) {
> > -        try {
> > -            for (int i = 0;; i++) {
> > -                Browser b = (Browser) this.elementAt(i);
> > -                int index = agent.indexOf(b.signature);
> > -                if (index > -1) return b.name;
> > -            }
> > -        } catch (Exception e) {
> > -            return "unknown";
> > -        }
> > -    }
> > -
> > -    public String getStatus() {
> > -        StringBuffer buffer = new StringBuffer();
> > -
> > -        for (int i = 0; i < this.size(); i++) {
> > -            Browser b = (Browser) this.elementAt(i);
> > -            buffer.append("<li>");
> > -            buffer.append(b.toString());
> > -            buffer.append("</li>");
> > -        }
> > -
> > -        return buffer.toString();
> > -    }
> > -}
> > \ No newline at end of file
> > diff -ruN -x TAGS -x *docs* -x *CVS* -x .cvsignore -x *.jar
> > Cocoon.orig/src/org/apache/cocoon/Engine.java cocoon/src/org/apache/cocoon/Engine.java
> > --- Cocoon.orig/src/org/apache/cocoon/Engine.java	Sun Oct 15 15:43:13 2000
> > +++ cocoon/src/org/apache/cocoon/Engine.java	Tue Oct 24 20:40:37 2000
> > @@ -95,7 +95,7 @@
> >      InterpreterFactory interpreters;
> >  
> >      Manager manager;
> > -    Browsers browsers;
> > +    Browser browsers;
> >      Parser parser;
> >      Transformer transformer;
> >      Cache cache;
> > @@ -136,22 +136,22 @@
> >          manager.setRole("logger", logger);
> >  
> >          // Create the parser and register it
> > -        parser = (Parser) manager.create(getConfigTr(PARSER_PROP,
> > +        parser = (Parser) manager.create((String) configurations.get(PARSER_PROP,
> >              PARSER_DEFAULT), configurations.getConfigurations(PARSER_PROP));
> >          manager.setRole("parser", parser);
> >  
> >          // Create the transformer and register it
> > -        transformer = (Transformer) manager.create(getConfigTr(TRANSFORMER_PROP,
> > +        transformer = (Transformer) manager.create((String)
> > configurations.get(TRANSFORMER_PROP,
> >              TRANSFORMER_DEFAULT), configurations.getConfigurations(TRANSFORMER_PROP));
> >          manager.setRole("transformer", transformer);
> >  
> >          // Create the store and register it
> > -        store = (Store) manager.create(getConfigTr(STORE_PROP,
> > +        store = (Store) manager.create((String) configurations.get(STORE_PROP,
> >              STORE_DEFAULT), configurations.getConfigurations(STORE_PROP));
> >          manager.setRole("store", store);
> >  
> >          // Create the cache and register it
> > -        cache = (Cache) manager.create(getConfigTr(CACHE_PROP,
> > +        cache = (Cache) manager.create((String) configurations.get(CACHE_PROP,
> >              CACHE_DEFAULT), configurations.getConfigurations(CACHE_PROP));
> >          manager.setRole("cache", cache);
> >  
> > @@ -167,6 +167,10 @@
> > 
> === message truncated ===
> 
> 
> =====
> Davanum Srinivas, JNI-FAQ Manager
> http://www.jGuru.com/faq/JNI
> 
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Messenger - Talk while you surf!  It's FREE.
> http://im.yahoo.com/
>