/* * SoccerEntry.java * * Created on 10 septembre 2001, 13:34 */package be.fractals.soccer.servlet;import javax.servlet.*;import javax.servlet.http.*;import javax.naming.InitialContext;import javax.rmi.PortableRemoteObject;import java.util.*;import java.io.*;import be.fractals.soccer.data.*;import be.fractals.soccer.service.*;import javax.xml.transform.*;import javax.xml.transform.stream.*;import javax.xml.transform.sax.*;import org.xml.sax.helpers.*;import org.xml.sax.*;import org.xml.sax.ext.LexicalHandler;import org.apache.xalan.serialize.*;import org.apache.xalan.templates.*;/** * * @author  Laurent * @version */public class SoccerEntry extends HttpServlet{        /**  */    XMLService service;    TransformerFactory tFactory;        public void init(ServletConfig config) throws ServletException{        super.init(config);        Hashtable env = new Hashtable(3);        env.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");        env.put("java.naming.provider.url","jnp://192.168.111.3:1099");        env.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");        try{            tFactory = new org.apache.xalan.processor.TransformerFactoryImpl ();            InitialContext jndiContext = new InitialContext(env);            Object ref  = jndiContext.lookup("XMLService");            XMLServiceHome home = (XMLServiceHome)PortableRemoteObject.narrow(ref, XMLServiceHome.class);            service = home.create();        } catch (Exception exc) {            exc.printStackTrace();        }    }      // Respond to HTTP GET requests from browsers.  public void doGet (javax.servlet.http.HttpServletRequest request,                     javax.servlet.http.HttpServletResponse response)    throws javax.servlet.ServletException, java.io.IOException    {        // Set content type for HTML.        response.setContentType("text/html; charset=UTF-8");            // Output goes to the response PrintWriter.        java.io.PrintWriter out = response.getWriter();        try        {                           if ( !(tFactory.getFeature (SAXSource.FEATURE)) ||                 !(tFactory.getFeature (SAXResult.FEATURE)) ) {                 throw new Exception ( "SAX handlers are not supported !" );            }                        SAXTransformerFactory saxTFactory = (SAXTransformerFactory) tFactory;                        Hashtable params = new Hashtable ();                        int nTransforms = Integer.parseInt ( request.getParameter ( "nTransforms" ) );            TransformerHandler [] handlers = new TransformerHandler [nTransforms];            String xslDocName = "";            for ( int i=0; i<nTransforms; i++ ) {                xslDocName = request.getParameter ( "xsl" + (i+1) );                handlers [i] = saxTFactory.newTransformerHandler (                                   new StreamSource ( "/.1/virtual/htdocs/belfoot/xsl/" + xslDocName ) );            }                        Enumeration e = request.getParameterNames ();            while ( e.hasMoreElements () ) {                String paramName = ( String ) e.nextElement ();                if ( (! paramName.equals ( "xml" )) &&                     (! paramName.startsWith ( "xsl" )) ) {                    params.put ( paramName, request.getParameterValues ( paramName )[0] );                }            }                        int methodId = Integer.parseInt ( request.getParameter ( "xml" ) );            String xmlDoc = "";            xmlDoc = service.getXmlAsString ( methodId, params );            XMLReader reader = XMLReaderFactory.createXMLReader ();            reader.setContentHandler ( handlers [0] );            reader.setProperty ( "http://xml.org/sax/properties/lexical-handler",                                 handlers [0] );                        for ( int i=0; i<nTransforms-1; i++ ) {                handlers [i].setResult ( new SAXResult ( handlers [i+1] ) );            }                        Serializer serializer = SerializerFactory.getSerializer (                OutputProperties.getDefaultMethodProperties ( "html" ) );                        serializer.setWriter ( out );            handlers [nTransforms-1].setResult (                new SAXResult ( serializer.asContentHandler () ) );                        reader.parse ( new InputSource ( new StringBufferInputStream ( xmlDoc ) ) );                        /*            javax.xml.transform.Source xmlSource =                 new javax.xml.transform.stream.StreamSource                          ( new StringBufferInputStream (xmlDoc) );            javax.xml.transform.Source xslSource =                 new javax.xml.transform.stream.StreamSource                          (new FileInputStream ("/.1/virtual/htdocs/belfoot/xsl/" + xslDocName));            // Generate the transformer.            javax.xml.transform.Transformer transformer =                           tFactory.newTransformer(xslSource);            // Perform the transformation, sending the output to the response.            transformer.transform(xmlSource,                         new javax.xml.transform.stream.StreamResult(out)); */        }        // If an Exception occurs, return the error to the client.        catch (Exception e)        {            out.write(e.getMessage());            e.printStackTrace(out);            }        // Close the PrintWriter.        out.close();    }}