All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openl.CompiledOpenClass Maven / Gradle / Ivy

There is a newer version: 5.27.9-jakarta
Show newest version
/**
 * Created Jan 11, 2007
 */
package org.openl;

import java.util.List;
import java.util.Map;

import org.openl.classloader.OpenLClassLoaderHelper;
import org.openl.message.OpenLMessage;
import org.openl.message.OpenLMessagesUtils;
import org.openl.message.Severity;
import org.openl.syntax.exception.CompositeOpenlException;
import org.openl.syntax.exception.SyntaxNodeException;
import org.openl.types.IOpenClass;

/**
 * Handles {@link IOpenClass} with parsing and compiled errors.
 * 
 * @author snshor
 * 
 */
public class CompiledOpenClass {

    private SyntaxNodeException[] parsingErrors;

    private SyntaxNodeException[] bindingErrors;

    private List messages;

    private IOpenClass openClass;
    
    private ClassLoader classLoader;

    public CompiledOpenClass(IOpenClass openClass,
            List messages,
            SyntaxNodeException[] parsingErrors,
            SyntaxNodeException[] bindingErrors) {
        
        this.openClass = openClass;
        this.parsingErrors = parsingErrors;
        this.bindingErrors = bindingErrors;
        this.messages = messages;
        this.classLoader = OpenLClassLoaderHelper.getContextClassLoader();
    }

    @Deprecated
    public SyntaxNodeException[] getBindingErrors() {
        return bindingErrors;
    }

    public IOpenClass getOpenClass() {
        throwErrorExceptionsIfAny();
        return openClass;
    }

    public IOpenClass getOpenClassWithErrors() {
        return openClass;
    }

    @Deprecated
    public SyntaxNodeException[] getParsingErrors() {
        return parsingErrors;
    }

    public boolean hasErrors() {
        List errorMessages = getErrorMessages();
        return (parsingErrors.length > 0) || (bindingErrors.length > 0) || 
            (errorMessages != null && !errorMessages.isEmpty());
    }

    private List getErrorMessages() {
        return OpenLMessagesUtils.filterMessagesBySeverity(getMessages(), Severity.ERROR);
    }

    public void throwErrorExceptionsIfAny() {
        if (parsingErrors.length > 0) {
            throw new CompositeOpenlException("Parsing Error(s):", parsingErrors, getErrorMessages());
        }

        if (bindingErrors.length > 0) {
            throw new CompositeOpenlException("Binding Error(s):", bindingErrors, getErrorMessages());
        }
        
        if (getErrorMessages().size() > 0) {
        	throw new CompositeOpenlException("Module contains critical errors", null, getErrorMessages());
        }

    }

    public List getMessages() {
        return messages;
    }
    
    public Map getTypes() {
        if (openClass == null) {
            return null;
        }
        
        return openClass.getTypes();
    }

    public ClassLoader getClassLoader() {
        return classLoader;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy