Skip to content

Commit 36cfd78

Browse files
committed
Merge branch 'sizeBasedEviction' into release/2.6
2 parents 85d8652 + 1897454 commit 36cfd78

File tree

4 files changed

+31
-4
lines changed

4 files changed

+31
-4
lines changed

core/org.eclipse.rcptt.core/src/org/eclipse/rcptt/core/persistence/PersistenceManager.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,4 +521,13 @@ public IPersistenceModel getModel(byte[] content, Resource res) {
521521
}
522522
return null;
523523
}
524+
525+
public int cachedSize(Resource res) {
526+
IFile file = WorkspaceSynchronizer.getFile(res);
527+
if (!file.exists() || !file.isSynchronized(IResource.DEPTH_INFINITE)) {
528+
return 0;
529+
}
530+
File fs = file.getLocation().toFile();
531+
return (int) Math.min(fs.length(), Integer.MAX_VALUE);
532+
}
524533
}

core/org.eclipse.rcptt.core/src/org/eclipse/rcptt/core/workspace/RcpttCore.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,9 +283,9 @@ public List<String> getContextReferences(IContext context) {
283283
try {
284284
NamedElement namedElement = context.getNamedElement();
285285
if (namedElement instanceof GroupContext) {
286-
return ((GroupContext) namedElement).getContextReferences();
286+
return copy(((GroupContext) namedElement).getContextReferences());
287287
} else if (namedElement instanceof SuperContext) {
288-
return ((SuperContext) namedElement).getContextReferences();
288+
return copy(((SuperContext) namedElement).getContextReferences());
289289
} else if (namedElement instanceof CapabilityContext) {
290290
final CapabilityContext ccontext = (CapabilityContext) namedElement;
291291
final Set<String> result = new LinkedHashSet<String>();
@@ -529,6 +529,9 @@ public IVerification[] getVerifications(IQ7NamedElement element, List<String> ve
529529

530530
public IContext findContext(IQ7NamedElement element, boolean ignoreErrors,
531531
String contextId, IWorkspaceFinder finder) {
532+
if (finder == null) {
533+
finder = WorkspaceFinder.getInstance();
534+
}
532535
IContext[] context = finder.findContext(element, contextId);
533536
IContext result = null;
534537
if (context != null && context.length > 0) {
@@ -911,4 +914,8 @@ public static String getResourcePath(String id) {
911914
}
912915
return element.getResource().getFullPath().toString();
913916
}
917+
918+
private static <T> List<T> copy(List<T> input) {
919+
return new ArrayList<>(input);
920+
}
914921
}

core/org.eclipse.rcptt.core/src/org/eclipse/rcptt/internal/core/model/Q7ResourceInfo.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@
2525
import org.eclipse.rcptt.core.persistence.plain.PlainTextPersistenceModel;
2626
import org.eclipse.rcptt.core.scenario.NamedElement;
2727
import org.eclipse.rcptt.internal.core.Q7LazyResource;
28+
import org.eclipse.rcptt.internal.core.model.cache.ILRUCacheable;
2829

29-
public class Q7ResourceInfo extends OpenableElementInfo {
30+
public class Q7ResourceInfo extends OpenableElementInfo implements ILRUCacheable {
3031
private final Resource resource;
3132
private NamedElement element;
3233
public long timestamp;
@@ -153,4 +154,14 @@ public Resource getResource() {
153154
public void updatePersistenceModel(IPersistenceModel newModel) {
154155
PersistenceManager.getInstance().replaceModelWith(resource, newModel);
155156
}
157+
158+
@Override
159+
public int getCacheFootprint() {
160+
Resource res = getResource();
161+
if (res == null) {
162+
return 0;
163+
}
164+
165+
return PersistenceManager.getInstance().cachedSize(res);
166+
}
156167
}

core/org.eclipse.rcptt.core/src/org/eclipse/rcptt/internal/core/model/cache/ModelCache.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class ModelCache {
2323

2424
// public static final int DEFAULT_PKG_SIZE = 500; // average 1782 bytes per
2525

26-
public static final int DEFAULT_OPENABLE_SIZE = 100; // average 6629
26+
public static final int DEFAULT_OPENABLE_SIZE = 10000; // average 6629
2727

2828
public static final int DEFAULT_CHILDREN_SIZE = 100 * 20; // average 20
2929

0 commit comments

Comments
 (0)