Example usage for javax.xml.transform Transformer setParameter

List of usage examples for javax.xml.transform Transformer setParameter

Introduction

In this page you can find the example usage for javax.xml.transform Transformer setParameter.

Prototype

public abstract void setParameter(String name, Object value);

Source Link

Document

Add a parameter for the transformation.

Usage

From source file:it.cnr.icar.eric.server.event.EmailNotifier.java

private String transformContent(ServerRequestContext context, String xsltId, String xmlNotif, String action,
        String user) throws RegistryException {
    try {//  ww  w .j ava2  s .c  o  m
        RepositoryItem repositoryItem = RepositoryManagerFactory.getInstance().getRepositoryManager()
                .getRepositoryItem(xsltId);
        StreamSource xsltIn = new StreamSource(repositoryItem.getDataHandler().getInputStream());

        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer(xsltIn);

        //transformer.setURIResolver(rm.getURIResolver());
        transformer.setErrorListener(new ErrorListener() {
            public void error(TransformerException exception) throws TransformerException {
                log.info(ServerResourceBundle.getInstance().getString("xsltError"), exception);
            }

            public void fatalError(TransformerException exception) throws TransformerException {
                log.error(ServerResourceBundle.getInstance().getString("xsltFatalError"), exception);
                throw exception;
            }

            public void warning(TransformerException exception) throws TransformerException {
                log.info(ServerResourceBundle.getInstance().getString("xsltWarning"), exception);
            }
        });

        //Set parameters
        transformer.setParameter("action", action);
        transformer.setParameter("user", user);
        transformer.setParameter("registryBaseURL",
                RegistryProperties.getInstance().getProperty("eric.registry.baseurl"));

        ByteArrayInputStream bais = new ByteArrayInputStream(xmlNotif.getBytes("utf-8"));
        StreamSource inputSrc = new StreamSource(bais);

        //TODO: use file in case we have a large amount of data to transform?
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        StreamResult streamResult = new StreamResult(baos);

        transformer.transform(inputSrc, streamResult);

        return baos.toString("utf-8");
    } catch (Exception e) {
        log.error(ServerResourceBundle.getInstance().getString("message.prettyPrintNotificationFailure"), e);
        throw new RegistryException(e);
    }
}

