/** * Appends the current environment to the console. */ private void dumpWEnvironment() { StringBuffer text = new StringBuffer(); Environment env = getEnvironment(); text.append("\n\nWEnvironment" + "\n------------"); text.append("\nAppId: ").append(env.getAppId()); text.append("\nBaseUrl: ").append(env.getBaseUrl()); text.append("\nHostFreeBaseUrl: ").append(env.getHostFreeBaseUrl()); text.append("\nPostPath: ").append(env.getPostPath()); text.append("\nTargetablePath: ").append(env.getWServletPath()); text.append("\nAppHostPath: ").append(env.getAppHostPath()); text.append("\nThemePath: ").append(env.getThemePath()); text.append("\nStep: ").append(env.getStep()); text.append("\nSession Token: ").append(env.getSessionToken()); text.append("\nFormEncType: ").append(env.getFormEncType()); text.append('\n'); appendToConsole(text.toString()); } }
/** * Returns a dynamic URL that this wwindow component can be accessed from. * * @return the URL to access this wwindow component. */ public String getUrl() { Environment env = getEnvironment(); Map<String, String> parameters = env.getHiddenParameters(); parameters.put(WWINDOW_REQUEST_PARAM_KEY, getId()); // Override the step count with WWindow step parameters.put(Environment.STEP_VARIABLE, String.valueOf(getStep())); String url = env.getWServletPath(); return WebUtilities.getPath(url, parameters, true); }
/** * {@inheritDoc} */ @Override public void preparePaint(final Request request) { // Set session token UIContext uic = UIContextHolder.getCurrent(); if (uic.getEnvironment().getSessionToken() == null) { uic.getEnvironment().setSessionToken(UUID.randomUUID().toString()); } super.preparePaint(request); }
@Test public void testServiceRequestCorrectToken() { uic.getEnvironment().setSessionToken("X"); uic.getEnvironment().setStep(10); request.setParameter(Environment.SESSION_TOKEN_VARIABLE, "X"); interceptor.serviceRequest(request); Assert.assertTrue("Action phase should have occurred for corret token", component.handleRequestCalled); Assert.assertEquals("Step count should not have been incremented for correct token", 10, uic.getEnvironment() .getStep()); }
@Override public void paint(final RenderContext renderContext) { Environment env = UIContextHolder.getCurrent().getEnvironment(); env.setStep(env.getStep() + 1); hiddenParams = env.getHiddenParameters(); } }
@Test public void testServiceRequestDefaultState() { // Test default state interceptor.serviceRequest(request); Assert.assertTrue("Action phase should have occurred by default", component.handleRequestCalled); Assert.assertEquals("Step should not have been incremented", 0, uic.getEnvironment(). getStep()); interceptor.preparePaint(request); Assert.assertEquals("Step should have been incremented", 1, uic.getEnvironment().getStep()); }
/** * {@inheritDoc} */ @Override public String getSessionToken() { return backing.getSessionToken(); }
xml.appendAttribute("id", component.getId()); xml.appendOptionalAttribute("class", component.getHtmlClass()); xml.appendUrlAttribute("applicationUrl", uic.getEnvironment().getPostPath()); xml.appendUrlAttribute("ajaxUrl", uic.getEnvironment().getWServletPath()); xml.appendOptionalAttribute("unsavedChanges", application.hasUnsavedChanges(), "true"); xml.appendOptionalAttribute("title", application.getTitle()); Map<String, String> hiddenFields = uic.getEnvironment().getHiddenParameters();
/** * Basic sanity-test to ensure that the WComponent app is performing all the processing that it should. * * @throws Exception an exception */ @Test public void testWServletAppCorrectness() throws Exception { SimpleWServlet servlet = new SimpleWServlet(); servlet.init(new MockServletConfig()); MockHttpSession session = new MockHttpSession(); // First request sendWServletRequest(servlet, session, 0, null); // Second request WServletHelper helper = new WServletHelper(servlet, new MockHttpServletRequest(session), new MockHttpServletResponse()); UIContext uic = helper.getUIContext(); SimpleApp app = (SimpleApp) uic.getUI(); sendWServletRequest(servlet, session, 1, uic.getEnvironment().getSessionToken()); setActiveContext(uic); Assert.assertEquals("Incorrect step", 2, uic.getEnvironment().getStep()); Assert.assertEquals("Incorrect property1 value", "p1_1", ((SimpleFormBean) app.beanContainer.getBean()).getProperty1()); Assert.assertEquals("Incorrect property2 value", "p2_1", ((SimpleFormBean) app.beanContainer.getBean()).getProperty2()); }
/** * {@inheritDoc} */ @Override public String getBaseUrl() { return backing.getBaseUrl(); }
/** * {@inheritDoc} */ @Override public String getAppId() { return backing.getAppId(); }
/** * The {@link #windowId} will need to be carried through to subsequent requests so that the correct component * will continue being targeted. The step counter should also be retrieved from a WWindow if one is present. * * @return the hidden parameters. */ @Override public Map<String, String> getHiddenParameters() { Map<String, String> map = backing.getHiddenParameters(); if (windowId != null) { map.put(STEP_VARIABLE, String.valueOf(getStep())); map.put(WWindow.WWINDOW_REQUEST_PARAM_KEY, windowId); } return map; }
/** * {@inheritDoc} */ @Override public String getThemePath() { return backing.getThemePath(); }
/** * Build the url to refresh the application. * * @param uic the current user's context * @return the application url */ private String buildApplicationUrl(final UIContext uic) { Environment env = uic.getEnvironment(); return env.getPostPath(); }
/** * {@inheritDoc} */ @Override public String getAppHostPath() { return backing.getAppHostPath(); }
/** * {@inheritDoc} */ @Override public String getHostFreeBaseUrl() { return backing.getHostFreeBaseUrl(); }
/** * {@inheritDoc} */ @Override public String getFormEncType() { return backing.getFormEncType(); }
@Test public void testServiceRequestIncorrectToken() { uic.getEnvironment().setSessionToken("X"); uic.getEnvironment().setStep(10); request.setParameter(Environment.SESSION_TOKEN_VARIABLE, "Y"); try { interceptor.serviceRequest(request); Assert.fail("Should have thrown an excpetion for incorrect token"); } catch (SystemException e) { Assert.assertFalse("Action phase should not have occurred for token error", component.handleRequestCalled); Assert.assertEquals("Step count should not have been incremented for token error", 10, uic.getEnvironment() .getStep()); } }