/******************************************************************************* * Copyright (c) 2012 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.seam.core.test.project.facet; import java.io.File; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.regex.Pattern; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jst.common.project.facet.core.JavaFacet; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager; import org.eclipse.wst.validation.ValidationFramework; import org.eclipse.wst.validation.internal.EventManager; import org.jboss.tools.seam.core.project.facet.SeamRuntimeManager; import org.jboss.tools.seam.core.project.facet.SeamVersion; import org.jboss.tools.seam.internal.core.project.facet.AntCopyUtils; import org.jboss.tools.seam.internal.core.project.facet.ISeamFacetDataModelProperties; import org.jboss.tools.seam.internal.core.project.facet.Seam23FacetInstallDelegate; /** * @author Alexey Kazakov */ public class Seam230FacetInstallDelegateTest extends AbstractSeam2FacetInstallDelegateTest { public Seam230FacetInstallDelegateTest(String name) { super(name); } @Override protected void setUp() throws Exception { suspendAllValidation = ValidationFramework.getDefault().isSuspended(); ValidationFramework.getDefault().suspendAllValidation(true); ResourcesPlugin.getWorkspace().removeResourceChangeListener(EventManager.getManager()); // commented to run tests on wtp 3.0.4 build // ws.removeResourceChangeListener( ValManager.getDefault() ); // EventManager.getManager().shutdown(); assertSeamHomeAvailable(); seam2Facet = ProjectFacetsManager.getProjectFacet("jst.seam"); seam2FacetVersion = seam2Facet.getVersion("2.3"); javaVersion = JavaFacet.VERSION_1_6; dynamicWebVersion = ProjectFacetsManager.getProjectFacet("jst.web").getVersion("3.0"); javaFacesVersion = ProjectFacetsManager.getProjectFacet("jst.jsf").getVersion("2.0"); File folder = getSeamHomeFolder(); SeamRuntimeManager.getInstance().addRuntime(SEAM_2_3_0, folder.getAbsolutePath(), SeamVersion.SEAM_2_3, true); seamRuntime = SeamRuntimeManager.getInstance().findRuntimeByName(SEAM_2_3_0); IProject war = (IProject) ResourcesPlugin.getWorkspace().getRoot().findMember("warprj"); warProject = (war != null ? ProjectFacetsManager.create(war, false, null) : createSeamWarProject("warprj")); IProject ear = (IProject) ResourcesPlugin.getWorkspace().getRoot().findMember("earprj"); earProject = (ear != null ? ProjectFacetsManager.create(ear, false, null) : createSeamEarProject("earprj")); } @Override protected void tearDown() throws Exception { super.tearDown(); } @Override protected boolean shouldCheckTestProject() { // Test project was not supposed to be created. return false; } @Override protected IDataModel createSeamDataModel(String deployType) { IDataModel dataModel = super.createSeamDataModel(deployType); dataModel.setStringProperty( ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME, SEAM_2_3_0); dataModel.setBooleanProperty(ISeamFacetDataModelProperties.SEAM_RUNTIME_LIBRARIES_COPYING, true); dataModel.setBooleanProperty(ISeamFacetDataModelProperties.TEST_PROJECT_CREATING, false); return dataModel; } private Set<String> convertToStrings(AntCopyUtils.FileSet fileSet) { Set<String> seamgenlibs = new HashSet<String>(); String libDir = seamRuntime.getLibDir(); File libDirFile = new File(libDir); assertTrue(libDirFile.exists()); List<Pattern> list = fileSet.getIncluded(); for (Pattern pattern : list) { String jarName = pattern.pattern(); File jarFile = new File(libDirFile, jarName); if(jarFile.exists()) { seamgenlibs.add(jarName); } else { System.out.println("WARNING: " + jarName + " jar is mentioned in deploy-*.list file but does not exist in " + libDir); } } return seamgenlibs; } @Override protected Set<String> getWarLibs() { AntCopyUtils.FileSet fileSet = Seam23FacetInstallDelegate.getWarLibFileSet(seamRuntime); return convertToStrings(fileSet); } @Override protected Set<String> getEarLibs() { AntCopyUtils.FileSet fileSet = Seam23FacetInstallDelegate.getEarLibFileSet(seamRuntime); return convertToStrings(fileSet); } @Override protected Set<String> getEarWarLibs() { AntCopyUtils.FileSet fileSet = Seam23FacetInstallDelegate.getWarLibFileSetForEar(seamRuntime); return convertToStrings(fileSet); } @Override protected boolean shouldCheckJBossAppXML() { return false; } @Override protected File getSeamHomeFolder() { return super.getSeamHomeFolder(AbstractSeamFacetTest.SEAM23_FOLDER_NAME); } @Override protected Set<String> getOnlyInEarMeta() { Set<String> onlyInEarMeta = super.getOnlyInEarMeta(); onlyInEarMeta.add("jboss-deployment-structure.xml"); return onlyInEarMeta; } }