/******************************************************************************* * Copyright (c) 2011 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.ws.ui.bot.test.webservice.eap; import java.util.logging.Level; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.jboss.reddeer.eclipse.ui.perspectives.JavaEEPerspective; import org.jboss.reddeer.requirements.openperspective.OpenPerspectiveRequirement.OpenPerspective; import org.jboss.reddeer.common.wait.AbstractWait; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.workbench.impl.editor.TextEditor; import org.jboss.tools.ws.reddeer.ui.wizards.CreateNewFileWizardPage; import org.jboss.tools.ws.reddeer.ui.wizards.jst.jsp.NewJSPFileWizard; import org.jboss.tools.ws.reddeer.ui.wizards.wst.WebServiceWizardPageBase.SliderLevel; import org.jboss.tools.ws.ui.bot.test.utils.DeploymentHelper; import org.jboss.tools.ws.ui.bot.test.utils.ProjectHelper; import org.jboss.tools.ws.ui.bot.test.utils.ResourceHelper; import org.jboss.tools.ws.ui.bot.test.utils.ServersViewHelper; import org.jboss.tools.ws.ui.bot.test.utils.WebServiceClientHelper; import org.jboss.tools.ws.ui.bot.test.webservice.WebServiceRuntime; import org.jboss.tools.ws.ui.bot.test.webservice.WebServiceTestBase; import org.junit.Assert; import org.junit.Before; import org.junit.Test; /** * Test operates on creating non-trivial EAP project from Java class * * @author jlukas * */ @OpenPerspective(JavaEEPerspective.class) public class EAPFromJavaTest extends WebServiceTestBase { private static boolean servicePassed = false; @Before @Override public void setup() { if (!ProjectHelper.projectExists(getWsProjectName())) { ProjectHelper.createProject(getWsProjectName()); } if (!ProjectHelper.projectExists(getWsClientProjectName())) { ProjectHelper.createProject(getWsClientProjectName()); } } @Override protected String getWsProjectName() { return "TestWSProject"; } @Override protected String getEarProjectName() { return getWsProjectName() + "EAR"; } protected String getWsClientProjectName() { return "TestWSClientProject"; } @Override protected String getWsPackage() { return "test.ws"; } @Override protected String getWsName() { return "Echo"; } @Override protected SliderLevel getLevel() { return SliderLevel.DEPLOY; } @Test public void testEAPFromJava() { testService(); testClient(); } private void testService() { // create a class representing some complex type TextEditor editor = ProjectHelper.createClass(getWsProjectName(), "test", "Person"); editor.setText(ResourceHelper .readStream(EAPFromJavaTest.class.getResourceAsStream("/resources/jbossws/Person.java.ws"))); editor.save(); editor.close(); // refresh workspace - workaround??? for JBIDE-6731 try { ResourcesPlugin.getWorkspace().getRoot().refreshLocal(IWorkspaceRoot.DEPTH_INFINITE, new NullProgressMonitor()); } catch (CoreException e) { LOGGER.log(Level.WARNING, e.getMessage(), e); } bottomUpWS(EAPFromJavaTest.class.getResourceAsStream("/resources/jbossws/Echo.java.ws"), WebServiceRuntime.JBOSS_WS, false); IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(getWsProjectName()); IFile f = project.getFile("WebContent/WEB-INF/web.xml"); String content = ResourceHelper.readFile(f); Assert.assertNotNull(content); Assert.assertTrue(content.contains("<servlet-class>test.ws.Echo</servlet-class>")); Assert.assertTrue(content.contains("<url-pattern>/Echo</url-pattern>")); ServersViewHelper.runProjectOnServer(getEarProjectName()); ServersViewHelper.waitForDeployment(getEarProjectName(), getConfiguredServerName()); DeploymentHelper.assertServiceDeployed(DeploymentHelper.getWSDLUrl(getWsProjectName(), getWsName()), 10000); servicePassed = true; } private void testClient() { Assert.assertTrue("service must exist", servicePassed); WebServiceClientHelper.createClient(getConfiguredServerName(), DeploymentHelper.getWSDLUrl(getWsProjectName(), getWsName()), WebServiceRuntime.JBOSS_WS, getWsClientProjectName(), getEarProjectName(), getLevel(), ""); IProject p = ResourcesPlugin.getWorkspace().getRoot().getProject(getWsClientProjectName()); String pkg = "test/ws"; String cls = "src/" + pkg + "/EchoService.java"; Assert.assertTrue(p.getFile(cls).exists()); cls = "src/" + pkg + "/clientsample/ClientSample.java"; Assert.assertTrue(p.getFile(cls).exists()); createJSPFile(); /** * Workaround for 4.x branch * * bot.activeShell().bot().button("Skip").click(); bot.sleep(TIME_5S); */ setJSPFileContent(); AbstractWait.sleep(TimePeriod.getCustom(2)); ServersViewHelper.runProjectOnServer(getEarProjectName()); ServersViewHelper.waitForDeployment(getEarProjectName(), getConfiguredServerName()); ServersViewHelper.serverClean(getConfiguredServerName()); String pageContent = DeploymentHelper .getPage("http://localhost:8080/" + getWsClientProjectName() + "/index.jsp", 15000); LOGGER.info(pageContent); Assert.assertTrue(pageContent.contains("BartSimpson(age: 12)")); Assert.assertTrue(pageContent.contains("Homer(age: 44)")); } private void createJSPFile() { NewJSPFileWizard wizard = new NewJSPFileWizard(); wizard.open(); CreateNewFileWizardPage page = new CreateNewFileWizardPage(); page.setFileName("index"); page.setParentFolder(getWsClientProjectName() + "/WebContent"); wizard.finish(); } private void setJSPFileContent() { TextEditor editor = new TextEditor("index.jsp"); editor.setText(ResourceHelper .readStream(EAPFromJavaTest.class.getResourceAsStream("/resources/jbossws/index.jsp.ws"))); editor.save(); editor.close(); } }