package org.netbeans.gradle.project.others; import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import org.jtrim.utils.ExceptionHelper; import org.netbeans.api.project.Project; import org.openide.util.Lookup; public final class ProjectLookupObject { private static final Logger LOGGER = Logger.getLogger(ProjectLookupObject.class.getName()); private final PluginClass pluginClass; public ProjectLookupObject(PluginClass pluginClass) { ExceptionHelper.checkNotNullArgument(pluginClass, "pluginClass"); this.pluginClass = pluginClass; } private static Map<Class<?>, Object> createArgs(Project project) { Map<Class<?>, Object> result = new HashMap<>(); result.put(Project.class, project); result.put(Lookup.class, Lookup.EMPTY); return result; } public Object tryCreateInstance(Project project) { Class<?> type = pluginClass.tryGetClass(); if (type == null) { return null; } try { return ReflectionHelper.tryCreateInstance(type, createArgs(project)); } catch (Throwable ex) { LOGGER.log(Level.INFO, "Creating an instance of " + type + " has thrown an exception.", ex); return null; } } }