// Add obj to Content objects list
contents.add((Content)obj);
String subEntryName = "";
if (obj instanceof URLContent) {
URLContent urlContent = (URLContent)obj;
// If content comes from a zipped content
if (urlContent.isJAREntry()) {
String entryName = urlContent.getJAREntryName();
if (urlContent instanceof HomeURLContent) {
int slashIndex = entryName.indexOf('/');
// If content comes from a directory of a home file
if (slashIndex > 0) {
// Retrieve entry name in zipped stream without the directory
subEntryName = entryName.substring(slashIndex);
}
} else if (urlContent instanceof ResourceURLContent) {
ResourceURLContent resourceUrlContent = (ResourceURLContent)urlContent;
if (resourceUrlContent.isMultiPartResource()) {
// If content is a resource coming from a JAR file, retrieve its file name
subEntryName = entryName.substring(entryName.lastIndexOf('/'));
}
} else {
// Retrieve entry name in zipped stream
subEntryName = "/" + entryName;
}
} else if (urlContent instanceof ResourceURLContent) {
ResourceURLContent resourceUrlContent = (ResourceURLContent)urlContent;
// If content is a resource coming from a directory (this should be the case
// only when resource isn't in a JAR file during development), retrieve its file name
if (resourceUrlContent.isMultiPartResource()) {
subEntryName = "/" + new File(resourceUrlContent.getURL().getFile()).getName();
}
}
}
// Return a temporary URL that points to content object
return new URLContent(new URL("jar:file:temp!/" + (contents.size() - 1) + subEntryName));
} else {
return obj;
}
}