From source file:com.portfolio.data.attachment.XSLService.java

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    /**/*from ww  w.ja v  a 2  s .  c o  m*/
     * Format demand:
     * <convert>
     *   <portfolioid>{uuid}</portfolioid>
     *   <portfolioid>{uuid}</portfolioid>
     *   <nodeid>{uuid}</nodeid>
     *   <nodeid>{uuid}</nodeid>
     *   <documentid>{uuid}</documentid>
     *   <xsl>{rpertoire}{fichier}</xsl>
     *   <format>[pdf rtf xml ...]</format>
     *   <parameters>
     *     <maVar1>lala</maVar1>
     *     ...
     *   </parameters>
     * </convert>
     */
    try {
        //On initialise le dataProvider
        Connection c = null;
        //On initialise le dataProvider
        if (ds == null) // Case where we can't deploy context.xml
        {
            c = getConnection();
        } else {
            c = ds.getConnection();
        }
        dataProvider.setConnection(c);
        credential = new Credential(c);
    } catch (Exception e) {
        e.printStackTrace();
    }

    String origin = request.getRequestURL().toString();

    /// Variable stuff
    int userId = 0;
    int groupId = 0;
    String user = "";
    HttpSession session = request.getSession(true);
    if (session != null) {
        Integer val = (Integer) session.getAttribute("uid");
        if (val != null)
            userId = val;
        val = (Integer) session.getAttribute("gid");
        if (val != null)
            groupId = val;
        user = (String) session.getAttribute("user");
    }

    /// TODO: A voire si un form get ne ferait pas l'affaire aussi

    /// On lis le xml
    /*
    BufferedReader rd = new BufferedReader(new InputStreamReader(request.getInputStream()));
    StringBuilder sb = new StringBuilder();
    String line;
    while( (line = rd.readLine()) != null )
       sb.append(line);
            
    DocumentBuilderFactory documentBuilderFactory =DocumentBuilderFactory.newInstance();
    DocumentBuilder documentBuilder = null;
    Document doc=null;
    try
    {
       documentBuilder = documentBuilderFactory.newDocumentBuilder();
       doc = documentBuilder.parse(new ByteArrayInputStream(sb.toString().getBytes("UTF-8")));
    }
    catch( Exception e )
    {
       e.printStackTrace();
    }
            
    /// On lit les paramtres
    NodeList portfolioNode = doc.getElementsByTagName("portfolioid");
    NodeList nodeNode = doc.getElementsByTagName("nodeid");
    NodeList documentNode = doc.getElementsByTagName("documentid");
    NodeList xslNode = doc.getElementsByTagName("xsl");
    NodeList formatNode = doc.getElementsByTagName("format");
    NodeList parametersNode = doc.getElementsByTagName("parameters");
    //*/
    //      String xslfile = xslNode.item(0).getTextContent();
    String xslfile = request.getParameter("xsl");
    String format = request.getParameter("format");
    //      String format = formatNode.item(0).getTextContent();
    String parameters = request.getParameter("parameters");
    String documentid = request.getParameter("documentid");
    String portfolios = request.getParameter("portfolioids");
    String[] portfolioid = null;
    if (portfolios != null)
        portfolioid = portfolios.split(";");
    String nodes = request.getParameter("nodeids");
    String[] nodeid = null;
    if (nodes != null)
        nodeid = nodes.split(";");

    System.out.println("PARAMETERS: ");
    System.out.println("xsl: " + xslfile);
    System.out.println("format: " + format);
    System.out.println("user: " + userId);
    System.out.println("portfolioids: " + portfolios);
    System.out.println("nodeids: " + nodes);
    System.out.println("parameters: " + parameters);

    boolean redirectDoc = false;
    if (documentid != null) {
        redirectDoc = true;
        System.out.println("documentid @ " + documentid);
    }

    boolean usefop = false;
    String ext = "";
    if (MimeConstants.MIME_PDF.equals(format)) {
        usefop = true;
        ext = ".pdf";
    } else if (MimeConstants.MIME_RTF.equals(format)) {
        usefop = true;
        ext = ".rtf";
    }
    //// Paramtre portfolio-uuid et file-xsl
    //      String uuid = request.getParameter("uuid");
    //      String xslfile = request.getParameter("xsl");

    StringBuilder aggregate = new StringBuilder();
    try {
        int portcount = 0;
        int nodecount = 0;
        // On aggrge les donnes
        if (portfolioid != null) {
            portcount = portfolioid.length;
            for (int i = 0; i < portfolioid.length; ++i) {
                String p = portfolioid[i];
                String portfolioxml = dataProvider
                        .getPortfolio(new MimeType("text/xml"), p, userId, groupId, "", null, null, 0)
                        .toString();
                aggregate.append(portfolioxml);
            }
        }

        if (nodeid != null) {
            nodecount = nodeid.length;
            for (int i = 0; i < nodeid.length; ++i) {
                String n = nodeid[i];
                String nodexml = dataProvider.getNode(new MimeType("text/xml"), n, true, userId, groupId, "")
                        .toString();
                aggregate.append(nodexml);
            }
        }

        // Est-ce qu'on a eu besoin d'aggrger les donnes?
        String input = aggregate.toString();
        String pattern = "<\\?xml[^>]*>"; // Purge previous xml declaration

        input = input.replaceAll(pattern, "");

        input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<!DOCTYPE xsl:stylesheet ["
                + "<!ENTITY % lat1 PUBLIC \"-//W3C//ENTITIES Latin 1 for XHTML//EN\" \"" + servletDir
                + "xhtml-lat1.ent\">" + "<!ENTITY % symbol PUBLIC \"-//W3C//ENTITIES Symbols for XHTML//EN\" \""
                + servletDir + "xhtml-symbol.ent\">"
                + "<!ENTITY % special PUBLIC \"-//W3C//ENTITIES Special for XHTML//EN\" \"" + servletDir
                + "xhtml-special.ent\">" + "%lat1;" + "%symbol;" + "%special;" + "]>" + // For the pesky special characters
                "<root>" + input + "</root>";

        //         System.out.println("INPUT WITH PROXY:"+ input);

        /// Rsolution des proxys
        DocumentBuilder documentBuilder;
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilder = documentBuilderFactory.newDocumentBuilder();
        InputSource is = new InputSource(new StringReader(input));
        Document doc = documentBuilder.parse(is);

        /// Proxy stuff
        XPath xPath = XPathFactory.newInstance().newXPath();
        String filterRes = "//asmResource[@xsi_type='Proxy']";
        String filterCode = "./code/text()";
        NodeList nodelist = (NodeList) xPath.compile(filterRes).evaluate(doc, XPathConstants.NODESET);

        XPathExpression codeFilter = xPath.compile(filterCode);

        for (int i = 0; i < nodelist.getLength(); ++i) {
            Node res = nodelist.item(i);
            Node gp = res.getParentNode(); // resource -> context -> container
            Node ggp = gp.getParentNode();
            Node uuid = (Node) codeFilter.evaluate(res, XPathConstants.NODE);

            /// Fetch node we want to replace
            String returnValue = dataProvider
                    .getNode(new MimeType("text/xml"), uuid.getTextContent(), true, userId, groupId, "")
                    .toString();

            Document rep = documentBuilder.parse(new InputSource(new StringReader(returnValue)));
            Element repNode = rep.getDocumentElement();
            Node proxyNode = repNode.getFirstChild();
            proxyNode = doc.importNode(proxyNode, true); // adoptNode have some weird side effect. To be banned
            //            doc.replaceChild(proxyNode, gp);
            ggp.insertBefore(proxyNode, gp); // replaceChild doesn't work.
            ggp.removeChild(gp);
        }

        try // Convert XML document to string
        {
            DOMSource domSource = new DOMSource(doc);
            StringWriter writer = new StringWriter();
            StreamResult result = new StreamResult(writer);
            TransformerFactory tf = TransformerFactory.newInstance();
            Transformer transformer = tf.newTransformer();
            transformer.transform(domSource, result);
            writer.flush();
            input = writer.toString();
        } catch (TransformerException ex) {
            ex.printStackTrace();
        }

        //         System.out.println("INPUT DATA:"+ input);

        // Setup a buffer to obtain the content length
        ByteArrayOutputStream stageout = new ByteArrayOutputStream();
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        //// Setup Transformer (1st stage)
        /// Base path
        String basepath = xslfile.substring(0, xslfile.indexOf(File.separator));
        String firstStage = baseDir + File.separator + basepath + File.separator + "karuta" + File.separator
                + "xsl" + File.separator + "html2xml.xsl";
        System.out.println("FIRST: " + firstStage);
        Source xsltSrc1 = new StreamSource(new File(firstStage));
        Transformer transformer1 = transFactory.newTransformer(xsltSrc1);
        StreamSource stageSource = new StreamSource(new ByteArrayInputStream(input.getBytes()));
        Result stageRes = new StreamResult(stageout);
        transformer1.transform(stageSource, stageRes);

        // Setup Transformer (2nd stage)
        String secondStage = baseDir + File.separator + xslfile;
        Source xsltSrc2 = new StreamSource(new File(secondStage));
        Transformer transformer2 = transFactory.newTransformer(xsltSrc2);

        // Configure parameter from xml
        String[] table = parameters.split(";");
        for (int i = 0; i < table.length; ++i) {
            String line = table[i];
            int var = line.indexOf(":");
            String par = line.substring(0, var);
            String val = line.substring(var + 1);
            transformer2.setParameter(par, val);
        }

        // Setup input
        StreamSource xmlSource = new StreamSource(new ByteArrayInputStream(stageout.toString().getBytes()));
        //         StreamSource xmlSource = new StreamSource(new File(baseDir+origin, "projectteam.xml") );

        Result res = null;
        if (usefop) {
            /// FIXME: Might need to include the entity for html stuff?
            //Setup FOP
            //Make sure the XSL transformation's result is piped through to FOP
            Fop fop = fopFactory.newFop(format, out);

            res = new SAXResult(fop.getDefaultHandler());

            //Start the transformation and rendering process
            transformer2.transform(xmlSource, res);
        } else {
            res = new StreamResult(out);

            //Start the transformation and rendering process
            transformer2.transform(xmlSource, res);
        }

        if (redirectDoc) {

            // /resources/resource/file/{uuid}[?size=[S|L]&lang=[fr|en]]
            String urlTarget = "http://" + server + "/resources/resource/file/" + documentid;
            System.out.println("Redirect @ " + urlTarget);

            HttpClientBuilder clientbuilder = HttpClientBuilder.create();
            CloseableHttpClient client = clientbuilder.build();

            HttpPost post = new HttpPost(urlTarget);
            post.addHeader("referer", origin);
            String sessionid = request.getSession().getId();
            System.out.println("Session: " + sessionid);
            post.addHeader("Cookie", "JSESSIONID=" + sessionid);
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
            ByteArrayBody body = new ByteArrayBody(out.toByteArray(), "generated" + ext);

            builder.addPart("uploadfile", body);

            HttpEntity entity = builder.build();
            post.setEntity(entity);
            HttpResponse ret = client.execute(post);
            String stringret = new BasicResponseHandler().handleResponse(ret);

            int code = ret.getStatusLine().getStatusCode();
            response.setStatus(code);
            ServletOutputStream output = response.getOutputStream();
            output.write(stringret.getBytes(), 0, stringret.length());
            output.close();
            client.close();

            /*
            HttpURLConnection connection = CreateConnection( urlTarget, request );
                    
            /// Helping construct Json
            connection.setRequestProperty("referer", origin);
                    
            /// Send post data
            ServletInputStream inputData = request.getInputStream();
            DataOutputStream writer = new DataOutputStream(connection.getOutputStream());
                    
            byte[] buffer = new byte[1024];
            int dataSize;
            while( (dataSize = inputData.read(buffer,0,buffer.length)) != -1 )
            {
               writer.write(buffer, 0, dataSize);
            }
            inputData.close();
            writer.close();
                    
            RetrieveAnswer(connection, response, origin);
            //*/
        } else {
            response.reset();
            response.setHeader("Content-Disposition", "attachment; filename=generated" + ext);
            response.setContentType(format);
            response.setContentLength(out.size());
            response.getOutputStream().write(out.toByteArray());
            response.getOutputStream().flush();
        }
    } catch (Exception e) {
        String message = e.getMessage();
        response.setStatus(500);
        response.getOutputStream().write(message.getBytes());
        response.getOutputStream().close();

        e.printStackTrace();
    } finally {
        dataProvider.disconnect();
    }
}

