aboutsummaryrefslogtreecommitdiffstats
path: root/netx/net/sourceforge/jnlp/cache/UpdatePolicy.java
diff options
context:
space:
mode:
Diffstat (limited to 'netx/net/sourceforge/jnlp/cache/UpdatePolicy.java')
-rw-r--r--netx/net/sourceforge/jnlp/cache/UpdatePolicy.java88
1 files changed, 88 insertions, 0 deletions
diff --git a/netx/net/sourceforge/jnlp/cache/UpdatePolicy.java b/netx/net/sourceforge/jnlp/cache/UpdatePolicy.java
new file mode 100644
index 0000000..157e38c
--- /dev/null
+++ b/netx/net/sourceforge/jnlp/cache/UpdatePolicy.java
@@ -0,0 +1,88 @@
+// Copyright (C) 2002 Jon A. Maxwell (JAM)
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+package net.sourceforge.jnlp.cache;
+
+import java.io.*;
+import java.net.*;
+import java.util.*;
+import java.lang.reflect.*;
+import java.security.*;
+import javax.jnlp.*;
+
+import net.sourceforge.jnlp.*;
+import net.sourceforge.jnlp.runtime.*;
+import net.sourceforge.jnlp.util.*;
+/**
+ * A policy that determines when a resource should be checked for
+ * an updated version.<p>
+ *
+ * @author <a href="mailto:[email protected]">Jon A. Maxwell (JAM)</a> - initial author
+ * @version $Revision: 1.3 $
+ */
+public class UpdatePolicy {
+
+ // todo: implement session updating
+
+ // todo: doesn't seem to work in the same JVM, probably because
+ // Resource is being held by a tracker so it isn't collected;
+ // then next time a tracker adds the resource even if
+ // shouldUpdate==true it's state is already marked
+ // CONNECTED|DOWNLOADED. Let the resource be collected or reset
+ // to UNINITIALIZED.
+
+ public static UpdatePolicy ALWAYS = new UpdatePolicy(0);
+ public static UpdatePolicy SESSION = new UpdatePolicy(-1);
+ public static UpdatePolicy FORCE = new UpdatePolicy(Long.MIN_VALUE);
+ public static UpdatePolicy NEVER = new UpdatePolicy(Long.MAX_VALUE);
+
+ private long timeDiff = -1;
+
+
+ /**
+ * Create a new update policy; this policy always updates the
+ * entry unless the shouldUpdate method is overridden.
+ */
+ public UpdatePolicy() {
+ }
+
+ /**
+ * Create an update policy that only checks a file for being
+ * updated if it has not been checked for longer than the
+ * specified time.
+ *
+ * @param timeDiff how long in ms until update needed
+ */
+ public UpdatePolicy(long timeDiff) {
+ this.timeDiff = timeDiff;
+ }
+
+ /**
+ * Returns whether the resource should be checked for being
+ * up-to-date.
+ */
+ public boolean shouldUpdate(CacheEntry entry) {
+ long updated = entry.getLastUpdated();
+ long current = System.currentTimeMillis();
+
+ if (current - updated >= timeDiff)
+ return true;
+ else
+ return false;
+ }
+
+}