Examples of MimeStreamParser


Examples of org.apache.james.mime4j.MimeStreamParser

    IModelFactory factory = Owl.getModelFactory();
    final INews news = factory.createNews(null, feed, new Date());
    final Map<String, StringBuilder> mimeToContent = new HashMap<String, StringBuilder>();

    /* Create parser for this message */
    final MimeStreamParser parser = new MimeStreamParser();
    parser.setContentHandler(new AbstractContentHandler() {
      boolean fBodyReached = false;

      @Override
      public void field(String fieldData) {

        /* Support early cancellation */
        if (monitor.isCanceled()) {
          parser.stop();
          return;
        }

        /* Not yet in Body */
        if (!fBodyReached) {

          /* From */
          if (fieldData.startsWith(HEADER_FROM))
            interpretFrom(news, DecoderUtil.decodeEncodedWords(fieldData.substring(HEADER_FROM.length())));

          /* Subject */
          else if (fieldData.startsWith(HEADER_SUBJECT))
            interpretSubject(news, DecoderUtil.decodeEncodedWords(fieldData.substring(HEADER_SUBJECT.length())));

          /* Date */
          else if (fieldData.startsWith(HEADER_DATE))
            interpretDate(news, DecoderUtil.decodeEncodedWords(fieldData.substring(HEADER_DATE.length())));

          /* Message ID */
          else if (fieldData.startsWith(HEADER_MESSAGE_ID))
            interpretMessageId(news, DecoderUtil.decodeEncodedWords(fieldData.substring(HEADER_MESSAGE_ID.length())));

          /* References */
          else if (fieldData.startsWith(HEADER_REFERENCES))
            interpretReferences(news, DecoderUtil.decodeEncodedWords(fieldData.substring(HEADER_REFERENCES.length())));
        }
      }

      @Override
      public void body(BodyDescriptor bd, InputStream is) throws IOException {

        /* Support early cancellation */
        if (monitor.isCanceled()) {
          parser.stop();
          return;
        }

        /* Require a mimetype */
        String mimeType = bd.getMimeType();
        if (mimeType == null)
          return;

        /* Require a text-mime */
        if (!mimeType.contains(MIME_TEXT))
          return;

        /* Assign StringBuilder with Mime-Type */
        StringBuilder strBuilder = mimeToContent.get(mimeType);
        if (strBuilder == null) {
          strBuilder = new StringBuilder();
          mimeToContent.put(mimeType, strBuilder);
        }

        /* Handle encodings */
        if (bd.isBase64Encoded())
          is = new Base64InputStream(is);
        else if (bd.isQuotedPrintableEncoded())
          is = new QuotedPrintableInputStream(is);

        /* Read Body */
        BufferedReader reader;
        if (!DEFAULT_ENCODING.equals(bd.getCharset()) && Charset.isSupported(bd.getCharset()))
          reader = new BufferedReader(new InputStreamReader(is, bd.getCharset()));
        else
          reader = new BufferedReader(new InputStreamReader(is));

        String line = null;
        while ((line = reader.readLine()) != null && !monitor.isCanceled()) {

          /* Check for quote */
          boolean isQuote = line.startsWith(">"); //$NON-NLS-1$
          if (line.startsWith(">>>>")) //$NON-NLS-1$
            strBuilder.append("<span class=\"quote_lvl4\">"); //$NON-NLS-1$
          else if (line.startsWith(">>>")) //$NON-NLS-1$
            strBuilder.append("<span class=\"quote_lvl3\">"); //$NON-NLS-1$
          else if (line.startsWith(">>")) //$NON-NLS-1$
            strBuilder.append("<span class=\"quote_lvl2\">"); //$NON-NLS-1$
          else if (line.startsWith(">")) //$NON-NLS-1$
            strBuilder.append("<span class=\"quote_lvl1\">"); //$NON-NLS-1$

          /* Beautify Body (if non-html) */
          if (!MIME_TEXT_HTML.equals(mimeType))
            strBuilder.append(beautifyBody(line)).append("<br>\n"); //$NON-NLS-1$
          else
            strBuilder.append(line);

          /* Check for quote */
          if (isQuote)
            strBuilder.append("</span>"); //$NON-NLS-1$
        }
      }
    });

    /* Parse Body */
    ReaderInputStream inS = new ReaderInputStream(articleReader);
    parser.parse(inS);

    /* Prefer HTML over text/plain */
    if (mimeToContent.containsKey(MIME_TEXT_HTML))
      news.setDescription(mimeToContent.get(MIME_TEXT_HTML).toString());

View Full Code Here

Examples of org.apache.james.mime4j.MimeStreamParser

     * Creates a new <code>Header</code> from the specified stream.
     *
     * @param is the stream to read the header from.
     */
    public Header(InputStream is) throws IOException {
        final MimeStreamParser parser = new MimeStreamParser();
        parser.setContentHandler(new AbstractContentHandler() {
            public void endHeader() {
                parser.stop();
            }
            public void field(String fieldData) {
                addField(Field.parse(fieldData));
            }
        });
        parser.parse(is);
    }
View Full Code Here

Examples of org.apache.james.mime4j.MimeStreamParser

     *
     * @param is the stream to parse.
     * @throws IOException on I/O errors.
     */
    public Message(InputStream is) throws IOException {
        MimeStreamParser parser = new MimeStreamParser();
        parser.setContentHandler(new MessageBuilder());
        parser.parse(is);
    }