From source file:de.fuberlin.wiwiss.marbles.MarblesServlet.java

/**
 * Discovers an URI and renders a given view for it (<code>view</code>).
 *
 * @param request/*  ww  w.ja va  2  s .c o m*/
 * @param response
 * @throws IOException
 */
public void fresnelView(HttpServletRequest request, HttpServletResponse response) throws IOException {
    PrintWriter writer = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF-8"));
    String errorString = null;
    Selection selected = null;
    List<org.apache.commons.httpclient.URI> retrievedURLs = null;
    Resource focalResource = null;
    Configuration conf = null;
    String redirectLocation = null;

    try {
        /* Reload the Fresnel configuration using the provided language */
        String langPref = (request.getParameter("lang") != null ? request.getParameter("lang") : "en");
        loadFresnelConfig(langPref);

        conf = new Configuration(confRepository, ontoRepository);

        /* Create the focal resource */
        if (request.getParameter("uri") != null) {
            String uriString = request.getParameter("uri");
            if (uriString.startsWith("_:")) /* blank node */
                focalResource = valueFactory.createBNode(uriString.substring(2));
            else
                focalResource = valueFactory.createURI(uriString);

            /* Collect data about the focal resource */
            if (request.getParameter("skipload") == null) {
                retrievedURLs = semwebClient.discoverResource(focalResource, true /* wait */);
            } /* skip */

            /* Initiate manual owl:sameAs inference */
            if (request.getParameter("skipInference") == null) {
                sameAsInferencer.addInferredForResource(focalResource);
            }

            if (conf.hasWarnings())
                writer.println(conf.getWarningsString());

            Purpose purpose = null;

            /* Look up the requested lens purpose */
            if (request.getParameter("purpose") != null
                    && (!request.getParameter("purpose").equals("defaultPurpose")))
                purpose = new Purpose(new URIImpl(Constants.nsFresnelExt + request.getParameter("purpose")));
            else
                purpose = new Purpose(new URIImpl(
                        "http://www.w3.org/2004/09/fresnel#defaultLens")); /* this must be provided, or a random lens is chosen */

            try {
                /* Perform Fresnel selection using the requested display purpose and language */
                selected = conf.select(dataRepository, focalResource, purpose, langPref);

                /* Perform Fresnel formatting */
                selected = conf.format(dataRepository, selected);
            } catch (NoResultsException e) {

                /* 
                 * If no results are found, redirect the user to the resource
                 * if it is not an RDF document.
                 * This code is not reached when there already is some data about the resource.
                 */
                RepositoryConnection metaDataConn = null;
                try {
                    metaDataConn = metaDataRepository.getConnection();

                    /* Manual support for one level of redirects */
                    String resourceRedirect = cacheController.getCachedHeaderDataValue(metaDataConn,
                            focalResource, "location");
                    Resource resourceURI = (resourceRedirect == null ? focalResource
                            : new URIImpl(resourceRedirect));

                    /* Get target content type */
                    String contentType = cacheController.getCachedHeaderDataValue(metaDataConn, resourceURI,
                            "content-type");
                    if (contentType != null && !ContentTypes.isRDF(contentType)) {
                        redirectLocation = focalResource.toString();
                    }
                } catch (RepositoryException re) {
                    re.printStackTrace();
                } catch (IllegalArgumentException ie) {
                    ie.printStackTrace();
                } finally {
                    try {
                        if (metaDataConn != null)
                            metaDataConn.close();
                    } catch (RepositoryException re) {
                        re.printStackTrace();
                    }
                }
            }
        } /* uri != null */
    } catch (Exception e) {
        e.printStackTrace();
        errorString = e.getMessage();
    }

    /* Output */
    try {
        /* Handle redirection to non-RDF data */
        if (redirectLocation != null) {
            response.setHeader("Location", redirectLocation);
            response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
        } else { /* Perform XSL output */

            /*
             * When there are no results, we still need a selection object in 
             * order to render the fresnel tree
             */
            if (selected == null)
                selected = new Selection(conf);

            Document fresnelTree = selected.render();
            addSources(fresnelTree, retrievedURLs);

            /* Prepare XSLT */
            StreamSource styleSource = new StreamSource(
                    new File(dataRoot + "/" + xslDirectory + "/" + xslTransformation));
            net.sf.saxon.TransformerFactoryImpl tf = new net.sf.saxon.TransformerFactoryImpl();
            Transformer styleTransformer = tf.newTransformer(styleSource);

            /* Debug output */
            if (request.getParameter("debug") != null) {
                /* debug output: fresnel tree */
                StringWriter stringWriter = new StringWriter();
                Transformer treeTransformer = tf.newTransformer();
                treeTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
                treeTransformer.transform(new DOMSource(fresnelTree), new StreamResult(stringWriter));
                styleTransformer.setParameter("fresnelTree", stringWriter.getBuffer().toString());
            }

            /* Apply parameters */
            styleTransformer.setParameter("assetsURL", assetsURL != null ? assetsURL.toString() : "");
            styleTransformer.setParameter("serviceURL", serviceURL != null ? serviceURL.toString() : "");
            styleTransformer.setParameter("errorString", errorString);
            styleTransformer.setParameter("mainResource",
                    focalResource != null ? focalResource.toString() : "");
            if (request.getParameter("purpose") != null)
                styleTransformer.setParameter("purpose", request.getParameter("purpose"));
            else
                styleTransformer.setParameter("purpose", "defaultPurpose");

            if (request.getParameter("mobile") != null)
                styleTransformer.setParameter("isMobile", request.getParameter("mobile"));

            HashMap<String, String[]> newParameters = new HashMap<String, String[]>(request.getParameterMap());

            if (!newParameters.containsKey("lang"))
                newParameters.put("lang", new String[] { "en" });

            for (Object key : new String[] { "purpose", "uri" }) {
                newParameters.remove(key);
            }

            String parameterString = "";

            /* Serialize parameters for use in HTML links and forms */
            for (Object key : newParameters.keySet()) {
                parameterString += (parameterString.equals("") ? "" : "&") + key + "="
                        + ((String[]) newParameters.get(key))[0];
            }

            styleTransformer.setParameter("sessionParams", parameterString);

            /* Perform rendering */
            StreamResult res = new StreamResult(writer);
            styleTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
            styleTransformer.transform(new DOMSource(fresnelTree), res);
        }
    } catch (Exception e) {
        e.printStackTrace();
        writer.print(e.getMessage());
    } finally {
    }
}

