Skip to content
Merged
Show file tree
Hide file tree
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
5 changes: 3 additions & 2 deletions opengrok-web/src/main/java/org/opengrok/web/PageConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ public class PageConfig {
// query parameters
static final String PROJECT_PARAM_NAME = "project";
static final String GROUP_PARAM_NAME = "group";
private static final String DEBUG_PARAM_NAME = "debug";
@VisibleForTesting
static final String DEBUG_PARAM_NAME = "debug";

private final AuthorizationFramework authFramework;
private RuntimeEnvironment env;
Expand Down Expand Up @@ -525,7 +526,7 @@ private static Comparator<File> getFileComparator() {

@VisibleForTesting
public static List<String> getSortedFiles(File[] files) {
return Arrays.stream(files).sorted(getFileComparator()).map(File::getName).collect(Collectors.toList());
return Arrays.stream(files).sorted(getFileComparator()).map(File::getName).toList();
}

/**
Expand Down
33 changes: 26 additions & 7 deletions opengrok-web/src/main/java/org/opengrok/web/Scripts.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/

/*
* Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
* Portions Copyright (c) 2017, 2020, Chris Fraire <cfraire@me.com>.
* Portions Copyright (c) 2022, Krystof Tulinger <k.tulinger@seznam.cz>.
*/
Expand All @@ -34,6 +34,7 @@
import java.util.TreeSet;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.VisibleForTesting;
import org.webjars.WebJarAssetLocator;

/**
Expand All @@ -43,10 +44,14 @@
*/
public class Scripts implements Iterable<Scripts.Script> {

private static final String DEBUG_SUFFIX = "-debug";
@VisibleForTesting
static final String DEBUG_SUFFIX = "-debug";
private static final String WEBJAR_PATH_PREFIX = "META-INF/resources/";

enum Type {
/**
* Holds type of the script.
*/
public enum Type {
MINIFIED, DEBUG
}

Expand All @@ -64,12 +69,18 @@ public abstract static class Script {
*/
protected String scriptData;
protected int priority;
private final String scriptName;

protected Script(String scriptData, int priority) {
protected Script(String scriptName, String scriptData, int priority) {
this.scriptName = scriptName;
this.scriptData = scriptData;
this.priority = priority;
}

public String getScriptName() {
return scriptName;
}

public abstract String toHtml();

public String getScriptData() {
Expand All @@ -87,7 +98,11 @@ public int getPriority() {
public static class FileScript extends Script {

public FileScript(String script, int priority) {
super(script, priority);
super(null, script, priority);
}

public FileScript(String scriptName, String script, int priority) {
super(scriptName, script, priority);
}

@Override
Expand All @@ -98,7 +113,6 @@ public String toHtml() {
this.getPriority() +
"\"></script>\n";
}

}

protected static final Map<String, Script> SCRIPTS = new TreeMap<>();
Expand Down Expand Up @@ -209,6 +223,11 @@ public boolean isEmpty() {
return outputScripts.iterator();
}

@VisibleForTesting
List<String> getScriptNames() {
return outputScripts.stream().map(Script::getScriptName).toList();
}

/**
* Add a script which is identified by the name.
*
Expand All @@ -231,7 +250,7 @@ public boolean addScript(String contextPath, String scriptName, Type type) {
}

private void addScript(String contextPath, String scriptName) {
this.addScript(new FileScript(contextPath + SCRIPTS.get(scriptName).getScriptData(),
this.addScript(new FileScript(scriptName, contextPath + SCRIPTS.get(scriptName).getScriptData(),
SCRIPTS.get(scriptName).getPriority()));
}

Expand Down
50 changes: 50 additions & 0 deletions opengrok-web/src/test/java/org/opengrok/web/PageConfigTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -874,4 +874,54 @@ public Cookie[] getCookies() {
PageConfig cfg = PageConfig.get(req);
assertEquals(List.of(SortOrder.LASTMODIFIED), cfg.getSortOrder());
}

@ParameterizedTest
@ValueSource(booleans = {true, false})
void testAddScript(boolean isDebug) {
HttpServletRequest req = new DummyHttpServletRequest() {
@Override
public String getPathInfo() {
return "path";
}

@Override
public String getContextPath() {
return "/";
}

@Override
public String getParameter(String name) {
if (name.equals(PageConfig.DEBUG_PARAM_NAME)) {
return isDebug ? "true" : "false";
}
return null;
}
};

PageConfig cfg = PageConfig.get(req);
final String scriptName = "utils";
cfg.addScript(scriptName);
assertTrue(cfg.getScripts().getScriptNames().
contains(isDebug ? scriptName + Scripts.DEBUG_SUFFIX : scriptName));
}

@Test
void testAddScriptInvalid() {
HttpServletRequest req = new DummyHttpServletRequest() {
@Override
public String getPathInfo() {
return "path";
}

@Override
public String getContextPath() {
return "/";
}
};

PageConfig cfg = PageConfig.get(req);
final String scriptName = "invalidScriptName";
cfg.addScript(scriptName);
assertFalse(cfg.getScripts().getScriptNames().contains(scriptName));
}
}
Loading