/* * AbstractStringToken.java * Missing License Header, Copyright 2016 (C) Andrew Maitland <amaitland@users.sourceforge.net> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ package pcgen.rules.persistence.token; import pcgen.cdom.base.CDOMObject; import pcgen.cdom.enumeration.StringKey; import pcgen.rules.context.LoadContext; /** * Parses a token of the form: {@literal <Token Name>:<string>} * * @param <T> * The type of object on which this AbstractStringToken can be used */ public abstract class AbstractStringToken<T extends CDOMObject> extends AbstractNonEmptyToken<T> { /** * This must be overridden to specify the key. * @return The key. */ protected abstract StringKey stringKey(); @Override protected ParseResult parseNonEmptyToken(LoadContext context, T obj, String value) { context.getObjectContext().put(obj, stringKey(), value); return ParseResult.SUCCESS; } public String[] unparse(LoadContext context, T obj) { String value = context.getObjectContext().getString(obj, stringKey()); if (value == null) { return null; } return new String[] { value }; } }