From source file:it.cnr.icar.eric.service.catalogingTest.cppaCataloging.CPPACataloging.java

public SOAPElement catalogContent(SOAPElement partCatalogContentRequest) throws RemoteException {
    try {//from ww  w .j a v a 2  s.c o m
        if (log.isDebugEnabled()) {
            printNodeToConsole(partCatalogContentRequest);
        }

        final HashMap<String, DataHandler> repositoryItemDHMap = getRepositoryItemDHMap();

        if (log.isDebugEnabled()) {
            log.debug("Attachments: " + repositoryItemDHMap.size());
        }

        Object requestObj = getBindingObjectFromNode(partCatalogContentRequest);

        if (!(requestObj instanceof CatalogContentRequest)) {
            throw new Exception(
                    "Wrong response received from validation service.  Expected CatalogContentRequest, got: "
                            + partCatalogContentRequest.getElementName().getQualifiedName());
        }

        ccReq = (CatalogContentRequest) requestObj;

        IdentifiableType originalContentIT = ccReq.getOriginalContent().getIdentifiable().get(0).getValue();
        IdentifiableType invocationControlIT = ccReq.getInvocationControlFile().get(0);

        DataHandler invocationControlDH = repositoryItemDHMap.get(invocationControlIT.getId());

        if (log.isDebugEnabled()) {
            log.debug("originalContentIT id: " + originalContentIT.getId());
            log.debug("invocationControlIT id: " + invocationControlIT.getId());
        }

        StreamSource invocationControlSrc = new StreamSource(invocationControlDH.getInputStream());

        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer(invocationControlSrc);

        transformer.setURIResolver(new URIResolver() {
            public Source resolve(String href, String base) throws TransformerException {
                Source source = null;
                try {
                    // Should this check that href is UUID URN first?
                    source = new StreamSource((repositoryItemDHMap.get(href)).getInputStream());
                } catch (Exception e) {
                    source = null;
                }

                return source;
            }
        });
        transformer.setErrorListener(new ErrorListener() {
            public void error(TransformerException exception) throws TransformerException {
                log.info(exception);
            }

            public void fatalError(TransformerException exception) throws TransformerException {
                log.error(exception);
                throw exception;
            }

            public void warning(TransformerException exception) throws TransformerException {
                log.info(exception);
            }
        });

        //Set respository item as parameter
        transformer.setParameter("repositoryItem", originalContentIT.getId());

        StringWriter sw = new StringWriter();
        transformer.transform(new JAXBSource(jaxbContext, originalContentIT), new StreamResult(sw));

        ccResp = cmsFac.createCatalogContentResponse();

        RegistryObjectListType catalogedMetadata = (RegistryObjectListType) getUnmarshaller()
                .unmarshal(new StreamSource(new StringReader(sw.toString())));
        RegistryObjectListType roList = rimFac.createRegistryObjectListType();
        ccResp.setCatalogedContent(roList);
        // FIXME: Setting catalogedMetadata as CatalogedContent results in incorrect serialization.
        roList.getIdentifiable().addAll(catalogedMetadata.getIdentifiable());

        ccResp.setStatus(CANONICAL_RESPONSE_STATUS_TYPE_ID_Success);

        ccRespElement = getSOAPElementFromBindingObject(ccResp);

        // Copy request's attachments to response to exercise attachment-processing code on client.
        MessageContext mc = servletEndpointContext.getMessageContext();
        mc.setProperty(com.sun.xml.rpc.server.ServerPropertyConstants.SET_ATTACHMENT_PROPERTY,
                (Collection<?>) mc
                        .getProperty(com.sun.xml.rpc.server.ServerPropertyConstants.GET_ATTACHMENT_PROPERTY));

    } catch (Exception e) {
        throw new RemoteException("Could not create response.", e);
    }

    return ccRespElement;
}

