0
을 가지고 내가 가지고있는 다음과 같은 구성 요소 :하게 IntelliJ IDEA 플러그인 지속성 상태 XML은 중복 라인
@State(
name = "SessionConfiguration",
storages = {
@Storage(id = "default", file = StoragePathMacros.PROJECT_FILE),
@Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR + "/tabsession.xml", scheme = StorageScheme.DIRECTORY_BASED)
}
)
public class SessionComponent implements ProjectComponent, PersistentStateComponent<Element> {
...
@Nullable
@Override
public Element getState() {
LOG.debug("Saving state");
final Element element = new Element("tabsession");
// meta configuration information
final Element stateElement = new Element("state");
stateElement.setAttribute("version", Integer.toString(STATE_VERSION));
element.addContent(stateElement);
// session data
final Element sessionsElement = new Element("sessions");
for(SessionState.Session session : sessionState.sessions) {
final Element sessionElement = new Element("session");
sessionElement.setAttribute("name", session.name);
final Element filesElement = new Element("files");
for(String path : session.files) {
final Element fileElement = new Element("file");
fileElement.setAttribute("path", path);
filesElement.addContent(fileElement);
}
filesElement.setAttribute("focusedFile", session.focusedFile);
sessionElement.addContent(filesElement);
sessionsElement.addContent(sessionElement);
}
element.addContent(sessionsElement);
return element;
}
...
}
잘 작동하고 생성 대상 파일 tabsession.xml
것 :
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SessionConfiguration">
<state version="1" />
<sessions>
<session name="first">
<files focusedFile="$PROJECT_DIR$/src/First.java">
<file path="$PROJECT_DIR$/src/First.java" />
<file path="$PROJECT_DIR$/src/Second.java" />
</files>
</session>
</sessions>
</component>
</project>
을하지만 상태가 다시 저장됩니다 경우 다른 데이터를 사용하면 이전 행이 제거되지 않습니다. 내가 다른 파일을 열고 상태가 저장됩니다 예를 들어, XML은 다음과 같습니다 : 분명히 잘못
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SessionConfiguration">
<state version="1" />
<sessions>
<session name="first">
<files focusedFile="$PROJECT_DIR$/src/First.java">
<file path="$PROJECT_DIR$/src/First.java" />
<file path="$PROJECT_DIR$/src/Second.java" />
<file path="$PROJECT_DIR$/src/First.java" />
<file path="$PROJECT_DIR$/src/Second.java" />
<file path="$PROJECT_DIR$/src/Third.java" />
</files>
</session>
</sessions>
</component>
</project>
합니다. 오래된 아이디어를 제거하면서 현재 상태 만 저장할 수있는 아이디어는 없습니까?