JBoss Rich Faces SVN: r5615 - trunk/ui/listShuttle/src/main/java/org/richfaces/component.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-01-24 20:20:57 -0500 (Thu, 24 Jan 2008)
New Revision: 5615
Modified:
trunk/ui/listShuttle/src/main/java/org/richfaces/component/UIListShuttle.java
Log:
http://jira.jboss.com/jira/browse/RF-2044
Modified: trunk/ui/listShuttle/src/main/java/org/richfaces/component/UIListShuttle.java
===================================================================
--- trunk/ui/listShuttle/src/main/java/org/richfaces/component/UIListShuttle.java 2008-01-25 01:19:51 UTC (rev 5614)
+++ trunk/ui/listShuttle/src/main/java/org/richfaces/component/UIListShuttle.java 2008-01-25 01:20:57 UTC (rev 5615)
@@ -597,7 +597,7 @@
setValid(false);
}
- validateValue(context, newTargetValue);
+ validateValue(context, new Object[] {newSourceValue, newTargetValue});
// If our value is valid, store the new value, erase the
// "submitted" value, and emit a ValueChangeEvent if appropriate
@@ -622,6 +622,24 @@
}
}
+ protected boolean isEmpty(Object value) {
+ if (value == null) {
+ return true;
+ } else {
+ Object[] values = (Object[]) value;
+
+ for (int i = 0; i < values.length; i++) {
+ Object v = values[i];
+
+ if (!super.isEmpty(v)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ }
+
protected void resetDataModel() {
super.resetDataModel();
17 years
JBoss Rich Faces SVN: r5614 - branches/3.1.x/ui/listShuttle/src/main/java/org/richfaces/component.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-01-24 20:19:51 -0500 (Thu, 24 Jan 2008)
New Revision: 5614
Modified:
branches/3.1.x/ui/listShuttle/src/main/java/org/richfaces/component/UIListShuttle.java
Log:
http://jira.jboss.com/jira/browse/RF-2044
Modified: branches/3.1.x/ui/listShuttle/src/main/java/org/richfaces/component/UIListShuttle.java
===================================================================
--- branches/3.1.x/ui/listShuttle/src/main/java/org/richfaces/component/UIListShuttle.java 2008-01-24 23:52:50 UTC (rev 5613)
+++ branches/3.1.x/ui/listShuttle/src/main/java/org/richfaces/component/UIListShuttle.java 2008-01-25 01:19:51 UTC (rev 5614)
@@ -598,7 +598,7 @@
setValid(false);
}
- validateValue(context, newTargetValue);
+ validateValue(context, new Object[] {newSourceValue, newTargetValue});
// If our value is valid, store the new value, erase the
// "submitted" value, and emit a ValueChangeEvent if appropriate
@@ -623,6 +623,24 @@
}
}
+ protected boolean isEmpty(Object value) {
+ if (value == null) {
+ return true;
+ } else {
+ Object[] values = (Object[]) value;
+
+ for (int i = 0; i < values.length; i++) {
+ Object v = values[i];
+
+ if (!super.isEmpty(v)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ }
+
protected void resetDataModel() {
super.resetDataModel();
17 years
JBoss Rich Faces SVN: r5613 - branches/3.1.x/ui/orderingList/src/main/config/component.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-01-24 18:52:50 -0500 (Thu, 24 Jan 2008)
New Revision: 5613
Modified:
branches/3.1.x/ui/orderingList/src/main/config/component/orderinglist.xml
Log:
excess <listener> tag removed for orderingList
Modified: branches/3.1.x/ui/orderingList/src/main/config/component/orderinglist.xml
===================================================================
--- branches/3.1.x/ui/orderingList/src/main/config/component/orderinglist.xml 2008-01-24 23:52:37 UTC (rev 5612)
+++ branches/3.1.x/ui/orderingList/src/main/config/component/orderinglist.xml 2008-01-24 23:52:50 UTC (rev 5613)
@@ -342,11 +342,4 @@
</description>
</property>
</component>
-
- <listener>
- <componentclass>javax.faces.component.EditableValueHolder</componentclass>
- <eventclass>javax.faces.event.ValueChangeEvent</eventclass>
- <name>valueChangeListener</name>
- <description>Listener for value changes</description>
- </listener>
</components>
17 years
JBoss Rich Faces SVN: r5612 - trunk/ui/orderingList/src/main/config/component.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-01-24 18:52:37 -0500 (Thu, 24 Jan 2008)
New Revision: 5612
Modified:
trunk/ui/orderingList/src/main/config/component/orderinglist.xml
Log:
excess <listener> tag removed for orderingList
Modified: trunk/ui/orderingList/src/main/config/component/orderinglist.xml
===================================================================
--- trunk/ui/orderingList/src/main/config/component/orderinglist.xml 2008-01-24 23:49:52 UTC (rev 5611)
+++ trunk/ui/orderingList/src/main/config/component/orderinglist.xml 2008-01-24 23:52:37 UTC (rev 5612)
@@ -342,11 +342,4 @@
</description>
</property>
</component>
-
- <listener>
- <componentclass>javax.faces.component.EditableValueHolder</componentclass>
- <eventclass>javax.faces.event.ValueChangeEvent</eventclass>
- <name>valueChangeListener</name>
- <description>Listener for value changes</description>
- </listener>
</components>
17 years
JBoss Rich Faces SVN: r5611 - trunk/ui/listShuttle/src/main/config/component.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-01-24 18:49:52 -0500 (Thu, 24 Jan 2008)
New Revision: 5611
Modified:
trunk/ui/listShuttle/src/main/config/component/listShuttle.xml
Log:
http://jira.jboss.com/jira/browse/RF-2048
Modified: trunk/ui/listShuttle/src/main/config/component/listShuttle.xml
===================================================================
--- trunk/ui/listShuttle/src/main/config/component/listShuttle.xml 2008-01-24 23:46:22 UTC (rev 5610)
+++ trunk/ui/listShuttle/src/main/config/component/listShuttle.xml 2008-01-24 23:49:52 UTC (rev 5611)
@@ -22,8 +22,8 @@
</superclass>
</tag>
- &ui_component_attributes;
- &html_style_attributes;
+ &ui_input_attributes;
+ &html_style_attributes;
&ui_data_attributes;
<property>
<name>columnClasses</name>
@@ -44,14 +44,6 @@
<property hidden="true" el="false">
<name>valid</name>
</property>
- <property elonly="true">
- <name>validator</name>
- <classname>javax.faces.el.MethodBinding</classname>
- <description>
- MethodBinding pointing at a method that is called during Process Validations phase of the request processing lifecycle, to validate the current value of this component
- </description>
- <methodargs>java.lang.Object</methodargs>
- </property>
<property hidden="true">
<name>value</name>
</property>
@@ -140,7 +132,7 @@
<name>onorderchanged</name>
<classname>java.lang.String</classname>
<description>HTML: script expression; called after ordering action</description>
- </property>
+ </property>
<property>
<name>showButtonLabels</name>
@@ -230,29 +222,7 @@
Defines a list on the page
</description>
</property>
- <property attachedstate="true">
- <name>valueChangeListener</name>
- <classname>javax.faces.el.MethodBinding</classname>
- <description>Listener for value changes</description>
- <methodargs>javax.faces.event.ValueChangeEvent</methodargs>
- </property>
<property>
- <name>immediate</name>
- <classname>boolean</classname>
- <description>
- True means, that the default ActionListener should be executed immediately
- (i.e. during Apply Request Values phase of the request processing lifecycle),
- rather than waiting until the Invoke Application phase
- </description>
- </property>
- <property>
- <name>required</name>
- <classname>boolean</classname>
- <description>
- If "true", this component is checked for non-empty input
- </description>
- </property>
- <property>
<name>componentState</name>
<classname>org.ajax4jsf.model.DataComponentState</classname>
<description>It defines EL-binding for a component state for saving or redefinition</description>
@@ -426,86 +396,79 @@
<classname>java.lang.String</classname>
<description>HTML: a script expression; a pointer is moved onto</description>
<defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
-
- <property>
- <name>moveControlsVerticalAlign</name>
- <classname>java.lang.String</classname>
+ </property>
+
+ <property>
+ <name>moveControlsVerticalAlign</name>
+ <classname>java.lang.String</classname>
<description>Customizes vertically a position of move/copy controls relatively to lists</description>
- <defaultvalue><![CDATA["middle"]]></defaultvalue>
- </property>
- <property>
- <name>orderControlsVerticalAlign</name>
- <classname>java.lang.String</classname>
+ <defaultvalue><![CDATA["middle"]]></defaultvalue>
+ </property>
+ <property>
+ <name>orderControlsVerticalAlign</name>
+ <classname>java.lang.String</classname>
<description>Customizes vertically a position of order controls relatively to lists</description>
- <defaultvalue><![CDATA["middle"]]></defaultvalue>
- </property>
- <property>
- <name>listClass</name>
- <classname>java.lang.String</classname>
- <description>CSS class for a list</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
- <property>
- <name>disabledControlClass</name>
- <classname>java.lang.String</classname>
- <description>CSS class for a disabled control</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
- <property>
- <name>topControlClass</name>
- <classname>java.lang.String</classname>
- <description>CSS class for top control</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
- <property>
- <name>bottomControlClass</name>
- <classname>java.lang.String</classname>
- <description>CSS class for bottom control</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
- <property>
- <name>upControlClass</name>
- <classname>java.lang.String</classname>
- <description>CSS class for up control</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
- <property>
- <name>downControlClass</name>
- <classname>java.lang.String</classname>
- <description>CSS class for down control</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
- <property>
- <name>copyAllControlClass</name>
- <classname>java.lang.String</classname>
+ <defaultvalue><![CDATA["middle"]]></defaultvalue>
+ </property>
+ <property>
+ <name>listClass</name>
+ <classname>java.lang.String</classname>
+ <description>CSS class for a list</description>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+ <property>
+ <name>disabledControlClass</name>
+ <classname>java.lang.String</classname>
+ <description>CSS class for a disabled control</description>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+ <property>
+ <name>topControlClass</name>
+ <classname>java.lang.String</classname>
+ <description>CSS class for top control</description>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+ <property>
+ <name>bottomControlClass</name>
+ <classname>java.lang.String</classname>
+ <description>CSS class for bottom control</description>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+ <property>
+ <name>upControlClass</name>
+ <classname>java.lang.String</classname>
+ <description>CSS class for up control</description>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+ <property>
+ <name>downControlClass</name>
+ <classname>java.lang.String</classname>
+ <description>CSS class for down control</description>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+ <property>
+ <name>copyAllControlClass</name>
+ <classname>java.lang.String</classname>
<description>CSS class for copy all control</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
- <property>
- <name>removeAllControlClass</name>
- <classname>java.lang.String</classname>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+ <property>
+ <name>removeAllControlClass</name>
+ <classname>java.lang.String</classname>
<description>CSS class for remove all control</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+ <property>
+ <name>copyControlClass</name>
+ <classname>java.lang.String</classname>
+ <description>CSS class for copy control</description>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+ <property>
+ <name>removeControlClass</name>
+ <classname>java.lang.String</classname>
+ <description>CSS class for remove control</description>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
</property>
- <property>
- <name>copyControlClass</name>
- <classname>java.lang.String</classname>
- <description>CSS class for copy control</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
- <property>
- <name>removeControlClass</name>
- <classname>java.lang.String</classname>
- <description>CSS class for remove control</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
</component>
-
- <listener>
- <componentclass>javax.faces.component.EditableValueHolder</componentclass>
- <eventclass>javax.faces.event.ValueChangeEvent</eventclass>
- <name>valueChangeListener</name>
- <description>Listener for value changes</description>
- </listener>
</components>
17 years
JBoss Rich Faces SVN: r5610 - branches/3.1.x/ui/listShuttle/src/main/config/component.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-01-24 18:46:22 -0500 (Thu, 24 Jan 2008)
New Revision: 5610
Modified:
branches/3.1.x/ui/listShuttle/src/main/config/component/listShuttle.xml
Log:
http://jira.jboss.com/jira/browse/RF-2048
Modified: branches/3.1.x/ui/listShuttle/src/main/config/component/listShuttle.xml
===================================================================
--- branches/3.1.x/ui/listShuttle/src/main/config/component/listShuttle.xml 2008-01-24 23:43:22 UTC (rev 5609)
+++ branches/3.1.x/ui/listShuttle/src/main/config/component/listShuttle.xml 2008-01-24 23:46:22 UTC (rev 5610)
@@ -22,7 +22,7 @@
</superclass>
</tag>
- &ui_component_attributes;
+ &ui_input_attributes;
&html_style_attributes;
&ui_data_attributes;
<property>
@@ -44,14 +44,6 @@
<property hidden="true" el="false">
<name>valid</name>
</property>
- <property elonly="true">
- <name>validator</name>
- <classname>javax.faces.el.MethodBinding</classname>
- <description>
- MethodBinding pointing at a method that is called during Process Validations phase of the request processing lifecycle, to validate the current value of this component
- </description>
- <methodargs>java.lang.Object.class</methodargs>
- </property>
<property hidden="true">
<name>value</name>
</property>
@@ -230,29 +222,7 @@
Defines a list on the page
</description>
</property>
- <property attachedstate="true">
- <name>valueChangeListener</name>
- <classname>javax.faces.el.MethodBinding</classname>
- <description>Listener for value changes</description>
- <methodargs>javax.faces.event.ValueChangeEvent.class</methodargs>
- </property>
<property>
- <name>immediate</name>
- <classname>boolean</classname>
- <description>
- True means, that the default ActionListener should be executed immediately
- (i.e. during Apply Request Values phase of the request processing lifecycle),
- rather than waiting until the Invoke Application phase
- </description>
- </property>
- <property>
- <name>required</name>
- <classname>boolean</classname>
- <description>
- If "true", this component is checked for non-empty input
- </description>
- </property>
- <property>
<name>componentState</name>
<classname>org.ajax4jsf.model.DataComponentState</classname>
<description>It defines EL-binding for a component state for saving or redefinition</description>
17 years
JBoss Rich Faces SVN: r5609 - trunk/ui/listShuttle/src/main/java/org/richfaces/renderkit.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-01-24 18:43:22 -0500 (Thu, 24 Jan 2008)
New Revision: 5609
Modified:
trunk/ui/listShuttle/src/main/java/org/richfaces/renderkit/ListShuttleRendererBase.java
Log:
http://jira.jboss.com/jira/browse/RF-2000
Modified: trunk/ui/listShuttle/src/main/java/org/richfaces/renderkit/ListShuttleRendererBase.java
===================================================================
--- trunk/ui/listShuttle/src/main/java/org/richfaces/renderkit/ListShuttleRendererBase.java 2008-01-24 23:42:22 UTC (rev 5608)
+++ trunk/ui/listShuttle/src/main/java/org/richfaces/renderkit/ListShuttleRendererBase.java 2008-01-24 23:43:22 UTC (rev 5609)
@@ -319,7 +319,7 @@
String substring = string.substring(0, idx);
idx = 0;
- boolean target = false;
+ boolean source = true;
boolean selected = false;
@@ -334,13 +334,13 @@
}
if (substring.charAt(idx) == 't') {
- target = true;
+ source = false;
idx++;
}
substring = substring.substring(idx);
- Object key = new ListShuttleRowKey(new Integer(substring), target, facadeSource);
+ Object key = new ListShuttleRowKey(new Integer(substring), source, facadeSource);
map.put(key, value);
}
listShuttle.setSubmittedStrings(map, sourceSelection, targetSelection, activeItem);
17 years
JBoss Rich Faces SVN: r5608 - branches/3.1.x/ui/listShuttle/src/main/java/org/richfaces/renderkit.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-01-24 18:42:22 -0500 (Thu, 24 Jan 2008)
New Revision: 5608
Modified:
branches/3.1.x/ui/listShuttle/src/main/java/org/richfaces/renderkit/ListShuttleRendererBase.java
Log:
http://jira.jboss.com/jira/browse/RF-2000
Modified: branches/3.1.x/ui/listShuttle/src/main/java/org/richfaces/renderkit/ListShuttleRendererBase.java
===================================================================
--- branches/3.1.x/ui/listShuttle/src/main/java/org/richfaces/renderkit/ListShuttleRendererBase.java 2008-01-24 23:41:13 UTC (rev 5607)
+++ branches/3.1.x/ui/listShuttle/src/main/java/org/richfaces/renderkit/ListShuttleRendererBase.java 2008-01-24 23:42:22 UTC (rev 5608)
@@ -319,7 +319,7 @@
String substring = string.substring(0, idx);
idx = 0;
- boolean target = false;
+ boolean source = true;
boolean selected = false;
@@ -334,13 +334,13 @@
}
if (substring.charAt(idx) == 't') {
- target = true;
+ source = false;
idx++;
}
substring = substring.substring(idx);
- Object key = new ListShuttleRowKey(new Integer(substring), target, facadeSource);
+ Object key = new ListShuttleRowKey(new Integer(substring), source, facadeSource);
map.put(key, value);
}
listShuttle.setSubmittedStrings(map, sourceSelection, targetSelection, activeItem);
17 years
JBoss Rich Faces SVN: r5607 - trunk/ui/orderingList/src/main/config/component.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-01-24 18:41:13 -0500 (Thu, 24 Jan 2008)
New Revision: 5607
Modified:
trunk/ui/orderingList/src/main/config/component/orderinglist.xml
Log:
http://jira.jboss.com/jira/browse/RF-2043
Modified: trunk/ui/orderingList/src/main/config/component/orderinglist.xml
===================================================================
--- trunk/ui/orderingList/src/main/config/component/orderinglist.xml 2008-01-24 23:34:45 UTC (rev 5606)
+++ trunk/ui/orderingList/src/main/config/component/orderinglist.xml 2008-01-24 23:41:13 UTC (rev 5607)
@@ -23,13 +23,7 @@
<test/>
</tag>
- <taghandler generate="true">
- <classname>org.richfaces.taglib.OrderingListTagHandler</classname>
- <superclass>com.sun.facelets.tag.jsf.ComponentHandler</superclass>
- </taghandler>
-
- <!--&ui_component_attributes;-->
- &ui_output_attributes;
+ &ui_input_attributes;
<property>
<name>captionLabel</name>
@@ -44,20 +38,6 @@
<description>Defines strings that are updated after an Ajax request</description>
</property>
<property>
- <name>immediate</name>
- <classname>boolean</classname>
- <description>True means, that the default ActionListener should be executed immediately
- (i.e. during Apply Request Values phase of the request processing lifecycle), rather than waiting until the Invoke Application phase
- </description>
- </property>
- <property>
- <name>required</name>
- <classname>boolean</classname>
- <description>
- If "true", this component is checked for non-empty input
- </description>
- </property>
- <property>
<name>componentState</name>
<classname>org.ajax4jsf.model.DataComponentState</classname>
<description>It defines EL-binding for a component state for saving or redefinition</description>
@@ -218,14 +198,6 @@
<property hidden="true" el="false">
<name>valid</name>
</property>
- <property elonly="true">
- <name>validator</name>
- <classname>javax.faces.el.MethodBinding</classname>
- <methodargs>java.lang.Object</methodargs>
- <description>
- MethodBinding pointing at a method that is called during Process Validations phase of the request processing lifecycle, to validate the current value of this component
- </description>
- </property>
<property>
<name>onorderchanged</name>
@@ -369,12 +341,6 @@
Stores active item
</description>
</property>
- <property attachedstate="true">
- <name>valueChangeListener</name>
- <classname>javax.faces.el.MethodBinding</classname>
- <methodargs>javax.faces.event.ValueChangeEvent</methodargs>
- <description>Listener for value changes</description>
- </property>
</component>
<listener>
17 years
JBoss Rich Faces SVN: r5606 - branches/3.1.x/ui/orderingList/src/main/config/component.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-01-24 18:34:45 -0500 (Thu, 24 Jan 2008)
New Revision: 5606
Modified:
branches/3.1.x/ui/orderingList/src/main/config/component/orderinglist.xml
Log:
http://jira.jboss.com/jira/browse/RF-2043
Modified: branches/3.1.x/ui/orderingList/src/main/config/component/orderinglist.xml
===================================================================
--- branches/3.1.x/ui/orderingList/src/main/config/component/orderinglist.xml 2008-01-24 19:03:09 UTC (rev 5605)
+++ branches/3.1.x/ui/orderingList/src/main/config/component/orderinglist.xml 2008-01-24 23:34:45 UTC (rev 5606)
@@ -23,13 +23,7 @@
<test/>
</tag>
- <taghandler generate="true">
- <classname>org.richfaces.taglib.OrderingListTagHandler</classname>
- <superclass>com.sun.facelets.tag.jsf.ComponentHandler</superclass>
- </taghandler>
-
- <!--&ui_component_attributes;-->
- &ui_output_attributes;
+ &ui_input_attributes;
<property>
<name>captionLabel</name>
@@ -44,20 +38,6 @@
<description>Defines strings that are updated after an Ajax request</description>
</property>
<property>
- <name>immediate</name>
- <classname>boolean</classname>
- <description>True means, that the default ActionListener should be executed immediately
- (i.e. during Apply Request Values phase of the request processing lifecycle), rather than waiting until the Invoke Application phase
- </description>
- </property>
- <property>
- <name>required</name>
- <classname>boolean</classname>
- <description>
- If "true", this component is checked for non-empty input
- </description>
- </property>
- <property>
<name>componentState</name>
<classname>org.ajax4jsf.model.DataComponentState</classname>
<description>It defines EL-binding for a component state for saving or redefinition</description>
@@ -218,14 +198,6 @@
<property hidden="true" el="false">
<name>valid</name>
</property>
- <property elonly="true">
- <name>validator</name>
- <classname>javax.faces.el.MethodBinding</classname>
- <methodargs>java.lang.Object.class</methodargs>
- <description>
- MethodBinding pointing at a method that is called during Process Validations phase of the request processing lifecycle, to validate the current value of this component
- </description>
- </property>
<property>
<name>onorderchanged</name>
@@ -369,12 +341,6 @@
Stores active item
</description>
</property>
- <property attachedstate="true">
- <name>valueChangeListener</name>
- <classname>javax.faces.el.MethodBinding</classname>
- <methodargs>javax.faces.event.ValueChangeEvent.class</methodargs>
- <description>Listener for value changes</description>
- </property>
</component>
<listener>
17 years