Revert "Adaptresources when using repackaging"
This reverts commit 0aedfb95ccc918a7feba5eabc12aaedb5ea2edbd.
Reason for revert: Build failed
Change-Id: Ibad9d6dd3fb14b7d72e6616ad1517ac13f2a61f1
diff --git a/src/main/java/com/android/tools/r8/dex/ResourceAdapter.java b/src/main/java/com/android/tools/r8/dex/ResourceAdapter.java
index 29987e7..84459b4 100644
--- a/src/main/java/com/android/tools/r8/dex/ResourceAdapter.java
+++ b/src/main/java/com/android/tools/r8/dex/ResourceAdapter.java
@@ -304,8 +304,7 @@
if (getClassNameSeparator() != '/') {
javaPackage = javaPackage.replace(getClassNameSeparator(), '/');
}
- String packageName = appView.graphLens().lookupPackageName(javaPackage);
- String minifiedJavaPackage = namingLens.lookupPackageName(packageName);
+ String minifiedJavaPackage = namingLens.lookupPackageName(javaPackage);
if (!javaPackage.equals(minifiedJavaPackage)) {
outputRangeFromInput(outputFrom, from);
outputJavaType(
diff --git a/src/main/java/com/android/tools/r8/graph/GraphLens.java b/src/main/java/com/android/tools/r8/graph/GraphLens.java
index 8e29bfc..c15db19 100644
--- a/src/main/java/com/android/tools/r8/graph/GraphLens.java
+++ b/src/main/java/com/android/tools/r8/graph/GraphLens.java
@@ -363,8 +363,6 @@
return false;
}
- public abstract String lookupPackageName(String pkg);
-
public abstract DexType lookupClassType(DexType type);
public abstract DexType lookupType(DexType type);
@@ -699,11 +697,6 @@
}
@Override
- public String lookupPackageName(String pkg) {
- return pkg;
- }
-
- @Override
public final DexType lookupType(DexType type) {
if (type.isPrimitiveType() || type.isVoidType() || type.isNullValueType()) {
return type;
@@ -820,11 +813,6 @@
}
@Override
- public String lookupPackageName(String pkg) {
- return pkg;
- }
-
- @Override
public DexType lookupType(DexType type) {
return type;
}
diff --git a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
index eb8f41b..cdfa649 100644
--- a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
+++ b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
@@ -33,6 +33,7 @@
import com.google.common.collect.HashBiMap;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -129,11 +130,11 @@
}
BiMap<DexType, DexType> mappings = HashBiMap.create();
- BiMap<String, String> packageMappings = HashBiMap.create();
+ Set<String> seenPackageDescriptors = new HashSet<>();
ProgramPackageCollection packages =
SortedProgramPackageCollection.createWithAllProgramClasses(appView);
- processPackagesInDesiredLocation(packages, mappings, packageMappings);
- processRemainingPackages(packages, mappings, packageMappings, executorService);
+ processPackagesInDesiredLocation(packages, mappings, seenPackageDescriptors);
+ processRemainingPackages(packages, mappings, seenPackageDescriptors, executorService);
mappings.entrySet().removeIf(entry -> entry.getKey() == entry.getValue());
if (mappings.isEmpty()) {
return null;
@@ -145,7 +146,7 @@
new ArrayList<>(
repackagingTreeFixer.fixupClasses(appView.appInfo().classesWithDeterministicOrder()));
appBuilder.replaceProgramClasses(newProgramClasses);
- RepackagingLens lens = lensBuilder.build(appView, packageMappings);
+ RepackagingLens lens = lensBuilder.build(appView);
new AnnotationFixer(lens).run(appBuilder.getProgramClasses());
return lens;
}
@@ -190,14 +191,14 @@
private void processPackagesInDesiredLocation(
ProgramPackageCollection packages,
BiMap<DexType, DexType> mappings,
- BiMap<String, String> packageMappings) {
+ Set<String> seenPackageDescriptors) {
// For each package that is already in the desired location, record all the classes from the
// package in the mapping for collision detection.
Iterator<ProgramPackage> iterator = packages.iterator();
while (iterator.hasNext()) {
ProgramPackage pkg = iterator.next();
String newPackageDescriptor =
- repackagingConfiguration.getNewPackageDescriptor(pkg, packageMappings.values());
+ repackagingConfiguration.getNewPackageDescriptor(pkg, seenPackageDescriptors);
if (pkg.getPackageDescriptor().equals(newPackageDescriptor)) {
for (DexProgramClass alreadyRepackagedClass : pkg) {
if (!appView.appInfo().isRepackagingAllowed(alreadyRepackagedClass)) {
@@ -207,7 +208,7 @@
for (DexProgramClass alreadyRepackagedClass : pkg) {
processClass(alreadyRepackagedClass, pkg, newPackageDescriptor, mappings);
}
- packageMappings.put(pkg.getPackageDescriptor(), newPackageDescriptor);
+ seenPackageDescriptors.add(newPackageDescriptor);
iterator.remove();
}
}
@@ -216,7 +217,7 @@
private void processRemainingPackages(
ProgramPackageCollection packages,
BiMap<DexType, DexType> mappings,
- BiMap<String, String> packageMappings,
+ Set<String> seenPackageDescriptors,
ExecutorService executorService)
throws ExecutionException {
// For each package, find the set of classes that can be repackaged, and move them to the
@@ -224,22 +225,16 @@
for (ProgramPackage pkg : packages) {
// Already processed packages should have been removed.
String newPackageDescriptor =
- repackagingConfiguration.getNewPackageDescriptor(pkg, packageMappings.values());
+ repackagingConfiguration.getNewPackageDescriptor(pkg, seenPackageDescriptors);
assert !pkg.getPackageDescriptor().equals(newPackageDescriptor);
- Collection<DexProgramClass> classesToRepackage =
+ Iterable<DexProgramClass> classesToRepackage =
computeClassesToRepackage(pkg, executorService);
for (DexProgramClass classToRepackage : classesToRepackage) {
processClass(classToRepackage, pkg, newPackageDescriptor, mappings);
}
- // Package remapping is used for adapting resources. If we cannot repackage all classes in
- // a package then we put in the original descriptor to ensure that resources are not
- // rewritten.
- packageMappings.put(
- pkg.getPackageDescriptor(),
- classesToRepackage.size() == pkg.classesInPackage().size()
- ? newPackageDescriptor
- : pkg.getPackageDescriptor());
+
+ seenPackageDescriptors.add(newPackageDescriptor);
// TODO(b/165783399): Investigate if repackaging can lead to different dynamic dispatch. See,
// for example, CrossPackageInvokeSuperToPackagePrivateMethodTest.
}
@@ -274,24 +269,12 @@
classToRepackage, outerClass, newPackageDescriptor, mappings));
}
- public static class ComputeClassesToRepackageResult {
-
- final boolean canRepackageAll;
- final Iterable<DexProgramClass> classesToRepackage;
-
- public ComputeClassesToRepackageResult(
- boolean canRepackageAll, Iterable<DexProgramClass> classesToRepackage) {
- this.canRepackageAll = canRepackageAll;
- this.classesToRepackage = classesToRepackage;
- }
- }
-
- private Collection<DexProgramClass> computeClassesToRepackage(
+ private Iterable<DexProgramClass> computeClassesToRepackage(
ProgramPackage pkg, ExecutorService executorService) throws ExecutionException {
RepackagingConstraintGraph constraintGraph = new RepackagingConstraintGraph(appView, pkg);
boolean canRepackageAllClasses = constraintGraph.initializeGraph();
if (canRepackageAllClasses) {
- return pkg.classesInPackage();
+ return pkg;
}
constraintGraph.populateConstraints(executorService);
return constraintGraph.computeClassesToRepackage();
diff --git a/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java b/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java
index dd6af4a..ab5b01b 100644
--- a/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java
+++ b/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java
@@ -18,7 +18,6 @@
import com.android.tools.r8.utils.WorkList;
import com.google.common.collect.Sets;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
@@ -173,7 +172,7 @@
}
}
- public Collection<DexProgramClass> computeClassesToRepackage() {
+ public Iterable<DexProgramClass> computeClassesToRepackage() {
WorkList<Node> worklist = WorkList.newIdentityWorkList(pinnedNodes);
while (worklist.hasNext()) {
Node pinnedNode = worklist.next();
diff --git a/src/main/java/com/android/tools/r8/repackaging/RepackagingLens.java b/src/main/java/com/android/tools/r8/repackaging/RepackagingLens.java
index 09910bc..63b8d06 100644
--- a/src/main/java/com/android/tools/r8/repackaging/RepackagingLens.java
+++ b/src/main/java/com/android/tools/r8/repackaging/RepackagingLens.java
@@ -18,19 +18,16 @@
import com.android.tools.r8.utils.collections.MutableBidirectionalOneToOneMap;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
-import java.util.Map;
public class RepackagingLens extends NestedGraphLens {
private final BiMap<DexType, DexType> originalTypes;
- private final Map<String, String> packageRenaming;
private RepackagingLens(
AppView<AppInfoWithLiveness> appView,
BidirectionalOneToOneMap<DexField, DexField> newFieldSignatures,
BidirectionalOneToOneMap<DexMethod, DexMethod> originalMethodSignatures,
- BiMap<DexType, DexType> originalTypes,
- Map<String, String> packageRenaming) {
+ BiMap<DexType, DexType> originalTypes) {
super(
originalTypes.inverse(),
originalMethodSignatures.getInverseOneToOneMap().getForwardMap(),
@@ -39,12 +36,6 @@
appView.graphLens(),
appView.dexItemFactory());
this.originalTypes = originalTypes;
- this.packageRenaming = packageRenaming;
- }
-
- @Override
- public String lookupPackageName(String pkg) {
- return packageRenaming.getOrDefault(getPrevious().lookupPackageName(pkg), pkg);
}
@Override
@@ -106,11 +97,10 @@
originalTypes.put(to, from);
}
- public RepackagingLens build(
- AppView<AppInfoWithLiveness> appView, BiMap<String, String> packageRenamings) {
+ public RepackagingLens build(AppView<AppInfoWithLiveness> appView) {
assert !originalTypes.isEmpty();
return new RepackagingLens(
- appView, newFieldSignatures, originalMethodSignatures, originalTypes, packageRenamings);
+ appView, newFieldSignatures, originalMethodSignatures, originalTypes);
}
}
}
diff --git a/src/test/java/com/android/tools/r8/naming/AdaptResourceFileContentsTest.java b/src/test/java/com/android/tools/r8/naming/AdaptResourceFileContentsTest.java
index 3727423..fb89853 100644
--- a/src/test/java/com/android/tools/r8/naming/AdaptResourceFileContentsTest.java
+++ b/src/test/java/com/android/tools/r8/naming/AdaptResourceFileContentsTest.java
@@ -338,7 +338,6 @@
static class B extends A {
- @Override
public void method() {
System.out.println("In B.method()");
super.method();
diff --git a/src/test/java/com/android/tools/r8/naming/AdaptResourceFileNamesTest.java b/src/test/java/com/android/tools/r8/naming/AdaptResourceFileNamesTest.java
index 85c8459..6a01e83 100644
--- a/src/test/java/com/android/tools/r8/naming/AdaptResourceFileNamesTest.java
+++ b/src/test/java/com/android/tools/r8/naming/AdaptResourceFileNamesTest.java
@@ -4,7 +4,6 @@
package com.android.tools.r8.naming;
-import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
@@ -12,51 +11,50 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.DataDirectoryResource;
import com.android.tools.r8.DataEntryResource;
import com.android.tools.r8.DataResourceConsumer;
import com.android.tools.r8.DataResourceProvider.Visitor;
-import com.android.tools.r8.R8FullTestBuilder;
-import com.android.tools.r8.R8TestBuilder;
-import com.android.tools.r8.R8TestCompileResult;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.ThrowableConsumer;
+import com.android.tools.r8.R8Command;
+import com.android.tools.r8.StringConsumer;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.shaking.forceproguardcompatibility.ProguardCompatibilityTestBase;
+import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.ArchiveResourceProvider;
import com.android.tools.r8.utils.DataResourceConsumerForTesting;
import com.android.tools.r8.utils.FileUtils;
+import com.android.tools.r8.utils.KeepingDiagnosticHandler;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.io.File;
+import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.function.Consumer;
import java.util.stream.Collectors;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class AdaptResourceFileNamesTest extends ProguardCompatibilityTestBase {
- private final TestParameters parameters;
+ private Backend backend;
- @Parameters(name = "{0}")
- public static TestParametersCollection data() {
- return getTestParameters().withAllRuntimesAndApiLevels().build();
+ @Parameterized.Parameters(name = "Backend: {0}")
+ public static Backend[] data() {
+ return ToolHelper.getBackends();
}
- public AdaptResourceFileNamesTest(TestParameters parameters) {
- this.parameters = parameters;
+ public AdaptResourceFileNamesTest(Backend backend) {
+ this.backend = backend;
}
private static final Path CF_DIR =
@@ -65,6 +63,15 @@
Paths.get(ToolHelper.EXAMPLES_BUILD_DIR)
.resolve("adaptresourcefilenames" + FileUtils.JAR_EXTENSION);
+ private KeepingDiagnosticHandler diagnosticsHandler;
+ private ClassNameMapper mapper = null;
+
+ @Before
+ public void reset() {
+ diagnosticsHandler = new KeepingDiagnosticHandler();
+ mapper = null;
+ }
+
private static String getProguardConfig(
boolean enableAdaptResourceFileNames, String adaptResourceFileNamesPathFilter) {
String adaptResourceFilenamesRule;
@@ -79,6 +86,7 @@
return String.join(
System.lineSeparator(),
adaptResourceFilenamesRule,
+ "-keeppackagenames adaptresourcefilenames**",
"-keep class adaptresourcefilenames.TestClass {",
" public static void main(...);",
"}");
@@ -106,38 +114,30 @@
}
@Test
- public void testEnabled() throws Throwable {
+ public void testEnabled() throws Exception {
DataResourceConsumerForTesting dataResourceConsumer = new DataResourceConsumerForTesting();
compileWithR8(
getProguardConfigWithNeverInline(true, null),
dataResourceConsumer,
- R8TestBuilder::enableProguardTestOptions,
- mapper -> {
- checkR8Renamings(mapper);
- // Check that the generated resources have the expected names.
- for (DataEntryResource dataResource : getOriginalDataResources()) {
- ImmutableList<String> object =
- dataResourceConsumer.get(getExpectedRenamingFor(dataResource.getName(), mapper));
- if (object == null) {
- object =
- dataResourceConsumer.get(getExpectedRenamingFor(dataResource.getName(), mapper));
- }
- assertNotNull("Resource not renamed as expected: " + dataResource.getName(), object);
- }
- });
+ ToolHelper.consumeString(this::checkR8Renamings));
+ // Check that the generated resources have the expected names.
+ for (DataEntryResource dataResource : getOriginalDataResources()) {
+ assertNotNull(
+ "Resource not renamed as expected: " + dataResource.getName(),
+ dataResourceConsumer.get(getExpectedRenamingFor(dataResource.getName(), mapper)));
+ }
}
@Test
- public void testEnabledWithFilter() throws Throwable {
+ public void testEnabledWithFilter() throws Exception {
DataResourceConsumerForTesting dataResourceConsumer = new DataResourceConsumerForTesting();
compileWithR8(
getProguardConfigWithNeverInline(true, "**.md"),
dataResourceConsumer,
- R8TestBuilder::enableProguardTestOptions,
- this::checkR8Renamings);
+ ToolHelper.consumeString(this::checkR8Renamings));
// Check that the generated resources have the expected names.
Map<String, String> expectedRenamings =
- ImmutableMap.of("adaptresourcefilenames/B.md", "a/b.md");
+ ImmutableMap.of("adaptresourcefilenames/B.md", "adaptresourcefilenames/b.md");
for (DataEntryResource dataResource : getOriginalDataResources()) {
assertNotNull(
"Resource not renamed as expected: " + dataResource.getName(),
@@ -147,12 +147,9 @@
}
@Test
- public void testDisabled() throws Throwable {
+ public void testDisabled() throws Exception {
DataResourceConsumerForTesting dataResourceConsumer = new DataResourceConsumerForTesting();
- compileWithR8(
- getProguardConfigWithNeverInline(false, null),
- dataResourceConsumer,
- R8TestBuilder::enableProguardTestOptions);
+ compileWithR8(getProguardConfigWithNeverInline(false, null), dataResourceConsumer);
// Check that none of the resources were renamed.
for (DataEntryResource dataResource : getOriginalDataResources()) {
assertNotNull(
@@ -162,25 +159,22 @@
}
@Test
- public void testCollisionBehavior() throws Throwable {
+ public void testCollisionBehavior() throws Exception {
DataResourceConsumerForTesting dataResourceConsumer = new DataResourceConsumerForTesting();
- R8TestCompileResult compileResult =
- compileWithR8(
- getProguardConfigWithNeverInline(true, null),
- dataResourceConsumer,
- builder -> {
- builder.enableProguardTestOptions();
- builder.allowDiagnosticWarningMessages();
- },
- this::checkR8Renamings,
- ImmutableList.<DataEntryResource>builder()
- .addAll(getOriginalDataResources())
- .add(DataEntryResource.fromBytes(new byte[0], "a/b.txt", Origin.unknown()))
- .build());
- compileResult.inspectDiagnosticMessages(
- diagnosticMessages ->
- diagnosticMessages.assertWarningsMatch(
- diagnosticMessage(containsString("Resource 'a/b.txt' already exists."))));
+ compileWithR8(
+ getProguardConfigWithNeverInline(true, null),
+ dataResourceConsumer,
+ ToolHelper.consumeString(this::checkR8Renamings),
+ ImmutableList.<DataEntryResource>builder()
+ .addAll(getOriginalDataResources())
+ .add(
+ DataEntryResource.fromBytes(
+ new byte[0], "adaptresourcefilenames/b.txt", Origin.unknown()))
+ .build());
+ assertEquals(1, diagnosticsHandler.warnings.size());
+ assertThat(
+ diagnosticsHandler.warnings.get(0).getDiagnosticMessage(),
+ containsString("Resource 'adaptresourcefilenames/b.txt' already exists."));
assertEquals(getOriginalDataResources().size(), dataResourceConsumer.size());
}
@@ -249,59 +243,64 @@
.count());
}
- private void compileWithR8(
- String proguardConfig,
- DataResourceConsumer dataResourceConsumer,
- ThrowableConsumer<R8FullTestBuilder> builderConsumer)
- throws Throwable {
- compileWithR8(proguardConfig, dataResourceConsumer, builderConsumer, null);
+ private AndroidApp compileWithR8(String proguardConfig, DataResourceConsumer dataResourceConsumer)
+ throws CompilationFailedException, IOException {
+ return compileWithR8(proguardConfig, dataResourceConsumer, null);
}
- private void compileWithR8(
+ private AndroidApp compileWithR8(
String proguardConfig,
DataResourceConsumer dataResourceConsumer,
- ThrowableConsumer<R8FullTestBuilder> builderConsumer,
- Consumer<ClassNameMapper> proguardMapConsumer)
- throws Throwable {
- compileWithR8(
- proguardConfig,
- dataResourceConsumer,
- builderConsumer,
- proguardMapConsumer,
- getOriginalDataResources());
+ StringConsumer proguardMapConsumer)
+ throws CompilationFailedException, IOException {
+ return compileWithR8(
+ proguardConfig, dataResourceConsumer, proguardMapConsumer, getOriginalDataResources());
}
- private R8TestCompileResult compileWithR8(
+ private AndroidApp compileWithR8(
String proguardConfig,
DataResourceConsumer dataResourceConsumer,
- ThrowableConsumer<R8FullTestBuilder> builderConsumer,
- Consumer<ClassNameMapper> proguardMapConsumer,
+ StringConsumer proguardMapConsumer,
List<DataEntryResource> dataResources)
- throws Throwable {
- R8TestCompileResult compile =
- testForR8(parameters.getBackend())
- .addProgramFiles(ToolHelper.getClassFilesForTestDirectory(CF_DIR))
- .addDataResources(dataResources)
- .addKeepRules(proguardConfig)
- .apply(builderConsumer)
- .setMinApi(parameters.getApiLevel())
- .addOptionsModification(options -> options.dataResourceConsumer = dataResourceConsumer)
- .compile();
- if (proguardMapConsumer != null) {
- compile.inspectProguardMap(
- map -> proguardMapConsumer.accept(ClassNameMapper.mapperFromString(map)));
- }
- return compile;
+ throws CompilationFailedException, IOException {
+ R8Command command =
+ ToolHelper.allowTestProguardOptions(
+ ToolHelper.prepareR8CommandBuilder(
+ getAndroidApp(dataResources), emptyConsumer(backend), diagnosticsHandler)
+ .addProguardConfiguration(ImmutableList.of(proguardConfig), Origin.unknown()))
+ .addLibraryFiles(runtimeJar(backend))
+ .build();
+ return ToolHelper.runR8(
+ command,
+ options -> {
+ options.dataResourceConsumer = dataResourceConsumer;
+ options.proguardMapConsumer = proguardMapConsumer;
+ });
}
- private void checkR8Renamings(ClassNameMapper mapper) {
- // Check that the renamings are as expected. These exact renamings are not important as
- // such, but the test expectations rely on them.
- assertEquals(
- "adaptresourcefilenames.TestClass",
- mapper.deobfuscateClassName("adaptresourcefilenames.TestClass"));
- assertEquals("adaptresourcefilenames.B", mapper.deobfuscateClassName("a.b"));
- assertEquals("adaptresourcefilenames.B$Inner", mapper.deobfuscateClassName("a.a"));
+ private void checkR8Renamings(String proguardMap) {
+ try {
+ // Check that the renamings are as expected. These exact renamings are not important as
+ // such, but the test expectations rely on them.
+ mapper = ClassNameMapper.mapperFromString(proguardMap);
+ assertEquals(
+ "adaptresourcefilenames.TestClass",
+ mapper.deobfuscateClassName("adaptresourcefilenames.TestClass"));
+ assertEquals(
+ "adaptresourcefilenames.B", mapper.deobfuscateClassName("adaptresourcefilenames.b"));
+ assertEquals(
+ "adaptresourcefilenames.B$Inner",
+ mapper.deobfuscateClassName("adaptresourcefilenames.a"));
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private AndroidApp getAndroidApp(List<DataEntryResource> dataResources) throws IOException {
+ AndroidApp.Builder builder = AndroidApp.builder();
+ builder.addProgramFiles(ToolHelper.getClassFilesForTestDirectory(CF_DIR));
+ dataResources.forEach(builder::addDataResource);
+ return builder.build();
}
private static List<DataEntryResource> getOriginalDataResources() {