From 06d5952ad1d59eccafd9c6e68f994fff267f5a81 Mon Sep 17 00:00:00 2001 From: mdb Date: Sat, 17 Nov 2001 03:55:35 +0000 Subject: [PATCH] Created a rule for checking file format version numbers. git-svn-id: https://samskivert.googlecode.com/svn/trunk@456 6335cc39-0255-0410-8fd6-9bcaacd3b74c --- .../com/samskivert/xml/CheckVersionRule.java | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 projects/samskivert/src/java/com/samskivert/xml/CheckVersionRule.java diff --git a/projects/samskivert/src/java/com/samskivert/xml/CheckVersionRule.java b/projects/samskivert/src/java/com/samskivert/xml/CheckVersionRule.java new file mode 100644 index 00000000..9bdcd608 --- /dev/null +++ b/projects/samskivert/src/java/com/samskivert/xml/CheckVersionRule.java @@ -0,0 +1,67 @@ +// +// $Id: CheckVersionRule.java,v 1.1 2001/11/17 03:55:35 mdb Exp $ +// +// samskivert library - useful routines for java programs +// Copyright (C) 2001 Walter Korman +// +// 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 com.samskivert.xml; + +import org.apache.commons.digester.Digester; +import org.apache.commons.digester.Rule; + +import com.samskivert.Log; + +/** + * Used to compare a file format version number in an XML file with the + * one compiled into the parsing code. + */ +public class CheckVersionRule extends Rule +{ + /** + * Constructs a check version rule with the specified know version + * number. If a version newer than the specified version is parsed, a + * big fat warning will be issued. + * + * @param version the version number that the compiled code expects to + * see. + * @param parserIdentifier the name of the parser using this rule + * which will be reported in the event of a version mismatch. + */ + public CheckVersionRule (Digester digester, int version, + String parserIdentifier) + { + super(digester); + + // keep this for later + _version = version; + _parserIdentifier = parserIdentifier; + } + + public void body (String bodyText) + throws Exception + { + int version = Integer.parseInt(bodyText.trim()); + if (version > _version) { + Log.warning(_parserIdentifier + " only knows about version " + + _version + ", but is being asked to parse a file " + + "with version " + version + ". Wackiness may ensue."); + } + } + + protected int _version; + protected String _parserIdentifier; +}