Author: craigmcc Date: Tue Jan 3 19:21:24 2006 New Revision: 365809 URL: http://svn.apache.org/viewcvs?rev=365809&view=rev Log: Add examples using the new-style remoting APIs to use method bindings to call business logic methods.
Added: struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/remoting/ struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/remoting/Business.java (with props) Modified: struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/view/Bundle.properties struts/shale/trunk/use-cases/src/web/WEB-INF/faces-config.xml struts/shale/trunk/use-cases/src/web/usecases.jsp Added: struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/remoting/Business.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/remoting/Business.java?rev=365809&view=auto ============================================================================== --- struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/remoting/Business.java (added) +++ struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/remoting/Business.java Tue Jan 3 19:21:24 2006 @@ -0,0 +1,142 @@ +/* + * Copyright 2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shale.usecases.remoting; + +import java.io.IOException; +import javax.faces.context.FacesContext; +import javax.faces.context.ResponseWriter; +import javax.faces.model.SelectItem; +import org.apache.shale.remoting.faces.ResponseFactory; +import org.apache.shale.usecases.view.Domains; +import org.apache.shale.view.AbstractFacesBean; + +/** + * <p>Remotely executable business logic methods that complete the entire + * response.</p> + * + * $Id$ + */ +public class Business extends AbstractFacesBean { + + + // ---------------------------------------------------------- Public Methods + + + /** + * <p>Return the set of reported categories.</p> + */ + public void listCategories() throws IOException { + + FacesContext context = FacesContext.getCurrentInstance(); + selectItems(context, supportedCategories(context)); + + } + + + /** + * <p>Return the set of reported locales.</p> + */ + public void listLocales() throws IOException { + + FacesContext context = FacesContext.getCurrentInstance(); + selectItems(context, supportedLocales(context)); + + } + + + + // ------------------------------------------------------- Protected Methods + + + /** + * <p>Render an XML document containing the specified selection items + * as the response to this request.</p> + * + * @param context <code>FacesContext</code> for the current request + * @param items Selection items to be rendered + */ + protected void selectItems(FacesContext context, SelectItem items[]) throws IOException { + + ResponseWriter writer = + (new ResponseFactory()).getResponseWriter(context, "text/xml"); + + // Generate the response content + writer.startDocument(); + writer.startElement("items", null); + writer.write("\n"); + for (int i = 0; i < items.length; i++) { + writer.startElement("item", null); + writer.write("\n"); + Object value = items[i].getValue(); + if (value != null) { + writer.startElement("value", null); + writer.writeText(value, null); + writer.endElement("value"); + writer.write("\n"); + } + String label = items[i].getLabel(); + if (label != null) { + writer.startElement("label", null); + writer.writeText(label, null); + writer.endElement("label"); + writer.write("\n"); + } + String description = items[i].getLabel(); + if (description != null) { + writer.startElement("description", null); + writer.writeText(description, null); + writer.endElement("description"); + writer.write("\n"); + } + writer.endElement("item"); + writer.write("\n"); + } + writer.endElement("items"); + writer.write("\n"); + + context.responseComplete(); + + } + + + /** + * <p>Return the set of legal supported categories.</p> + * + * @param context <code>FacesContext</code> for the current request + */ + protected SelectItem[] supportedCategories(FacesContext context) { + + Domains domains = (Domains) getBean("domains"); + return domains.getSupportedCategories(context.getViewRoot().getLocale()); + + } + + + /** + * <p>Return the set of legal supported locales.</p> + * + * @param context <code>FacesContext</code> for the current request + */ + protected SelectItem[] supportedLocales(FacesContext context) { + + Domains domains = (Domains) getBean("domains"); + return domains.getSupportedLocales(context.getViewRoot().getLocale()); + + } + + +} Propchange: struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/remoting/Business.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/remoting/Business.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Modified: struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/view/Bundle.properties URL: http://svn.apache.org/viewcvs/struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/view/Bundle.properties?rev=365809&r1=365808&r2=365809&view=diff ============================================================================== --- struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/view/Bundle.properties (original) +++ struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/view/Bundle.properties Tue Jan 3 19:21:24 2006 @@ -109,14 +109,15 @@ usecases.ajax=Ajax Interactions usecases.completion=Code Completion (Standard JSF Components) usecases.edit=Edit User Profile -usecases.java=Remoting Support (Java Based) +usecases.java=Old-Style Remoting Support (Java Based) usecases.jndi=JNDI Access Via Expressions -usecases.jsp=Remoting Support (JSP Based) +usecases.jsp=Old-Style Remoting Support (JSP Based) usecases.locale=Select Language usecases.locales=List Locales (Remoting) usecases.logoff=Log Off usecases.logon=Log On Dialog usecases.primary=Primary Use Cases +usecases.remoting=New Style Remoting Support usecases.states=List State Names (Remoting) usecases.subview=Subview Processing usecases.title=Shale Framework Use Cases Modified: struts/shale/trunk/use-cases/src/web/WEB-INF/faces-config.xml URL: http://svn.apache.org/viewcvs/struts/shale/trunk/use-cases/src/web/WEB-INF/faces-config.xml?rev=365809&r1=365808&r2=365809&view=diff ============================================================================== --- struts/shale/trunk/use-cases/src/web/WEB-INF/faces-config.xml (original) +++ struts/shale/trunk/use-cases/src/web/WEB-INF/faces-config.xml Tue Jan 3 19:21:24 2006 @@ -232,13 +232,13 @@ <from-action>#{rolodex.changeTab}</from-action> <from-outcome>rolodex$test</from-outcome> <to-view-id>/rolodex/rolodex.jsp</to-view-id> - </navigation-case> - <navigation-case> - <from-action>home</from-action> - <from-outcome>home</from-outcome> - <to-view-id>/usecases.faces</to-view-id> - <redirect/> - </navigation-case> + </navigation-case> + <navigation-case> + <from-action>home</from-action> + <from-outcome>home</from-outcome> + <to-view-id>/usecases.faces</to-view-id> + <redirect/> + </navigation-case> </navigation-rule> @@ -271,13 +271,13 @@ <from-action>#{rolodex$hrolodex.changeTab}</from-action> <from-outcome>rolodex$test</from-outcome> <to-view-id>/rolodex/hrolodex.html</to-view-id> - </navigation-case> - <navigation-case> - <from-action>home</from-action> - <from-outcome>home</from-outcome> - <to-view-id>/usecases.faces</to-view-id> - <redirect/> - </navigation-case> + </navigation-case> + <navigation-case> + <from-action>home</from-action> + <from-outcome>home</from-outcome> + <to-view-id>/usecases.faces</to-view-id> + <redirect/> + </navigation-case> </navigation-rule> @@ -309,13 +309,13 @@ <from-action>#{rolodex$xhrolodex.changeTab}</from-action> <from-outcome>rolodex$test</from-outcome> <to-view-id>/rolodex/xhrolodex.html</to-view-id> - </navigation-case> - <navigation-case> - <from-action>home</from-action> - <from-outcome>home</from-outcome> - <to-view-id>/usecases.faces</to-view-id> - <redirect/> - </navigation-case> + </navigation-case> + <navigation-case> + <from-action>home</from-action> + <from-outcome>home</from-outcome> + <to-view-id>/usecases.faces</to-view-id> + <redirect/> + </navigation-case> </navigation-rule> @@ -349,22 +349,22 @@ <from-outcome>rolodex$test</from-outcome> <to-view-id>/rolodex/rolodex.xml</to-view-id> </navigation-case> - <navigation-case> - <from-action>home</from-action> - <from-outcome>home</from-outcome> - <to-view-id>/usecases.faces</to-view-id> - <redirect/> - </navigation-case> + <navigation-case> + <from-action>home</from-action> + <from-outcome>home</from-outcome> + <to-view-id>/usecases.faces</to-view-id> + <redirect/> + </navigation-case> </navigation-rule> - <navigation-rule> - <from-view-id>*</from-view-id> - <navigation-case> - <from-outcome>home</from-outcome> - <to-view-id>/usecases.jsp</to-view-id> - </navigation-case> - </navigation-rule> + <navigation-rule> + <from-view-id>*</from-view-id> + <navigation-case> + <from-outcome>home</from-outcome> + <to-view-id>/usecases.jsp</to-view-id> + </navigation-case> + </navigation-rule> <navigation-rule> <navigation-case> @@ -488,6 +488,22 @@ <to-view-id>/lookup/listLocales.jsp</to-view-id> </navigation-case> </navigation-rule> + + + <!-- ======================== Remoting Support =========================== --> + + + <managed-bean> + <description> + Business logic to produce lists of categories, locales, and state names + using the org.apache.shale.remoting package support. + </description> + <managed-bean-name>remoting$business</managed-bean-name> + <managed-bean-class> + org.apache.shale.usecases.remoting.Business + </managed-bean-class> + <managed-bean-scope>request</managed-bean-scope> + </managed-bean> <!-- =========================== Subview Processing ====================== --> Modified: struts/shale/trunk/use-cases/src/web/usecases.jsp URL: http://svn.apache.org/viewcvs/struts/shale/trunk/use-cases/src/web/usecases.jsp?rev=365809&r1=365808&r2=365809&view=diff ============================================================================== --- struts/shale/trunk/use-cases/src/web/usecases.jsp (original) +++ struts/shale/trunk/use-cases/src/web/usecases.jsp Tue Jan 3 19:21:24 2006 @@ -109,6 +109,24 @@ </h:panelGrid> + <h1><h:outputText value="#{messages['usecases.remoting']}"/></h1> + + <h:panelGrid columns="1"> + + <h:outputLink id="remotingCategories" + value="dynamic/remoting$business/listCategories.faces" + target="_new"> + <h:outputText value="#{messages['usecases.categories']}"/> + </h:outputLink> + + <h:outputLink id="remotingLocales" + value="dynamic/remoting$business/listLocales.faces" + target="_new"> + <h:outputText value="#{messages['usecases.locales']}"/> + </h:outputLink> + + </h:panelGrid> + <h1><h:outputText value="#{messages['usecases.java']}"/></h1> <h:panelGrid columns="1"> @@ -156,51 +174,51 @@ </h:panelGrid> <h1><h:outputText value="#{messages['usecases.clay']}"/></h1> - <h:panelGrid columns="2"> - - <h:commandLink id="rolodex1" - action="rolodex$test1" title="#{messages['usecases.rolodex1.title']}"> - <h:outputText value="#{messages['usecases.rolodex1']}"/> - - </h:commandLink> - <h:commandLink action="rolodex$viewsource" title="#{messages['usecases.rolodex1.title']}"> - <f:param name="url" value="/rolodex/rolodex.jsp"/> - <h:outputText value="#{messages['usecases.rolodex.viewsource']}"/> - </h:commandLink> - - - <h:commandLink id="rolodex2" - action="rolodex$test2" title="#{messages['usecases.rolodex2.title']}"> - <h:outputText value="#{messages['usecases.rolodex2']}"/> - - </h:commandLink> - <h:commandLink action="rolodex$viewsource" title="#{messages['usecases.rolodex2.title']}"> - <f:param name="url" value="/rolodex/hrolodex.html"/> - <h:outputText value="#{messages['usecases.rolodex.viewsource']}"/> - </h:commandLink> - - <h:commandLink id="rolodex3" - action="rolodex$test3" title="#{messages['usecases.rolodex3.title']}"> - <h:outputText value="#{messages['usecases.rolodex3']}"/> - - </h:commandLink> - <h:commandLink action="rolodex$viewsource" title="#{messages['usecases.rolodex3.title']}"> - <f:param name="url" value="/rolodex/xhrolodex.html"/> - <h:outputText value="#{messages['usecases.rolodex.viewsource']}"/> - </h:commandLink> - - <h:commandLink id="rolodex4" - action="rolodex$test4" title="#{messages['usecases.rolodex4.title']}"> - <h:outputText value="#{messages['usecases.rolodex4']}"/> - - </h:commandLink> - <h:commandLink action="rolodex$viewsource" title="#{messages['usecases.rolodex4.title']}"> - <f:param name="url" value="/rolodex/rolodex.xml"/> - <h:outputText value="#{messages['usecases.rolodex.viewsource']}"/> - </h:commandLink> - - - </h:panelGrid> + <h:panelGrid columns="2"> + + <h:commandLink id="rolodex1" + action="rolodex$test1" title="#{messages['usecases.rolodex1.title']}"> + <h:outputText value="#{messages['usecases.rolodex1']}"/> + + </h:commandLink> + <h:commandLink action="rolodex$viewsource" title="#{messages['usecases.rolodex1.title']}"> + <f:param name="url" value="/rolodex/rolodex.jsp"/> + <h:outputText value="#{messages['usecases.rolodex.viewsource']}"/> + </h:commandLink> + + + <h:commandLink id="rolodex2" + action="rolodex$test2" title="#{messages['usecases.rolodex2.title']}"> + <h:outputText value="#{messages['usecases.rolodex2']}"/> + + </h:commandLink> + <h:commandLink action="rolodex$viewsource" title="#{messages['usecases.rolodex2.title']}"> + <f:param name="url" value="/rolodex/hrolodex.html"/> + <h:outputText value="#{messages['usecases.rolodex.viewsource']}"/> + </h:commandLink> + + <h:commandLink id="rolodex3" + action="rolodex$test3" title="#{messages['usecases.rolodex3.title']}"> + <h:outputText value="#{messages['usecases.rolodex3']}"/> + + </h:commandLink> + <h:commandLink action="rolodex$viewsource" title="#{messages['usecases.rolodex3.title']}"> + <f:param name="url" value="/rolodex/xhrolodex.html"/> + <h:outputText value="#{messages['usecases.rolodex.viewsource']}"/> + </h:commandLink> + + <h:commandLink id="rolodex4" + action="rolodex$test4" title="#{messages['usecases.rolodex4.title']}"> + <h:outputText value="#{messages['usecases.rolodex4']}"/> + + </h:commandLink> + <h:commandLink action="rolodex$viewsource" title="#{messages['usecases.rolodex4.title']}"> + <f:param name="url" value="/rolodex/rolodex.xml"/> + <h:outputText value="#{messages['usecases.rolodex.viewsource']}"/> + </h:commandLink> + + + </h:panelGrid> </h:form> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]