[ http://issues.apache.org/jira/browse/ADFFACES-176?page=all ]
Max Starets updated ADFFACES-176:
---------------------------------
Status: Open (was: Patch Available)
> 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
> Attachments: patch.176
>
>
> 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 [EMAIL PROTECTED] #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