Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2014-2015 the original author or authors.
   *
   * Licensed 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 org.lastaflute.di.helper.xml;
 
 import java.net.URL;
 import java.util.Map;
 

Author(s):
modified by jflute (originated in Seasar)
 
 public class SaxHandler extends DefaultHandler {
 
     private TagHandlerRule tagHandlerRule;
     private TagHandlerContext context = new TagHandlerContext();
     private Map dtdPaths = new HashMap();
     private Locator locator;
 
     public SaxHandler(TagHandlerRule tagHandlerRule) {
         this. = tagHandlerRule;
     }
 
         return ;
     }
 
     @Override
     public void setDocumentLocator(Locator locator) {
         this. = locator;
     }
 
     @Override
     public void startDocument() throws SAXException {
         .setLocator();
     }
 
     @Override
     public void startElement(String namespaceURIString localNameString qNameAttributes attributes) {
         appendBody();
         .startElement(qName);
         start(attributes);
     }
 
     @Override
     public void characters(char[] bufferint startint length) {
         int begin = start;
         int end = start + length;
         for (int i = begini < end; ++i) {
             if (buffer[i] == '\n') {
                 .characters(bufferbegini - begin + 1);
                 appendBody();
                 begin = i + 1;
             }
         }
         if (begin < end) {
             .characters(bufferbeginend - begin);
         }
     }
 
     @Override
     public void endElement(String namespaceURIString localNameString qName) {
         appendBody();
         end();
         .endElement();
     }
 
     @Override
     public InputSource resolveEntity(String publicIdString systemIdthrows SAXException {
         if (publicId != null) {
             String dtdPath = (String.get(publicId);
             if (dtdPath != null) {
                 return createInputSource(LdiResourceUtil.getResourceAsStream(dtdPath), systemId);
             }
         }
 
         if (systemId == null) {
            return null;
        }
        if (systemId.startsWith("file:")) {
            URL url = LdiURLUtil.create(systemId);
            String path = url.getFile();
            if (path.startsWith("/")) {
                path = path.substring(1);
            }
            return createInputSource(LdiResourceUtil.getResourceAsStream(path), systemId);
        }
        return new InputSource(LdiResourceUtil.getResourceAsStream(systemId));
    }
    @Override
    public void error(SAXParseException ethrows SAXException {
        throw e;
    }
    @Override
    public void warning(SAXParseException ethrows SAXException {
        ..println(e);
    }
    public void registerDtdPath(String publicIdString dtdPath) {
        .put(publicIddtdPath);
    }
    public Object getResult() {
        return .getResult();
    }
    private InputSource createInputSource(InputStream streamString systemId) {
        InputSource is = new InputSource(stream);
        is.setSystemId(systemId);
        return is;
    }
    private TagHandler getTagHandlerByPath() {
        return .getTagHandler(.getPath());
    }
    private TagHandler getTagHandlerByQName() {
        return .getTagHandler(.getQName());
    }
    private void start(Attributes attributes) {
        TagHandler th = getTagHandlerByPath();
        start(thattributes);
        th = getTagHandlerByQName();
        start(thattributes);
    }
    private void start(TagHandler handlerAttributes attributes) {
        if (handler != null) {
            try {
                handler.start(attributes);
            } catch (RuntimeException ex) {
                reportDetailPath();
                ex.printStackTrace();
                throw ex;
            }
        }
    }
    private void appendBody() {
        String characters = .getCharacters();
        if (characters.length() > 0) {
            TagHandler th = getTagHandlerByPath();
            appendBody(thcharacters);
            th = getTagHandlerByQName();
            appendBody(thcharacters);
            .clearCharacters();
        }
    }
    private void appendBody(TagHandler handlerString characters) {
        if (handler != null) {
            try {
                handler.appendBody(characters);
            } catch (RuntimeException ex) {
                reportDetailPath();
                ex.printStackTrace();
                throw ex;
            }
        }
    }
    private void end() {
        String body = .getBody();
        TagHandler th = getTagHandlerByPath();
        end(thbody);
        th = getTagHandlerByQName();
        end(thbody);
    }
    private void end(TagHandler handlerString body) {
        if (handler != null) {
            try {
                handler.end(body);
            } catch (RuntimeException ex) {
                reportDetailPath();
                ex.printStackTrace();
                throw ex;
            }
        }
    }
    private void reportDetailPath() {
        ..println("Exception occured at " + .getDetailPath());
    }
New to GrepCode? Check out our FAQ X