/*******************************************************************************
* Copyright (c) 2016 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.livereload.reddeer.requirement;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.jboss.ide.eclipse.as.reddeer.server.wizard.page.NewServerWizardPageWithErrorCheck;
import org.jboss.reddeer.eclipse.exception.EclipseLayerException;
import org.jboss.reddeer.eclipse.wst.server.ui.view.ServersView;
import org.jboss.reddeer.eclipse.wst.server.ui.wizard.NewServerWizardDialog;
import org.jboss.reddeer.junit.requirement.Requirement;
import org.jboss.reddeer.requirements.server.ConfiguredServerInfo;
import org.jboss.reddeer.requirements.server.ServerReqBase;
import org.jboss.reddeer.requirements.server.ServerReqState;
import org.jboss.tools.livereload.reddeer.requirement.LivereloadServerRequirement.LivereloadServer;
public class LivereloadServerRequirement extends ServerReqBase implements Requirement<LivereloadServer>{
private LivereloadServer server;
private static ConfiguredServerInfo lastServerConfiguration;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface LivereloadServer {
ServerReqState state() default ServerReqState.RUNNING;
String name();
boolean cleanup() default true;
}
@Override
public boolean canFulfill() {
return true;
}
@Override
public void fulfill() {
ServersView sw = new ServersView();
sw.open();
try{
sw.getServer(server.name());
//already exists, do nothing
} catch (EclipseLayerException e) {
lastServerConfiguration = new ConfiguredServerInfo(server.name(), null);
NewServerWizardDialog serverW = new NewServerWizardDialog();
serverW.open();
NewServerWizardPageWithErrorCheck sp = new NewServerWizardPageWithErrorCheck();
sp.selectType("Basic","LiveReload Server");
sp.setName(server.name());
serverW.finish();
setupServerState(server.state(), lastServerConfiguration);
}
}
@Override
public void setDeclaration(LivereloadServer declaration) {
this.server = declaration;
}
@Override
public void cleanUp() {
if(server.cleanup()){
ServersView sw = new ServersView();
sw.open();
sw.getServer(lastServerConfiguration.getServerName()).delete(true);
}
}
}