19f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
29f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one
39f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * or more contributor license agreements. See the NOTICE file
49f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed with this work for additional information
59f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * regarding copyright ownership. The ASF licenses this file
69f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to you under the Apache License, Version 2.0 (the  "License");
79f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * you may not use this file except in compliance with the License.
89f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * You may obtain a copy of the License at
99f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *     http://www.apache.org/licenses/LICENSE-2.0
119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Unless required by applicable law or agreed to in writing, software
139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * See the License for the specific language governing permissions and
169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * limitations under the License.
179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * $Id: Version.java 477252 2006-11-20 16:52:00Z minchau $
209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xml.serializer;
229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/**
249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Administrative class to keep track of the version number of
259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the Serializer release.
269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <P>This class implements the upcoming standard of having
279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * org.apache.project-name.Version.getVersion() be a standard way
289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to get version information.</P>
299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @xsl.usage general
309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic final class Version
329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{
339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the basic version string for the current Serializer.
369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Version String formatted like
379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * <CODE>"<B>Serializer</B> <B>Java</B> v.r[.dd| <B>D</B>nn]"</CODE>.
389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Futurework: have this read version info from jar manifest.
409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return String denoting our current version
429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public static String getVersion()
449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     return getProduct()+" "+getImplementationLanguage()+" "
469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           +getMajorVersionNum()+"."+getReleaseVersionNum()+"."
479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           +( (getDevelopmentVersionNum() > 0) ?
489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson               ("D"+getDevelopmentVersionNum()) : (""+getMaintenanceVersionNum()));
499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Print the processor version to the command line.
539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param argv command line arguments, unused.
559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public static void main(String argv[])
579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    System.out.println(getVersion());
599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Name of product: Serializer.
639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public static String getProduct()
659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return "Serializer";
679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Implementation Language: Java.
719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public static String getImplementationLanguage()
739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return "Java";
759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Major version number.
809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Version number. This changes only when there is a
819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          significant, externally apparent enhancement from
829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          the previous release. 'n' represents the n'th
839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          version.
849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          Clients should carefully consider the implications
869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          of new versions as external interfaces and behaviour
879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          may have changed.
889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public static int getMajorVersionNum()
909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return 2;
929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Release Number.
979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Release number. This changes when:
989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *            -  a new set of functionality is to be added, eg,
999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *               implementation of a new W3C specification.
1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *            -  API or behaviour change.
1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *            -  its designated as a reference release.
1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public static int getReleaseVersionNum()
1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return 7;
1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Maintenance Drop Number.
1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Optional identifier used to designate maintenance
1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          drop applied to a specific release and contains
1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          fixes for defects reported. It maintains compatibility
1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          with the release and contains no API changes.
1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          When missing, it designates the final and complete
1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          development drop for a release.
1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public static int getMaintenanceVersionNum()
1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return 1;
1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Development Drop Number.
1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Optional identifier designates development drop of
1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          a specific release. D01 is the first development drop
1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          of a new release.
1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          Development drops are works in progress towards a
1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          compeleted, final release. A specific development drop
1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          may not completely implement all aspects of a new
1319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          feature, which may take several development drops to
1329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          complete. At the point of the final drop for the
1339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          release, the D suffix will be omitted.
1349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          Each 'D' drops can contain functional enhancements as
1369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          well as defect fixes. 'D' drops may not be as stable as
1379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          the final releases.
1389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public static int getDevelopmentVersionNum()
1409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    try {
1429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if ((new String("")).length() == 0)
1439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          return 0;
1449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        else
1459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          return Integer.parseInt("");
1469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    } catch (NumberFormatException nfe) {
1479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           return 0;
1489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
1499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson}
151