You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-issues@incubator.apache.org by "Max Starets (JIRA)" <ad...@incubator.apache.org> on 2006/09/14 17:11:22 UTC
[jira] Updated: (ADFFACES-176) UIXCollection token cache - Intenal
Oracle Bugfix Needs to be backported to Trinidad
[ http://issues.apache.org/jira/browse/ADFFACES-176?page=all ]
Max Starets updated ADFFACES-176:
---------------------------------
Status: Patch Available (was: Open)
> UIXCollection token cache - Intenal Oracle Bugfix Needs to be backported to Trinidad
> ------------------------------------------------------------------------------------
>
> Key: ADFFACES-176
> URL: http://issues.apache.org/jira/browse/ADFFACES-176
> Project: MyFaces ADF-Faces
> Issue Type: Bug
> Reporter: Max Starets
> Priority: Critical
>
> In UIXCollection.java:
> Replace the following code:
> /**
> * Clears all the currency strings.
> */
> @Override
> public final void encodeBegin(FacesContext context) throws IOException
> {
> _init();
> _getCurrencyCache().clear();
> _flushCachedModel();
> Object assertKey = null;
> assert ((assertKey = getRowKey()) != null) || true;
> __encodeBegin(context);
> // make sure that the rendering code preserves the currency:
> assert _assertKeyPreserved(assertKey) : "CurrencyKey not preserved";
> }
> with:
> /**
> * Clear the rowKey-to-currencyString cache.
> * The cache is not cleared immediately; instead it will be cleared
> * when {@link #encodeBegin} is called.
> */
> protected void clearCurrencyStringCache()
> {
> _getInternalState(true)._clearTokenCache = true;
> }
> /**
> * Clears all the currency strings.
> */
> @Override
> public final void encodeBegin(FacesContext context) throws IOException
> {
> _init();
> InternalState istate = _getInternalState(true);
> // we must not clear the currency cache everytime. only clear
> // it in response to specific events: bug 4773659
> if (istate._clearTokenCache)
> {
> istate._clearTokenCache = false;
> _getCurrencyCache().clear();
> }
> _flushCachedModel();
> Object assertKey = null;
> assert ((assertKey = getRowKey()) != null) || true;
> __encodeBegin(context);
> // make sure that the rendering code preserves the currency:
> assert _assertKeyPreserved(assertKey) : "CurrencyKey not preserved";
> }
> In the inner InternalState class add the following member variable:
> private transient boolean _clearTokenCache = false;
> In UIXTableTemplate.java replace the following method:
> /**
> * Delivers an event to the appropriate listeners.
> * @param event
> * @throws javax.faces.event.AbortProcessingException
> */
> @Override
> public void broadcast(FacesEvent event)
> throws AbortProcessingException
> {
> // the order of processing is
> // 1. do any default action handling
> // 2. invoke any actionListener method binding
> // 3. call all the registered ActionListener instances.
> // Deliver to the default RangeChangeListener
> if (event instanceof RangeChangeEvent)
> {
> RangeChangeEvent rEvent = (RangeChangeEvent) event;
> int first = rEvent.getNewStart();
> setFirst(first);
> //pu: Implicitly record a Change for 'first' attribute
> addAttributeChange("first", new Integer(first));
>
> if ((first == 0) && (rEvent.getNewEnd() == getRowCount()))
> {
> setShowAll(true);
> //pu: Implicitly record a Change for 'showAll' attribute
> addAttributeChange("showAll", Boolean.TRUE);
> }
> else if (isShowAll())
> {
> setShowAll(false);
> //pu: Implicitly record a Change for 'showAll' attribute
> addAttributeChange("showAll", Boolean.FALSE);
> }
> __broadcast(event, getRangeChangeListener());
> }
> else if (event instanceof RowDisclosureEvent)
> {
> RowDisclosureEvent eEvent = (RowDisclosureEvent) event;
> RowKeySet set = getDisclosedRowKeys();
> set.addAll(eEvent.getAddedSet());
> set.removeAll(eEvent.getRemovedSet());
> __broadcast(event, getRowDisclosureListener());
> }
> else if (event instanceof SortEvent)
> {
> SortEvent sEvent = (SortEvent) event;
> setSortCriteria(sEvent.getSortCriteria());
> __broadcast(event, getSortListener());
> }
> else if (event instanceof SelectionEvent)
> {
> //pu: Implicitly record a Change for 'selectionState' attribute
> addAttributeChange("selectedRowKeys",
> getSelectedRowKeys());
> __broadcast(event, getSelectionListener());
> }
> super.broadcast(event);
> }
> with:
> /**
> * Delivers an event to the appropriate listeners.
> * @param event
> * @throws javax.faces.event.AbortProcessingException
> */
> @Override
> public void broadcast(FacesEvent event)
> throws AbortProcessingException
> {
> // the order of processing is
> // 1. do any default action handling
> // 2. invoke any actionListener method binding
> // 3. call all the registered ActionListener instances.
> // Deliver to the default RangeChangeListener
> if (event instanceof RangeChangeEvent)
> {
> RangeChangeEvent rEvent = (RangeChangeEvent) event;
> int first = rEvent.getNewStart();
> setFirst(first);
> //pu: Implicitly record a Change for 'first' attribute
> addAttributeChange("first", new Integer(first));
>
> if ((first == 0) && (rEvent.getNewEnd() == getRowCount()))
> {
> setShowAll(true);
> //pu: Implicitly record a Change for 'showAll' attribute
> addAttributeChange("showAll", Boolean.TRUE);
> }
> else if (isShowAll())
> {
> setShowAll(false);
> //pu: Implicitly record a Change for 'showAll' attribute
> addAttributeChange("showAll", Boolean.FALSE);
> }
> // since the range is now different we can clear the currency cache:
> clearCurrencyStringCache();
> __broadcast(event, getRangeChangeListener());
> }
> else if (event instanceof RowDisclosureEvent)
> {
> RowDisclosureEvent eEvent = (RowDisclosureEvent) event;
> RowKeySet set = getDisclosedRowKeys();
> set.addAll(eEvent.getAddedSet());
> set.removeAll(eEvent.getRemovedSet());
> __broadcast(event, getRowDisclosureListener());
> }
> else if (event instanceof SortEvent)
> {
> SortEvent sEvent = (SortEvent) event;
> setSortCriteria(sEvent.getSortCriteria());
> __broadcast(event, getSortListener());
> }
> else if (event instanceof SelectionEvent)
> {
> //pu: Implicitly record a Change for 'selectionState' attribute
> addAttributeChange("selectedRowKeys",
> getSelectedRowKeys());
> __broadcast(event, getSelectionListener());
> }
> super.broadcast(event);
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira