Skip to content

Commit

Permalink
Add support for exporting REST mock services
Browse files Browse the repository at this point in the history
  • Loading branch information
shadidchowdhury committed Apr 16, 2014
1 parent 17d35de commit cde5776
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 21 deletions.
Expand Up @@ -16,10 +16,6 @@

package com.eviware.soapui.actions;

import java.io.IOException;

import org.apache.log4j.Logger;

import com.eviware.soapui.DefaultSoapUICore;
import com.eviware.soapui.SoapUI;
import com.eviware.soapui.impl.wsdl.WsdlProject;
Expand All @@ -36,6 +32,9 @@
import com.eviware.x.form.support.AField.AFieldType;
import com.eviware.x.form.support.AForm;
import com.eviware.x.form.validators.RequiredValidator;
import org.apache.log4j.Logger;

import java.io.IOException;

public class MockAsWarAction extends AbstractSoapUIAction<WsdlProject> {
private XFormDialog dialog;
Expand All @@ -47,27 +46,16 @@ public MockAsWarAction() {

public void perform(WsdlProject project, Object param) {
// check for mockservices
if (project.getMockServiceCount() == 0) {
if ((project.getMockServiceCount() + project.getRestMockServiceCount()) == 0) {
UISupport.showErrorMessage("Project does not have any MockServices to deploy");
return;
}

// create war file
if (dialog == null) {
dialog = ADialogBuilder.buildDialog(MockAsWarDialog.class);
dialog.getFormField(MockAsWarDialog.GLOBAL_SETTINGS).addFormFieldListener(new XFormFieldListener() {
public void valueChanged(XFormField sourceField, String newValue, String oldValue) {
dialog.getFormField(MockAsWarDialog.SETTINGS_FILE).setEnabled(Boolean.valueOf(newValue));
}
});

dialog.getFormField(MockAsWarDialog.WAR_DIRECTORY).addFormFieldValidator(
new RequiredValidator("WAR Directory is required"));
buildDialog();
}

XFormField settingFile = dialog.getFormField(MockAsWarDialog.SETTINGS_FILE);
settingFile.setValue(((DefaultSoapUICore) SoapUI.getSoapUICore()).getSettingsFile());
settingFile.setEnabled(dialog.getBooleanValue(MockAsWarDialog.GLOBAL_SETTINGS));
XFormField settingFile = getPreFilledSettings();

XFormField warDirectory = dialog.getFormField(MockAsWarDialog.WAR_DIRECTORY);
XFormField warFile = dialog.getFormField(MockAsWarDialog.WAR_FILE);
Expand Down Expand Up @@ -95,7 +83,28 @@ public void valueChanged(XFormField sourceField, String newValue, String oldValu
}
}

@AForm(description = "Configure what to include in generated WAR", name = "Deploy Project as WAR", helpUrl = HelpUrls.MOCKASWAR_HELP_URL)
private XFormField getPreFilledSettings()
{
XFormField settingFile = dialog.getFormField( MockAsWarDialog.SETTINGS_FILE);
settingFile.setValue(((DefaultSoapUICore ) SoapUI.getSoapUICore()).getSettingsFile());
settingFile.setEnabled(dialog.getBooleanValue( MockAsWarDialog.GLOBAL_SETTINGS));
return settingFile;
}

private void buildDialog()
{
dialog = ADialogBuilder.buildDialog( MockAsWarDialog.class );
dialog.getFormField( MockAsWarDialog.GLOBAL_SETTINGS).addFormFieldListener(new XFormFieldListener() {
public void valueChanged(XFormField sourceField, String newValue, String oldValue) {
dialog.getFormField( MockAsWarDialog.SETTINGS_FILE).setEnabled(Boolean.valueOf(newValue));
}
});

dialog.getFormField( MockAsWarDialog.WAR_DIRECTORY).addFormFieldValidator(
new RequiredValidator("WAR Directory is required"));
}

@AForm(description = "Configure what to include in generated WAR", name = "Deploy Project as WAR", helpUrl = HelpUrls.MOCKASWAR_HELP_URL)
protected interface MockAsWarDialog {
@AField(description = "Specify if global settings should be included", name = "Include Global Settings", type = AFieldType.BOOLEAN)
public final static String GLOBAL_SETTINGS = "Include Global Settings";
Expand Down
Expand Up @@ -81,17 +81,22 @@ public void init() throws ServletException {
}

if (project == null) {
logger.info("Starting MockService(s)");
logger.info("Starting Mock service(s)");
}

for (MockService mockService : project.getMockServiceList()) {
logger.info("Starting mockService [" + mockService.getName() + "]");
logger.info("Starting mock service [" + mockService.getName() + "]");
if (StringUtils.hasContent(mockServiceEndpoint)) {
((WsdlMockService) mockService).setMockServiceEndpoint(mockServiceEndpoint);
}

mockService.start();
}

for (MockService mockService : project.getRestMockServiceList()) {
logger.info("Starting REST mock service [" + mockService.getName() + "]");
mockService.start();
}
} catch (Exception ex) {
logger.log(Level.SEVERE, null, ex);
}
Expand Down

0 comments on commit cde5776

Please sign in to comment.