/* * Copyright (c) 2007 NTT DATA Corporation * * 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 jp.terasoluna.fw.beans.jxpath; import org.apache.commons.jxpath.DynamicPropertyHandler; import org.apache.commons.jxpath.ri.model.NodePointer; import org.apache.commons.jxpath.ri.model.dynamic.DynamicPropertyPointer; import org.apache.commons.jxpath.util.ValueUtils; /** * null値を扱うためのMap用プロパティポインタ拡張クラス。 * * <p>デフォルトのMapプロパティポインタでは、 * Mapの値にnullが入っていた場合、値がないものとして扱われる。 * nullを取得したい場合、本クラスを使用する必要がある。</p> * */ public class DynamicPropertyPointerEx extends DynamicPropertyPointer { /** * シリアルバージョンID。 */ private static final long serialVersionUID = -2235777024563491060L; /** * コンストラクタ。 * @param parent 親Map用ポインタ * @param handler プロパティハンドラ */ public DynamicPropertyPointerEx(NodePointer parent, DynamicPropertyHandler handler) { super(parent, handler); } /** * 要素数を取得する。 * @return 要素数 */ @Override public int getLength() { // 要素の値がnullならば、要素数1とする Object value = getBaseValue(); if (value == null) { return 1; } return ValueUtils.getLength(value); } }