From source file:com.ephesoft.dcma.ibm.IBMCMExporter.java

private void parsingParamterToXML(final String batchInstanceID, final Transformer transformer,
        final String cmodAppGroupLocal, final String cmodAppLocal) {
    LOGGER.info("Parsing infomation to transformer");
    BatchInstance batchInstance = batchInstanceService.getBatchInstanceByIdentifier(batchInstanceID);
    if (batchInstance != null && batchInstance.getCreationDate() != null) {
        String datepattern = IBMCMConstant.DATE_FORMAT.getId();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(datepattern, Locale.getDefault());
        String batchCreationDate = simpleDateFormat.format(batchInstance.getCreationDate());
        // Setting parameter for batch creation dates for updating its value in xml
        LOGGER.info("Date parsing to transfomer is :" + batchCreationDate);
        transformer.setParameter(IBMCMConstant.BATCH_CREATION_DATE.getId(), batchCreationDate);
        String timepattern = IBMCMConstant.TIME_FORMAT.getId();
        SimpleDateFormat simpleTimeFormat = new SimpleDateFormat(timepattern, Locale.getDefault());
        String batchCreationTime = simpleTimeFormat.format(batchInstance.getCreationDate());
        // Setting parameter batch creation time for updating its value in xml
        LOGGER.info("Time parsing to transfomer is :" + batchCreationTime);
        transformer.setParameter(IBMCMConstant.BATCH_CREATION_TIME.getId(), batchCreationTime);
        // Setting parameter cmod app group for updating its value in XML.
        transformer.setParameter(IBMCMConstant.CMOD_APP_GROUP.getId(), cmodAppGroupLocal);

        // Setting parameter cmod app for updating its value in XML.
        transformer.setParameter(IBMCMConstant.CMOD_APP.getId(), cmodAppLocal);

        // Setting parameter user name for updating its value in XML.
        transformer.setParameter(IBMCMConstant.USER_NAME.getId(), this.userName);
        // Setting parameter email for updating its value in XML.
        transformer.setParameter(IBMCMConstant.EMAIL.getId(), this.email);
        // Setting parameter batch creation station id for updating its value in XML.
        String batchCreationStationID = batchInstance.getServerIP();
        if (batchCreationStationID == null) {
            transformer.setParameter(IBMCMConstant.BATCH_CREATION_STATION_ID.getId(), "");
        } else {//  www  . ja  v a2  s  . co m
            transformer.setParameter(IBMCMConstant.BATCH_CREATION_STATION_ID.getId(), batchCreationStationID);
        }
        // Setting parameter station id for updating its value in XML.
        transformer.setParameter(IBMCMConstant.STATION_ID.getId(),
                EphesoftContext.getHostServerRegistry().getIpAddress());
    }
}

