[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Gavin King
gavin.king at jboss.com
Fri Nov 10 21:42:11 EST 2006
User: gavin
Date: 06/11/10 21:42:11
Modified: src/main/org/jboss/seam/core Page.java Pages.java
Log:
more elegant way to begin,end conversations from pages.xml
Revision Changes Path
1.2 +68 -4 jboss-seam/src/main/org/jboss/seam/core/Page.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Page.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Page.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- Page.java 31 Oct 2006 20:09:57 -0000 1.1
+++ Page.java 11 Nov 2006 02:42:11 -0000 1.2
@@ -23,10 +23,10 @@
this.name = name;
}
- final String name;
- ValueBinding valueBinding;
- ValueBinding converterValueBinding;
- String converterId;
+ private final String name;
+ private ValueBinding valueBinding;
+ private ValueBinding converterValueBinding;
+ private String converterId;
Converter getConverter()
{
@@ -45,11 +45,47 @@
}
}
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setValueBinding(ValueBinding valueBinding)
+ {
+ this.valueBinding = valueBinding;
+ }
+
+ public ValueBinding getValueBinding()
+ {
+ return valueBinding;
+ }
+
+ public void setConverterValueBinding(ValueBinding converterValueBinding)
+ {
+ this.converterValueBinding = converterValueBinding;
+ }
+
+ public ValueBinding getConverterValueBinding()
+ {
+ return converterValueBinding;
+ }
+
+ public void setConverterId(String converterId)
+ {
+ this.converterId = converterId;
+ }
+
+ public String getConverterId()
+ {
+ return converterId;
+ }
+
@Override
public String toString()
{
return "PageParameter(" + name + ")";
}
+
}
private final String viewId;
@@ -61,6 +97,8 @@
private String resourceBundleName;
private boolean switchEnabled = true;
private List<Page.PageParameter> pageParameters = new ArrayList<Page.PageParameter>();
+ private boolean isBeginConversation;
+ private boolean isEndConversation;
Page(String viewId)
{
@@ -188,4 +226,30 @@
{
return description!=null;
}
+
+ public boolean isBeginConversation()
+ {
+ return isBeginConversation;
+ }
+
+ public void setBeginConversation(boolean isBeginConversation)
+ {
+ this.isBeginConversation = isBeginConversation;
+ }
+
+ public boolean isEndConversation()
+ {
+ return isEndConversation;
+ }
+
+ public void setEndConversation(boolean isEndConversation)
+ {
+ this.isEndConversation = isEndConversation;
+ }
+
+ public void beginOrEndConversation()
+ {
+ if ( isEndConversation ) Conversation.instance().end();
+ if ( isBeginConversation ) Conversation.instance().begin();
+ }
}
\ No newline at end of file
1.46 +33 -15 jboss-seam/src/main/org/jboss/seam/core/Pages.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Pages.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Pages.java,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -b -r1.45 -r1.46
--- Pages.java 10 Nov 2006 19:07:00 -0000 1.45
+++ Pages.java 11 Nov 2006 02:42:11 -0000 1.46
@@ -155,6 +155,21 @@
}
}
+ if ( page.elementIterator("end-conversation").hasNext() )
+ {
+ entry.setEndConversation(true);
+ }
+
+ if ( page.elementIterator("begin-conversation").hasNext() )
+ {
+ entry.setBeginConversation(true);
+ }
+
+ if ( entry.isBeginConversation() && entry.isEndConversation() )
+ {
+ throw new IllegalStateException("cannot use both <begin-conversation/> and <end-conversation/>");
+ }
+
String bundle = page.attributeValue("bundle");
if (bundle!=null)
{
@@ -175,12 +190,12 @@
name = valueExpression.substring(2, valueExpression.length()-1);
}
Page.PageParameter pageParameter = new Page.PageParameter(name);
- pageParameter.valueBinding = Expressions.instance().createValueBinding(valueExpression);
- pageParameter.converterId = param.attributeValue("converterId");
+ pageParameter.setValueBinding(Expressions.instance().createValueBinding(valueExpression));
+ pageParameter.setConverterId(param.attributeValue("converterId"));
String converterExpression = param.attributeValue("converter");
if (converterExpression!=null)
{
- pageParameter.converterValueBinding = Expressions.instance().createValueBinding(converterExpression);
+ pageParameter.setConverterValueBinding(Expressions.instance().createValueBinding(converterExpression));
}
entry.getPageParameters().add(pageParameter);
}
@@ -263,12 +278,15 @@
{
boolean result = false;
- String outcome = getPage(viewId).getOutcome();
+ Page page = getPage(viewId);
+ page.beginOrEndConversation();
+
+ String outcome = page.getOutcome();
String fromAction = outcome;
if (outcome==null)
{
- MethodBinding methodBinding = getPage(viewId).getAction();
+ MethodBinding methodBinding = page.getAction();
if (methodBinding!=null)
{
fromAction = methodBinding.getExpressionString();
@@ -348,10 +366,10 @@
Map<String, Object> parameters = new HashMap<String, Object>();
for ( Page.PageParameter pageParameter: getPage(viewId).getPageParameters() )
{
- Object value = pageParameter.valueBinding.getValue();
+ Object value = pageParameter.getValueBinding().getValue();
if (value!=null)
{
- parameters.put(pageParameter.name, value);
+ parameters.put(pageParameter.getName(), value);
}
}
return parameters;
@@ -362,9 +380,9 @@
Map<String, Object> parameters = new HashMap<String, Object>();
for ( Page.PageParameter pageParameter: getPage(viewId).getPageParameters() )
{
- if ( !overridden.contains(pageParameter.name) )
+ if ( !overridden.contains(pageParameter.getName()) )
{
- Object value = pageParameter.valueBinding.getValue();
+ Object value = pageParameter.getValueBinding().getValue();
if (value!=null)
{
Converter converter;
@@ -379,7 +397,7 @@
}
Object convertedValue = converter==null ?
value : converter.getAsString( facesContext, facesContext.getViewRoot(), value );
- parameters.put(pageParameter.name, convertedValue);
+ parameters.put(pageParameter.getName(), convertedValue);
}
}
}
@@ -392,14 +410,14 @@
Map<String, String[]> requestParameters = Parameters.getRequestParameters();
for ( Page.PageParameter pageParameter: getPage(viewId).getPageParameters() )
{
- String[] parameterValues = requestParameters.get(pageParameter.name);
+ String[] parameterValues = requestParameters.get(pageParameter.getName());
if (parameterValues==null || parameterValues.length==0)
{
continue;
}
if (parameterValues.length>1)
{
- throw new IllegalArgumentException("page parameter may not be multi-valued: " + pageParameter.name);
+ throw new IllegalArgumentException("page parameter may not be multi-valued: " + pageParameter.getName());
}
String stringValue = parameterValues[0];
@@ -417,7 +435,7 @@
Object value = converter==null ?
stringValue :
converter.getAsObject( facesContext, facesContext.getViewRoot(), stringValue );
- pageParameter.valueBinding.setValue(value);
+ pageParameter.getValueBinding().setValue(value);
}
}
@@ -427,10 +445,10 @@
for (Page.PageParameter pageParameter: getPage(viewId).getPageParameters())
{
- Object object = Contexts.getPageContext().get(pageParameter.name);
+ Object object = Contexts.getPageContext().get(pageParameter.getName());
if (object!=null)
{
- pageParameter.valueBinding.setValue(object);
+ pageParameter.getValueBinding().setValue(object);
}
}
}
More information about the jboss-cvs-commits
mailing list