Package com.xmlit.project.server

Source Code of com.xmlit.project.server.UnmarshelServiceImpl

package com.xmlit.project.server;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServletRequest;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.mortbay.log.Log;
import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSSerializer;
import org.xml.sax.SAXException;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.xmlit.project.client.ExampleContainer;
import com.xmlit.project.client.UnmarshalException;
import com.xmlit.project.client.UnmarshelService;
import com.xmlit.project.engine.Utils;
import com.xmlit.project.engine.marshal.MarshalImpl;
import com.xmlit.project.engine.marshal.Unmarshal;
import com.xmlit.project.engine.marshal.UnmarshalImpl;
import com.xmlit.project.engine.struct.Struct;
import com.xmlit.project.engine.struct.impl.StructSequenceImpl;
import com.xmlit.project.engine.test.ExampleTest;
import com.xmlit.project.engine.xsd.Struct2XSD;
import com.xmlit.project.engine.xsd.XSD2Struct;

public class UnmarshelServiceImpl extends RemoteServiceServlet implements
    UnmarshelService {

  /**
   *
   */
  private static final long serialVersionUID = 1L;
    private static final Logger log = Logger.getLogger(UnmarshelServiceImpl.class.getName());


  @Override
  public String unmarshel(String message, Struct struct)
      throws UnmarshalException {
    HttpServletRequest request = this.getThreadLocalRequest();   
    sendMail(message, "unmarshel:"+request.getRemoteAddr() + " " + request.getRemoteUser());
    message = message.replaceAll("\r\n", "\n");
    message = message.replaceAll("\n", "\r\n");
    message = Utils.dom2String(new UnmarshalImpl().unmarshal(message, struct));
    if (message.trim().indexOf('\n') == -1) {
      throw new RuntimeException("Unmarshal Failed");
    }

    return message;
  }

  /*
   * public static String dom2String1(Document doc) {
   * DOMImplementationRegistry registry; try { registry =
   * DOMImplementationRegistry.newInstance(); } catch (Exception e) { throw
   * new RuntimeException(e); }
   *
   * DOMImplementationLS impl = (DOMImplementationLS) registry
   * .getDOMImplementation("LS");
   *
   * LSSerializer writer = impl.createLSSerializer();
   * writer.getDomConfig().setParameter("format-pretty-print", Boolean.TRUE);
   * LSOutput lsOutput = writer.getDomConfig().createLSOutput();
   * .createLSOutput(); lsOutput.setEncoding("UTF-8"); String str =
   * writer.writeToString(doc);
   *
   * return str;
   *
   * }
   */


  @Override
  public String marshel(String xml, Struct struct) {
    HttpServletRequest request = this.getThreadLocalRequest();   
    sendMail(xml, "marshel:"+request.getRemoteAddr() + " " + request.getRemoteUser());

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db;
    try {
      db = dbf.newDocumentBuilder();
      Document doc = db.parse(new ByteArrayInputStream(xml
          .getBytes("UTF-8")));
      return new MarshalImpl().marshal(doc, struct);

    } catch (Exception e) {
      throw new RuntimeException(xml, e);
    }

  }

  public static void main(String[] args) {
    String xml = "<?xml version=\"1.0\" encoding=\"UTF-16\"?><Root>   <NewElement>aaa</NewElement>   <NewElement>bbb</NewElement></Root>";
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db;
    try {
      db = dbf.newDocumentBuilder();
      Document doc = db.parse(new ByteArrayInputStream(xml
          .getBytes("UTF-16")));
      // return new MarshalImpl().marshal(doc, struct);
      System.out.println(doc);
    } catch (Exception e) {
      throw new RuntimeException(e);
    }

  }

  @Override
  public String getXSD(Struct struct) {
    return Struct2XSD.struct2XSD(struct);
  }

  @Override
  public Struct getStruct(String xsd) {
    try {
      return XSD2Struct.xsd2Struct(xsd);
    } catch (Exception e) {
      throw new RuntimeException(e);
    }

  }

  @Override
  public ExampleContainer getExampleContainer(int index) {
    StringBuffer sb;
    try {
      BufferedReader reader = new BufferedReader(new InputStreamReader(
          this.getClass().getResourceAsStream(
              "/com/xmlit/project/examples/example" + index
                  + ".txt")));
      String line = null;
      sb = new StringBuffer();
      while (null != (line = reader.readLine())) {
        sb.append(line + "\r\n");
      }

      BufferedReader xsdReader = new BufferedReader(
          new InputStreamReader(this.getClass().getResourceAsStream(
              "/com/xmlit/project/examples/example" + index
                  + ".xsd"), "UTF-8"));
      ExampleContainer result = new ExampleContainer(
          XSD2Struct.xsd2Struct(xsdReader), sb.toString().substring(
              0, sb.length() - 2));
      return result;
    } catch (Exception e) {
      /*final char[] buffer = new char[0x10000];
      StringBuilder out = new StringBuilder();
 
      int read;
      do {
        read = schema.read(buffer, 0, buffer.length);
        if (read>0) {
          out.append(buffer, 0, read);
        }
      } while (read>=0);     
      System.out.println(out);*/
      throw new RuntimeException(e);
    }

  }

  public static void sendMail(String text, String ip) {
    // debugString += "inSend\n";
    Properties props = new Properties();
    Session session = Session.getDefaultInstance(props, null);

    try {
      Message msg = new MimeMessage(session);
      msg.setFrom(new InternetAddress("daniel.barkan@gmail.com",
          "FreeMyText Feedback"));
      msg.addRecipient(Message.RecipientType.TO, new InternetAddress(
          "yaron.galili@gmail.com", "Mr. User"));

      msg.setSubject("XML-it! monitor " + ip);
      msg.setText(text);
      Transport.send(msg);

    } catch (Exception e) {
      log.log(Level.WARNING, "mail", e);
    }

  }

  @Override
  public String ping() {
    HttpServletRequest request = this.getThreadLocalRequest();   
    sendMail("aaa", "login:"+request.getRemoteAddr() + " " + request.getRemoteUser());
    return null;
  }

}
TOP

Related Classes of com.xmlit.project.server.UnmarshelServiceImpl

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.