001 /**
002 * ================================================
003 * LibLoader : a free Java resource loading library
004 * ================================================
005 *
006 * Project Info: http://reporting.pentaho.org/libloader/
007 *
008 * (C) Copyright 2006, by Pentaho Corporation and Contributors.
009 *
010 * This library is free software; you can redistribute it and/or modify it under the terms
011 * of the GNU Lesser General Public License as published by the Free Software Foundation;
012 * either version 2.1 of the License, or (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
015 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016 * See the GNU Lesser General Public License for more details.
017 *
018 * You should have received a copy of the GNU Lesser General Public License along with this
019 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
020 * Boston, MA 02111-1307, USA.
021 *
022 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
023 * in the United States and other countries.]
024 *
025 *
026 * ------------
027 * $Id: SimpleResource.java 3520 2007-10-16 10:34:47Z tmorgner $
028 * ------------
029 * (C) Copyright 2006, by Pentaho Corporation.
030 */
031 package org.jfree.resourceloader;
032
033 /**
034 * A simple resource with only a single dependency.
035 *
036 * @author Thomas Morgner
037 */
038 public class SimpleResource implements Resource
039 {
040 private Object value;
041 private ResourceKey key;
042 private long version;
043
044 public SimpleResource(final ResourceKey key,
045 final Object value,
046 final long version)
047 {
048 if (key == null)
049 {
050 throw new NullPointerException();
051 }
052 this.value = value;
053 this.key = key;
054 this.version = version;
055 }
056
057 public Object getResource()
058 {
059 return value;
060 }
061
062 public long getVersion(final ResourceKey key)
063 {
064 if (key.equals(this.key))
065 {
066 return version;
067 }
068 // -1 is the placeholder for: not known.
069 return -1;
070 }
071
072 /**
073 * The primary source is also included in this set. The dependencies are given
074 * as ResourceKey objects. The keys itself do not hold any state information.
075 * <p/>
076 * The dependencies do not track deep dependencies. So if Resource A depends
077 * on Resource B which depends on Resource C, then A only knows about B, not
078 * C.
079 *
080 * @return
081 */
082 public ResourceKey[] getDependencies()
083 {
084 return new ResourceKey[]{getSource()};
085 }
086
087 public ResourceKey getSource()
088 {
089 return key;
090 }
091 }