Path: blob/master/src/java.desktop/share/classes/com/sun/beans/decoder/CharElementHandler.java
41171 views
/*1* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/24package com.sun.beans.decoder;2526/**27* This class is intended to handle <char> element.28* This element specifies {@code char} values.29* The class {@link Character} is used as wrapper for these values.30* The result value is created from text of the body of this element.31* The body parsing is described in the class {@link StringElementHandler}.32* For example:<pre>33* <char>X</char></pre>34* which is equivalent to {@code Character.valueOf('X')} in Java code.35* <p>The following attributes are supported:36* <dl>37* <dt>code38* <dd>this attribute specifies character code39* <dt>id40* <dd>the identifier of the variable that is intended to store the result41* </dl>42* The {@code code} attribute can be used for characters43* that are illegal in XML document, for example:<pre>44* <char code="0"/></pre>45*46* @since 1.747*48* @author Sergey A. Malenkov49*/50final class CharElementHandler extends StringElementHandler {5152/**53* Parses attributes of the element.54* The following attributes are supported:55* <dl>56* <dt>code57* <dd>this attribute specifies character code58* <dt>id59* <dd>the identifier of the variable that is intended to store the result60* </dl>61*62* @param name the attribute name63* @param value the attribute value64*/65@Override66public void addAttribute(String name, String value) {67if (name.equals("code")) { // NON-NLS: the attribute name68int code = Integer.decode(value);69for (char ch : Character.toChars(code)) {70addCharacter(ch);71}72} else {73super.addAttribute(name, value);74}75}7677/**78* Creates {@code char} value from79* the text of the body of this element.80*81* @param argument the text of the body82* @return evaluated {@code char} value83*/84@Override85public Object getValue(String argument) {86if (argument.length() != 1) {87throw new IllegalArgumentException("Wrong characters count");88}89return Character.valueOf(argument.charAt(0));90}91}929394