public void modifyRESTValidation(boolean enableRestSupport) { JAXRSValidatorPreferencePage page = new JAXRSValidatorPreferencePage(); page.open(); page.setEnableValidation(enableRestSupport); page.ok(); if (new ShellWithTextIsActive("Validator Settings Changed").test()) { new PushButton("Yes").click(); } new WaitUntil(new JobIsRunning(), TimePeriod.NORMAL, false); new WaitWhile(new JobIsRunning(), TimePeriod.getCustom(20), false); }
public class RESTfulHelper { public static final String PATH_PARAM_VALID_ERROR = "@PathParam value"; public static final String JAX_RS_PROBLEM = "JAX-RS Problem"; private final TimePeriod WAIT_FOR_PROBLEMS_FALSE_POSItIVE_TIMEOUT = TimePeriod.getCustom(2); private final TimePeriod WAIT_FOR_PROBLEMS_FALSE_NEGATIVE_TIMEOUT = TimePeriod.getCustom(5); public List<TreeItem> getRESTValidationErrors(int expectedCount) { return getRESTValidationErrors(null, null, expectedCount); } public List<TreeItem> getRESTValidationErrors(String wsProjectName, int expectedCount) { return getRESTValidationErrors(wsProjectName, null, expectedCount); } public List<TreeItem> getRESTValidationErrors( String wsProjectName, String description, int expectedCount) { Matcher<String> descriptionMatcher = description != null ? StringContains.containsString(description) : null; Matcher<String> pathMatcher = wsProjectName != null ? StringStartsWith.startsWith("/" + wsProjectName) : null; /* wait for jax-rs validation */ if (expectedCount == 0 && !new ProblemsExists() .test()) { // prevent from false positive result when we do not expect errors and there // is no error new WaitWhile( new ProblemsCount( ProblemsCount.ProblemType.ERROR, expectedCount, descriptionMatcher, null, pathMatcher, null, null), WAIT_FOR_PROBLEMS_FALSE_POSItIVE_TIMEOUT, false); } else { // prevent from false negative result new WaitUntil( new ProblemsCount( ProblemsCount.ProblemType.ERROR, expectedCount, descriptionMatcher, null, pathMatcher, null, null), WAIT_FOR_PROBLEMS_FALSE_NEGATIVE_TIMEOUT, false); } /* return jax-rs validation errors */ return new ProblemsView() .getErrors(descriptionMatcher, null, pathMatcher, null, Is.is(JAX_RS_PROBLEM)); } public List<TreeItem> getRESTValidationWarnings(int expectedCount) { return getRESTValidationWarnings(null, null, expectedCount); } public List<TreeItem> getRESTValidationWarnings(String wsProjectName, int expectedCount) { return getRESTValidationWarnings(wsProjectName, null, expectedCount); } public List<TreeItem> getRESTValidationWarnings( String wsProjectName, String description, int expectedCount) { Matcher<String> descriptionMatcher = description != null ? StringContains.containsString(description) : null; Matcher<String> pathMatcher = wsProjectName != null ? StringStartsWith.startsWith("/" + wsProjectName) : null; /* wait for warnings */ if (expectedCount == 0) { // prevent from false-positive new WaitWhile( new ProblemsCount( ProblemsCount.ProblemType.WARNING, expectedCount, descriptionMatcher, null, pathMatcher, null, Is.is(JAX_RS_PROBLEM)), WAIT_FOR_PROBLEMS_FALSE_POSItIVE_TIMEOUT, false); } else { // prevent from false-negative new WaitUntil( new ProblemsCount( ProblemsCount.ProblemType.WARNING, expectedCount, descriptionMatcher, null, pathMatcher, null, Is.is(JAX_RS_PROBLEM)), WAIT_FOR_PROBLEMS_FALSE_NEGATIVE_TIMEOUT, false); } /* return jax-rs validation warnings */ return new ProblemsView() .getWarnings(descriptionMatcher, null, pathMatcher, null, Is.is(JAX_RS_PROBLEM)); } public List<TreeItem> getPathAnnotationValidationErrors(String wsProjectName, int expectedCount) { return getRESTValidationErrors(wsProjectName, PATH_PARAM_VALID_ERROR, expectedCount); } public void enableRESTValidation() { modifyRESTValidation(true); } public void disableRESTValidation() { modifyRESTValidation(false); } public void modifyRESTValidation(boolean enableRestSupport) { JAXRSValidatorPreferencePage page = new JAXRSValidatorPreferencePage(); page.open(); page.setEnableValidation(enableRestSupport); page.ok(); if (new ShellWithTextIsActive("Validator Settings Changed").test()) { new PushButton("Yes").click(); } new WaitUntil(new JobIsRunning(), TimePeriod.NORMAL, false); new WaitWhile(new JobIsRunning(), TimePeriod.getCustom(20), false); } public void addRestSupport(String wsProjectName) { configureRestSupport(wsProjectName, true); } public void removeRestSupport(String wsProjectName) { configureRestSupport(wsProjectName, false); } public boolean isRestSupportEnabled(String wsProjectName) { Project project = new ProjectExplorer().getProject(wsProjectName); return project.containsItem(RestFullLabels.REST_EXPLORER_LABEL.getLabel()) || project.containsItem(RestFullLabels.REST_EXPLORER_LABEL_BUILD.getLabel()); } @SuppressWarnings("static-access") public List<String> addRestEasyLibs(String wsProjectName) { List<File> restLibsPaths = getPathForRestLibs(); List<String> variables = new ArrayList<String>(); BuildPathHelper buildPathHelper = new BuildPathHelper(); for (File f : restLibsPaths) { variables.add(buildPathHelper.addExternalJar(f.getPath(), wsProjectName, true)); } return variables; } private List<File> getPathForRestLibs() { assertTrue(TestConfigurator.currentConfig.getServer().type.equals("EAP")); String runtimeHome = TestConfigurator.currentConfig.getServer().runtimeHome; // index of last occurence of "/" in EAP runtime path: jboss-eap-5.1/jboss-as int indexOfAS = runtimeHome.lastIndexOf("/"); // jboss-eap-5.1/jboss-as --> jboss-eap-5.1 String eapDirHome = runtimeHome.substring(0, indexOfAS); String restEasyDirPath = eapDirHome + "/" + "resteasy"; File restEasyDir = new File(restEasyDirPath); String[] restEasyLibs = {"jaxrs-api.jar"}; return new ResourceHelper().searchAllFiles(restEasyDir, restEasyLibs); } private void configureRestSupport(String wsProjectName, boolean enableRestSupport) { new ProjectExplorer().getProject(wsProjectName).select(); Menu menu = new ContextMenu( "Configure", enableRestSupport ? RestFullLabels.REST_SUPPORT_MENU_LABEL_ADD.getLabel() : RestFullLabels.REST_SUPPORT_MENU_LABEL_REMOVE.getLabel()); menu.select(); new WaitUntil(new JobIsRunning(), TimePeriod.NORMAL, false); } }