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.util.Map;
 

Author(s):
modified by jflute (originated in Seasar)
 
 public class TagHandlerContext {
 
     private static final Integer ONE = new Integer(1);
 
     private StringBuffer body = null;
 
     private StringBuffer characters = new StringBuffer();
 
     private Stack bodyStack = new Stack();
 
     private StringBuffer path = new StringBuffer();
 
     private StringBuffer detailPath = new StringBuffer();
 
     private String qName = "";
 
     private Stack qNameStack = new Stack();
 
     private Object result;
 
     private Stack stack = new Stack();
 
     private Map pathCounts = new HashMap();
 
     private Map parameters = new HashMap();
 
     private Locator locator = new Locator() {
         public int getColumnNumber() {
             return 0;
         }
 
         public int getLineNumber() {
             return 0;
         }
 
         public String getPublicId() {
             return null;
         }
 
         public String getSystemId() {
             return null;
         }
     };

    
コンテキストに情報を追加します。

Parameters:
o
 
     public void push(Object o) {
         if (.empty()) {
              = o;
         }
         .push(o);
     }

    
結果を返します。

Returns:
結果
 
     public Object getResult() {
         return ;
     }

    
コンテキストに積まれている情報の最も上のものを取り出します。 取り出した情報はコンテキストから削除されます。

Returns:
最も上の情報
 
     public Object pop() {
         return .pop();
     }

    
コンテキストに積まれている情報の最も上のものを取り出します。 取り出した情報はコンテキストに残ったままです。

Returns:
最も上の情報
    public Object peek() {
        return .peek();
    }

    
コンテキストに積まれている情報で上から指定されたインデックスのものを取り出します。 取り出した情報はコンテキストに残ったままです。

Parameters:
n
Returns:
上から指定されたインデックスの情報
    public Object peek(final int n) {
        return .get(.size() - n - 1);
    }

    
コンテキストに積まれている情報で指定されたクラスのインスタンスを取り出します。 取り出した情報はコンテキストに残ったままです。

Parameters:
clazz
Returns:
指定されたクラスのインスタンス
    public Object peek(final Class clazz) {
        for (int i = .size() - 1; i >= 0; --i) {
            Object o = .get(i);
            if (clazz.isInstance(o)) {
                return o;
            }
        }
        return null;
    }

    
最初にコンテキストに積まれた情報を返します。 取り出した情報はコンテキストに残ったままです。

Returns:
最初にコンテキストに積まれた情報
    public Object peekFirst() {
        return .get(0);
    }

    
コンテキストのスタックが空かどうかを返します。

Returns:
コンテキストのスタックが空かどうか
    public boolean isEmpty() {
        return .isEmpty();
    }

    
パラメータを返します。

Parameters:
name
Returns:
パラメータ
    public Object getParameter(String name) {
        return .get(name);
    }

    
パラメータを追加します。

Parameters:
name
parameter
    public void addParameter(String nameObject parameter) {
        .put(nameparameter);
    }

    
org.xml.sax.Locatorを返します。

    public Locator getLocator() {
        return ;
    }

    
org.xml.sax.Locatorを設定します。

Parameters:
locator
    public void setLocator(Locator locator) {
        this. = locator;
    }

    
要素(タグ)の処理を開始します。

Parameters:
qName
    public void startElement(String qName) {
        .push();
         = new StringBuffer();
         = new StringBuffer();
        .push(this.);
        this. = qName;
        .append("/");
        .append(qName);
        int pathCount = incrementPathCount();
        .append("/");
        .append(qName);
        .append("[");
        .append(pathCount);
        .append("]");
    }

    
SAXのParserから呼び出されたcharacters()を処理します。

Parameters:
buffer
start
length
    public void characters(char[] bufferint startint length) {
        .append(bufferstartlength);
        .append(bufferstartlength);
    }

    
characters(char[],int,int)の処理結果を返します。

Returns:
characters(char[],int,int)の処理結果
    public String getCharacters() {
        return .toString().trim();
    }

    
ボディを返します。

Returns:
ボディ
    public String getBody() {
        return .toString().trim();
    }

    
charactersの最後が行の終わりかどうかを返します。

Returns:
charactersの最後が行の終わりかどうか
    public boolean isCharactersEol() {
        if (.length() == 0) {
            return false;
        }
        return .charAt(.length() - 1) == '\n';
    }

    
charactersをクリアします。
    public void clearCharacters() {
         = new StringBuffer();
    }

    
要素(タグ)の終了処理を行ないます。
    public void endElement() {
         = (StringBuffer.pop();
        remoteLastPath();
        remoteLastPath();
         = (String.pop();
    }
    private static void remoteLastPath(StringBuffer path) {
        path.delete(path.lastIndexOf("/"), path.length());
    }

    
タグのパスを返します。

Returns:
タグのパス
    public String getPath() {
        return .toString();
    }

    
詳細(何番目に登場したのかも含む)なタグのパスを返します。

Returns:
詳細(何番目に登場したのかも含む)なタグのパス
    public String getDetailPath() {
        return .toString();
    }

    
qNameを返します。

Returns:
qName
    public String getQName() {
        return ;
    }
    private int incrementPathCount() {
        String path = getPath();
        Integer pathCount = (Integer.get(path);
        if (pathCount == null) {
            pathCount = ;
        } else {
            pathCount = new Integer(pathCount.intValue() + 1);
        }
        .put(pathpathCount);
        return pathCount.intValue();
    }
New to GrepCode? Check out our FAQ X