From source file:de.escidoc.core.common.util.xml.XmlUtility.java

/**
 * Create the content of the DC datastream to store in Fedora.
 *
 * @param nsUri          nsUri of the md record. Through this URI is the mapping schema selected.
 * @param mdRecordXml    Xml representation of the md record to parse.
 * @param objID          The objid of the Fedora object. A triple is created with this objid.
 * @param contentModelID The objid of the content-model.
 * @return The content of the DC datastream or null if content is empty.
 * @throws WebserverSystemException If an error occurs.
 *///from   w w  w.j a  v  a2s . c o m
public static String createDC(final String nsUri, final String mdRecordXml, final CharSequence objID,
        final String contentModelID) throws WebserverSystemException {
    String result = null;
    Transformer t = null;
    final String transformerKey = nsUri + ';' + contentModelID;
    try {
        t = (Transformer) TRANSFORMER_POOL.borrowObject(transformerKey);
        if (objID != null && objID.length() > 0) {
            t.setParameter("ID", objID);
        } else {
            t.clearParameters();
        }
        final ByteArrayOutputStream out = new ByteArrayOutputStream();
        t.transform(new StreamSource(new ByteArrayInputStream(mdRecordXml.getBytes(CHARACTER_ENCODING))),
                new StreamResult(out));

        result = out.toString(CHARACTER_ENCODING).trim();
    } catch (final Exception e) {
        throw new WebserverSystemException("Mapping of Metadata to DC failed.", e);
    } finally {
        try {
            TRANSFORMER_POOL.returnObject(transformerKey, t);
        } catch (final Exception e) {
            if (LOGGER.isWarnEnabled()) {
                LOGGER.warn("Returning transformer to pool failed.");
            }
            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("Returning transformer to pool failed.", e);
            }
        }
    }
    // check if result is empty
    if (result != null && result.length() == 0) {
        result = null;
    }
    return result;
}

From source file:de.betterform.generator.XSLTGenerator.java

/**
 * Prepares the transformer for the transformation process.
 * <p/>//  w  w  w  .ja v a2 s . co  m
 * All output properties as well as all stylesheet parameters are set.
 *
 * @param transformer the transformer.
 * @return the prepared transformer.
 */
protected Transformer prepareTransformer(Transformer transformer) {
    if (this.properties != null) {
        String name;
        String value;
        Iterator iterator = this.properties.keySet().iterator();
        while (iterator.hasNext()) {
            name = (String) iterator.next();
            value = (String) this.properties.get(name);

            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("prepare: setting output property " + name + "=" + value);
            }
            transformer.setOutputProperty(name, value);
        }
    } else {
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("prepare: no output properties to be set");
        }
    }

    if (this.parameters != null) {
        String name;
        Object value;
        Iterator iterator = this.parameters.keySet().iterator();
        while (iterator.hasNext()) {
            name = (String) iterator.next();
            value = this.parameters.get(name);

            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("prepare: setting stylesheet parameter " + name + "=" + value);
            }
            transformer.setParameter(name, value);
        }
    } else {
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("prepare: no stylesheet parameters to be set");
        }
    }

    return transformer;
}

From source file:fr.gouv.finances.dgfip.xemelios.importers.DefaultImporter.java

