template manager notnull

This commit is contained in:
Alexey Kudravtsev
2018-09-14 16:01:02 +03:00
parent a9258fb507
commit 07e1cf805e
2 changed files with 18 additions and 39 deletions
@@ -54,6 +54,7 @@ public abstract class FileTemplateManager{
return ServiceManager.getService(project, FileTemplateManager.class).checkInitialized();
}
@NotNull
protected FileTemplateManager checkInitialized() { return this; }
/** Use {@link #getInstance(Project)} instead */
@@ -76,7 +77,8 @@ public abstract class FileTemplateManager{
*/
public abstract FileTemplatesScheme getProjectScheme();
public abstract FileTemplate[] getTemplates(String category);
@NotNull
public abstract FileTemplate[] getTemplates(@NotNull String category);
/**
* Returns all templates from "Default" category.
@@ -115,13 +117,16 @@ public abstract class FileTemplateManager{
public abstract void addRecentName(@NotNull @NonNls String name);
@NotNull
public abstract FileTemplate getInternalTemplate(@NotNull @NonNls String templateName);
public abstract FileTemplate findInternalTemplate(@NotNull @NonNls String templateName);
@NotNull
public abstract FileTemplate[] getInternalTemplates();
@NotNull
public abstract FileTemplate getJ2eeTemplate(@NotNull @NonNls String templateName);
@NotNull
public abstract FileTemplate getCodeTemplate(@NotNull @NonNls String templateName);
@NotNull
@@ -2,13 +2,11 @@
package com.intellij.ide.fileTemplates.impl;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.fileTemplates.FileTemplate;
import com.intellij.ide.fileTemplates.FileTemplateManager;
import com.intellij.ide.fileTemplates.FileTemplatesScheme;
import com.intellij.ide.fileTemplates.InternalTemplateBean;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.components.PersistentStateComponent;
import com.intellij.openapi.components.State;
@@ -20,7 +18,6 @@ import com.intellij.openapi.fileTypes.ex.FileTypeManagerEx;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.io.FileUtilRt;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.project.ProjectKt;
import com.intellij.util.ArrayUtil;
import com.intellij.util.SystemProperties;
@@ -100,6 +97,7 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers
myInitialized = true;
}
@NotNull
@Override
protected FileTemplateManager checkInitialized() {
if (!myInitialized) {
@@ -115,8 +113,9 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers
return myProjectScheme;
}
@NotNull
@Override
public FileTemplate[] getTemplates(String category) {
public FileTemplate[] getTemplates(@NotNull String category) {
if (DEFAULT_TEMPLATES_CATEGORY.equals(category)) return ArrayUtil.mergeArrays(getInternalTemplates(), getAllTemplates());
if (INCLUDES_TEMPLATES_CATEGORY.equals(category)) return getAllPatterns();
if (CODE_TEMPLATES_CATEGORY.equals(category)) return getAllCodeTemplates();
@@ -201,7 +200,7 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers
@NotNull
public Collection<String> getRecentNames() {
validateRecentNames(); // todo: no need to do it lazily
return myState.getRecentNames(RECENT_TEMPLATES_SIZE);
return myState.getRecentNames();
}
@Override
@@ -229,20 +228,14 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers
return result;
}
@NotNull
@Override
public FileTemplate getInternalTemplate(@NotNull @NonNls String templateName) {
FileTemplateBase template = (FileTemplateBase)findInternalTemplate(templateName);
if (template == null) {
template = (FileTemplateBase)getJ2eeTemplate(templateName); // Hack to be able to register class templates from the plugin.
if (template != null) {
template.setReformatCode(true);
}
else {
final String text = normalizeText(getDefaultClassTemplateText(templateName));
template = getSettings().getInternalTemplatesManager().addTemplate(templateName, "java");
template.setText(text);
}
template.setReformatCode(true);
}
return template;
}
@@ -258,17 +251,6 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers
return template;
}
@NotNull
public static String normalizeText(@NotNull String text) {
text = StringUtil.convertLineSeparators(text);
text = StringUtil.replace(text, "$NAME$", "${NAME}");
text = StringUtil.replace(text, "$PACKAGE_NAME$", "${PACKAGE_NAME}");
text = StringUtil.replace(text, "$DATE$", "${DATE}");
text = StringUtil.replace(text, "$TIME$", "${TIME}");
text = StringUtil.replace(text, "$USER$", "${USER}");
return text;
}
@Override
@NotNull
public String internalTemplateToSubject(@NotNull @NonNls String templateName) {
@@ -281,24 +263,19 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers
return templateName.toLowerCase();
}
@NonNls
@NotNull
private String getDefaultClassTemplateText(@NotNull @NonNls String templateName) {
return IdeBundle.message("template.default.class.comment", ApplicationNamesInfo.getInstance().getFullProductName()) +
"package $PACKAGE_NAME$;\n" + "public " + internalTemplateToSubject(templateName) + " $NAME$ { }";
}
@Override
public FileTemplate getCodeTemplate(@NotNull @NonNls String templateName) {
return getTemplateFromManager(templateName, getSettings().getCodeTemplatesManager());
}
@NotNull
@Override
public FileTemplate getJ2eeTemplate(@NotNull @NonNls String templateName) {
return getTemplateFromManager(templateName, getSettings().getJ2eeTemplatesManager());
}
@Nullable
@NotNull
private static FileTemplate getTemplateFromManager(@NotNull final String templateName, @NotNull final FTManager ftManager) {
FileTemplateBase template = ftManager.getTemplate(templateName);
if (template != null) {
@@ -308,13 +285,10 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers
if (template != null) {
return template;
}
if (templateName.endsWith("ForTest") && ApplicationManager.getApplication().isUnitTestMode()) {
return null;
}
String message = "Template not found: " + templateName/*ftManager.templateNotFoundMessage(templateName)*/;
LOG.error(message);
return null;
throw new IllegalStateException(message);
}
@Override
@@ -478,13 +452,13 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers
}
@NotNull
public Collection<String> getRecentNames(int max) {
Collection<String> getRecentNames() {
int size = RECENT_TEMPLATES.size();
int resultSize = Math.min(max, size);
int resultSize = Math.min(FileTemplateManager.RECENT_TEMPLATES_SIZE, size);
return RECENT_TEMPLATES.subList(size - resultSize, size);
}
public void validateNames(List<String> validNames) {
void validateNames(List<String> validNames) {
RECENT_TEMPLATES.retainAll(validNames);
}
}