use of com.ibm.dtfj.corereaders.ICoreFileReader in project openj9 by eclipse.
the class DTFJLibraryAdapter method getLibraryList.
public ArrayList<String> getLibraryList(final File coreFile) {
if (moduleNames == null) {
moduleNames = new ArrayList<String>();
try {
_parentDir = coreFile.getParentFile();
logger.fine("Creating DTFJ core file reader");
ClosingFileReader closingFile = new ClosingFileReader(coreFile);
ICoreFileReader reader = DumpFactory.createDumpForCore(closingFile);
isAIX = (reader instanceof NewAixDump);
logger.fine("Extracting modules");
reader.extract(this);
} catch (FileNotFoundException e) {
logger.log(SEVERE, "Could not open core file " + coreFile.getAbsolutePath(), e);
errorMessages.add(e.getMessage());
} catch (IOException e) {
logger.log(SEVERE, "Error processing core file " + coreFile.getAbsolutePath(), e);
errorMessages.add(e.getMessage());
}
}
return moduleNames;
}
use of com.ibm.dtfj.corereaders.ICoreFileReader in project openj9 by eclipse.
the class DTFJLibraryAdapter method isLibraryCollectionRequired.
public boolean isLibraryCollectionRequired(File coreFile) {
ICoreFileReader reader = null;
try {
ClosingFileReader closingFile = new ClosingFileReader(coreFile);
reader = DumpFactory.createDumpForCore(closingFile);
} catch (Exception e) {
logger.log(SEVERE, "Could not determine if library collection is required for " + coreFile.getAbsolutePath(), e);
errorMessages.add(e.getMessage());
// if this fails, then so would any collection attempt as well
return false;
}
if (reader instanceof NewElfDump) {
return true;
}
if (reader instanceof NewAixDump) {
return true;
}
return false;
}
use of com.ibm.dtfj.corereaders.ICoreFileReader in project openj9 by eclipse.
the class DTFJImageFactory method getImage.
private ReleasingImage getImage(File imageFile, InputStream metadata, IFileLocationResolver resolver) throws IOException {
ClosingFileReader reader = new ClosingFileReader(imageFile);
ICoreFileReader core = DumpFactory.createDumpForCore(reader);
XMLIndexReader indexData = new XMLIndexReader();
// CMVC 154851 : pass the metadata stream through the new XML cleanup class
XMLInputStream in = new XMLInputStream(metadata);
ReleasingImage image = indexData.parseIndexWithDump(in, core, reader, resolver);
image.addReleasable(in);
image.addReleasable(reader);
image.addReleasable(core);
if (resolver instanceof ResourceReleaser) {
image.addReleasable((ResourceReleaser) resolver);
}
return image;
}
use of com.ibm.dtfj.corereaders.ICoreFileReader in project openj9 by eclipse.
the class DTFJImageFactory method getImage.
public Image getImage(final ImageInputStream in, final ImageInputStream meta, URI sourceID) throws IOException {
/*
* Legacy core readers implement the ImageInputStream interface, but are backed by an implementation which
* is based around reading bytes directly from the stream without honouring the ByteOrder setting of the stream.
* This has the consequence that the readers expect all streams passes to them to be in BIG_ENDIAN order and
* then internally provide wrapper classes when LITTLE_ENDIAN is required. This is why the stream being
* passed has it's byte order fixed to BIG_ENDIAN.
*/
in.setByteOrder(ByteOrder.BIG_ENDIAN);
ICoreFileReader core = DumpFactory.createDumpForCore(in);
XMLIndexReader indexData = new XMLIndexReader();
// downcast the image input stream to an input stream
InputStream stream = new InputStream() {
@Override
public int read() throws IOException {
return meta.read();
}
};
// CMVC 154851 : pass the metadata stream through the new XML cleanup class
XMLInputStream xmlstream = new XMLInputStream(stream);
IFileLocationResolver resolver = null;
File source = null;
if ((sourceID.getFragment() != null) && (sourceID.getFragment().length() != 0)) {
// need to strip any fragments from the URI which point to the core in the zip file
try {
URI uri = new URI(sourceID.getScheme() + "://" + sourceID.getPath());
source = new File(uri);
} catch (URISyntaxException e) {
// if the URL cannot be constructed then assume it does not point to a file
}
} else {
source = new File(sourceID);
}
if (source.exists()) {
if (FileManager.isArchive(source)) {
ZipFile zip = new ZipFile(source);
resolver = new ZipExtractionResolver(zip);
} else {
resolver = new DefaultFileLocationResolver(source.getParentFile());
}
}
ReleasingImage image = indexData.parseIndexWithDump(xmlstream, core, in, resolver);
// close access to the XML file as we won't be needing it again
meta.close();
// because the IIS is used to derive the core reader only the reader needs to be added as a ReleasingResource
image.addReleasable(core);
if (image instanceof com.ibm.dtfj.image.j9.Image) {
((com.ibm.dtfj.image.j9.Image) image).SetSource(sourceID);
}
return image;
}
Aggregations