From: Wouter Z. <dra...@us...> - 2003-09-10 20:36:22
|
User: draftdog Date: 03/09/10 13:36:20 Added: andromda-bpm4struts/src/templates StrutsAction.vsl StrutsActionAbstract.vsl StrutsConfig.vsl StrutsForm.vsl StrutsJSP.vsl Log: initial check-in Revision Changes Path 1.1 cartridges/andromda-bpm4struts/src/templates/StrutsAction.vsl Index: StrutsAction.vsl =================================================================== package $transform.getPackageName($class); import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; #macro ( generateDocumentation $item $indent ) #set ($tagValue = $transform.findTagValue( $transform.getTaggedValues($item), "documentation")) #set ($paras = $transform.formatHTMLStringAsParagraphs($tagValue)) #foreach ( $par in $paras ) ${indent}* ${indent}* <p> #foreach ( $line in $par.lines ) ${indent}* $line #end ${indent}* </p> #end #end #set ($activityGraph = $transform.getActivityGraphs($class).iterator().next()) #set ($controllerClassName = $transform.toJavaClassName($transform.getControllerClass($class))) #set ($controllerFormName = $transform.toJavaClassName($transform.getControllerForm($class))) #if ($controllerFormName == false) #set ($controllerFormName = "ActionForm") #end #set ($className = "${controllerClassName}") #set ($parentClassName = "${controllerClassName}Abstract") #set ($objectFlowStates = $transform.getObjectFlowStates($activityGraph)) #set ($choices = $transform.getChoices($activityGraph)) #set ($actionStates = $transform.getActionStates($activityGraph)) /** #generateDocumentation ( $class " " ) */ public class $className extends $parentClassName { #foreach ($choice in $choices) #set ($methodNameImpl = "$transform.toJavaMethodName($choice)Impl") /** #generateDocumentation ( $choice " " ) * * <p> * This method may return any of the following values: * <ul> #set ($options = $transform.getOutgoingStateTransitions($choice)) #foreach ($option in $options) * <li>$transform.toFinalMemberName($option) #end * </ul> * </p> */ protected final int $methodNameImpl(ActionMapping mapping, $controllerFormName form, HttpServletRequest request, HttpServletResponse response) throws Exception { // Returning zero should never occur when this method has been properly implemented return 0; } #end #foreach ($objectFlowState in $objectFlowStates) #set ($objectFlowType = $transform.toJavaClassName($objectFlowState.type)) #set ($objectFlowStateState = $transform.getObjectFlowStateState($objectFlowState)) #set ($methodName = "set$transform.toJavaClassName($objectFlowStateState)") /** * This method changes the state of the object with name '$objectFlowState.name' to '$objectFlowStateState.name'. The * type of this object is <code>'$transform.toFullyQualifiedJavaClassName($objectFlowState.type)'</code>. * <p> * Values are transferred from and to the form. #generateDocumentation ( $objectFlowState " " ) */ protected final void ${methodName}Impl(ActionMapping mapping, $controllerFormName form, HttpServletRequest request, HttpServletResponse response) throws Exception { // $objectFlowType $transform.toJavaMethodName($objectFlowState) = null; } #end } 1.1 cartridges/andromda-bpm4struts/src/templates/StrutsActionAbstract.vsl Index: StrutsActionAbstract.vsl =================================================================== #macro ( processTransition $transition $indent ) #set ($target = $transform.getLastTransitionTarget($transition.target)) #if ( $transform.isFinalState($target) || $transform.isActionState($target) ) #set ($forwardName = $transform.toForwardName($target)) ${indent}return mapping.findForward("$forwardName"); #elseif ( $transform.isObjectFlowState($target) ) #set ($objectFlowStateState = $transform.getObjectFlowStateState($target)) #set ($objectFlowStateStateMethodName = "set$transform.toJavaClassName($objectFlowStateState)") ${indent}return $objectFlowStateStateMethodName(mapping, form, request, response); #elseif ( $transform.isChoice($target) ) ${indent}return $transform.toJavaMethodName($target)(mapping, form, request, response); #end #end package $transform.getPackageName($class); import org.apache.struts.actions.DispatchAction; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; #set ($activityGraph = $transform.getActivityGraphs($class).iterator().next()) #set ($controllerClassName = $transform.toJavaClassName($transform.getControllerClass($class))) #set ($controllerFormName = $transform.toJavaClassName($transform.getControllerForm($class))) #if (!$controllerFormName) #set ($controllerFormName = "ActionForm") #end #set ($className = "${controllerClassName}Abstract") public abstract class ${className} extends DispatchAction { #set ($choiceTransitions = $transform.getActivityGraphChoiceTransitions($activityGraph)) #foreach ($choiceTransition in $choiceTransitions) #set ($choiceTransitionName = $transform.toFinalMemberName($choiceTransition)) #set ($choiceTransitionValue = $transform.getChoiceOptionFinalMemberValue($choiceTransition)) protected static final int $choiceTransitionName = $choiceTransitionName.hashCode(); #end #set ($choices = $transform.getChoices($activityGraph)) #set ($actionStates = $transform.getActionStates($activityGraph)) #set ($objectFlowStates = $transform.getObjectFlowStates($activityGraph)) #set ($methodName = $transform.toJavaMethodName($initialState)) #foreach ($actionState in $actionStates) #set ($methodName = $transform.toJavaMethodName($actionState)) #set ($methodNameImpl = "${methodName}Impl") public final ActionForward ${methodName}(ActionMapping mapping, $controllerFormName form, HttpServletRequest request, HttpServletResponse response) throws Exception { #set ($transitions = $actionState.outgoing) #if ($transitions.size() > 1) #if ($controllerFormName.equals("ActionForm")) final String transition = request.getParameter("transition").toUpperCase(); #else final String transition = form.getTransition().toUpperCase(); #end #set ($conditionSuffix = ".equals(transition)") #foreach ($transition in $transitions) if ("$transform.toFinalMemberName($transition)"$conditionSuffix) { #processTransition ( $transition " " ) } else #end { // the form property has not been set to a valid value, application bug! return null; } #else #processTransition ( $transform.getNextStateTransition($actionState) " " ) #end } #end #foreach ($choice in $choices) #set ($methodName = $transform.toJavaMethodName($choice)) #set ($returnValue = "${methodName}Value") private ActionForward ${methodName}(ActionMapping mapping, $controllerFormName form, HttpServletRequest request, HttpServletResponse response) throws Exception { final int $returnValue = ${methodName}Impl(mapping, form, request, response); switch ($returnValue) { #set ($choiceTransitions = $choice.outgoing) #foreach ($choiceTransition in $choiceTransitions) #set ($choiceMemberName = $transform.toFinalMemberName($choiceTransition)) case $choiceMemberName : #processTransition ( $choiceTransition " " ) #end default : return null; // if this occurs ${methodName}Impl is not correctly implemented } } protected abstract int ${methodName}Impl(ActionMapping mapping, $controllerFormName form, HttpServletRequest request, HttpServletResponse response) throws Exception; #end #foreach ($objectFlowState in $objectFlowStates) #set ($objectFlowType = $transform.toJavaClassName($objectFlowState.type)) #set ($objectFlowStateState = $transform.getObjectFlowStateState($objectFlowState)) #set ($activityGraph = $transform.getStateMachine($objectFlowState)) #set ($methodName = "set$transform.toJavaClassName($objectFlowStateState)") public final ActionForward ${methodName}(ActionMapping mapping, $controllerFormName form, HttpServletRequest request, HttpServletResponse response) throws Exception { ${methodName}Impl(mapping,form,request,response); #set ($transition = $objectFlowState.outgoing.iterator().next()) #processTransition ( $transition " " ) } protected abstract void ${methodName}Impl(ActionMapping mapping, $controllerFormName form, HttpServletRequest request, HttpServletResponse response) throws Exception; #end } 1.1 cartridges/andromda-bpm4struts/src/templates/StrutsConfig.vsl Index: StrutsConfig.vsl =================================================================== <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> #set ($allUseCases = $transform.filterWithStereotypeName($transform.allUseCases, "FrontEndUseCase")) #set ($allControllerForms = $transform.filterWithStereotypeName($transform.allControllerForms, "FrontEndPresentation")) #set ($allInitialStates = $transform.getAllInitialStates($allUseCases)) <struts-config> <!-- ========== Form Bean Definitions =================================== --> <form-beans> #foreach ($formBeanControllerForm in $allControllerForms) #set ($formBeanName = "$transform.toJavaMethodName($formBeanControllerForm)") #set ($formBeanType = "$transform.toFullyQualifiedJavaClassName($formBeanControllerForm)") <form-bean name="$formBeanName" type="$formBeanType" /> #end </form-beans> <!-- ========== Global Forwards Definitions ================================== --> <global-forwards> #foreach ($initialState in $allInitialStates) #set ($forwardName = $transform.toForwardName($initialState)) #set ($forwardPath = $transform.toFullyQualifiedWebFileName($transform.getLastTransitionState($initialState))) <forward name="$forwardName" path="/${forwardPath}.jsp" redirect="true"/> #end </global-forwards> <!-- ========== Action Mapping Definitions =================================== --> <action-mappings> #foreach ($useCase in $allUseCases) #set ($activityGraph = $transform.getActivityGraphs($useCase).iterator().next()) #set ($actionMappingControllerClass = $transform.getControllerClass($useCase)) #set ($actionMappingPath = $transform.toJavaClassName($actionMappingControllerClass)) #set ($actionMappingType = $transform.toFullyQualifiedJavaClassName($actionMappingControllerClass)) #set ($actionMappingForm = $transform.getControllerForm($useCase)) #set ($actionMappingFormName = $transform.toJavaMethodName($actionMappingForm)) <action path="/$actionMappingPath" type="$actionMappingType" #if ($transform.getControllerForm($useCase)) name="$actionMappingFormName" #end scope="request" unknown="false" validate="true" parameter="target" > #set ($actionStates = $transform.filterWithStereotypeName($transform.getActionStates($activityGraph), "FrontEndView")) #foreach ($actionState in $actionStates) #set ($actionForwardName = $transform.toWebFileName($actionState)) #set ($actionForwardPath = $transform.toFullyQualifiedWebFileName($actionState)) <forward name="$actionForwardName" path="/${actionForwardPath}.jsp" redirect="true" /> #end #set ($finalStates = $transform.filterWithStereotypeName($transform.getFinalStates($activityGraph), "FrontEndView")) #foreach ($finalState in $finalStates) #set ($actionForwardName = $transform.toForwardName($finalState)) #set ($actionForwardPath = $transform.toFullyQualifiedWebFileName($finalState)) <forward name="$actionForwardName" path="/${actionForwardPath}.jsp" redirect="true"/> #end </action> #end </action-mappings> <!-- not used yet by struts, but present because of a bug in current struts version --> <message-resources parameter="application-resources" null="false"/> <plug-in className="org.apache.struts.tiles.TilesPlugin" > <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> <set-property property="moduleAware" value="true" /> </plug-in> </struts-config> 1.1 cartridges/andromda-bpm4struts/src/templates/StrutsForm.vsl Index: StrutsForm.vsl =================================================================== package $transform.getPackageName($class); import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import java.io.Serializable; import javax.servlet.http.HttpServletRequest; public final class $class.name extends ActionForm implements Serializable { private String transition = null; #foreach ($feature in $class.feature) #if ($transform.isAttribute($feature)) private String $feature.name = null; #end #end #foreach ($feature in $class.feature) #if ($transform.isAttribute($feature)) public String get$str.upperCaseFirstLetter($feature.name)() { return $feature.name; } public void set$str.upperCaseFirstLetter($feature.name)(String $feature.name) { this.$feature.name = $feature.name; } #end #end /** * Returns the value of the transition to follow after the action associated * with this form finishes. */ public String getTransition() { return transition; } /** * Sets the value of the transition to follow after the action associated * with this form finishes. */ public void setTransition(String transition) { this.transition = transition; } public void reset(ActionMapping mapping, HttpServletRequest request) { } public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { return null; } } 1.1 cartridges/andromda-bpm4struts/src/templates/StrutsJSP.vsl Index: StrutsJSP.vsl =================================================================== <%@ taglib uri="struts-bean.tld" prefix="bean" %> <%@ taglib uri="struts-html.tld" prefix="html" %> #macro ( generateJSPDocumentation $item $indent ) #set ($tagValue = $transform.findTagValue( $transform.getTaggedValues($item), "documentation")) #set ($paras = $transform.formatHTMLStringAsParagraphs($tagValue)) ${indent}[ ${indent}[ documentation: ${indent}[ #if ($paras) #foreach ( $par in $paras ) ${indent}[ #foreach ( $line in $par.lines ) ${indent}[ $line #end #end #else ${indent}[ NO DOCUMENTATION HAS BEEN SUPPLIED #end ${indent}[ #end #set ($activityGraph = $transform.getStateMachine($class)) #set ($useCase = $transform.getParentUseCase($activityGraph)) #set ($controllerForm = $transform.getControllerForm($useCase)) #set ($controllerClass = $transform.getControllerClass($useCase)) #set ($formName = $transform.toJavaMethodName($controllerForm)) #set ($fullyQualifiedFormName = $transform.toFullyQualifiedJavaClassName($controllerForm)) #set ($actionName = $transform.toJavaClassName($controllerClass)) #set ($methodName = $transform.toJavaMethodName($class)) #set ($transitions = $class.outgoing) #if ($transform.isFinalState($class)) #set ($targetUseCaseName = $transform.findTagValue($class, "TargetUseCase")) #if ($targetUseCaseName) #set ($targetUseCase = $transform.findUseCaseByName($targetUseCaseName)) #if ($targetUseCase) #set ($initialState = $transform.getInitialStates($transform.getActivityGraphs($targetUseCase).iterator().next()).iterator().next()) <html:forward name="$transform.toForwardName($initialState)"/> #else <!-- A target use case was specified: $targetUseCaseName, but it was not found in the UML model ! Please check the tagged value "TargetUseCase" on the FinalState with name $class.name, you can find this FinalState in the activity graph $activityGraph.name (in turn found in the use case: "${transform.getPackageName($useCase)}.${useCase.name}") --> #end #else <!-- This is a final state, the end of a use case. You should redirect or forward to another page here. You can do this by adding a tagged value to this final state in the UML model, the key is "TargetUseCase" while the value must be a fully qualified name of a use case, such as: "${transform.getPackageName($useCase)}.${useCase.name}" --> #end #else #if ($controllerForm) <html:form action="/$actionName?target=$methodName"> #if ($transitions.size() == 1) <html:submit value="submit"/> #else #foreach ($transition in $transitions) <html:submit property="transition" value="$transform.toFinalMemberName($transition)"/> #end #end </html:form> #else #if ($transitions.size() == 1) <html:link action="/$actionName?target=$methodName">$transform.toForwardName($transition)</html:link> #else <ul> #foreach ($transition in $transitions) <li><html:link action="/$actionName?target=$methodName" paramId="transition" paramName="$transform.toFinalMemberName($transition)">$transform.toForwardName($transition)</html:link></li> #end </ul> #end #end #end |