001 // Copyright 2004, 2005 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014 package org.apache.tapestry.asset;
015
016
017 /**
018 * Wrapper around cached asset resource.
019 *
020 * @author jkuhnert
021 */
022 public class CachedAsset
023 {
024
025 /**
026 * The raw data for this resource.
027 */
028 private byte[] _data;
029
030 /**
031 * The gzipped version of the raw data.
032 */
033 private byte[] _gzipData;
034
035 /**
036 * Path to the resource.
037 */
038 private String _path;
039
040 /**
041 * The last known modification time of the data this cached object
042 * represents. Is used to invalidate cache entries.
043 */
044 private long _lastModified;
045
046 /**
047 * Creates a new cachable asset entry.
048 *
049 * @param path
050 * The path string of the resource.
051 * @param lastModified
052 * The last known modification time of the data this cached object
053 * represents. Is used to invalidate cache entries.
054 * @param data
055 * The data representation to cache.
056 * @param gzipData
057 * The optional gzip'ed data.
058 */
059 public CachedAsset(String path, long lastModified, byte[] data, byte[] gzipData)
060 {
061 _path = path;
062 _lastModified = lastModified;
063 _data = data;
064 _gzipData = gzipData;
065 }
066
067 /**
068 * @return Returns the data.
069 */
070 public byte[] getData()
071 {
072 return _data;
073 }
074
075 /**
076 * @param data The data to set.
077 */
078 public void setData(byte[] data)
079 {
080 _data = data;
081 }
082
083
084 /**
085 * @return Returns the gzipData.
086 */
087 public byte[] getGzipData()
088 {
089 return _gzipData;
090 }
091
092
093 /**
094 * @param gzipData The gzipData to set.
095 */
096 public void setGzipData(byte[] gzipData)
097 {
098 _gzipData = gzipData;
099 }
100
101
102 /**
103 * @return Returns the path.
104 */
105 public String getPath()
106 {
107 return _path;
108 }
109
110 /**
111 * @return Returns the lastModified.
112 */
113 public long getLastModified()
114 {
115 return _lastModified;
116 }
117
118 /**
119 * Clears the currently cached data and resets the last modified time.
120 *
121 * @param lastModified The lastModified to set.
122 */
123 public void clear(long lastModified)
124 {
125 _lastModified = lastModified;
126 _data = null;
127 _gzipData = null;
128 }
129
130 /**
131 * {@inheritDoc}
132 */
133 public int hashCode()
134 {
135 final int prime = 31;
136 int result = 1;
137 result = prime * result + ((_path == null) ? 0 : _path.hashCode());
138 return result;
139 }
140
141 /**
142 * {@inheritDoc}
143 */
144 public boolean equals(Object obj)
145 {
146 if (this == obj) return true;
147 if (obj == null) return false;
148 if (getClass() != obj.getClass()) return false;
149 final CachedAsset other = (CachedAsset) obj;
150 if (_path == null) {
151 if (other._path != null) return false;
152 } else if (!_path.equals(other._path)) return false;
153 return true;
154 }
155
156 /**
157 * {@inheritDoc}
158 */
159 public String toString()
160 {
161 String ret = "CachedAsset [path: " + _path;
162
163 if (_data != null)
164 ret += ", data size(bytes): " + _data.length;
165 if (_gzipData != null)
166 ret += ", gzip data size(bytes): " + _gzipData.length;
167
168 ret += ", lastModified(ms): " + _lastModified + "]";
169
170 return ret;
171 }
172 }