Search in sources :

Example 1 with IImageBuilder

use of com.ibm.dtfj.javacore.builder.IImageBuilder in project openj9 by eclipse.

the class ParserController method parse.

/**
 * Support for one image builder parsing javacore data for only one runtime.
 * Multiple runtime support will require overriding this method in a subclass.
 */
public Image parse(IScannerManager scannerManager) throws ParserException {
    ILookAheadBuffer lookAhead = scannerManager.getLookAheadBuffer();
    // For error reporting
    StringBuffer sb = new StringBuffer();
    try {
        for (int i = 1; i <= 2 && i <= lookAhead.maxDepth(); ++i) {
            IParserToken token = lookAhead.lookAhead(i);
            if (token != null) {
                sb.append(token.getValue());
            }
        }
    } catch (IOException e) {
    } catch (IndexOutOfBoundsException e) {
    } catch (ScannerException e) {
        throw new ParserException(e);
    }
    // Don't get too much data
    sb.setLength(Math.min(300, sb.length()));
    String first = sb.toString();
    IImageBuilder imageBuilder = null;
    try {
        imageBuilder = generateImageBuilder();
    } catch (BuilderFailureException e) {
        throw new ParserException(e);
    }
    boolean anyMatched = false;
    try {
        lookAhead.init();
        for (Iterator it = fFramework.iterator(); it.hasNext(); ) {
            processUnknownData(lookAhead);
            ISectionParser sectionParser = (ISectionParser) it.next();
            sectionParser.readIntoDTFJ(lookAhead, imageBuilder);
            /*
				 * Retrieve the error log.
				 */
            Iterator errors = sectionParser.getErrors();
            if ((fListener != null) && errors.hasNext()) {
                while (errors.hasNext()) {
                    fListener.handleEvent(errors.next().toString());
                }
            }
            anyMatched |= sectionParser.anyMatched();
        }
    } catch (IOException e) {
        /*
			 * If IO exception encountered, parser may have reached a non-recoverable state, so for now no
			 * point in continuing the parsing process.
			 */
        e.printStackTrace();
    } catch (RuntimeException e) {
        /*
			 * For internal tracing purposes (Eclipse catches runtime exceptions,
			 * and they get hard to track even with the eclipse error log view).
			 */
        e.printStackTrace();
        throw e;
    } catch (ScannerException e) {
        throw new ParserException(e);
    }
    if (!anyMatched) {
        throw new ParserException("Not a javacore file. First line: " + first);
    }
    return imageBuilder.getImage();
}
Also used : ParserException(com.ibm.dtfj.javacore.parser.framework.parser.ParserException) ISectionParser(com.ibm.dtfj.javacore.parser.framework.parser.ISectionParser) ILookAheadBuffer(com.ibm.dtfj.javacore.parser.framework.parser.ILookAheadBuffer) IOException(java.io.IOException) ScannerException(com.ibm.dtfj.javacore.parser.framework.scanner.ScannerException) BuilderFailureException(com.ibm.dtfj.javacore.builder.BuilderFailureException) IParserToken(com.ibm.dtfj.javacore.parser.framework.scanner.IParserToken) Iterator(java.util.Iterator) IImageBuilder(com.ibm.dtfj.javacore.builder.IImageBuilder)

Example 2 with IImageBuilder

use of com.ibm.dtfj.javacore.builder.IImageBuilder in project openj9 by eclipse.

the class ParserController method generateImageBuilder.

/**
 * @throws BuilderFailureException
 */
private IImageBuilder generateImageBuilder() throws BuilderFailureException {
    IImageBuilder imageBuilder = fImageBuilderFactory.generateImageBuilder(DEFAULT_IMAGE_BUILDER);
    IImageAddressSpaceBuilder addressSpace = imageBuilder.generateAddressSpaceBuilder(DEFAULT_IMAGE_ADDRESS_SPACE_BUILDER);
    IImageProcessBuilder processBuilder = addressSpace.generateImageProcessBuilder(DEFAULT_IMAGE_PROCESS_BUILDER);
    processBuilder.generateJavaRuntimeBuilder(DEFAULT_JAVA_RUNTIME_BUILDER);
    return imageBuilder;
}
Also used : IImageAddressSpaceBuilder(com.ibm.dtfj.javacore.builder.IImageAddressSpaceBuilder) IImageProcessBuilder(com.ibm.dtfj.javacore.builder.IImageProcessBuilder) IImageBuilder(com.ibm.dtfj.javacore.builder.IImageBuilder)

Aggregations

IImageBuilder (com.ibm.dtfj.javacore.builder.IImageBuilder)2 BuilderFailureException (com.ibm.dtfj.javacore.builder.BuilderFailureException)1 IImageAddressSpaceBuilder (com.ibm.dtfj.javacore.builder.IImageAddressSpaceBuilder)1 IImageProcessBuilder (com.ibm.dtfj.javacore.builder.IImageProcessBuilder)1 ILookAheadBuffer (com.ibm.dtfj.javacore.parser.framework.parser.ILookAheadBuffer)1 ISectionParser (com.ibm.dtfj.javacore.parser.framework.parser.ISectionParser)1 ParserException (com.ibm.dtfj.javacore.parser.framework.parser.ParserException)1 IParserToken (com.ibm.dtfj.javacore.parser.framework.scanner.IParserToken)1 ScannerException (com.ibm.dtfj.javacore.parser.framework.scanner.ScannerException)1 IOException (java.io.IOException)1 Iterator (java.util.Iterator)1