001 /** 002 * 003 * Licensed to the Apache Software Foundation (ASF) under one or more 004 * contributor license agreements. See the NOTICE file distributed with 005 * this work for additional information regarding copyright ownership. 006 * The ASF licenses this file to You under the Apache License, Version 2.0 007 * (the "License"); you may not use this file except in compliance with 008 * the License. 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 package org.apache.geronimo.system.plugin; 019 020 import org.apache.geronimo.kernel.repository.Version; 021 022 /** 023 * SnapshotVersion is like Version but holds extra fields that appear in the 024 * filename of a snapshot artifact. The toString() method is not overriden 025 * because the super implementation produces the correct string for navigating 026 * the directory structure of a plugin repository. The extra fields maintained 027 * in this class are needed for constructing the filename portion of a URL for a 028 * snapshot artifact where the qualifier and build number are replaced with a 029 * snapshot timestamp and build number. 030 * 031 * @version $Revision: 470597 $ $Date: 2006-11-02 15:30:55 -0800 (Thu, 02 Nov 2006) $ 032 * 033 */ 034 public class SnapshotVersion extends Version { 035 private static final long serialVersionUID = -4165276456639945508L; 036 037 private Integer buildNumber; 038 039 private String timestamp; 040 041 public SnapshotVersion(Version version) { 042 super(version.toString()); 043 } 044 045 public SnapshotVersion(String version) { 046 super(version); 047 } 048 049 public int getBuildNumber() { 050 return buildNumber != null ? buildNumber.intValue() : 0; 051 } 052 053 public void setBuildNumber(int buildNumber) { 054 this.buildNumber = new Integer(buildNumber); 055 } 056 057 public String getTimestamp() { 058 return timestamp; 059 } 060 061 public void setTimestamp(String timestamp) { 062 this.timestamp = timestamp; 063 } 064 065 public boolean equals(Object other) { 066 if (super.equals(other)) { 067 if (other instanceof SnapshotVersion) { 068 SnapshotVersion v = (SnapshotVersion) other; 069 if (buildNumber == null ? v.buildNumber != null : !buildNumber.equals(v.buildNumber)) { 070 return false; 071 } 072 if (timestamp == null ? v.timestamp != null : !timestamp.equals(v.timestamp)) { 073 return false; 074 } 075 return true; 076 } 077 } 078 return false; 079 } 080 081 public int hashCode() { 082 int hashCode = super.hashCode(); 083 if (buildNumber != null) { 084 hashCode = 37 * hashCode + buildNumber.hashCode(); 085 } 086 if (timestamp != null) { 087 hashCode = 37 * hashCode + timestamp.hashCode(); 088 } 089 return hashCode; 090 } 091 }