blob: 447d7c6f0a60b49d79be65e34a99da573a637b71 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.sling.commons.compiler;
import java.util.List;
import org.osgi.annotation.versioning.ProviderType;
/**
* The compilation result allows clients of the java compiler
* to check for error messages, warnings (if not disabled by
* the options) and allows to access the compiled classes.
* @since 2.0
*/
@ProviderType
public interface CompilationResult {
/**
* Return a list of error messages that occured during
* compilation. If no errors occured <code>null</code>
* is returned.
* @return A list of error messages or <code>null</code>.
*/
List<CompilerMessage> getErrors();
/**
* Return a list of warnings that occured during
* compilation. If no warnings occured <code>null</code>
* is returned.
* @return A list of warnings or <code>null</code>.
*/
List<CompilerMessage> getWarnings();
/**
* Was a compilation required or were all classes recent?
* @return {@code true} if classes were compiled.
*/
boolean didCompile();
/**
* Try to load the compiled class.
* The class loading might fail if the className is not
* one of the compiled sources, if the compilation failed
* or if a class loader writer has been used in combination
* with a class loader that is not able to load the classes
* written by the class loader writer.
* @param className The class name of the compiled class.
* @return The compiled class
* @throws ClassNotFoundException If the class could not be found
* or compilation failed.
*/
Class<?> loadCompiledClass(final String className)
throws ClassNotFoundException;
}