Fixes.
1.1 --- a/dew4nb/src/org/netbeans/modules/dew4nb/SourceProvider.java Thu Feb 06 10:06:55 2014 +0100
1.2 +++ b/dew4nb/src/org/netbeans/modules/dew4nb/SourceProvider.java Thu Feb 06 14:59:25 2014 +0100
1.3 @@ -70,7 +70,6 @@
1.4 import org.openide.loaders.DataObjectNotFoundException;
1.5 import org.openide.text.NbDocument;
1.6 import org.openide.util.Exceptions;
1.7 -import org.openide.util.Lookup;
1.8 import org.openide.util.Parameters;
1.9 import org.openide.util.Utilities;
1.10
1.11 @@ -89,7 +88,6 @@
1.12 //@GuardedBy("retain")
1.13 private final Map<FileObject, Reference<Source>> retain
1.14 = Collections.synchronizedMap(new LinkedHashMap <FileObject,Reference<Source>>());
1.15 -
1.16
1.17
1.18 private SourceProvider() {
1.19 @@ -130,8 +128,8 @@
1.20 if (r == null || (src = r.get()) == null) {
1.21 src = Source.create(file);
1.22 r = tmpFile ?
1.23 - new WR (src) :
1.24 - new SR (src, retain);
1.25 + new SR (src, retain) :
1.26 + new WR (src, retain);
1.27 retain.put(file, r);
1.28 }
1.29 update(src, content, tmpFile);
1.30 @@ -216,56 +214,10 @@
1.31
1.32
1.33
1.34 - private static final class WR extends SoftReference<Source> implements Runnable {
1.35 + private static final class SR extends SoftReference<Source> implements Runnable {
1.36 private final FileObject file;
1.37 + private final Map<FileObject, Reference<Source>> active;
1.38
1.39 - WR(@NonNull final Source src) {
1.40 - super(src, Utilities.activeReferenceQueue());
1.41 - this.file = src.getFileObject();
1.42 - if (this.file == null) {
1.43 - throw new IllegalArgumentException("No file for Source:" + src); //NOI18N
1.44 - }
1.45 - }
1.46 -
1.47 - @Override
1.48 - public int hashCode() {
1.49 - return file.hashCode();
1.50 - }
1.51 -
1.52 - @Override
1.53 - public boolean equals(@NullAllowed final Object obj) {
1.54 - if (obj == this) {
1.55 - return true;
1.56 - }
1.57 - if (!(obj instanceof SR)) {
1.58 - return false;
1.59 - }
1.60 - return ((SR)obj).file.equals(this.file);
1.61 - }
1.62 -
1.63 - @Override
1.64 - public void run() {
1.65 - LOG.log(
1.66 - Level.FINE,
1.67 - "Clearing cache for temporary file: {0}", //NOI18N
1.68 - FileUtil.getFileDisplayName(this.file));
1.69 - try {
1.70 - this.file.delete();
1.71 - } catch (IOException ex) {
1.72 - LOG.log(
1.73 - Level.WARNING,
1.74 - "Cannot delete: {0}", //NOI18N
1.75 - FileUtil.getFileDisplayName(file));
1.76 - }
1.77 - }
1.78 - }
1.79 -
1.80 - private static final class SR extends WeakReference<Source> implements Runnable {
1.81 -
1.82 - private final FileObject file;
1.83 - private final Map<FileObject,Reference<Source>> active;
1.84 -
1.85 -
1.86 SR(
1.87 @NonNull final Source src,
1.88 @NonNull final Map<FileObject, Reference<Source>> active) {
1.89 @@ -298,11 +250,61 @@
1.90 public void run() {
1.91 LOG.log(
1.92 Level.FINE,
1.93 - "Clearing cache for permanent file: {0}", //NOI18N
1.94 + "Clearing cache for temporary file: {0}", //NOI18N
1.95 FileUtil.getFileDisplayName(this.file));
1.96 - synchronized (active) {
1.97 - active.remove(this.file);
1.98 + active.remove(this.file);
1.99 + try {
1.100 + this.file.delete();
1.101 + } catch (IOException ex) {
1.102 + LOG.log(
1.103 + Level.WARNING,
1.104 + "Cannot delete: {0}", //NOI18N
1.105 + FileUtil.getFileDisplayName(file));
1.106 }
1.107 }
1.108 }
1.109 +
1.110 + private static final class WR extends WeakReference<Source> implements Runnable {
1.111 +
1.112 + private final FileObject file;
1.113 + private final Map<FileObject,Reference<Source>> active;
1.114 +
1.115 +
1.116 + WR(
1.117 + @NonNull final Source src,
1.118 + @NonNull final Map<FileObject, Reference<Source>> active) {
1.119 + super(src, Utilities.activeReferenceQueue());
1.120 + this.file = src.getFileObject();
1.121 + if (this.file == null) {
1.122 + throw new IllegalArgumentException("No file for Source:" + src); //NOI18N
1.123 + }
1.124 + Parameters.notNull("active", active);
1.125 + this.active = active;
1.126 + }
1.127 +
1.128 + @Override
1.129 + public int hashCode() {
1.130 + return file.hashCode();
1.131 + }
1.132 +
1.133 + @Override
1.134 + public boolean equals(@NullAllowed final Object obj) {
1.135 + if (obj == this) {
1.136 + return true;
1.137 + }
1.138 + if (!(obj instanceof WR)) {
1.139 + return false;
1.140 + }
1.141 + return ((WR)obj).file.equals(this.file);
1.142 + }
1.143 +
1.144 + @Override
1.145 + public void run() {
1.146 + LOG.log(
1.147 + Level.FINE,
1.148 + "Clearing cache for permanent file: {0}", //NOI18N
1.149 + FileUtil.getFileDisplayName(this.file));
1.150 + active.remove(this.file);
1.151 + }
1.152 + }
1.153 }