Uploaded image for project: 'James Mime4j'
  1. James Mime4j
  2. MIME4J-158

Reduce usage of commons-logging in favor of a "Monitor" service.

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 0.6
    • 0.7
    • None
    • None

    Description

      We should remove commons-logging usage from mime4j. At least starting from low level utilities and libraries.

      The solution could be in some code reorganization and the introduction of a "monitorservice" passed to the various methods around the code.
      The "monitorservice" could also be used to "alter" the strictness/lenientness of the parsing/decoding operations.


      CharsetDecoder uses a combination of fluent api (CharsetDecoder.onMalformedInput) with a CodingErrorAction parameter.
      CodingErrorAction is a simple enumeration (IGNORE, REPLACE, REPORT) and allow some methods to return CoderResult that is an object describing the various conditions (error/malformed/underflow/overflow/unmappable)

      Another approach, instead, is the ErrorHandler from SAX: ErrorHandler expose the error/fatalError/warning methods, and all of them has a SAXParseException parameter, containing a message and a "locator".

      We need both:

      • a way to control how to deal with malformed/unexpected data (IGNORE/REPLACE/REPORT)
      • a way to log malformations and their positions in the stream/field (like SAX ErrorHandler).

      Maybe introducing a mixed service handling both use-cases is the best approach: basically a service that tells wether to "ignore", or "report", and if "report" then in the reporting methods it could alter the behaviour.
      E.g: decoding QuotedPrintable we could ignore bad =XX sequences or leave them as is in output. For both cases we should be able to intercept and log the fact, or stop the processing with an IoException.

      Attachments

        1. MIME4J-158-stream.patch
          14 kB
          Oleg Kalnichevski

        Activity

          People

            bago Stefano Bagnara
            bago Stefano Bagnara
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: