Package com.google.sitebricks

Examples of com.google.sitebricks.Respond


  }

  @Test(dataProvider = REQUIRE_TAGS)
  public final void requireWidgetsRenderToHeadTag(final String requireString)
      throws ExpressionCompileException {
    final Respond respond = RespondersForTesting.newRespond();

    respond.require(requireString);
    respond.require(requireString);

    WidgetChain chain = new ProceedingWidgetChain();
    final MvelEvaluatorCompiler compiler = new MvelEvaluatorCompiler(Object.class);

    chain.addWidget(new HeaderWidget(new TerminalWidgetChain(),
        Maps.<String, String>newHashMap(), compiler));

    List<Node> nodes = HtmlParser.parse("<html>" + requireString + "</html>");
    Node node = nodes.get(0).childNode(0);

    WidgetChain inner = Chains.terminal();
    if (!node.childNodes().isEmpty())
      inner = Chains.singleton(new TextWidget(node.childNode(0).toString(), compiler));

    chain.addWidget(new RequireWidget(new XmlWidget(inner, node.nodeName(), compiler,
        HtmlTemplateCompiler.parseAttribs(node.attributes()))));
    chain.addWidget(new RequireWidget(new XmlWidget(inner, node.nodeName(), compiler,
        HtmlTemplateCompiler.parseAttribs(node.attributes()))));
    chain.addWidget(new RequireWidget(new XmlWidget(inner, node.nodeName(), compiler,
        HtmlTemplateCompiler.parseAttribs(node.attributes()))));

    //render
    chain.render(new Object(), respond);

    final String expected = "<head>" + requireString + "</head>";
    final String output = respond.toString();
    assert expected.equals(output) : "Header not correctly rendered. Was: \n" + output
        + "\n-- but expected: --\n" + expected;
  }
View Full Code Here


    //forName expects pageName to be in all-lower case (it's an optimization)
    pageName = pageName.toLowerCase();

    final PageBook pageBook = createMock(PageBook.class);
    final PageBook.Page page = createMock(PageBook.Page.class);
    final Respond respond = RespondersForTesting.newRespond();
    final Renderable widget = createMock(Renderable.class);

    expect(pageBook.forName(pageName))
        .andReturn(page);


    //mypage does?
    final MyEmbeddedPage myEmbeddedPage = new MyEmbeddedPage();
    expect(page.instantiate())
        .andReturn(myEmbeddedPage);

    expect(page.doMethod(isA(String.class), anyObject(), isA(String.class),
        isA(Request.class)))
        .andReturn(null);
    expect(page.widget())
        .andReturn(widget);

    widget.render(eq(myEmbeddedPage), isA(Respond.class));


    replay(pageBook, page, widget);

    final MvelEvaluator evaluator = new MvelEvaluator();
    final WidgetChain widgetChain = new ProceedingWidgetChain();
    final WidgetChain targetWidgetChain = new ProceedingWidgetChain();

    //noinspection unchecked
    targetWidgetChain.addWidget(new XmlWidget(new TerminalWidgetChain(), "p", createMock(EvaluatorCompiler.class), Collections.EMPTY_MAP));
    widgetChain.addWidget(new ShowIfWidget(targetWidgetChain, "true", evaluator));

    final EmbedWidget embedWidget = new EmbedWidget(Collections.<String, ArgumentWidget>emptyMap(), expression, evaluator, pageBook, pageName);
    embedWidget.init(new EmbeddedRespondFactory(), HtmlTemplateCompilerTest.mockRequestProviderForContext());
    embedWidget
        .render(new MyParentPage(passOn), respond);

    //assert bindings
    assert myEmbeddedPage.isSet() : "variable not passed on to embedded page";
    assert passOn.equals(myEmbeddedPage.getMessage()) : "variable not set on embedded page";

    //the render was ok
    final String resp = respond.toString();
    assert "".equals(resp) : "widget not embedded correctly : " + resp;

    verify(pageBook, page, widget);
  }
View Full Code Here

    //forName expects pageName to be in all-lower case (it's an optimization)
    pageName = pageName.toLowerCase();

    final PageBook pageBook = createMock(PageBook.class);
    final PageBook.Page page = createMock(PageBook.Page.class);
    final Respond respond = RespondersForTesting.newRespond();


    final MvelEvaluator evaluator = new MvelEvaluator();

    final WidgetChain widget = new ProceedingWidgetChain();
    final WidgetChain targetWidgetChain = new ProceedingWidgetChain();

    //noinspection unchecked
    targetWidgetChain.addWidget(new XmlWidget(new TerminalWidgetChain(), "p", new MvelEvaluatorCompiler(Object.class),
        new LinkedHashMap<String, String>() {{
          put("class", "pretty");
          put("id", "a-p-tag");
        }}));
    widget.addWidget(new ShowIfWidget(targetWidgetChain, "true", evaluator));

    Renderable bodyWrapper = new XmlWidget(widget, "body", createMock(EvaluatorCompiler.class), Collections.<String, String>emptyMap());

    expect(pageBook.forName(pageName))
        .andReturn(page);


    //mypage does?
    final MyEmbeddedPage myEmbeddedPage = new MyEmbeddedPage();
    expect(page.instantiate())
        .andReturn(myEmbeddedPage);

    expect(page.doMethod(isA(String.class), anyObject(), isA(String.class),
        isA(Request.class)))
        .andReturn(null);
    expect(page.widget())
        .andReturn(bodyWrapper);

    replay(pageBook, page);


    final EmbedWidget embedWidget = new EmbedWidget(Collections.<String, ArgumentWidget>emptyMap(), expression, evaluator, pageBook, pageName);
    embedWidget.init(new EmbeddedRespondFactory(), HtmlTemplateCompilerTest.mockRequestProviderForContext());
    embedWidget
        .render(new MyParentPage(passOn), respond);


    //assert bindings
    assert myEmbeddedPage.isSet() : "variable not passed on to embedded page";
    assert passOn.equals(myEmbeddedPage.getMessage()) : "variable not set on embedded page";

    //the render was ok
    final String resp = respond.toString();
    assert "<p class=\"pretty\" id=\"a-p-tag\"/>".equals(resp) : "widget not embedded correctly : " + resp;

    verify(pageBook, page);
  }
View Full Code Here

    //forName expects pageName to be in all-lower case (it's an optimization)
    targetPageName = targetPageName.toLowerCase();

    final PageBook pageBook = createMock(PageBook.class);
    final PageBook.Page page = createMock(PageBook.Page.class);
    final Respond respond = RespondersForTesting.newRespond();


    final MvelEvaluator evaluator = new MvelEvaluator();

    final WidgetChain widget = new ProceedingWidgetChain();
    final WidgetChain targetWidgetChain = new ProceedingWidgetChain();
    //noinspection unchecked
    targetWidgetChain.addWidget(new XmlWidget(new ProceedingWidgetChain()
        .addWidget(new IncludeWidget(new TerminalWidgetChain(), "'me'", evaluator)),

        "p", new MvelEvaluatorCompiler(Object.class), new LinkedHashMap<String, String>() {{
          put("class", "pretty");
          put("id", "a-p-tag");
        }}));
    widget.addWidget(new ShowIfWidget(targetWidgetChain, "true", evaluator));

    Renderable bodyWrapper = new XmlWidget(widget, "body", createMock(EvaluatorCompiler.class), Collections.<String, String>emptyMap());

    expect(pageBook.forName(targetPageName))
        .andReturn(page);


    //mypage does?
    final MyEmbeddedPage myEmbeddedPage = new MyEmbeddedPage();
    expect(page.instantiate())
        .andReturn(myEmbeddedPage);

    expect(page.doMethod(isA(String.class), anyObject(), isA(String.class),
        isA(Request.class)))
        .andReturn(null);
    expect(page.widget())
        .andReturn(bodyWrapper);

    replay(pageBook, page);

    //create embedding arguments
    final String includeExpr = "me";

    Map<String, ArgumentWidget> inners = new HashMap<String, ArgumentWidget>();
    inners.put(includeExpr, new ArgumentWidget(new ProceedingWidgetChain().addWidget(new TextWidget(HELLO_FROM_INCLUDE, new MvelEvaluatorCompiler(Object.class))),
        includeExpr, evaluator));


    final EmbedWidget embedWidget = new EmbedWidget(inners, expression, evaluator, pageBook, targetPageName);
    embedWidget.init(new EmbeddedRespondFactory(), HtmlTemplateCompilerTest.mockRequestProviderForContext());
    embedWidget
        .render(new MyParentPage(passOn), respond);

    //assert bindings
    assert myEmbeddedPage.isSet() : "variable not passed on to embedded page";
    assert passOn.equals(myEmbeddedPage.getMessage()) : "variable not set on embedded page";

    //the render was ok
    final String resp = respond.toString();
    assert String.format("<p class=\"pretty\" id=\"a-p-tag\">%s</p>", HELLO_FROM_INCLUDE).equals(resp)
        : "widget not embedded correctly : " + resp;

    verify(pageBook, page);
  }
View Full Code Here

    //forName expects pageName to be in all-lower case (it's an optimization)
    pageName = pageName.toLowerCase();

    final PageBook pageBook = createMock(PageBook.class);
    final PageBook.Page page = createMock(PageBook.Page.class);
    final Respond respond = RespondersForTesting.newRespond();


    final MvelEvaluator evaluator = new MvelEvaluator();

    final ProceedingWidgetChain widget = new ProceedingWidgetChain();
    final WidgetChain targetWidgetChain = new ProceedingWidgetChain();
    //noinspection unchecked
    targetWidgetChain.addWidget(new XmlWidget(new TerminalWidgetChain(), "p", new MvelEvaluatorCompiler(Object.class), new LinkedHashMap<String, String>() {{
      put("class", "pretty");
      put("id", "a-p-tag");
    }}));
    widget.addWidget(new ShowIfWidget(targetWidgetChain, "false", evaluator));

    expect(pageBook.forName(pageName))
        .andReturn(page);


    //mypage does?
    final MyEmbeddedPage myEmbeddedPage = new MyEmbeddedPage();
    expect(page.instantiate())
        .andReturn(myEmbeddedPage);

    expect(page.doMethod(isA(String.class), anyObject(), isA(String.class),
        isA(Request.class)))
        .andReturn(null);
    expect(page.widget())
        .andReturn(widget);

    replay(pageBook, page);


    final EmbedWidget embedWidget = new EmbedWidget(Collections.<String, ArgumentWidget>emptyMap(), expression, evaluator, pageBook, pageName);
    embedWidget.init(new EmbeddedRespondFactory(), HtmlTemplateCompilerTest.mockRequestProviderForContext());
    embedWidget
        .render(new MyParentPage(passOn), respond);

    //assert bindings
    assert myEmbeddedPage.isSet() : "variable not passed on to embedded page";
    assert passOn.equals(myEmbeddedPage.getMessage()) : "variable not set on embedded page";

    //the render was ok
    final String resp = respond.toString();
    assert "".equals(resp) : "widget not embedded correctly : " + resp;

    verify(pageBook, page);
  }
View Full Code Here

  public Object dispatch(Request request, Events event) throws IOException {
    String uri = request.path();

    //first try dispatching as a static resource service
    Respond respond = resourcesService.serve(uri);

    if (null != respond)
      return respond;

    // Otherwise try to dispatch as a widget/page
View Full Code Here

        Set<? extends ConstraintViolation<?>> scv = (Set<? extends ConstraintViolation<?>>) cve.getConstraintViolations();
        errors = validationConvertor.to(scv);
    }
       
    //render to respond
    Respond respond = new StringBuilderRespond(instance);
    respond.setErrors(errors);
    if (null != redirect) {

      if (redirect instanceof String)
        respond.redirect((String) redirect);
      else if (redirect instanceof Class) {
        PageBook.Page targetPage = book.forClass((Class<?>) redirect);

        // should never be null coz it is validated on compile.
        respond.redirect(contextualize(request, targetPage.getUri()));
      } else if (redirect instanceof Reply<?>) {
        // To allow non-headless pages to use Reply<?> for more advanced HTTP responses
        return redirect;
      } else {
        // Handle page-chaining driven redirection.
        PageBook.Page targetPage = book.forInstance(redirect);

        // should never be null coz it will be validated at compile time.
        flashCacheProvider.get().put(targetPage.getUri(), targetPage);

        // Send to the canonical address of the page. This is also
        // verified at compile, not be a variablized matcher.
        respond.redirect(contextualize(request, targetPage.getUri()));
      }
    } else {
      page.widget().render(instance, respond);
    }
   
View Full Code Here

    //forName expects pageName to be in all-lower case (it's an optimization)
    pageName = pageName.toLowerCase();

    final PageBook pageBook = createMock(PageBook.class);
    final PageBook.Page page = createMock(PageBook.Page.class);
    final Respond mockRespond = createNiceMock(Respond.class);
    final Renderable widget = createMock(Renderable.class);

    expect(pageBook.forName(pageName))
        .andReturn(page);
View Full Code Here

    //forName expects pageName to be in all-lower case (it's an optimization)
    pageName = pageName.toLowerCase();

    final PageBook pageBook = createMock(PageBook.class);
    final PageBook.Page page = createMock(PageBook.Page.class);
    final Respond mockRespond = createMock(Respond.class);
    final Renderable widget = createMock(Renderable.class);

    expect(pageBook.forName(pageName))
        .andReturn(page);
View Full Code Here

    //forName expects pageName to be in all-lower case (it's an optimization)
    pageName = pageName.toLowerCase();

    final PageBook pageBook = createMock(PageBook.class);
    final PageBook.Page page = createMock(PageBook.Page.class);
    final Respond mockRespond = createNiceMock(Respond.class)//tolerate whatever output
    final Renderable widget = createMock(Renderable.class);

    expect(pageBook.forName(pageName))
        .andReturn(page);
View Full Code Here

TOP

Related Classes of com.google.sitebricks.Respond

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.