blob: 0a38a4670ea7190698e3e07cd64a5a04ccb5ad60 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 Oracle Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Cameron Bateman - initial implementation
*******************************************************************************/
package org.eclipse.jst.jsf.metadata.tests.util;
import java.io.File;
import org.eclipse.core.resources.IFile;
import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
import org.eclipse.jst.jsf.context.resolver.structureddocument.internal.ITextRegionContextResolver;
import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
import org.eclipse.jst.jsf.core.JSFVersion;
import org.eclipse.jst.jsf.core.tests.util.JSFCoreUtilHelper;
import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
import org.eclipse.jst.jsf.metadata.tests.MetadataTestsPlugin;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
public class JSPTestCase extends BaseTestCase
{
public static final String FACES_CONFIG_FILE = "facesConfigFile";
public static final String JSF_CORE_URI = "http://java.sun.com/jsf/core";
public static final String JSF_HTML_URI = "http://java.sun.com/jsf/html";
public static final String TAG_TEST_URI = "http://org.eclipse.jsf/tagprocessing";
public static final String TAG_TEST_TAG = "MyTag";
/**
* Test config
*/
private MyConfiguration _myConfig;
private final JSFVersion _defaultJSFVersion;
private final String _defaultFacesConfigFile;
private String[] _runtimeJars;
public JSPTestCase(final JSFVersion defaultJSFVersion, final String defaultFacesConfigFile)
{
super(defaultJSFVersion);
_defaultJSFVersion = defaultJSFVersion;
_defaultFacesConfigFile = defaultFacesConfigFile;
}
protected void doStandaloneSetup()
{
super.doStandaloneSetup();
// NOTE: defaults to 1.1 tests for standalone testing
_myConfig = new MyConfiguration
(_defaultJSFVersion
, _defaultFacesConfigFile);
}
protected void doTestSuiteSetup()
{
super.doTestSuiteSetup();
_myConfig = new MyConfiguration(_testConfiguration);
}
@Override
protected JSFFacetedTestEnvironment configureJSFEnvironment() throws Exception
{
final JSFVersion version = _myConfig.getFacetVersion();
JSFFacetedTestEnvironment jsfFacedEnv = new JSFFacetedTestEnvironment(_testEnv);
jsfFacedEnv.initialize(version.toString());
try {
initializeJSFRuntime();
JSFCoreUtilHelper.createRegistryAndAddReferences(jsfFacedEnv, _runtimeJars, version);
} catch (NoJSFRuntimeFoundException e) {
//
}
_testEnv.loadResourceInWebRoot(MetadataTestsPlugin.getDefault().getBundle(),
_myConfig.getFacesConfigFile(),
"/WEB-INF/faces-config.xml");
return jsfFacedEnv;
}
// dead?
// private String[] getArchiveFiles() {
//// getJsfImplEnv();
// return null;
// }
protected IFile loadJSP(final String srcFileName, final String destFileName) throws Exception
{
return (IFile) _testEnv.loadResourceInWebRoot
(MetadataTestsPlugin.getDefault().getBundle(),
srcFileName, destFileName);
}
/**
* @param document
* @param docPos
* @return the text at docPos in document or null if no such text
*/
protected String getText(IStructuredDocument document, int docPos)
{
final IStructuredDocumentContext context =
getStructuredDocumentContext(document, docPos);
final ITextRegionContextResolver resolver =
IStructuredDocumentContextResolverFactory.INSTANCE.getTextRegionResolver(context);
return stripQuotes(resolver.getRegionText());
}
protected IStructuredDocumentContext getStructuredDocumentContext(IStructuredDocument document, int docPos) {
return IStructuredDocumentContextFactory.INSTANCE.getContext(document, docPos);
}
private String stripQuotes(String text) {
if (text != null && text.startsWith("\""))
return text.substring(1, text.length() -1);
return text;
}
protected static class MyConfiguration
{
private final JSFVersion _facetVersion;
private final String _facesConfigFile;
MyConfiguration(JSFVersion facetVersion, String facesConfigFile)
{
super();
_facetVersion = facetVersion;
_facesConfigFile = facesConfigFile;
}
MyConfiguration(TestConfiguration testConfiguration)
{
_facetVersion = JSFVersion.valueOfString(testConfiguration.get(BaseTestCase.JSF_FACET_VERSION));
_facesConfigFile = testConfiguration.get(FACES_CONFIG_FILE);
}
public JSFVersion getFacetVersion() {
return _facetVersion;
}
public String getFacesConfigFile() {
return _facesConfigFile;
}
}
protected void initializeJSFRuntime() throws NoJSFRuntimeFoundException{
String dir = JSFCoreUtilHelper.getJSFRuntimeJarsDirectory(_defaultJSFVersion);
if (dir == null || !jarsFound(dir) )
throw new NoJSFRuntimeFoundException();
}
private boolean jarsFound(String dir) {
java.io.File dirFile = new java.io.File(dir);
if (dirFile.exists() && dirFile.isDirectory()) {
File [] files = dirFile.listFiles();
if (files.length > 0) {
_runtimeJars = new String[files.length];
for (int i=0;i<files.length;i++){
_runtimeJars[i] = files[i].getAbsolutePath();
}
return true;
}
}
return false;
}
}