View Full Code Here

Examples of org.apache.james.mime4j.parser.MimeStreamParser

     *
     * @param is the stream to parse.
     * @throws IOException on I/O errors.
     */
    public Message(InputStream is, MimeEntityConfig config) throws MimeException, IOException {
        MimeStreamParser parser = new MimeStreamParser(config);
        parser.setContentHandler(new MessageBuilder(this));
        parser.parse(is);
    }
View Full Code Here

Examples of org.apache.james.mime4j.parser.MimeStreamParser

        BasicConfigurator.resetConfiguration();
        BasicConfigurator.configure();
    }
  
    protected void runTest() throws Throwable {
        MimeStreamParser parser = null;
        TestHandler handler = null;
        MimeEntityConfig config = new MimeEntityConfig();
        config.setMaxLineLen(-1);
        parser = new MimeStreamParser(config);
        handler = new TestHandler();
       
        System.out.println("Parsing " + file.getName());
        parser.setContentHandler(handler);
        parser.parse(new FileInputStream(file));
       
        String result = handler.sb.toString();
        String xmlFile = file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf('.')) + ".xml";
        String xmlFileMime4j = file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf('.')) + ".mime4j.xml";
       
View Full Code Here

Examples of org.apache.james.mime4j.parser.MimeStreamParser

        };
        MimeEntityConfig config = new MimeEntityConfig();
        config.setMaxLineLen(-1);
        //config.setStrictParsing(false);
        config.setMaxContentLen(-1);
        MimeStreamParser parser = new MimeStreamParser(config);
        parser.setContentHandler(handler);
      
        try {
            // parse the message to index headers and body
            parser.parse(ResultUtils.toInput(membership));
        } catch (MimeException e) {
            // This should never happen as it was parsed before too without problems.           
            throw new MailboxException("Unable to index content of message", e);
        } catch (IOException e) {
            // This should never happen as it was parsed before too without problems.
View Full Code Here

Examples of org.apache.james.mime4j.parser.MimeStreamParser

    public static List<MessageResult.Header> createHeaders(final Message<?> document) throws IOException {
        final List<MessageResult.Header> results = new ArrayList<MessageResult.Header>();
        MimeEntityConfig config = new MimeEntityConfig();
        config.setMaxLineLen(-1);
        final MimeStreamParser parser = new MimeStreamParser(config);
        parser.setContentHandler(new AbstractContentHandler() {
            @Override
            public void endHeader() {
                parser.stop();
            }
            @Override
            public void field(Field field) throws MimeException {
                String fieldValue = field.getBody();
                if (fieldValue.endsWith("\r\f")) {
                    fieldValue = fieldValue.substring(0,fieldValue.length() - 2);
                }
                if (fieldValue.startsWith(" ")) {
                    fieldValue = fieldValue.substring(1);
                }
               
                final ResultHeader resultHeader = new ResultHeader(field.getName(), fieldValue);
                results.add(resultHeader);
            }
        });
        try {
            // add the header seperator to the stream to mime4j don't log a warning
            parser.parse(new SequenceInputStream(document.getHeaderContent(), new ByteArrayInputStream(BYTES_NEW_LINE)));
        } catch (MimeException e) {
            throw new IOException("Unable to parse headers of message " + document, e);
        }
        return results;
    }
View Full Code Here

Examples of org.apache.james.mime4j.parser.MimeStreamParser

        ByteArrayInputStream bais = new ByteArrayInputStream(sb.toString().getBytes("US-ASCII"));

        final StringBuilder actual = new StringBuilder();

        MimeStreamParser parser = new MimeStreamParser();
        parser.setContentHandler(new AbstractContentHandler() {
            @Override
            public void epilogue(InputStream is) throws IOException {
                int b;
                while ((b = is.read()) != -1) {
                    actual.append((char) b);
                }
            }
        });
        parser.parse(bais);

        assertEquals(epilogue.toString(), actual.toString());
    }
View Full Code Here

Examples of org.apache.james.mime4j.parser.MimeStreamParser

        expected.add("From: foo@abr.com");
        sb.append(expected.getLast() + "\r\n");
        expected.add("Subject: A subject");
        sb.append(expected.getLast() + "\r\n");

        MimeStreamParser parser = new MimeStreamParser();
        parser.setContentHandler(new AbstractContentHandler() {
            @Override
            public void field(Field field) {
                assertEquals(expected.removeFirst(), decode(field.getRaw()));
            }
        });

        parser.parse(new ByteArrayInputStream(sb.toString().getBytes()));

        assertEquals(0, expected.size());
    }
View Full Code Here

Examples of org.apache.james.mime4j.parser.MimeStreamParser

        final LinkedList<String> expected = new LinkedList<String>();
        expected.add("The-field: This field\r\rcontains CR:s\r\r"
                        + "not\r\n\tfollowed by LF");
        sb.append(expected.getLast() + "\r\n");

        MimeStreamParser parser = new MimeStreamParser();
        parser.setContentHandler(new AbstractContentHandler() {
            @Override
            public void field(Field field) {
                assertEquals(expected.removeFirst(), decode(field.getRaw()));
            }
        });

        parser.parse(new ByteArrayInputStream(sb.toString().getBytes()));

        assertEquals(0, expected.size());
    }
View Full Code Here
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.