IDEA-185598: Favorite branch mark is lost on restart

This commit is contained in:
Vladimir Krivosheev
2018-01-29 21:10:16 -08:00
parent 3210510c96
commit 26336ca690
3 changed files with 36 additions and 16 deletions
@@ -1,18 +1,4 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.configurationStore.xml
import com.intellij.util.xmlb.SkipDefaultsSerializationFilter
@@ -163,4 +149,25 @@ internal class XmlSerializerOldMapAnnotationTest {
testSerializer("<BeanWithMapWithAnnotations>\n <option name=\"1\" value=\"a\" />\n <option name=\"2\" value=\"b\" />\n <option name=\"3\" value=\"c\" />\n</BeanWithMapWithAnnotations>", bean)
}
@Test fun `propertyWithoutSurroundingElement`() {
@Tag("branch-storage")
class BranchStorage {
@Property(surroundWithTag = false)
@MapAnnotation(keyAttributeName = "type")
@JvmField
var branches = THashMap<String, String>()
}
val bean = BranchStorage()
bean.branches.put("branchName", "foo")
testSerializer("""
<branch-storage>
<map>
<entry type="branchName" value="foo" />
</map>
</branch-storage>
""", bean, SkipDefaultsSerializationFilter())
}
}
@@ -123,7 +123,7 @@ class AccessorBindingWrapper extends Binding implements MultiNodeBinding {
@Override
public boolean isBoundTo(@NotNull Element element) {
if (myBinding instanceof MapBinding) {
return element.getName().equals(((MapBinding)myBinding).getEntryElementName());
return ((MapBinding)myBinding).isBoundToWithoutProperty(element);
}
else {
return myBinding.isBoundTo(element);
@@ -258,6 +258,19 @@ class MapBinding extends Binding implements MultiNodeBinding {
return oldAnnotation == null || oldAnnotation.surroundKeyWithTag();
}
boolean isBoundToWithoutProperty(@NotNull Element element) {
String elementName = element.getName();
if (annotation != null) {
return elementName.equals(annotation.entryTagName());
}
else if (oldAnnotation != null && !oldAnnotation.surroundWithTag()) {
return elementName.equals(oldAnnotation.entryTagName());
}
else {
return elementName.equals(MAP);
}
}
@Override
public boolean isBoundTo(@NotNull Element element) {
if (oldAnnotation != null && !oldAnnotation.surroundWithTag()) {