PersistentStateComponent getState not called
已回答
problem
when i start up plugin ,FastRequestComponent.getState not called, why?
javacode
@State(name = "fastRequest", storages = {@Storage("fastRequest.xml")})
public class FastRequestComponent implements PersistentStateComponent<FastRequestConfiguration> {
private FastRequestConfiguration config;
@Nullable
@Override
public FastRequestConfiguration getState() {
if (config == null) {
config = new FastRequestConfiguration();
List<String> projectList = new ArrayList<>();
List<String> envList = new ArrayList<>();
List<NameGroup> dataList = new ArrayList<>();
projectList.add("base");
projectList.add("marketing");
envList.add("dev");
envList.add("test");
dataList.add(new NameGroup("base",Lists.newArrayList(new HostGroup("dev","aaa"),new HostGroup("test","bbb"))));
dataList.add(new NameGroup("marketing",Lists.newArrayList(new HostGroup("dev","xxx"),new HostGroup("test","yyy"))));
config.setDataList(dataList);
config.setEnvList(envList);
config.setProjectList(projectList);
}
return config;
}
public static FastRequestComponent getInstance() {
return ServiceManager.getService(FastRequestComponent.class);
}
@Override
public void loadState(@NotNull FastRequestConfiguration state) {
XmlSerializerUtil.copyBean(state, Objects.requireNonNull(getState()));
}
}
public class FastRequestConfiguration implements Serializable {
private List<String> projectList;
private List<String> envList;
private List<NameGroup> dataList;
public List<String> getProjectList() {
return projectList;
}
public void setProjectList(List<String> projectList) {
this.projectList = projectList;
}
public List<String> getEnvList() {
return envList;
}
public void setEnvList(List<String> envList) {
this.envList = envList;
}
public List<NameGroup> getDataList() {
return dataList;
}
public void setDataList(List<NameGroup> dataList) {
this.dataList = dataList;
}
}
xml
<extensions defaultExtensionNs="com.intellij">
<!-- Add your extensions here -->
<applicationService serviceImplementation="io.github.kings1990.plugin.fastrequest.config.FastRequestComponent" order="first"/>
<applicationConfigurable displayName="Fast Request" instance="io.github.kings1990.plugin.fastrequest.view.CommonConfigurable"/>
</extensions>
请先登录再写评论。
Please always link full sources, not just snippets. Why do you expect it to be called "on startup"? Services are instantiated only on demand, so some code has to call it explicitly.
Reference: https://plugins.jetbrains.com/docs/intellij/plugin-services.html, https://plugins.jetbrains.com/docs/intellij/persisting-state-of-components.html
ok, maybe i understand with wrong