Adding test plugin for the design time appmanager framework.
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.classpath b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.cvsignore b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.cvsignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.cvsignore
@@ -0,0 +1 @@
+bin
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.project b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.project
new file mode 100644
index 0000000..b9c0cfc
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.jst.jsf.designtime.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/META-INF/MANIFEST.MF b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..230a956
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: DesignTime Tests Plug-in
+Bundle-SymbolicName: org.eclipse.jst.jsf.designtime.tests
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.jst.jsf.designtime.tests.DesignTimeTestsPlugin
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.junit,
+ org.eclipse.jst.jsf.designtime,
+ org.eclipse.core.resources,
+ org.eclipse.jst.jsf.context.resolver,
+ org.eclipse.jst.jsf.context.resolver.structureddocument,
+ org.eclipse.jst.jsf.context.structureddocument,
+ org.eclipse.jst.jsf.test.util,
+ org.eclipse.jst.jsf.core.tests,
+ org.eclipse.jst.jsf.context.symbol
+Eclipse-LazyStart: true
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/build.properties b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/DesignTimeTestsPlugin.java b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/DesignTimeTestsPlugin.java
new file mode 100644
index 0000000..f446622
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/DesignTimeTestsPlugin.java
@@ -0,0 +1,52 @@
+package org.eclipse.jst.jsf.designtime.tests;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class DesignTimeTestsPlugin extends AbstractUIPlugin {
+
+ /**
+ * The plug-in ID
+ */
+ public static final String PLUGIN_ID = "org.eclipse.jst.jsf.designtime.tests";
+
+ // The shared instance
+ private static DesignTimeTestsPlugin plugin;
+
+ /**
+ * The constructor
+ */
+ public DesignTimeTestsPlugin() {
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static DesignTimeTestsPlugin getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultBeanSymbolSourceProvider.java b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultBeanSymbolSourceProvider.java
new file mode 100644
index 0000000..c36979a
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultBeanSymbolSourceProvider.java
@@ -0,0 +1,193 @@
+package org.eclipse.jst.jsf.designtime.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jst.jsf.context.symbol.internal.provisional.ISymbol;
+import org.eclipse.jst.jsf.context.symbol.internal.provisional.source.ISymbolConstants;
+import org.eclipse.jst.jsf.core.tests.TestsPlugin;
+import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
+import org.eclipse.jst.jsf.designtime.internal.provisional.symbols.DefaultBeanSymbolSourceProvider;
+import org.eclipse.jst.jsf.test.util.JDTTestEnvironment;
+import org.eclipse.jst.jsf.test.util.ProjectTestEnvironment;
+import org.eclipse.jst.jsf.test.util.TestFileResource;
+import org.osgi.framework.Bundle;
+
+/**
+ * JUnit tests for org.eclipse.jst.jsf.designtime.DefaultBeanSymbolSourceProvider
+ *
+ * @author cbateman
+ *
+ */
+public class TestDefaultBeanSymbolSourceProvider extends TestCase
+{
+ private JDTTestEnvironment _jdtTestEnvironment;
+ private JSFFacetedTestEnvironment _jsfFactedTestEnvironment;
+ private IFile _facesConfigFile;
+
+ private final static String SRC_FOLDER_NAME = "src";
+ private final static String PACKAGE_NAME = "com.test";
+
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+
+ final ProjectTestEnvironment projectTestEnvironment =
+ new ProjectTestEnvironment("TestDefaultBeanSymbolSourceProvider_"+getName());
+ projectTestEnvironment.createProject();
+ _facesConfigFile = (IFile) projectTestEnvironment.
+ loadResourceInWebRoot(DesignTimeTestsPlugin.getDefault().getBundle(),
+ "/testdata/faces-config.xml.data",
+ "/WEB-INF/faces-config.xml");
+
+ _jsfFactedTestEnvironment = new JSFFacetedTestEnvironment(projectTestEnvironment);
+ _jsfFactedTestEnvironment.initialize();
+
+ _jdtTestEnvironment = new JDTTestEnvironment(projectTestEnvironment);
+
+ loadSourceClass(TestsPlugin.getDefault().getBundle(), "/testfiles/TestBean1.java.data", "TestBean1");
+ }
+
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ _jsfFactedTestEnvironment.dispose();
+ _jdtTestEnvironment.getProjectEnvironment().deleteProject();
+ }
+
+ private void loadSourceClass(final Bundle bundle, final String fileName, final String beanClassName) throws Exception
+ {
+ TestFileResource codeRes = new TestFileResource();
+ codeRes.load(bundle, fileName);
+ String code = codeRes.toString();
+ _jdtTestEnvironment.addSourceFile(SRC_FOLDER_NAME, PACKAGE_NAME, beanClassName, code);
+ }
+
+ /**
+ * Test the external sanity of the suite (i.e. that the test data is in sync)
+ */
+ public void testSanity()
+ {
+ DefaultBeanSymbolSourceProvider provider =
+ DefaultBeanSymbolSourceProvider.getInstance();
+
+ ISymbol[] symbol =
+ provider.getSymbols(_facesConfigFile, ISymbolConstants.SYMBOL_SCOPE_ALL);
+
+ assertNotNull(symbol);
+ assertEquals("Check that test suite is in sync with setup()", symbol.length, 4);
+ }
+
+ /**
+ *
+ */
+ public void testAllScopes()
+ {
+ final String[] names = new String[]{"myBean_request", "myBean_session", "myBean_application", "myBean_none"};
+ testScopeBeans(ISymbolConstants.SYMBOL_SCOPE_ALL, names.length, names);
+ }
+
+ /**
+ * Check mask by request scope
+ */
+ public void testOnlyRequestBeans()
+ {
+ final String[] names = new String[]{"myBean_request"};
+ testScopeBeans(ISymbolConstants.SYMBOL_SCOPE_REQUEST, names.length, names);
+ }
+
+ /**
+ * Check mask by Session scope
+ */
+ public void testOnlySessionBeans()
+ {
+ final String[] names = new String[]{"myBean_session"};
+ testScopeBeans(ISymbolConstants.SYMBOL_SCOPE_SESSION, names.length, names);
+ }
+
+ /**
+ * Check mask by Application scope
+ */
+ public void testOnlyApplicationBeans()
+ {
+ final String[] names = new String[]{"myBean_application"};
+ testScopeBeans(ISymbolConstants.SYMBOL_SCOPE_APPLICATION, names.length, names);
+ }
+ /**
+ * Check mask by None scope
+ */
+ public void testOnlyNoneBeans()
+ {
+ final String[] names = new String[]{"myBean_none"};
+ testScopeBeans(ISymbolConstants.SYMBOL_SCOPE_NONE, names.length, names);
+ }
+
+ private void testScopeBeans(int scope, int expectedSize, String[] expectedNames)
+ {
+ DefaultBeanSymbolSourceProvider provider =
+ DefaultBeanSymbolSourceProvider.getInstance();
+
+ ISymbol[] symbols =
+ provider.getSymbols(_facesConfigFile, scope);
+
+ assertEquals(expectedSize, symbols.length);
+
+ for (int j = 0; j < expectedNames.length; j++)
+ {
+ final String expectedName = expectedNames[j];
+ assertNotNull(expectedName);
+ boolean found = false;
+
+ FIND_IN_SYMBOLS:
+ for (int i = 0; i < symbols.length; i++)
+ {
+ if (expectedName.equals(symbols[i].getName()))
+ {
+ found = true;
+ break FIND_IN_SYMBOLS;
+ }
+ }
+
+ assertTrue(found);
+ }
+ }
+
+ /**
+ * Test the get symbol by prefix
+ */
+ public void testPrefixSearch()
+ {
+ DefaultBeanSymbolSourceProvider provider =
+ DefaultBeanSymbolSourceProvider.getInstance();
+
+ ISymbol[] symbols =
+ provider.getSymbols("myBean_n", _facesConfigFile, ISymbolConstants.SYMBOL_SCOPE_ALL);
+
+ assertEquals(1, symbols.length);
+ assertEquals("myBean_none", symbols[0].getName());
+ }
+
+ /**
+ * Test getting a symbol it's name
+ */
+ public void testGetSymbolByName()
+ {
+ testGetSymbolByName("myBean_none");
+ testGetSymbolByName("myBean_application");
+ testGetSymbolByName("myBean_session");
+ testGetSymbolByName("myBean_request");
+ }
+
+ private void testGetSymbolByName(final String expectedName)
+ {
+ DefaultBeanSymbolSourceProvider provider =
+ DefaultBeanSymbolSourceProvider.getInstance();
+
+ ISymbol symbol =
+ provider.getSymbol(expectedName, _facesConfigFile,
+ ISymbolConstants.SYMBOL_SCOPE_ALL);
+
+ assertNotNull(symbol);
+ assertEquals(expectedName, symbol.getName());
+ }
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/testdata/faces-config.xml.data b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/testdata/faces-config.xml.data
new file mode 100644
index 0000000..fab426b
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/testdata/faces-config.xml.data
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE faces-config PUBLIC
+ "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
+ "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
+
+<faces-config>
+ <managed-bean>
+ <managed-bean-name>myBean_none</managed-bean-name>
+ <managed-bean-class>com.test.TestBean1</managed-bean-class>
+ <managed-bean-scope>none</managed-bean-scope>
+ </managed-bean>
+
+ <managed-bean>
+ <managed-bean-name>myBean_request</managed-bean-name>
+ <managed-bean-class>com.test.TestBean1</managed-bean-class>
+ <managed-bean-scope>request</managed-bean-scope>
+ </managed-bean>
+
+ <managed-bean>
+ <managed-bean-name>myBean_session</managed-bean-name>
+ <managed-bean-class>com.test.TestBean1</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+
+ <managed-bean>
+ <managed-bean-name>myBean_application</managed-bean-name>
+ <managed-bean-class>com.test.TestBean1</managed-bean-class>
+ <managed-bean-scope>application</managed-bean-scope>
+ <description>This is my description of myBean_application</description>
+ </managed-bean>
+</faces-config>