FileUtils.copyDirectory(getTestResourceAsFile("storage/"), storageWorkDir);
// now setup all the attributes
File attributesInfo = getTestResourceAsFile("attributes.info");
final Marshaller marshaller = new JacksonJSONMarshaller();
final long now = System.currentTimeMillis();
try (BufferedReader reader = new BufferedReader(new FileReader(attributesInfo))) {
String line = reader.readLine();
while (line != null) {
final String[] parts = line.split(" ");
final String repoFilePart = parts[0];
final String repoId = repoFilePart.substring(0, repoFilePart.indexOf('/'));
final String filePart = repoFilePart.substring(repoFilePart.indexOf('/'), repoFilePart.length());
long offset = TimeUnit.DAYS.toMillis(Long.parseLong(parts[1]));
// get the file
File itemFile = new File(storageWorkDir, repoFilePart);
if (itemFile.isFile()) {
this.pathMap.put(repoFilePart, Integer.parseInt(parts[1]));
/*
* groups are not checked, so the hashes are left behind, see: NEXUS-3026
*/
if (repoFilePart.startsWith("releases/") || repoFilePart.startsWith("releases-m1/")
|| repoFilePart.startsWith("public/") || repoFilePart.startsWith("snapshots/")
|| repoFilePart.startsWith("thirdparty/") || repoFilePart.contains(".meta")
|| repoFilePart.contains(".index")) {
neverDeleteFiles.add(repoFilePart);
}
// modify the file corresponding attribute
final File attributeFile = new File(new File(new File(storageWorkDir, repoId), ".nexus/attributes"), filePart);
Attributes attributes;
try (FileInputStream in = new FileInputStream(attributeFile)) {
attributes = marshaller.unmarshal(in);
}
// set new value
attributes.setLastRequested(now + offset);
// write it out
try (FileOutputStream out = new FileOutputStream(attributeFile)) {
marshaller.marshal(attributes, out);
}
}
line = reader.readLine();
}