Package com.esri.gpt.control.cart

Source Code of com.esri.gpt.control.cart.XslBundler

/* See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* Esri Inc. licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.esri.gpt.control.cart;
import com.esri.gpt.framework.context.RequestContext;
import com.esri.gpt.framework.util.Val;
import com.esri.gpt.framework.xml.XsltTemplate;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Bundles the XML documents associated with a set of keys into a single response
* by applying an XSLT.
*/
public class XslBundler extends KeysetProcessor {
 
  /** constructors ============================================================ */
 
  /** Default constructor */
  public XslBundler() {}
 
  /** methods ================================================================= */
   
  /**
   * Processes the HTTP request.
   * @param request the HTTP request
   * @param response HTTP response
   * @param context request context
   * @throws Exception if an exception occurs
   */
  @Override
  public void execute(HttpServletRequest request,
                      HttpServletResponse response,
                      RequestContext context)
    throws Exception {
    String[] keys = this.readKeys(request,context,true);
    String sXsltPath = Val.chkStr(request.getParameter("xslt"));
    String sMimeType = Val.chkStr(request.getParameter("mimeType"));
    String sContentDisposition = Val.chkStr(request.getParameter("contentDisposition"));
    if ((keys.length > 0) && (sXsltPath.length() > 0)) {
      XsltTemplate template = this.getCompiledTemplate(sXsltPath);
      ServletOutputStream out = response.getOutputStream();
           
      if (sMimeType.length() == 0) {
        sMimeType = "text/plain";
      }
      response.setContentType(sMimeType+";charset=UTF-8");
      if (sContentDisposition.length() > 0) {
        response.addHeader("Content-Disposition",sContentDisposition);
      }
     
      try {  
        for (String sKey: keys) {
          String sXml = this.readXml(request,context,sKey);
          String sResult = Val.chkStr(template.transform(sXml));
          if (sResult.length() > 0) {
            byte[] bytes = sResult.getBytes("UTF-8");
            out.write(bytes);
            out.flush();
          }
        }
      } finally {
        out.flush();
        out.close();
      }
    }
  }

}
TOP

Related Classes of com.esri.gpt.control.cart.XslBundler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.