package com.atlassian.labs.speakeasy.commonjs; import com.atlassian.labs.speakeasy.commonjs.descriptor.CommonJsModulesDescriptor; import com.atlassian.labs.speakeasy.util.DefaultPluginModuleTracker; import com.atlassian.labs.speakeasy.util.PluginModuleTracker; import com.atlassian.plugin.PluginAccessor; import com.atlassian.plugin.event.PluginEventManager; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Iterator; /** * */ @Component public class CommonJsModulesAccessor implements DisposableBean { private final PluginModuleTracker<CommonJsModules, CommonJsModulesDescriptor> tracker; @Autowired public CommonJsModulesAccessor(PluginAccessor pluginAccessor, PluginEventManager pluginEventManager) { this.tracker = new DefaultPluginModuleTracker<CommonJsModules, CommonJsModulesDescriptor>( pluginAccessor, pluginEventManager, CommonJsModulesDescriptor.class); } public Iterable<CommonJsModules> getAllCommonJsModules() { return tracker.getModules(); } public void destroy() throws Exception { tracker.close(); } public Iterable<CommonJsModules> getAllPublicCommonJsModules() { return Iterables.filter(tracker.getModules(), new Predicate<CommonJsModules>() { public boolean apply(CommonJsModules input) { return !input.getPublicModuleIds().isEmpty(); } }); } }