001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 /* 019 * $Id: Version.java 477252 2006-11-20 16:52:00Z minchau $ 020 */ 021 package org.apache.xml.serializer; 022 023 /** 024 * Administrative class to keep track of the version number of 025 * the Serializer release. 026 * <P>This class implements the upcoming standard of having 027 * org.apache.project-name.Version.getVersion() be a standard way 028 * to get version information.</P> 029 * @xsl.usage general 030 */ 031 public final class Version 032 { 033 034 /** 035 * Get the basic version string for the current Serializer. 036 * Version String formatted like 037 * <CODE>"<B>Serializer</B> <B>Java</B> v.r[.dd| <B>D</B>nn]"</CODE>. 038 * 039 * Futurework: have this read version info from jar manifest. 040 * 041 * @return String denoting our current version 042 */ 043 public static String getVersion() 044 { 045 return getProduct()+" "+getImplementationLanguage()+" " 046 +getMajorVersionNum()+"."+getReleaseVersionNum()+"." 047 +( (getDevelopmentVersionNum() > 0) ? 048 ("D"+getDevelopmentVersionNum()) : (""+getMaintenanceVersionNum())); 049 } 050 051 /** 052 * Print the processor version to the command line. 053 * 054 * @param argv command line arguments, unused. 055 */ 056 public static void main(String argv[]) 057 { 058 System.out.println(getVersion()); 059 } 060 061 /** 062 * Name of product: Serializer. 063 */ 064 public static String getProduct() 065 { 066 return "Serializer"; 067 } 068 069 /** 070 * Implementation Language: Java. 071 */ 072 public static String getImplementationLanguage() 073 { 074 return "Java"; 075 } 076 077 078 /** 079 * Major version number. 080 * Version number. This changes only when there is a 081 * significant, externally apparent enhancement from 082 * the previous release. 'n' represents the n'th 083 * version. 084 * 085 * Clients should carefully consider the implications 086 * of new versions as external interfaces and behaviour 087 * may have changed. 088 */ 089 public static int getMajorVersionNum() 090 { 091 return 2; 092 093 } 094 095 /** 096 * Release Number. 097 * Release number. This changes when: 098 * - a new set of functionality is to be added, eg, 099 * implementation of a new W3C specification. 100 * - API or behaviour change. 101 * - its designated as a reference release. 102 */ 103 public static int getReleaseVersionNum() 104 { 105 return 7; 106 } 107 108 /** 109 * Maintenance Drop Number. 110 * Optional identifier used to designate maintenance 111 * drop applied to a specific release and contains 112 * fixes for defects reported. It maintains compatibility 113 * with the release and contains no API changes. 114 * When missing, it designates the final and complete 115 * development drop for a release. 116 */ 117 public static int getMaintenanceVersionNum() 118 { 119 return 1; 120 } 121 122 /** 123 * Development Drop Number. 124 * Optional identifier designates development drop of 125 * a specific release. D01 is the first development drop 126 * of a new release. 127 * 128 * Development drops are works in progress towards a 129 * compeleted, final release. A specific development drop 130 * may not completely implement all aspects of a new 131 * feature, which may take several development drops to 132 * complete. At the point of the final drop for the 133 * release, the D suffix will be omitted. 134 * 135 * Each 'D' drops can contain functional enhancements as 136 * well as defect fixes. 'D' drops may not be as stable as 137 * the final releases. 138 */ 139 public static int getDevelopmentVersionNum() 140 { 141 try { 142 if ((new String("")).length() == 0) 143 return 0; 144 else 145 return Integer.parseInt(""); 146 } catch (NumberFormatException nfe) { 147 return 0; 148 } 149 } 150 }