Skip to content

Commit f84e5fe

Browse files
committed
Bug 37228588 - [37193699->14.1.2.0.1] Unable to change backing map for an existing caching scheme using cache config override
- rolled back cl 113171 - requires changes to the test [git-p4: depot-paths = "//dev/coherence-ce/release/coherence-ce-v14.1.2.0/": change = 113174]
1 parent d012498 commit f84e5fe

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

prj/coherence-core/src/main/java/com/tangosol/coherence/config/xml/processor/CacheConfigOverrideProcessor.java

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.ArrayList;
1212
import java.util.List;
1313

14+
import com.oracle.coherence.common.base.Logger;
1415
import com.tangosol.config.xml.OverrideProcessor;
1516
import com.tangosol.run.xml.XmlElement;
1617
import com.tangosol.run.xml.XmlHelper;
@@ -75,9 +76,9 @@ else if ("interceptors".equals(xmlElement.getName()))
7576
private void processSchemeMappings(XmlElement xmlBase,
7677
XmlElement xmlOverrideSchemeMappings, String sMappingSubElementName)
7778
{
78-
List<XmlElement> listElements = new ArrayList<>();
79-
XmlElement xmlCurrentElement = xmlBase.getElement(xmlOverrideSchemeMappings.getName());
79+
List<XmlElement> listElements = new ArrayList<>();
8080

81+
XmlElement xmlCurrentElement = xmlBase.getElement(xmlOverrideSchemeMappings.getName());
8182
if (xmlCurrentElement == null)
8283
{
8384
listElements.add(xmlOverrideSchemeMappings);
@@ -199,8 +200,7 @@ else if (!listElements.contains(xmlElementOverride))
199200
*/
200201
private void processCachingSchemes(XmlElement xmlBase, XmlElement xmlOverrideCachingSchemes)
201202
{
202-
List<XmlElement> listElements = new ArrayList<XmlElement>();
203-
XmlElement xmlCurrentElement = xmlBase.getElement(xmlOverrideCachingSchemes.getName());
203+
List<XmlElement> listElements = new ArrayList<XmlElement>();
204204

205205
for (Object subElements : xmlOverrideCachingSchemes.getElementList())
206206
{
@@ -229,20 +229,30 @@ private void processCachingSchemes(XmlElement xmlBase, XmlElement xmlOverrideCac
229229

230230
if (sSchemeName.equals(sOverrideSchemeName))
231231
{
232-
if (!xmlElementName.equals(sSubElementName))
232+
XmlElement xmlElementRemove = null;
233+
234+
for (XmlElement xmlEl : listElements)
233235
{
234-
xmlElementBase.setName(sSubElementName);
236+
XmlElement xmlElSchemeName = xmlEl.getElement("scheme-name");
237+
if (xmlElSchemeName != null
238+
&& sOverrideSchemeName.equals(xmlElSchemeName.getValue().toString()))
239+
{
240+
xmlElementRemove = xmlEl;
241+
break;
242+
}
235243
}
236244

237-
xmlElementBase.getElementList().clear();
238-
xmlElementBase.getElementList().addAll(xmlOverride.getElementList());
245+
if (xmlElementRemove != null)
246+
{
247+
listElements.remove(xmlElementRemove);
248+
}
239249

240-
if (listElements.contains(xmlOverride))
250+
if (!xmlElementName.equals(sSubElementName))
241251
{
242-
listElements.remove(xmlOverride);
252+
xmlElementBase.setName(sSubElementName);
243253
}
244254

245-
break;
255+
XmlHelper.overrideElement(xmlElementBase, xmlOverride);
246256
}
247257
else if (!listElements.contains(xmlOverride))
248258
{
@@ -267,7 +277,7 @@ else if (!listElements.contains(xmlOverride))
267277

268278
if (!listElements.isEmpty())
269279
{
270-
XmlHelper.addElements(xmlCurrentElement, listElements.iterator());
280+
XmlHelper.addElements(xmlBase.getElement(xmlOverrideCachingSchemes.getName()), listElements.iterator());
271281
listElements.clear();
272282
}
273283
}

0 commit comments

Comments
 (0)