Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix incorrectly non-git folder opening and fix start panic when no themes found #1479

Merged
merged 2 commits into from
Sep 16, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package run.halo.app.core;

import org.jetbrains.annotations.NotNull;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@@ -26,18 +25,18 @@ public class CommonResultControllerAdvice implements ResponseBodyAdvice<Object>

@Override
public boolean supports(MethodParameter returnType,
@NotNull Class<? extends HttpMessageConverter<?>> converterType) {
@NonNull Class<? extends HttpMessageConverter<?>> converterType) {
return AbstractJackson2HttpMessageConverter.class.isAssignableFrom(converterType);
}

@Override
@NonNull
public final Object beforeBodyWrite(@Nullable Object body,
@NotNull MethodParameter returnType,
@NotNull MediaType contentType,
@NotNull Class<? extends HttpMessageConverter<?>> converterType,
@NotNull ServerHttpRequest request,
@NotNull ServerHttpResponse response) {
@NonNull MethodParameter returnType,
@NonNull MediaType contentType,
@NonNull Class<? extends HttpMessageConverter<?>> converterType,
@NonNull ServerHttpRequest request,
@NonNull ServerHttpResponse response) {
MappingJacksonValue container = getOrCreateContainer(body);
// The contain body will never be null
beforeBodyWriteInternal(container, contentType, returnType, request, response);
7 changes: 2 additions & 5 deletions src/main/java/run/halo/app/listener/StartedListener.java
Original file line number Diff line number Diff line change
@@ -167,12 +167,9 @@ private void initThemes() {
// Create theme folder
Path themePath = themeService.getBasePath();

// Fix the problem that the project cannot start after moving to a new server
if (Files.notExists(themePath) || !isInstalled) {
if (themeService.fetchThemePropertyBy(HaloConst.DEFAULT_THEME_ID).isEmpty()) {
FileUtils.copyFolder(source, themePath);
log.debug("Copied theme folder from [{}] to [{}]", source, themePath);
} else {
log.debug("Skipped copying theme folder due to existence of theme folder");
log.info("Copied theme folder from [{}] to [{}]", source, themePath);
}
} catch (Exception e) {
if (e instanceof FileNotFoundException) {
Original file line number Diff line number Diff line change
@@ -98,10 +98,6 @@ public ThemeProperty getActivatedThemeProperty() {

@Override
public Optional<ThemeProperty> fetchThemePropertyByThemeId(String themeId) {
if (StringUtils.equals(themeId, getActivatedThemeId())) {
return Optional.of(getActivatedThemeProperty());
}

return ThemePropertyScanner.INSTANCE.scan(getThemeRootPath(), null)
.stream()
.filter(property -> Objects.equals(themeId, property.getId()))
12 changes: 9 additions & 3 deletions src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java
Original file line number Diff line number Diff line change
@@ -27,11 +27,13 @@
import run.halo.app.exception.ForbiddenException;
import run.halo.app.exception.NotFoundException;
import run.halo.app.exception.ServiceException;
import run.halo.app.exception.ThemeNotFoundException;
import run.halo.app.exception.ThemeNotSupportException;
import run.halo.app.exception.ThemePropertyMissingException;
import run.halo.app.exception.ThemeUpdateException;
import run.halo.app.handler.theme.config.ThemeConfigResolver;
import run.halo.app.handler.theme.config.support.Group;
import run.halo.app.handler.theme.config.support.Option;
import run.halo.app.handler.theme.config.support.ThemeProperty;
import run.halo.app.model.support.HaloConst;
import run.halo.app.model.support.ThemeFile;
@@ -131,7 +133,7 @@ public List<String> listCustomTemplates(@NonNull String themeId, @NonNull String
Path themePath = Paths.get(themeProperty.getThemePath());
try (Stream<Path> pathStream = Files.list(themePath)) {
return pathStream.filter(path ->
StringUtils.startsWithIgnoreCase(path.getFileName().toString(), prefix))
StringUtils.startsWithIgnoreCase(path.getFileName().toString(), prefix))
.map(path -> {
// Remove prefix
final var customTemplate = StringUtils
@@ -315,13 +317,17 @@ public String getActivatedThemeId() {
@Override
@NonNull
public ThemeProperty getActivatedTheme() {
return fetchActivatedTheme().orElseThrow();
return themeRepository.getActivatedThemeProperty();
}

@Override
@NonNull
public Optional<ThemeProperty> fetchActivatedTheme() {
return Optional.of(themeRepository.getActivatedThemeProperty());
try {
return Optional.of(themeRepository.getActivatedThemeProperty());
} catch (ThemeNotFoundException tne) {
return Optional.empty();
}
}

@Override
2 changes: 1 addition & 1 deletion src/main/java/run/halo/app/theme/GitThemeUpdater.java
Original file line number Diff line number Diff line change
@@ -76,7 +76,7 @@ public ThemeProperty merge(ThemeProperty oldThemeProperty, ThemeProperty newThem

final var oldThemePath = Paths.get(oldThemeProperty.getThemePath());
// open old git repo
try (final var oldGit = Git.open(oldThemePath.toFile())) {
try (final var oldGit = Git.init().setDirectory(oldThemePath.toFile()).call()) {
// 0. commit old repo
commitAutomatically(oldGit);

8 changes: 4 additions & 4 deletions src/main/java/run/halo/app/utils/footnotes/Footnote.java
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.ast.ReferencingNode;
import com.vladsch.flexmark.util.sequence.BasedSequence;
import org.jetbrains.annotations.NotNull;
import org.springframework.lang.NonNull;
import run.halo.app.utils.footnotes.internal.FootnoteRepository;

/**
@@ -30,7 +30,7 @@ public void setReferenceOrdinal(int referenceOrdinal) {

protected int referenceOrdinal;

@NotNull
@NonNull
@Override
public BasedSequence getReference() {
return text;
@@ -80,14 +80,14 @@ public void setFootnoteBlock(FootnoteBlock footnoteBlock) {
this.footnoteBlock = footnoteBlock;
}

@NotNull
@NonNull
@Override
public BasedSequence[] getSegments() {
return new BasedSequence[] {openingMarker, text, closingMarker};
}

@Override
public void getAstExtra(@NotNull StringBuilder out) {
public void getAstExtra(@NonNull StringBuilder out) {
out.append(" ordinal: ")
.append(footnoteBlock != null ? footnoteBlock.getFootnoteOrdinal() : 0).append(" ");
delimitedSegmentSpanChars(out, openingMarker, text, closingMarker, "text");
10 changes: 5 additions & 5 deletions src/main/java/run/halo/app/utils/footnotes/FootnoteBlock.java
Original file line number Diff line number Diff line change
@@ -10,8 +10,8 @@
import com.vladsch.flexmark.util.sequence.BasedSequence;
import com.vladsch.flexmark.util.sequence.SequenceUtils;
import java.util.Objects;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import run.halo.app.utils.footnotes.internal.FootnoteRepository;

/**
@@ -43,7 +43,7 @@ public void setFootnoteReferences(int footnoteReferences) {

@Nullable
@Override
public Footnote getReferencingNode(@NotNull Node node) {
public Footnote getReferencingNode(@NonNull Node node) {
return node instanceof Footnote ? (Footnote) node : null;
}

@@ -74,15 +74,15 @@ public void setFootnoteOrdinal(int footnoteOrdinal) {
}

@Override
public void getAstExtra(@NotNull StringBuilder out) {
public void getAstExtra(@NonNull StringBuilder out) {
out.append(" ordinal: ").append(footnoteOrdinal).append(" ");
segmentSpan(out, openingMarker, "open");
segmentSpan(out, text, "text");
segmentSpan(out, closingMarker, "close");
segmentSpan(out, footnote, "footnote");
}

@NotNull
@NonNull
@Override
public BasedSequence[] getSegments() {
return new BasedSequence[] {openingMarker, text, closingMarker, footnote};
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@
import com.vladsch.flexmark.util.data.MutableDataHolder;
import com.vladsch.flexmark.util.format.options.ElementPlacement;
import com.vladsch.flexmark.util.format.options.ElementPlacementSort;
import org.jetbrains.annotations.NotNull;
import org.springframework.lang.NonNull;
import run.halo.app.utils.footnotes.internal.FootnoteBlockParser;
import run.halo.app.utils.footnotes.internal.FootnoteLinkRefProcessor;
import run.halo.app.utils.footnotes.internal.FootnoteNodeFormatter;
@@ -63,8 +63,8 @@ public void extend(Formatter.Builder formatterBuilder) {
}

@Override
public void extend(@NotNull HtmlRenderer.Builder htmlRendererBuilder,
@NotNull String rendererType) {
public void extend(@NonNull HtmlRenderer.Builder htmlRendererBuilder,
@NonNull String rendererType) {
if (htmlRendererBuilder.isRendererType("HTML")) {
htmlRendererBuilder.nodeRendererFactory(new FootnoteNodeRenderer.Factory());
}
@@ -77,7 +77,7 @@ public void extend(Parser.Builder parserBuilder) {
}

@Override
public void rendererOptions(@NotNull MutableDataHolder options) {
public void rendererOptions(@NonNull MutableDataHolder options) {

}

Original file line number Diff line number Diff line change
@@ -16,8 +16,8 @@
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import run.halo.app.utils.footnotes.FootnoteBlock;
import run.halo.app.utils.footnotes.FootnoteExtension;

@@ -115,9 +115,9 @@ public boolean affectsGlobalScope() {
return false;
}

@NotNull
@NonNull
@Override
public BlockParserFactory apply(@NotNull DataHolder options) {
public BlockParserFactory apply(@NonNull DataHolder options) {
return new BlockFactory(options);
}
}
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.data.DataHolder;
import com.vladsch.flexmark.util.sequence.BasedSequence;
import org.jetbrains.annotations.NotNull;
import org.springframework.lang.NonNull;
import run.halo.app.utils.footnotes.Footnote;
import run.halo.app.utils.footnotes.FootnoteBlock;
import run.halo.app.utils.footnotes.FootnoteExtension;
@@ -33,14 +33,14 @@ public int getBracketNestingLevel() {
}

@Override
public boolean isMatch(@NotNull BasedSequence nodeChars) {
public boolean isMatch(@NonNull BasedSequence nodeChars) {
return nodeChars.length() >= 3 && nodeChars.charAt(0) == '[' && nodeChars.charAt(1) == '^'
&& nodeChars.endCharAt(1) == ']';
}

@NotNull
@NonNull
@Override
public Node createNode(@NotNull BasedSequence nodeChars) {
public Node createNode(@NonNull BasedSequence nodeChars) {
BasedSequence footnoteId = nodeChars.midSequence(2, -1).trim();
FootnoteBlock footnoteBlock =
footnoteId.length() > 0 ? footnoteRepository.get(footnoteId.toString()) : null;
@@ -55,39 +55,39 @@ public Node createNode(@NotNull BasedSequence nodeChars) {
return footnote;
}

@NotNull
@NonNull
@Override
public BasedSequence adjustInlineText(@NotNull Document document, @NotNull Node node) {
public BasedSequence adjustInlineText(@NonNull Document document, @NonNull Node node) {
assert node instanceof Footnote;
return ((Footnote) node).getText();
}

@Override
public boolean allowDelimiters(@NotNull BasedSequence chars, @NotNull Document document,
@NotNull Node node) {
public boolean allowDelimiters(@NonNull BasedSequence chars, @NonNull Document document,
@NonNull Node node) {
return true;
}

@Override
public void updateNodeElements(@NotNull Document document, @NotNull Node node) {
public void updateNodeElements(@NonNull Document document, @NonNull Node node) {

}

public static class Factory implements LinkRefProcessorFactory {

@NotNull
@NonNull
@Override
public LinkRefProcessor apply(@NotNull Document document) {
public LinkRefProcessor apply(@NonNull Document document) {
return new FootnoteLinkRefProcessor(document);
}

@Override
public boolean getWantExclamationPrefix(@NotNull DataHolder options) {
public boolean getWantExclamationPrefix(@NonNull DataHolder options) {
return WANT_EXCLAMATION_PREFIX;
}

@Override
public int getBracketNestingLevel(@NotNull DataHolder options) {
public int getBracketNestingLevel(@NonNull DataHolder options) {
return BRACKET_NESTING_LEVEL;
}
}
Original file line number Diff line number Diff line change
@@ -15,8 +15,8 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import run.halo.app.utils.footnotes.Footnote;
import run.halo.app.utils.footnotes.FootnoteBlock;
import run.halo.app.utils.footnotes.FootnoteExtension;
@@ -100,9 +100,9 @@ private void render(Footnote node, NodeFormatterContext context, MarkdownWriter

public static class Factory implements NodeFormatterFactory {

@NotNull
@NonNull
@Override
public NodeFormatter create(@NotNull DataHolder options) {
public NodeFormatter create(@NonNull DataHolder options) {
return new FootnoteNodeFormatter(options);
}
}
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@
import java.util.Locale;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.lang.NonNull;
import run.halo.app.utils.footnotes.Footnote;
import run.halo.app.utils.footnotes.FootnoteBlock;
import run.halo.app.utils.footnotes.FootnoteExtension;
@@ -53,8 +53,8 @@ public Set<RenderingPhase> getRenderingPhases() {
}

@Override
public void renderDocument(@NotNull NodeRendererContext context, @NotNull HtmlWriter html,
@NotNull Document document, @NotNull RenderingPhase phase) {
public void renderDocument(@NonNull NodeRendererContext context, @NonNull HtmlWriter html,
@NonNull Document document, @NonNull RenderingPhase phase) {
if (phase == RenderingPhase.BODY_TOP) {
if (recheckUndefinedReferences) {
// need to see if have undefined footnotes that were defined after parsing
@@ -171,9 +171,9 @@ private void render(Footnote node, NodeRendererContext context, HtmlWriter html)

public static class Factory implements NodeRendererFactory {

@NotNull
@NonNull
@Override
public NodeRenderer apply(@NotNull DataHolder options) {
public NodeRenderer apply(@NonNull DataHolder options) {
return new FootnoteNodeRenderer(options);
}
}
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.jetbrains.annotations.NotNull;
import org.springframework.lang.NonNull;
import run.halo.app.utils.footnotes.Footnote;
import run.halo.app.utils.footnotes.FootnoteBlock;
import run.halo.app.utils.footnotes.FootnoteExtension;
@@ -79,19 +79,19 @@ public FootnoteRepository(DataHolder options) {
super(FootnoteExtension.FOOTNOTES_KEEP.get(options));
}

@NotNull
@NonNull
@Override
public DataKey<FootnoteRepository> getDataKey() {
return FootnoteExtension.FOOTNOTES;
}

@NotNull
@NonNull
@Override
public DataKey<KeepType> getKeepDataKey() {
return FootnoteExtension.FOOTNOTES_KEEP;
}

@NotNull
@NonNull
@Override
public Set<FootnoteBlock> getReferencedElements(Node parent) {
HashSet<FootnoteBlock> references = new HashSet<>();