protected void processTempFile(final File df, final String fileEncoding, final String xmlVersion,
        final String header, final String footer, final TDocument persistenceConfig, final Pair collectivite,
        final Pair codeBudget, final File originalFile, final int docCount, final boolean shouldDelete,
        final int progress) {
    try {/*from w  w w .j  a  v  a  2s  .c  o m*/
        long startFile = System.currentTimeMillis();
        String data = FileUtils.readTextFile(df, fileEncoding);
        StringBuilder fullText = new StringBuilder();
        fullText.append("<?xml version=\"").append(xmlVersion).append("\" encoding=\"").append(fileEncoding)
                .append("\"?>");
        fullText.append(header).append(data).append(footer);
        String sFullText = fullText.toString();
        byte[] bData = sFullText.getBytes(fileEncoding);

        Document doc = dbf.newDocumentBuilder().parse(new ByteArrayInputStream(bData));

        // il faut retrouver de quel etat est ce document
        // on cherche si la balise root contient un
        // dm.getEtatxxx().getBalise()
        EtatModel currentEtat = null;
        for (EtatModel em : dm.getEtats()) {
            String balise = em.getBalise();
            NodeList nl = doc.getElementsByTagName(balise);
            if (nl.getLength() > 0) {
                currentEtat = em;
                break;
            } else {
                nl = doc.getElementsByTagNameNS(em.getBaliseNamespace(), balise);
                if (nl.getLength() > 0) {
                    currentEtat = em;
                    break;
                }
            }
        }
        // traitement d'erreur, on n'arrive pas  identifier l'etat
        if (currentEtat == null) {
            StringWriter sw = new StringWriter();
            sw.append("Impossible de dterminer l'tat de ce document :\n");
            TransformerFactory errorTransFactory = FactoryProvider.getTransformerFactory();
            Transformer errorTransformer = errorTransFactory.newTransformer();
            errorTransformer.transform(new DOMSource(doc), new StreamResult(sw));
            sw.flush();
            sw.close();
            logger.error(sw.getBuffer().toString());
            return;
        }
        // apply before-import xslt
        if (persistenceConfig.getEtat(currentEtat.getId()).getImportXsltFile() != null) {
            Transformer trans = importXsltCache
                    .get(persistenceConfig.getEtat(currentEtat.getId()).getImportXsltFile());
            if (trans == null) {
                TransformerFactory tf = FactoryProvider.getTransformerFactory();
                File directory = new File(currentEtat.getParent().getBaseDirectory());
                File xslFile = new File(directory,
                        persistenceConfig.getEtat(currentEtat.getId()).getImportXsltFile());
                trans = tf.newTransformer(new StreamSource(xslFile));
                importXsltCache.put(persistenceConfig.getEtat(currentEtat.getId()).getImportXsltFile(), trans);
            }
            // important, maintenant que c'est mis en cache !
            trans.reset();
            if (codeBudget != null) {
                trans.setParameter("CodeBudget", codeBudget.key);
                trans.setParameter("LibelleBudget", codeBudget.libelle);
            }
            if (collectivite != null) {
                trans.setParameter("CodeCollectivite", collectivite.key);
                trans.setParameter("LibelleCollectivite", collectivite.libelle);
            }
            if (getManifeste() != null) {
                trans.setParameter("manifeste", new DOMSource(getManifeste()));
            }
            // on passe en parametre le nom du fichier
            trans.setParameter("file.name", originalFile.getName());

            trans.setOutputProperty(OutputKeys.ENCODING, fileEncoding);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            trans.transform(new StreamSource(new ByteArrayInputStream(sFullText.getBytes(fileEncoding))),
                    new StreamResult(baos));
            bData = baos.toByteArray();
        }
        importTimingOS.append(originalFile.getName()).append(";").append(df.toURI().toURL().toExternalForm())
                .append(";XSL;").append(Long.toString(startFile)).append(";")
                .append(Long.toString(startFile = System.currentTimeMillis()));
        importTimingOS.println();

        String docName = StringUtilities.removeFileNameSuffix(originalFile.getName()) + "-" + docCount + "."
                + dm.getExtension();
        if (!isCancelled()) {
            try {
                if (!DataLayerManager.getImplementation().importElement(dm, currentEtat, codeBudget,
                        collectivite, originalFile.getName(), docName, bData, fileEncoding, getArchiveName(),
                        user)) {
                    logger.warn(DataLayerManager.getImplementation().getWarnings());
                    warningCount++;
                }
            } catch (DataAccessException daEx) {
                logger.error("importing element:", daEx);
                throw (Exception) daEx;
            } catch (DataConfigurationException dcEx) {
                logger.error("importing element:", dcEx);
                throw (Exception) dcEx.getCause();
            }
        }
        if (shouldDelete) {
            df.delete();
        }
        importTimingOS.append(originalFile.getName()).append(";").append(df.toURI().toURL().toExternalForm())
                .append(";IDX;").append(Long.toString(startFile)).append(";")
                .append(Long.toString(startFile = System.currentTimeMillis()));
        importTimingOS.println();
        this.getImpSvcProvider().pushCurrentProgress(progress);
    } catch (Exception ex) {
        //TODO
    }
}

From source file:ddf.catalog.services.xsltlistener.XsltResponseQueueTransformer.java

