Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2007-2008 Mozilla Foundation
   *
   * Permission is hereby granted, free of charge, to any person obtaining a 
   * copy of this software and associated documentation files (the "Software"), 
   * to deal in the Software without restriction, including without limitation 
   * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
   * and/or sell copies of the Software, and to permit persons to whom the 
   * Software is furnished to do so, subject to the following conditions:
  *
  * The above copyright notice and this permission notice shall be included in 
  * all copies or substantial portions of the Software.
  *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
  * DEALINGS IN THE SOFTWARE.
  */
 
 package nu.validator.messages;
 
 import java.io.Writer;
 
 
 
 public class GnuMessageEmitter extends MessageEmitter {
 
     private final Writer writer;
 
     private final TextMessageTextHandler messageTextHandler;
     
     private char[] fileName;
 
     private static Writer newOutputStreamWriter(OutputStream out) {
         CharsetEncoder enc = Charset.forName("UTF-8").newEncoder();
         return new OutputStreamWriter(outenc);
     }
 
     public GnuMessageEmitter(OutputStream outboolean asciiQuotes) {
         this. = newOutputStreamWriter(out);
         this. = new TextMessageTextHandler(asciiQuotes);
     }
 
     @Override
     public void startMessage(MessageType typeString systemId,
             int oneBasedFirstLineint oneBasedFirstColumn,
             int oneBasedLastLineint oneBasedLastColumnboolean exact)
             throws SAXException {
         try {
             if (systemId == null) {
                 if ( != null) {
                     .write(, 0, .);
                 }
             } else {
                 .write(toCString(systemId));
             }
             .write(':');
             if (oneBasedLastLine != -1) {
                 // We have a location, do we have start, too?
                 if (oneBasedFirstLine != -1) {
                     .write(Integer.toString(oneBasedFirstLine));  
                     // GNU only allows the start point to have a col if the 
                     // end has a col too
                     if (oneBasedFirstColumn != -1 && oneBasedLastColumn != -1) {
                         .write('.');
                         .write(Integer.toString(oneBasedFirstColumn));                    
                     }
                     .write('-');
                 }
                 .write(Integer.toString(oneBasedLastLine));  
                 // GNU only allows the end point to have a col if the 
                 // start had a col too
                 if (oneBasedFirstColumn != -1 && oneBasedLastColumn != -1) {
                     .write('.');
                     .write(Integer.toString(oneBasedLastColumn));                    
                 }
                 .write(':');
             }                
             .write(' ');
             .write(type.getFlatType());
             .write(':');
             .write(' ');
         } catch (IOException e) {
             throw new SAXException(e.getMessage(), e);
         }
     }

    
    @Override
    public void endMessages() throws SAXException {
         try {
             .flush();
             .close();
         } catch (IOException e) {
         throw new SAXException(e.getMessage(), e);
         }
    }

    
    @Override
    public void startMessages(String documentUriboolean willShowSourcethrows SAXException {
        if (documentUri == null) {
             = null;
        } else {
             = toCString(documentUri);
        }
    }
    private char[] toCString(String documentUri) {
        StringBuilder sb = new StringBuilder(documentUri.length() + 2);
        sb.append('\"');
        for (int i = 0; i < documentUri.length(); i++) {
            char c = documentUri.charAt(i);
            if (c == '\"') {
                sb.append("%22");
            } else {
                sb.append(c);
            }
        }
        sb.append('\"');
        char[] rv = new char[sb.length()];
        sb.getChars(0, sb.length(), rv, 0);
        return rv;
    }

    
    @Override
    public MessageTextHandler startText() throws SAXException {
        return ;
    }
    @Override
    public void endMessage() throws SAXException {
        try {
            .write('\n');
        } catch (IOException e) {
            throw new SAXException(e.getMessage(), e);
        }
    }
New to GrepCode? Check out our FAQ X