package org.openntf.domino.xsp; import java.util.ArrayList; import java.util.List; import org.openntf.domino.xsp.config.DominoConfig; import com.ibm.xsp.extlib.config.ExtlibPluginConfig; import com.ibm.xsp.library.AbstractXspLibrary; /** * @author nfreeman * */ public class XspLibrary extends AbstractXspLibrary { public final static String LIBRARY_ID = XspLibrary.class.getName(); private static Boolean GLOBAL; private List<ExtlibPluginConfig> plugins; /** * Whether or not global mode is enabled (org.openntf.domino.xsp=global). This is used for the * {@link AbstractXspLibrary#isGlobalScope()} method * * @return boolean, whether global or not */ private static boolean isGlobal() { if (GLOBAL == null) { GLOBAL = Boolean.FALSE; String[] envs = ODAPlatform.getEnvironmentStrings(Activator.PLUGIN_ID); if (envs != null) { for (String s : envs) { if (s.equalsIgnoreCase("global")) { GLOBAL = Boolean.TRUE; } } } } return GLOBAL.booleanValue(); } /** * Constructor */ public XspLibrary() { // System.out.println("Loading org.openntf.domino.xsp library"); } /* * (non-Javadoc) * * @see com.ibm.xsp.library.AbstractXspLibrary#getDependencies() */ @Override public String[] getDependencies() { return new String[] { "com.ibm.xsp.core.library", "com.ibm.xsp.extsn.library", "com.ibm.xsp.domino.library", "com.ibm.xsp.designer.library", "com.ibm.xsp.extlib.library" }; } /* * (non-Javadoc) * * @see com.ibm.xsp.library.AbstractXspLibrary#getFacesConfigFiles() */ @Override public String[] getFacesConfigFiles() { String[] files = new String[] { "domino-faces-config.xml" }; // We might want to take this approach in the future??? // List<ExtlibPluginConfig> plugins = getExtlibPluginConfigs(); // for( ExtlibPluginConfig plugin: plugins) { // files = plugin.getFacesConfigFiles(files); // } return files; } /** * Adds {@link DominoConfig} to the list of available plugins, loading the config for the OpenNTF Domino Pickers * * @return List<ExtlibPluginConfig> of configs in use for the library * @since org.openntf.domino 4.5.0 */ private List<ExtlibPluginConfig> getExtlibPluginConfigs() { if (plugins == null) { // List<ExtlibPluginConfig> _plugins = ExtensionManager.findServices(null, // ExtlibPluginConfig.class.getClassLoader(), // ExtlibPluginConfig.EXTENSION_NAME, // ExtlibPluginConfig.class); /* * We are blocking any extension point contribution to the Library. Agreed to do this way on Sep 30th, 2011 [AC, MK, PR] */ List<ExtlibPluginConfig> _plugins = new ArrayList<ExtlibPluginConfig>(); // note, sort these plugins alphabetically by className _plugins.add(new DominoConfig()); plugins = _plugins; } return plugins; } /* * (non-Javadoc) * * @see com.ibm.xsp.library.AbstractXspLibrary#getXspConfigFiles() */ @Override public String[] getXspConfigFiles() { String[] files = new String[] {}; List<ExtlibPluginConfig> plugins = getExtlibPluginConfigs(); for (ExtlibPluginConfig plugin : plugins) { files = plugin.getXspConfigFiles(files); } return files; } /* * (non-Javadoc) * * @see com.ibm.xsp.library.XspLibrary#getLibraryId() */ @Override public String getLibraryId() { return LIBRARY_ID; } /* * (non-Javadoc) * * @see com.ibm.xsp.library.AbstractXspLibrary#getPluginId() */ @Override public String getPluginId() { return Activator.PLUGIN_ID; } /* * (non-Javadoc) * * @see com.ibm.xsp.library.AbstractXspLibrary#isGlobalScope() */ @Override public boolean isGlobalScope() { boolean result = isGlobal(); // System.out.println(Activator.PLUGIN_ID + " global: " + String.valueOf(result)); return result; } }