// this will add shadows manually for all registered reposes
// changes in master should propagate to shadows
addShadowReposes();
// get some content to masters
StorageItem item =
getRootRouter()
.retrieveItem(
new ResourceStoreRequest("/repositories/repo1/activemq/activemq-core/1.2/activemq-core-1.2.jar",
false)
);
checkForFileAndMatchContents(item);
item =
getRootRouter().retrieveItem(
new ResourceStoreRequest("/repositories/repo2/xstream/xstream/1.2.2/xstream-1.2.2.pom", false));
checkForFileAndMatchContents(item);
// we will check stuff on M1 places but,
// we will get links as responses, since shadow reposes contains links only
getRootRouter().setFollowLinks(false);
getApplicationConfiguration().saveConfiguration();
item =
getRootRouter().retrieveItem(
new ResourceStoreRequest("/repositories/repo1-m1/activemq/jars/activemq-core-1.2.jar", false));
assertTrue(StorageLinkItem.class.isAssignableFrom(item.getClass()));
item =
getRootRouter().retrieveItem(
new ResourceStoreRequest("/repositories/repo2-m1/xstream/poms/xstream-1.2.2.pom", false));
assertTrue(StorageLinkItem.class.isAssignableFrom(item.getClass()));
// and now we will force the router itself to resolve links
// and will expect the original contents
getRootRouter().setFollowLinks(true);
getApplicationConfiguration().saveConfiguration();
item =
getRootRouter().retrieveItem(
new ResourceStoreRequest("/repositories/repo1-m1/activemq/jars/activemq-core-1.2.jar", false));
// it comes from repo1 even if we requested it from repo1-m1
assertTrue("repo1".equals(item.getRepositoryId()));
// and the content is correct
checkForFileAndMatchContents(item);
item =
getRootRouter().retrieveItem(
new ResourceStoreRequest("/repositories/repo2-m1/xstream/poms/xstream-1.2.2.pom", false));
// it comes from repo1 even if we requested it from repo1-m1
assertTrue("repo2".equals(item.getRepositoryId()));
// and the content is correct
checkForFileAndMatchContents(item);
}