@Override
public ddf.catalog.data.BinaryContent transform(SourceResponse upstreamResponse,
        Map<String, Serializable> arguments) throws CatalogTransformerException {

    LOGGER.debug("Transforming ResponseQueue with XSLT tranformer");

    long grandTotal = -1;

    try {// w w w . ja  v a 2 s  .  co m
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

        factory.setNamespaceAware(true);
        DocumentBuilder builder = factory.newDocumentBuilder();

        Document doc = builder.newDocument();

        Node resultsElement = doc.appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "results", null));

        // TODO use streaming XSLT, not DOM
        List<Result> results = upstreamResponse.getResults();
        grandTotal = upstreamResponse.getHits();

        for (Result result : results) {
            Metacard metacard = result.getMetacard();
            String thisMetacard = metacard.getMetadata();
            if (metacard != null && thisMetacard != null) {
                Element metacardElement = createElement(doc, XML_RESULTS_NAMESPACE, "metacard", null);
                if (metacard.getId() != null) {
                    metacardElement
                            .appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "id", metacard.getId()));
                }
                if (metacard.getMetacardType().toString() != null) {
                    metacardElement.appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "type",
                            metacard.getMetacardType().getName()));
                }
                if (metacard.getTitle() != null) {
                    metacardElement.appendChild(
                            createElement(doc, XML_RESULTS_NAMESPACE, "title", metacard.getTitle()));
                }
                if (result.getRelevanceScore() != null) {
                    metacardElement.appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "score",
                            result.getRelevanceScore().toString()));
                }
                if (result.getDistanceInMeters() != null) {
                    metacardElement.appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "distance",
                            result.getDistanceInMeters().toString()));
                }
                if (metacard.getSourceId() != null) {
                    metacardElement.appendChild(
                            createElement(doc, XML_RESULTS_NAMESPACE, "site", metacard.getSourceId()));
                }
                if (metacard.getContentTypeName() != null) {
                    String contentType = metacard.getContentTypeName();
                    Element typeElement = createElement(doc, XML_RESULTS_NAMESPACE, "content-type",
                            contentType);
                    // TODO revisit what to put in the qualifier
                    typeElement.setAttribute("qualifier", "content-type");
                    metacardElement.appendChild(typeElement);
                }
                if (metacard.getResourceURI() != null) {
                    try {
                        metacardElement.appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "product",
                                metacard.getResourceURI().toString()));
                    } catch (DOMException e) {
                        LOGGER.warn(" Unable to create resource uri element", e);
                    }
                }
                if (metacard.getThumbnail() != null) {
                    metacardElement.appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "thumbnail",
                            Base64.encodeBase64String(metacard.getThumbnail())));
                    try {
                        String mimeType = URLConnection
                                .guessContentTypeFromStream(new ByteArrayInputStream(metacard.getThumbnail()));
                        metacardElement
                                .appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "t_mimetype", mimeType));
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        metacardElement.appendChild(
                                createElement(doc, XML_RESULTS_NAMESPACE, "t_mimetype", "image/png"));
                    }
                }
                DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
                if (metacard.getCreatedDate() != null) {
                    metacardElement.appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "created",
                            fmt.print(metacard.getCreatedDate().getTime())));
                }
                // looking at the date last modified
                if (metacard.getModifiedDate() != null) {
                    metacardElement.appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "updated",
                            fmt.print(metacard.getModifiedDate().getTime())));
                }
                if (metacard.getEffectiveDate() != null) {
                    metacardElement.appendChild(createElement(doc, XML_RESULTS_NAMESPACE, "effective",
                            fmt.print(metacard.getEffectiveDate().getTime())));
                }
                if (metacard.getLocation() != null) {
                    metacardElement.appendChild(
                            createElement(doc, XML_RESULTS_NAMESPACE, "location", metacard.getLocation()));
                }
                Element documentElement = doc.createElementNS(XML_RESULTS_NAMESPACE, "document");
                metacardElement.appendChild(documentElement);
                resultsElement.appendChild(metacardElement);

                Node importedNode = doc.importNode(new XPathHelper(thisMetacard).getDocument().getFirstChild(),
                        true);
                documentElement.appendChild(importedNode);
            } else {
                LOGGER.debug("Null content/document returned to XSLT ResponseQueueTransformer");
                continue;
            }
        }

        if (LOGGER.isDebugEnabled()) {
            DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation();
            LSSerializer lsSerializer = domImplementation.createLSSerializer();
            LOGGER.debug("Generated XML input for transform: " + lsSerializer.writeToString(doc));
        }

        LOGGER.debug("Starting responsequeue xslt transform.");

        Transformer transformer;

        Map<String, Object> mergedMap = new HashMap<String, Object>();
        mergedMap.put(GRAND_TOTAL, grandTotal);
        if (arguments != null) {
            mergedMap.putAll(arguments);
        }

        BinaryContent resultContent;
        StreamResult resultOutput = null;
        Source source = new DOMSource(doc);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        resultOutput = new StreamResult(baos);

        try {
            transformer = templates.newTransformer();
        } catch (TransformerConfigurationException tce) {
            throw new CatalogTransformerException("Could not perform Xslt transform: " + tce.getException(),
                    tce.getCause());
        }

        if (mergedMap != null && !mergedMap.isEmpty()) {
            for (Map.Entry<String, Object> entry : mergedMap.entrySet()) {
                if (LOGGER.isDebugEnabled()) {
                    LOGGER.debug(
                            "Adding parameter to transform {" + entry.getKey() + ":" + entry.getValue() + "}");
                }
                transformer.setParameter(entry.getKey(), entry.getValue());
            }
        }

        try {
            transformer.transform(source, resultOutput);
            byte[] bytes = baos.toByteArray();
            LOGGER.debug("Transform complete.");
            resultContent = new XsltTransformedContent(bytes, mimeType);
        } catch (TransformerException te) {
            LOGGER.error("Could not perform Xslt transform: " + te.getException(), te.getCause());
            throw new CatalogTransformerException("Could not perform Xslt transform: " + te.getException(),
                    te.getCause());
        } finally {
            // transformer.reset();
            // don't need to do that unless we are putting it back into a
            // pool -- which we should do, but that can wait until later.
        }

        return resultContent;
    } catch (ParserConfigurationException e) {
        LOGGER.warn("Error creating new document: " + e.getMessage(), e.getCause());
        throw new CatalogTransformerException("Error merging entries to xml feed.", e);
    }
}