mirror of
https://github.com/theonedev/onedev.git
synced 2026-02-01 17:37:19 +00:00
Update bootstrap to 4.5
This commit is contained in:
parent
c2f2cff766
commit
028145ce2a
29
pom.xml
29
pom.xml
@ -309,16 +309,6 @@
|
||||
<artifactId>HikariCP</artifactId>
|
||||
<version>2.7.9</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>de.agilecoders.wicket</groupId>
|
||||
<artifactId>wicket-bootstrap-core</artifactId>
|
||||
<version>${wicketbootstrap.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>de.agilecoders.wicket</groupId>
|
||||
<artifactId>wicket-bootstrap-extensions</artifactId>
|
||||
<version>${wicketbootstrap.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-collections4</artifactId>
|
||||
@ -429,16 +419,6 @@
|
||||
<artifactId>quartz</artifactId>
|
||||
<version>2.3.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.webjars</groupId>
|
||||
<artifactId>font-awesome</artifactId>
|
||||
<version>4.7.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.webjars.npm</groupId>
|
||||
<artifactId>codemirror</artifactId>
|
||||
<version>5.21.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.shiro</groupId>
|
||||
<artifactId>shiro-core</artifactId>
|
||||
@ -564,7 +544,12 @@
|
||||
<artifactId>sshd-core</artifactId>
|
||||
<version>2.2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>20090211</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<repositories>
|
||||
<repository>
|
||||
@ -589,7 +574,7 @@
|
||||
<logback.version>1.0.11</logback.version>
|
||||
<antlr.version>4.7.2</antlr.version>
|
||||
<jetty.version>9.4.24.v20191120</jetty.version>
|
||||
<wicket.version>7.14.0</wicket.version>
|
||||
<wicket.version>7.17.0</wicket.version>
|
||||
<jersey.version>2.26</jersey.version>
|
||||
<hibernate.version>5.4.9.Final</hibernate.version>
|
||||
<wicketbootstrap.version>0.10.18</wicketbootstrap.version>
|
||||
|
||||
@ -98,20 +98,6 @@
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.webjars</groupId>
|
||||
<artifactId>font-awesome</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.webjars</groupId>
|
||||
<artifactId>bootstrap</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.webjars.npm</groupId>
|
||||
<artifactId>codemirror</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.shiro</groupId>
|
||||
<artifactId>shiro-core</artifactId>
|
||||
@ -266,14 +252,6 @@
|
||||
<groupId>org.apache.wicket</groupId>
|
||||
<artifactId>wicket-native-websocket-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>de.agilecoders.wicket</groupId>
|
||||
<artifactId>wicket-bootstrap-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>de.agilecoders.wicket</groupId>
|
||||
<artifactId>wicket-bootstrap-extensions</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-fileupload</groupId>
|
||||
<artifactId>commons-fileupload</artifactId>
|
||||
@ -322,6 +300,10 @@
|
||||
<groupId>org.dom4j</groupId>
|
||||
<artifactId>dom4j</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>k8s-helper</artifactId>
|
||||
|
||||
@ -1,18 +0,0 @@
|
||||
package de.agilecoders.wicket.core.markup.html.bootstrap.behavior;
|
||||
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
|
||||
import de.agilecoders.wicket.core.settings.IBootstrapSettings;
|
||||
|
||||
/*
|
||||
* Remove bootstrap resource reference, as otherwise it causes issue #14 in production mode
|
||||
*/
|
||||
public class BootstrapJavascriptBehavior extends BootstrapBaseBehavior {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void renderHead(IBootstrapSettings settings, IHeaderResponse headerResponse) {
|
||||
super.renderHead(settings, headerResponse);
|
||||
}
|
||||
}
|
||||
@ -1,47 +0,0 @@
|
||||
package de.agilecoders.wicket.extensions.markup.html.bootstrap.references;
|
||||
|
||||
import org.apache.wicket.markup.head.CssHeaderItem;
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.request.resource.CssResourceReference;
|
||||
|
||||
/**
|
||||
* Eonasdan datetime-picker css reference
|
||||
*
|
||||
* @author Alexey Volkov
|
||||
* @since 01.02.15
|
||||
*/
|
||||
public class DatetimePickerCssReference extends CssResourceReference {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* Singleton instance of this reference
|
||||
*/
|
||||
private static final class Holder {
|
||||
|
||||
private static final DatetimePickerCssReference INSTANCE = new DatetimePickerCssReference();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the single instance of the resource reference
|
||||
*/
|
||||
public static DatetimePickerCssReference instance() {
|
||||
return Holder.INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Private constructor.
|
||||
*/
|
||||
private DatetimePickerCssReference() {
|
||||
super(DatetimePickerCssReference.class, "bootstrap-datetimepicker.min.css");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return this resource reference singleton instance as header item
|
||||
*/
|
||||
public static HeaderItem asHeaderItem() {
|
||||
return CssHeaderItem.forReference(instance());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,59 +0,0 @@
|
||||
package de.agilecoders.wicket.extensions.markup.html.bootstrap.references;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.Application;
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
import org.apache.wicket.request.resource.JavaScriptResourceReference;
|
||||
|
||||
import de.agilecoders.wicket.core.util.Dependencies;
|
||||
|
||||
/**
|
||||
* Eonasdan datetime-picker js reference
|
||||
*
|
||||
* @author Alexey Volkov
|
||||
* @since 01.02.15
|
||||
*/
|
||||
public class DatetimePickerJsReference extends JavaScriptResourceReference {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* Singleton instance of this reference
|
||||
*/
|
||||
private static final class Holder {
|
||||
|
||||
private static final DatetimePickerJsReference INSTANCE = new DatetimePickerJsReference();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the single instance of the resource reference
|
||||
*/
|
||||
public static DatetimePickerJsReference instance() {
|
||||
return Holder.INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Private constructor.
|
||||
*/
|
||||
private DatetimePickerJsReference() {
|
||||
super(DatetimePickerJsReference.class, "bootstrap-datetimepicker.min.js");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HeaderItem> getDependencies() {
|
||||
return Dependencies.combine(super.getDependencies(),
|
||||
JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference()),
|
||||
MomentWithLocalesJsReference.asHeaderItem());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return this resource reference singleton instance as header item
|
||||
*/
|
||||
public static HeaderItem asHeaderItem() {
|
||||
return JavaScriptHeaderItem.forReference(instance());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -44,7 +44,6 @@ import org.apache.sshd.common.keyprovider.KeyPairProvider;
|
||||
import org.apache.wicket.Application;
|
||||
import org.apache.wicket.core.request.mapper.StalePageException;
|
||||
import org.apache.wicket.protocol.http.PageExpiredException;
|
||||
import org.apache.wicket.protocol.http.WebApplication;
|
||||
import org.apache.wicket.protocol.http.WicketFilter;
|
||||
import org.apache.wicket.protocol.http.WicketServlet;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
@ -222,10 +221,10 @@ import io.onedev.server.security.BasicAuthenticationFilter;
|
||||
import io.onedev.server.security.BearerAuthenticationFilter;
|
||||
import io.onedev.server.security.CodePullAuthorizationSource;
|
||||
import io.onedev.server.security.FilterChainConfigurator;
|
||||
import io.onedev.server.security.OneFilterChainResolver;
|
||||
import io.onedev.server.security.OnePasswordService;
|
||||
import io.onedev.server.security.OneRememberMeManager;
|
||||
import io.onedev.server.security.OneWebSecurityManager;
|
||||
import io.onedev.server.security.DefaultFilterChainResolver;
|
||||
import io.onedev.server.security.DefaultPasswordService;
|
||||
import io.onedev.server.security.DefaultRememberMeManager;
|
||||
import io.onedev.server.security.DefaultWebSecurityManager;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import io.onedev.server.security.realm.AbstractAuthorizingRealm;
|
||||
import io.onedev.server.ssh.DefaultKeyPairProvider;
|
||||
@ -267,7 +266,7 @@ import io.onedev.server.web.DefaultUrlManager;
|
||||
import io.onedev.server.web.DefaultWicketFilter;
|
||||
import io.onedev.server.web.DefaultWicketServlet;
|
||||
import io.onedev.server.web.ExpectedExceptionContribution;
|
||||
import io.onedev.server.web.OneWebApplication;
|
||||
import io.onedev.server.web.WebApplication;
|
||||
import io.onedev.server.web.ResourcePackScopeContribution;
|
||||
import io.onedev.server.web.WebApplicationConfigurator;
|
||||
import io.onedev.server.web.avatar.AvatarManager;
|
||||
@ -281,7 +280,7 @@ import io.onedev.server.web.editable.DefaultEditSupportRegistry;
|
||||
import io.onedev.server.web.editable.EditSupport;
|
||||
import io.onedev.server.web.editable.EditSupportLocator;
|
||||
import io.onedev.server.web.editable.EditSupportRegistry;
|
||||
import io.onedev.server.web.mapper.OnePageMapper;
|
||||
import io.onedev.server.web.mapper.GeneralPageMapper;
|
||||
import io.onedev.server.web.page.DashboardPage;
|
||||
import io.onedev.server.web.page.base.BasePage;
|
||||
import io.onedev.server.web.page.layout.BuildListTab;
|
||||
@ -504,12 +503,12 @@ public class CoreModule extends AbstractPluginModule {
|
||||
private void configureSecurity() {
|
||||
contributeFromPackage(Realm.class, AbstractAuthorizingRealm.class);
|
||||
|
||||
bind(RememberMeManager.class).to(OneRememberMeManager.class);
|
||||
bind(WebSecurityManager.class).to(OneWebSecurityManager.class);
|
||||
bind(FilterChainResolver.class).to(OneFilterChainResolver.class);
|
||||
bind(RememberMeManager.class).to(DefaultRememberMeManager.class);
|
||||
bind(WebSecurityManager.class).to(DefaultWebSecurityManager.class);
|
||||
bind(FilterChainResolver.class).to(DefaultFilterChainResolver.class);
|
||||
bind(BasicAuthenticationFilter.class);
|
||||
bind(BearerAuthenticationFilter.class);
|
||||
bind(PasswordService.class).to(OnePasswordService.class);
|
||||
bind(PasswordService.class).to(DefaultPasswordService.class);
|
||||
bind(ShiroFilter.class);
|
||||
install(new ShiroAopModule());
|
||||
contribute(FilterChainConfigurator.class, new FilterChainConfigurator() {
|
||||
@ -568,8 +567,8 @@ public class CoreModule extends AbstractPluginModule {
|
||||
|
||||
contributeFromPackage(EditSupport.class, EditSupport.class);
|
||||
|
||||
bind(WebApplication.class).to(OneWebApplication.class);
|
||||
bind(Application.class).to(OneWebApplication.class);
|
||||
bind(org.apache.wicket.protocol.http.WebApplication.class).to(WebApplication.class);
|
||||
bind(Application.class).to(WebApplication.class);
|
||||
bind(AvatarManager.class).to(DefaultAvatarManager.class);
|
||||
bind(WebSocketManager.class).to(DefaultWebSocketManager.class);
|
||||
|
||||
@ -578,8 +577,8 @@ public class CoreModule extends AbstractPluginModule {
|
||||
contribute(WebApplicationConfigurator.class, new WebApplicationConfigurator() {
|
||||
|
||||
@Override
|
||||
public void configure(WebApplication application) {
|
||||
application.mount(new OnePageMapper("/test", TestPage.class));
|
||||
public void configure(org.apache.wicket.protocol.http.WebApplication application) {
|
||||
application.mount(new GeneralPageMapper("/test", TestPage.class));
|
||||
}
|
||||
|
||||
});
|
||||
@ -598,7 +597,7 @@ public class CoreModule extends AbstractPluginModule {
|
||||
|
||||
@Override
|
||||
public Collection<Class<?>> getResourcePackScopes() {
|
||||
return Lists.newArrayList(OneWebApplication.class);
|
||||
return Lists.newArrayList(WebApplication.class);
|
||||
}
|
||||
|
||||
});
|
||||
@ -609,7 +608,7 @@ public class CoreModule extends AbstractPluginModule {
|
||||
public Collection<Class<? extends Exception>> getExpectedExceptionClasses() {
|
||||
return Sets.newHashSet(ConstraintViolationException.class, EntityNotFoundException.class,
|
||||
ObjectNotFoundException.class, StaleStateException.class, UnauthorizedException.class,
|
||||
OneException.class, PageExpiredException.class, StalePageException.class);
|
||||
GeneralException.class, PageExpiredException.class, StalePageException.class);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
package io.onedev.server;
|
||||
|
||||
public class GeneralException extends RuntimeException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public GeneralException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public GeneralException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public GeneralException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
package io.onedev.server;
|
||||
|
||||
public class OneException extends RuntimeException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public OneException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public OneException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public OneException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,9 +1,9 @@
|
||||
package io.onedev.server.buildspec;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.util.Path;
|
||||
|
||||
public class BuildSpecException extends OneException {
|
||||
public class BuildSpecException extends GeneralException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package io.onedev.server.buildspec;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
|
||||
public class InvalidBuildSpecException extends OneException {
|
||||
public class InvalidBuildSpecException extends GeneralException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@ -51,7 +51,7 @@ import io.onedev.commons.utils.LockUtils;
|
||||
import io.onedev.k8shelper.CacheInstance;
|
||||
import io.onedev.k8shelper.CloneInfo;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.buildspec.job.action.PostBuildAction;
|
||||
import io.onedev.server.buildspec.job.action.condition.ActionCondition;
|
||||
@ -162,7 +162,7 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
for (ConstraintViolation<?> violation: validator.validate(project.getBuildSpec(commitId))) {
|
||||
String message = String.format("Error validating build spec (project: %s, commit: %s, property: %s, message: %s)",
|
||||
project.getName(), commitId.name(), violation.getPropertyPath(), violation.getMessage());
|
||||
throw new OneException(message);
|
||||
throw new GeneralException(message);
|
||||
}
|
||||
} finally {
|
||||
Project.pop();
|
||||
@ -222,7 +222,7 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
|
||||
if (!checkedJobNames.add(jobName)) {
|
||||
String message = String.format("Circular job dependencies found (%s)", checkedJobNames);
|
||||
throw new OneException(message);
|
||||
throw new GeneralException(message);
|
||||
}
|
||||
|
||||
Map<String, List<String>> paramMapToQuery = new HashMap<>(paramMap);
|
||||
@ -280,14 +280,14 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
for (ProjectDependency dependency: build.getJob().getProjectDependencies()) {
|
||||
Project dependencyProject = projectManager.find(dependency.getProjectName());
|
||||
if (dependencyProject == null)
|
||||
throw new OneException("Unable to find dependency project: " + dependency.getProjectName());
|
||||
throw new GeneralException("Unable to find dependency project: " + dependency.getProjectName());
|
||||
|
||||
Subject subject;
|
||||
if (dependency.getAccessTokenSecret() != null) {
|
||||
String accessToken = build.getSecretValue(dependency.getAccessTokenSecret());
|
||||
User user = userManager.findByAccessToken(accessToken);
|
||||
if (user == null) {
|
||||
throw new OneException("Unable to access dependency project '"
|
||||
throw new GeneralException("Unable to access dependency project '"
|
||||
+ dependency.getProjectName() + "': invalid access token");
|
||||
}
|
||||
subject = user.asSubject();
|
||||
@ -302,12 +302,12 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
if (dependencyBuild == null) {
|
||||
String errorMessage = String.format("Unable to find dependency build (project: %s, build number: %d)",
|
||||
dependency.getProjectName(), buildNumber);
|
||||
throw new OneException(errorMessage);
|
||||
throw new GeneralException(errorMessage);
|
||||
}
|
||||
|
||||
JobPermission jobPermission = new JobPermission(dependencyBuild.getJobName(), new AccessBuild());
|
||||
if (!subject.isPermitted(new ProjectPermission(dependencyProject, jobPermission))) {
|
||||
throw new OneException("Unable to access dependency build '"
|
||||
throw new GeneralException("Unable to access dependency build '"
|
||||
+ dependencyBuild.getFQN() + "': permission denied");
|
||||
}
|
||||
|
||||
@ -463,7 +463,7 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
@Override
|
||||
public Boolean call() {
|
||||
Build build = buildManager.load(buildId);
|
||||
if (e instanceof OneException)
|
||||
if (e instanceof GeneralException)
|
||||
build.setErrorMessage(e.getMessage());
|
||||
else
|
||||
build.setErrorMessage(Throwables.getStackTraceAsString(e));
|
||||
@ -555,7 +555,7 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
|
||||
return executionRef.get();
|
||||
} else {
|
||||
throw new OneException("No applicable job executor");
|
||||
throw new GeneralException("No applicable job executor");
|
||||
}
|
||||
} finally {
|
||||
Build.pop();
|
||||
@ -563,23 +563,23 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
}
|
||||
|
||||
private void log(Throwable e, JobLogger logger) {
|
||||
if (e instanceof OneException)
|
||||
if (e instanceof GeneralException)
|
||||
logger.log(e.getMessage());
|
||||
else
|
||||
logger.log(e);
|
||||
}
|
||||
|
||||
private RuntimeException maskSecrets(Throwable e, Collection<String> jobSecretsToMask) {
|
||||
if (e instanceof OneException) {
|
||||
if (e instanceof GeneralException) {
|
||||
String errorMessage = e.getMessage();
|
||||
for (String secret: jobSecretsToMask)
|
||||
errorMessage = StringUtils.replace(errorMessage, secret, SecretInput.MASK);
|
||||
return new OneException(errorMessage);
|
||||
return new GeneralException(errorMessage);
|
||||
} else {
|
||||
String stackTrace = Throwables.getStackTraceAsString(e);
|
||||
for (String secret: jobSecretsToMask)
|
||||
stackTrace = StringUtils.replace(stackTrace, secret, SecretInput.MASK);
|
||||
return new OneException(stackTrace);
|
||||
return new GeneralException(stackTrace);
|
||||
}
|
||||
}
|
||||
|
||||
@ -587,7 +587,7 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
public JobContext getJobContext(String jobToken, boolean mustExist) {
|
||||
JobContext jobContext = jobContexts.get(jobToken);
|
||||
if (mustExist && jobContext == null)
|
||||
throw new OneException("No job context found for specified job token");
|
||||
throw new GeneralException("No job context found for specified job token");
|
||||
return jobContext;
|
||||
}
|
||||
|
||||
@ -706,7 +706,7 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
buildManager.save(build);
|
||||
listenerRegistry.post(new BuildSubmitted(build));
|
||||
} else {
|
||||
throw new OneException("Build #" + build.getNumber() + " not finished yet");
|
||||
throw new GeneralException("Build #" + build.getNumber() + " not finished yet");
|
||||
}
|
||||
}
|
||||
|
||||
@ -799,7 +799,7 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
try {
|
||||
jobExecutions.put(build.getId(), execute(build));
|
||||
} catch (Throwable t) {
|
||||
if (t instanceof OneException)
|
||||
if (t instanceof GeneralException)
|
||||
markBuildError(build, t.getMessage());
|
||||
else
|
||||
markBuildError(build, Throwables.getStackTraceAsString(t));
|
||||
@ -846,7 +846,7 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
|
||||
}
|
||||
build.setStatus(Build.Status.CANCELLED);
|
||||
} catch (ExecutionException e) {
|
||||
if (e.getCause() instanceof OneException)
|
||||
if (e.getCause() instanceof GeneralException)
|
||||
build.setStatus(Build.Status.FAILED, e.getCause().getMessage());
|
||||
else
|
||||
build.setStatus(Build.Status.FAILED, e.getMessage());
|
||||
|
||||
@ -12,7 +12,7 @@ import java.util.Map.Entry;
|
||||
import java.util.function.Function;
|
||||
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.util.BeanUtils;
|
||||
@ -61,18 +61,18 @@ public class VariableInterpolator implements Function<String, String> {
|
||||
}
|
||||
return StringUtils.join(paramValues, ",");
|
||||
} else {
|
||||
throw new OneException("Invisible param: " + paramName);
|
||||
throw new GeneralException("Invisible param: " + paramName);
|
||||
}
|
||||
}
|
||||
}
|
||||
throw new OneException("Undefined param: " + paramName);
|
||||
throw new GeneralException("Undefined param: " + paramName);
|
||||
} else if (t.startsWith(PREFIX_PROPERTIES)) {
|
||||
String propertyName = t.substring(PREFIX_PROPERTIES.length());
|
||||
String propertyValue = build.getSpec().getPropertyMap().get(propertyName);
|
||||
if (propertyValue != null)
|
||||
return propertyValue;
|
||||
else
|
||||
throw new OneException("Undefined property: " + propertyName);
|
||||
throw new GeneralException("Undefined property: " + propertyName);
|
||||
} else if (t.startsWith(PREFIX_SECRETS)) {
|
||||
String secretName = t.substring(PREFIX_SECRETS.length());
|
||||
return build.getSecretValue(secretName);
|
||||
@ -86,7 +86,7 @@ public class VariableInterpolator implements Function<String, String> {
|
||||
else
|
||||
return "";
|
||||
} else {
|
||||
throw new OneException("Unrecognized interpolation variable: " + t);
|
||||
throw new GeneralException("Unrecognized interpolation variable: " + t);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import org.hibernate.validator.constraints.NotEmpty;
|
||||
|
||||
import io.onedev.commons.codeassist.InputSuggestion;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.buildspec.job.Job;
|
||||
import io.onedev.server.entitymanager.MilestoneManager;
|
||||
import io.onedev.server.model.Build;
|
||||
@ -57,10 +57,10 @@ public class CloseMilestoneAction extends PostBuildAction {
|
||||
milestone.setClosed(true);
|
||||
milestoneManager.save(milestone);
|
||||
} else {
|
||||
throw new OneException("Closing milestone '" + milestoneName + "' is not allowed in this build");
|
||||
throw new GeneralException("Closing milestone '" + milestoneName + "' is not allowed in this build");
|
||||
}
|
||||
} else {
|
||||
throw new OneException("Unable to find milestone '" + milestoneName + "'");
|
||||
throw new GeneralException("Unable to find milestone '" + milestoneName + "'");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ import org.hibernate.validator.constraints.NotEmpty;
|
||||
|
||||
import io.onedev.commons.codeassist.InputSuggestion;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.buildspec.job.Job;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
@ -73,7 +73,7 @@ public class CreateTagAction extends PostBuildAction {
|
||||
project.createTag(tagName, build.getCommitHash(), tagIdent, getTagMessage());
|
||||
}
|
||||
} else {
|
||||
throw new OneException("Creating tag '" + tagName + "' is not allowed in this build");
|
||||
throw new GeneralException("Creating tag '" + tagName + "' is not allowed in this build");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ import org.antlr.v4.runtime.Recognizer;
|
||||
import io.onedev.commons.codeassist.AntlrUtils;
|
||||
import io.onedev.commons.codeassist.FenceAware;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.buildspec.job.Job;
|
||||
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.AndCriteriaContext;
|
||||
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.ConditionContext;
|
||||
@ -106,7 +106,7 @@ public class ActionCondition extends Criteria<Build> {
|
||||
case ActionConditionLexer.RequiredByPullRequests:
|
||||
return new RequiredByPullRequestsCriteria();
|
||||
default:
|
||||
throw new OneException("Unexpected operator: " + ctx.operator.getText());
|
||||
throw new GeneralException("Unexpected operator: " + ctx.operator.getText());
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,12 +175,12 @@ public class ActionCondition extends Criteria<Build> {
|
||||
if (operator != ActionConditionLexer.IsEmpty && operator != ActionConditionLexer.Is)
|
||||
throw newOperatorException(fieldName, operator);
|
||||
} else {
|
||||
throw new OneException("Param not found: " + fieldName);
|
||||
throw new GeneralException("Param not found: " + fieldName);
|
||||
}
|
||||
}
|
||||
|
||||
private static OneException newOperatorException(String fieldName, int operator) {
|
||||
return new OneException("Field '" + fieldName + "' is not applicable for operator '"
|
||||
private static GeneralException newOperatorException(String fieldName, int operator) {
|
||||
return new GeneralException("Field '" + fieldName + "' is not applicable for operator '"
|
||||
+ AntlrUtils.getLexerRuleName(ActionConditionLexer.ruleNames, operator) + "'");
|
||||
}
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ import org.eclipse.jgit.revwalk.RevCommit;
|
||||
import io.onedev.commons.codeassist.FenceAware;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.buildspec.job.action.notificationreceiver.NotificationReceiverParser.CriteriaContext;
|
||||
import io.onedev.server.entitymanager.GroupManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
@ -63,14 +63,14 @@ public class NotificationReceiver {
|
||||
if (user != null)
|
||||
emails.add(user.getEmail());
|
||||
else
|
||||
throw new OneException("Unable to find user '" + userName + "'");
|
||||
throw new GeneralException("Unable to find user '" + userName + "'");
|
||||
} else if (criteria.groupCriteria() != null) {
|
||||
String groupName = getValue(criteria.groupCriteria().Value());
|
||||
Group group = OneDev.getInstance(GroupManager.class).find(groupName);
|
||||
if (group != null)
|
||||
emails.addAll(group.getMembers().stream().map(it->it.getEmail()).collect(Collectors.toList()));
|
||||
else
|
||||
throw new OneException("Unable to find group '" + groupName + "'");
|
||||
throw new GeneralException("Unable to find group '" + groupName + "'");
|
||||
} else if (criteria.Committers() != null) {
|
||||
if (build != null) {
|
||||
for (RevCommit commit: build.getCommits(null)) {
|
||||
|
||||
@ -14,7 +14,7 @@ import org.antlr.v4.runtime.Recognizer;
|
||||
import io.onedev.commons.codeassist.AntlrUtils;
|
||||
import io.onedev.commons.codeassist.FenceAware;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.buildspec.job.Job;
|
||||
import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.AndCriteriaContext;
|
||||
import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.ConditionContext;
|
||||
@ -139,7 +139,7 @@ public class RetryCondition extends Criteria<Build> {
|
||||
if (operator != RetryConditionLexer.IsEmpty && operator != RetryConditionLexer.Is)
|
||||
throw newOperatorException(fieldName, operator);
|
||||
} else {
|
||||
throw new OneException("Param not found: " + fieldName);
|
||||
throw new GeneralException("Param not found: " + fieldName);
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,8 +147,8 @@ public class RetryCondition extends Criteria<Build> {
|
||||
return AntlrUtils.getLexerRuleName(RetryConditionLexer.ruleNames, rule);
|
||||
}
|
||||
|
||||
private static OneException newOperatorException(String fieldName, int operator) {
|
||||
return new OneException("Field '" + fieldName + "' is not applicable for operator '"
|
||||
private static GeneralException newOperatorException(String fieldName, int operator) {
|
||||
return new GeneralException("Field '" + fieldName + "' is not applicable for operator '"
|
||||
+ AntlrUtils.getLexerRuleName(RetryConditionLexer.ruleNames, operator) + "'");
|
||||
}
|
||||
|
||||
|
||||
@ -59,7 +59,7 @@ import io.onedev.commons.launcher.loader.ListenerRegistry;
|
||||
import io.onedev.commons.utils.ExceptionUtils;
|
||||
import io.onedev.commons.utils.LockUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.buildspec.job.Job;
|
||||
import io.onedev.server.buildspec.job.JobManager;
|
||||
@ -859,7 +859,7 @@ public class DefaultPullRequestManager extends AbstractEntityManager<PullRequest
|
||||
}
|
||||
}
|
||||
if (!requiredJobNames.isEmpty())
|
||||
throw new OneException("No pull request trigger to fire required builds: " + requiredJobNames);
|
||||
throw new GeneralException("No pull request trigger to fire required builds: " + requiredJobNames);
|
||||
} finally {
|
||||
ScriptIdentity.pop();
|
||||
}
|
||||
@ -971,7 +971,7 @@ public class DefaultPullRequestManager extends AbstractEntityManager<PullRequest
|
||||
String errorMessage = String.format("Impossible to provide required number of reviewers "
|
||||
+ "(candidates: %s, required number of reviewers: %d, pull request: #%d)",
|
||||
reviewers, missingCount, update.getRequest().getNumber());
|
||||
throw new OneException(errorMessage);
|
||||
throw new GeneralException(errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package io.onedev.server.git.exception;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
|
||||
public class GitException extends OneException {
|
||||
public class GitException extends GeneralException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@ import com.google.common.base.Splitter;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.git.GitUtils;
|
||||
import io.onedev.server.model.Project;
|
||||
@ -161,7 +161,7 @@ public class GitPreReceiveCallback extends HttpServlet {
|
||||
if (errorMessages.isEmpty() && newObjectId.equals(ObjectId.zeroId())) {
|
||||
try {
|
||||
projectManager.onDeleteBranch(project, branchName);
|
||||
} catch (OneException e) {
|
||||
} catch (GeneralException e) {
|
||||
errorMessages.addAll(Splitter.on("\n").splitToList(e.getMessage()));
|
||||
}
|
||||
}
|
||||
@ -183,7 +183,7 @@ public class GitPreReceiveCallback extends HttpServlet {
|
||||
if (errorMessages.isEmpty() && newObjectId.equals(ObjectId.zeroId())) {
|
||||
try {
|
||||
projectManager.onDeleteTag(project, tagName);
|
||||
} catch (OneException e) {
|
||||
} catch (GeneralException e) {
|
||||
errorMessages.addAll(Splitter.on("\n").splitToList(e.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ import com.google.common.base.Preconditions;
|
||||
import io.onedev.commons.launcher.bootstrap.Bootstrap;
|
||||
import io.onedev.commons.utils.FileUtils;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
|
||||
@Singleton
|
||||
@SuppressWarnings("unused")
|
||||
@ -1086,7 +1086,7 @@ public class DataMigrator {
|
||||
Path target = projectsDir.toPath();
|
||||
File linkDir = new File(Bootstrap.installDir, "site/projects");
|
||||
if (linkDir.exists())
|
||||
throw new OneException("Directory already exists: " + linkDir);
|
||||
throw new GeneralException("Directory already exists: " + linkDir);
|
||||
Files.createSymbolicLink(linkDir.toPath(), target);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
|
||||
@ -39,7 +39,7 @@ import edu.emory.mathcs.backport.java.util.Collections;
|
||||
import io.onedev.commons.launcher.loader.ImplementationRegistry;
|
||||
import io.onedev.commons.utils.ClassUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.util.BeanUtils;
|
||||
import io.onedev.server.web.editable.annotation.Editable;
|
||||
|
||||
@ -81,7 +81,7 @@ public class VersionedYamlDoc extends MappingNode {
|
||||
if (keyNode.getValue().equals("version"))
|
||||
return ((ScalarNode)tuple.getValueNode()).getValue();
|
||||
}
|
||||
throw new OneException("Unable to find version");
|
||||
throw new GeneralException("Unable to find version");
|
||||
}
|
||||
|
||||
private void removeVersion() {
|
||||
|
||||
@ -62,7 +62,7 @@ import io.onedev.commons.utils.FileUtils;
|
||||
import io.onedev.commons.utils.LockUtils;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.buildspec.job.Job;
|
||||
import io.onedev.server.buildspec.job.VariableInterpolator;
|
||||
@ -718,10 +718,10 @@ public class Build extends AbstractEntity implements Referenceable {
|
||||
if (isOnBranches(secret.getAuthorizedBranches()))
|
||||
return secret.getValue();
|
||||
else
|
||||
throw new OneException("Job secret not authorized: " + secretName);
|
||||
throw new GeneralException("Job secret not authorized: " + secretName);
|
||||
}
|
||||
}
|
||||
throw new OneException("No job secret found: " + secretName);
|
||||
throw new GeneralException("No job secret found: " + secretName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ import javax.annotation.Nullable;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import edu.emory.mathcs.backport.java.util.Collections;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.support.inputspec.choiceinput.choiceprovider.Choice;
|
||||
import io.onedev.server.model.support.inputspec.choiceinput.choiceprovider.SpecifiedChoices;
|
||||
@ -576,7 +576,7 @@ public class GlobalIssueSetting implements Serializable {
|
||||
if (!getStateSpecs().isEmpty())
|
||||
return getStateSpecs().iterator().next();
|
||||
else
|
||||
throw new OneException("No any issue state is defined");
|
||||
throw new GeneralException("No any issue state is defined");
|
||||
}
|
||||
|
||||
public List<BoardSpec> getBoardSpecs() {
|
||||
|
||||
@ -6,7 +6,7 @@ import java.util.List;
|
||||
|
||||
import edu.emory.mathcs.backport.java.util.Collections;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.buildspec.job.JobContext;
|
||||
import io.onedev.server.buildspec.job.JobExecutorDiscoverer;
|
||||
import io.onedev.server.web.editable.EditableUtils;
|
||||
@ -46,7 +46,7 @@ public class AutoDiscoveredJobExecutor extends JobExecutor {
|
||||
jobExecutor.setJobMatch(getJobMatch());
|
||||
jobExecutor.execute(jobToken, context);
|
||||
} else {
|
||||
throw new OneException("No job executors discovered");
|
||||
throw new GeneralException("No job executors discovered");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ import org.hibernate.validator.constraints.NotEmpty;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.util.GroovyUtils;
|
||||
import io.onedev.server.web.editable.annotation.Editable;
|
||||
import io.onedev.server.web.editable.annotation.OmitName;
|
||||
@ -54,7 +54,7 @@ public class ScriptingChoices extends ChoiceProvider {
|
||||
choices.put(item, null);
|
||||
return choices;
|
||||
} else {
|
||||
throw new OneException("Script should return either a Map or a List");
|
||||
throw new GeneralException("Script should return either a Map or a List");
|
||||
}
|
||||
} catch (RuntimeException e) {
|
||||
if (allPossible) {
|
||||
|
||||
@ -8,7 +8,7 @@ import org.eclipse.jgit.revwalk.RevCommit;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.event.RefUpdated;
|
||||
import io.onedev.server.git.command.RevListCommand;
|
||||
import io.onedev.server.model.Project;
|
||||
@ -33,7 +33,7 @@ public class AuthorCriteria extends CommitCriteria {
|
||||
if (SecurityUtils.getUser() != null)
|
||||
command.authors().add("<" + SecurityUtils.getUser().getEmail() + ">");
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
} else {
|
||||
command.authors().add(StringUtils.replace(value, "*", ".*"));
|
||||
}
|
||||
@ -47,7 +47,7 @@ public class AuthorCriteria extends CommitCriteria {
|
||||
for (String value: values) {
|
||||
if (value == null) { // authored by me
|
||||
if (User.get() == null)
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
else if (User.get().getEmail().equals(authorEmail))
|
||||
return true;
|
||||
} else {
|
||||
|
||||
@ -20,7 +20,7 @@ import org.eclipse.jgit.lib.ObjectId;
|
||||
import io.onedev.commons.codeassist.FenceAware;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.event.RefUpdated;
|
||||
import io.onedev.server.git.command.RevListCommand;
|
||||
@ -99,11 +99,11 @@ public class CommitQuery implements Serializable {
|
||||
if (NumberUtils.isDigits(numberStr)) {
|
||||
Build build = OneDev.getInstance(BuildManager.class).find(project, Long.parseLong(numberStr));
|
||||
if (build == null)
|
||||
throw new OneException("Unable to find build: " + value);
|
||||
throw new GeneralException("Unable to find build: " + value);
|
||||
else
|
||||
value = build.getCommitHash();
|
||||
} else {
|
||||
throw new OneException("Invalid build number: " + numberStr);
|
||||
throw new GeneralException("Invalid build number: " + numberStr);
|
||||
}
|
||||
}
|
||||
if (criteria.revisionCriteria().SINCE() != null)
|
||||
|
||||
@ -8,7 +8,7 @@ import org.eclipse.jgit.revwalk.RevCommit;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.event.RefUpdated;
|
||||
import io.onedev.server.git.command.RevListCommand;
|
||||
import io.onedev.server.model.Project;
|
||||
@ -33,7 +33,7 @@ public class CommitterCriteria extends CommitCriteria {
|
||||
if (SecurityUtils.getUser() != null)
|
||||
command.committers().add("<" + SecurityUtils.getUser().getEmail() + ">");
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
} else {
|
||||
command.committers().add(StringUtils.replace(value, "*", ".*"));
|
||||
}
|
||||
@ -47,7 +47,7 @@ public class CommitterCriteria extends CommitCriteria {
|
||||
for (String value: values) {
|
||||
if (value == null) { // committed by me
|
||||
if (User.get() == null)
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
else if (User.get().getEmail().equals(committerEmail))
|
||||
return true;
|
||||
} else {
|
||||
|
||||
@ -14,7 +14,7 @@ import com.google.common.base.Splitter;
|
||||
import io.onedev.commons.codeassist.FenceAware;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.entitymanager.IssueManager;
|
||||
import io.onedev.server.entitymanager.MilestoneManager;
|
||||
@ -51,7 +51,7 @@ public abstract class EntityQuery<T extends AbstractEntity> implements Serializa
|
||||
try {
|
||||
return Integer.parseInt(value);
|
||||
} catch (NumberFormatException e) {
|
||||
throw new OneException("Invalid number: " + value);
|
||||
throw new GeneralException("Invalid number: " + value);
|
||||
}
|
||||
}
|
||||
|
||||
@ -59,21 +59,21 @@ public abstract class EntityQuery<T extends AbstractEntity> implements Serializa
|
||||
try {
|
||||
return Long.parseLong(value);
|
||||
} catch (NumberFormatException e) {
|
||||
throw new OneException("Invalid number: " + value);
|
||||
throw new GeneralException("Invalid number: " + value);
|
||||
}
|
||||
}
|
||||
|
||||
public static User getUser(String loginName) {
|
||||
User user = OneDev.getInstance(UserManager.class).findByName(loginName);
|
||||
if (user == null)
|
||||
throw new OneException("Unable to find user with login: " + loginName);
|
||||
throw new GeneralException("Unable to find user with login: " + loginName);
|
||||
return user;
|
||||
}
|
||||
|
||||
public static Project getProject(String projectName) {
|
||||
Project project = OneDev.getInstance(ProjectManager.class).find(projectName);
|
||||
if (project == null)
|
||||
throw new OneException("Unable to find project with name: " + projectName);
|
||||
throw new GeneralException("Unable to find project with name: " + projectName);
|
||||
return project;
|
||||
}
|
||||
|
||||
@ -83,13 +83,13 @@ public abstract class EntityQuery<T extends AbstractEntity> implements Serializa
|
||||
else if (value.equals("false"))
|
||||
return false;
|
||||
else
|
||||
throw new OneException("Invalid boolean: " + value);
|
||||
throw new GeneralException("Invalid boolean: " + value);
|
||||
}
|
||||
|
||||
public static Date getDateValue(String value) {
|
||||
Date dateValue = DateUtils.parseRelaxed(value);
|
||||
if (dateValue == null)
|
||||
throw new OneException("Unrecognized date: " + value);
|
||||
throw new GeneralException("Unrecognized date: " + value);
|
||||
return dateValue;
|
||||
}
|
||||
|
||||
@ -100,7 +100,7 @@ public abstract class EntityQuery<T extends AbstractEntity> implements Serializa
|
||||
if (commitId != null && commitId.getCommitId() != null)
|
||||
return commitId;
|
||||
else
|
||||
throw new OneException("Unable to find revision: " + value);
|
||||
throw new GeneralException("Unable to find revision: " + value);
|
||||
}
|
||||
|
||||
public static ProjectScopedRevision getRevision(@Nullable Project project, String value) {
|
||||
@ -110,7 +110,7 @@ public abstract class EntityQuery<T extends AbstractEntity> implements Serializa
|
||||
if (revision != null)
|
||||
return revision;
|
||||
else
|
||||
throw new OneException("Unable to find revision: " + value);
|
||||
throw new GeneralException("Unable to find revision: " + value);
|
||||
}
|
||||
|
||||
public static Issue getIssue(@Nullable Project project, String value) {
|
||||
@ -124,7 +124,7 @@ public abstract class EntityQuery<T extends AbstractEntity> implements Serializa
|
||||
if (issue != null)
|
||||
return issue;
|
||||
else
|
||||
throw new OneException("Unable to find issue: " + value);
|
||||
throw new GeneralException("Unable to find issue: " + value);
|
||||
}
|
||||
|
||||
public static PullRequest getPullRequest(@Nullable Project project, String value) {
|
||||
@ -138,7 +138,7 @@ public abstract class EntityQuery<T extends AbstractEntity> implements Serializa
|
||||
if (pullRequest != null)
|
||||
return pullRequest;
|
||||
else
|
||||
throw new OneException("Unable to find pull request: " + value);
|
||||
throw new GeneralException("Unable to find pull request: " + value);
|
||||
}
|
||||
|
||||
public static Build getBuild(@Nullable Project project, String value) {
|
||||
@ -152,7 +152,7 @@ public abstract class EntityQuery<T extends AbstractEntity> implements Serializa
|
||||
if (build != null)
|
||||
return build;
|
||||
else
|
||||
throw new OneException("Unable to find build: " + value);
|
||||
throw new GeneralException("Unable to find build: " + value);
|
||||
}
|
||||
|
||||
public static ProjectScopedNumber getProjectScopedNumber(@Nullable Project project, String value) {
|
||||
@ -172,7 +172,7 @@ public abstract class EntityQuery<T extends AbstractEntity> implements Serializa
|
||||
if (milestone != null)
|
||||
return milestone;
|
||||
else
|
||||
throw new OneException("Unable to find milestone: " + value);
|
||||
throw new GeneralException("Unable to find milestone: " + value);
|
||||
}
|
||||
|
||||
public boolean matches(T entity) {
|
||||
|
||||
@ -28,7 +28,7 @@ import org.antlr.v4.runtime.Recognizer;
|
||||
|
||||
import io.onedev.commons.codeassist.AntlrUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.entitymanager.BuildParamManager;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.Project;
|
||||
@ -111,30 +111,30 @@ public class BuildQuery extends EntityQuery<Build> {
|
||||
return new TimedOutCriteria();
|
||||
case BuildQueryLexer.Waiting:
|
||||
if (!withUnfinishedCriteria)
|
||||
throw new OneException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
throw new GeneralException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
return new WaitingCriteria();
|
||||
case BuildQueryLexer.Pending:
|
||||
if (!withUnfinishedCriteria)
|
||||
throw new OneException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
throw new GeneralException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
return new PendingCriteria();
|
||||
case BuildQueryLexer.Running:
|
||||
if (!withUnfinishedCriteria)
|
||||
throw new OneException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
throw new GeneralException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
return new RunningCriteria();
|
||||
case BuildQueryLexer.SubmittedByMe:
|
||||
if (!withCurrentUserCriteria)
|
||||
throw new OneException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
throw new GeneralException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
return new SubmittedByMeCriteria();
|
||||
case BuildQueryLexer.CancelledByMe:
|
||||
if (!withCurrentUserCriteria)
|
||||
throw new OneException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
throw new GeneralException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
return new CancelledByMeCriteria();
|
||||
case BuildQueryLexer.AssociatedWithPullRequests:
|
||||
return new AssociatedWithPullRequestsCriteria();
|
||||
case BuildQueryLexer.RequiredByPullRequests:
|
||||
return new RequiredByPullRequestsCriteria();
|
||||
default:
|
||||
throw new OneException("Unexpected operator: " + ctx.operator.getText());
|
||||
throw new GeneralException("Unexpected operator: " + ctx.operator.getText());
|
||||
}
|
||||
}
|
||||
|
||||
@ -249,7 +249,7 @@ public class BuildQuery extends EntityQuery<Build> {
|
||||
for (OrderContext order: queryContext.order()) {
|
||||
String fieldName = getValue(order.Quoted().getText());
|
||||
if (!ORDER_FIELDS.containsKey(fieldName))
|
||||
throw new OneException("Can not order by field: " + fieldName);
|
||||
throw new GeneralException("Can not order by field: " + fieldName);
|
||||
|
||||
EntitySort buildSort = new EntitySort();
|
||||
buildSort.setField(fieldName);
|
||||
@ -269,7 +269,7 @@ public class BuildQuery extends EntityQuery<Build> {
|
||||
public static void checkField(Project project, String fieldName, int operator) {
|
||||
Collection<String> paramNames = OneDev.getInstance(BuildParamManager.class).getBuildParamNames(null);
|
||||
if (!QUERY_FIELDS.contains(fieldName) && !paramNames.contains(fieldName))
|
||||
throw new OneException("Field not found: " + fieldName);
|
||||
throw new GeneralException("Field not found: " + fieldName);
|
||||
switch (operator) {
|
||||
case BuildQueryLexer.IsBefore:
|
||||
case BuildQueryLexer.IsAfter:
|
||||
@ -298,8 +298,8 @@ public class BuildQuery extends EntityQuery<Build> {
|
||||
}
|
||||
}
|
||||
|
||||
private static OneException newOperatorException(String fieldName, int operator) {
|
||||
return new OneException("Field '" + fieldName + "' is not applicable for operator '" + getRuleName(operator) + "'");
|
||||
private static GeneralException newOperatorException(String fieldName, int operator) {
|
||||
return new GeneralException("Field '" + fieldName + "' is not applicable for operator '" + getRuleName(operator) + "'");
|
||||
}
|
||||
|
||||
public static String getRuleName(int rule) {
|
||||
|
||||
@ -5,7 +5,7 @@ import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.search.entity.EntityCriteria;
|
||||
@ -20,7 +20,7 @@ public class CancelledByMeCriteria extends EntityCriteria<Build> {
|
||||
Path<User> attribute = root.get(Build.PROP_CANCELLER);
|
||||
return builder.equal(attribute, User.get());
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ public class CancelledByMeCriteria extends EntityCriteria<Build> {
|
||||
if (User.get() != null)
|
||||
return User.get().equals(build.getCanceller());
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -5,7 +5,7 @@ import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.search.entity.EntityCriteria;
|
||||
@ -20,7 +20,7 @@ public class SubmittedByMeCriteria extends EntityCriteria<Build> {
|
||||
Path<User> attribute = root.get(Build.PROP_SUBMITTER);
|
||||
return builder.equal(attribute, User.get());
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ public class SubmittedByMeCriteria extends EntityCriteria<Build> {
|
||||
if (User.get() != null)
|
||||
return User.get().equals(build.getSubmitter());
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -24,7 +24,7 @@ import org.antlr.v4.runtime.RecognitionException;
|
||||
import org.antlr.v4.runtime.Recognizer;
|
||||
|
||||
import io.onedev.commons.codeassist.AntlrUtils;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.CodeComment;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.search.entity.AndEntityCriteria;
|
||||
@ -188,7 +188,7 @@ public class CodeCommentQuery extends EntityQuery<CodeComment> {
|
||||
for (OrderContext order: queryContext.order()) {
|
||||
String fieldName = getValue(order.Quoted().getText());
|
||||
if (!ORDER_FIELDS.containsKey(fieldName))
|
||||
throw new OneException("Can not order by field: " + fieldName);
|
||||
throw new GeneralException("Can not order by field: " + fieldName);
|
||||
|
||||
EntitySort commentSort = new EntitySort();
|
||||
commentSort.setField(fieldName);
|
||||
@ -207,7 +207,7 @@ public class CodeCommentQuery extends EntityQuery<CodeComment> {
|
||||
|
||||
public static void checkField(Project project, String fieldName, int operator) {
|
||||
if (!QUERY_FIELDS.contains(fieldName))
|
||||
throw new OneException("Field not found: " + fieldName);
|
||||
throw new GeneralException("Field not found: " + fieldName);
|
||||
switch (operator) {
|
||||
case CodeCommentQueryLexer.IsBefore:
|
||||
case CodeCommentQueryLexer.IsAfter:
|
||||
@ -230,8 +230,8 @@ public class CodeCommentQuery extends EntityQuery<CodeComment> {
|
||||
}
|
||||
}
|
||||
|
||||
private static OneException newOperatorException(String fieldName, int operator) {
|
||||
return new OneException("Field '" + fieldName + "' is not applicable for operator '" + getRuleName(operator) + "'");
|
||||
private static GeneralException newOperatorException(String fieldName, int operator) {
|
||||
return new GeneralException("Field '" + fieldName + "' is not applicable for operator '" + getRuleName(operator) + "'");
|
||||
}
|
||||
|
||||
public static String getRuleName(int rule) {
|
||||
|
||||
@ -5,7 +5,7 @@ import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.CodeComment;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.search.entity.EntityCriteria;
|
||||
@ -20,7 +20,7 @@ public class CreatedByMeCriteria extends EntityCriteria<CodeComment> {
|
||||
Path<?> attribute = root.get(CodeComment.PROP_USER);
|
||||
return builder.equal(attribute, User.get());
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ public class CreatedByMeCriteria extends EntityCriteria<CodeComment> {
|
||||
if (User.get() != null)
|
||||
return User.get().equals(comment.getUser());
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -12,7 +12,7 @@ import javax.persistence.criteria.Join;
|
||||
import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.IssueField;
|
||||
@ -49,7 +49,7 @@ public class FieldOperatorCriteria extends FieldCriteria {
|
||||
if (User.get() != null)
|
||||
return builder.equal(valueAttribute, User.get().getName());
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
} else if (operator == IssueQueryLexer.IsCurrent) {
|
||||
if (getFieldSpec() instanceof BuildChoiceField) {
|
||||
Build build = Build.get();
|
||||
@ -58,7 +58,7 @@ public class FieldOperatorCriteria extends FieldCriteria {
|
||||
builder.equal(projectAttribute, build.getProject()),
|
||||
builder.equal(valueAttribute, String.valueOf(build.getNumber())));
|
||||
} else {
|
||||
throw new OneException("No current build in query context");
|
||||
throw new GeneralException("No current build in query context");
|
||||
}
|
||||
} else if (getFieldSpec() instanceof PullRequestChoiceField) {
|
||||
PullRequest request = PullRequest.get();
|
||||
@ -67,7 +67,7 @@ public class FieldOperatorCriteria extends FieldCriteria {
|
||||
builder.equal(projectAttribute, request.getTargetProject()),
|
||||
builder.equal(valueAttribute, String.valueOf(request.getNumber())));
|
||||
} else {
|
||||
throw new OneException("No current pull request in query context");
|
||||
throw new GeneralException("No current pull request in query context");
|
||||
}
|
||||
} else if (getFieldSpec() instanceof CommitField) {
|
||||
ProjectScopedCommit commit = ProjectScopedCommit.get();
|
||||
@ -76,7 +76,7 @@ public class FieldOperatorCriteria extends FieldCriteria {
|
||||
builder.equal(projectAttribute, commit.getProject()),
|
||||
builder.equal(valueAttribute, commit.getCommitId().name()));
|
||||
} else {
|
||||
throw new OneException("No current commit in query context");
|
||||
throw new GeneralException("No current commit in query context");
|
||||
}
|
||||
} else {
|
||||
throw new IllegalStateException();
|
||||
@ -94,7 +94,7 @@ public class FieldOperatorCriteria extends FieldCriteria {
|
||||
return builder.equal(projectAttribute, build.getProject());
|
||||
}
|
||||
} else {
|
||||
throw new OneException("No current build in query context");
|
||||
throw new GeneralException("No current build in query context");
|
||||
}
|
||||
} else {
|
||||
throw new IllegalStateException();
|
||||
@ -113,26 +113,26 @@ public class FieldOperatorCriteria extends FieldCriteria {
|
||||
if (User.get() != null)
|
||||
return Objects.equals(fieldValue, User.get().getName());
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
} else if (operator == IssueQueryLexer.IsCurrent) {
|
||||
if (getFieldSpec() instanceof BuildChoiceField) {
|
||||
Build build = Build.get();
|
||||
if (build != null)
|
||||
return build.getProject().equals(issue.getProject()) && build.getId().toString().equals(fieldValue);
|
||||
else
|
||||
throw new OneException("No build in query context");
|
||||
throw new GeneralException("No build in query context");
|
||||
} else if (getFieldSpec() instanceof PullRequestChoiceField) {
|
||||
PullRequest request = PullRequest.get();
|
||||
if (request != null)
|
||||
return request.getTargetProject().equals(issue.getProject()) && request.getId().toString().equals(fieldValue);
|
||||
else
|
||||
throw new OneException("No pull request in query context");
|
||||
throw new GeneralException("No pull request in query context");
|
||||
} else if (getFieldSpec() instanceof CommitField) {
|
||||
ProjectScopedCommit commit = ProjectScopedCommit.get();
|
||||
if (commit != null)
|
||||
return commit.getProject().equals(issue.getProject()) && commit.getCommitId().name().equals(fieldValue);
|
||||
else
|
||||
throw new OneException("No commit in query context");
|
||||
throw new GeneralException("No commit in query context");
|
||||
} else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
@ -145,7 +145,7 @@ public class FieldOperatorCriteria extends FieldCriteria {
|
||||
.stream()
|
||||
.anyMatch(it->it.equals(fieldValue));
|
||||
} else {
|
||||
throw new OneException("No build in query context");
|
||||
throw new GeneralException("No build in query context");
|
||||
}
|
||||
} else {
|
||||
throw new IllegalStateException();
|
||||
|
||||
@ -19,7 +19,7 @@ import org.eclipse.jgit.revwalk.RevCommit;
|
||||
import org.eclipse.jgit.revwalk.RevWalk;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.entitymanager.IssueManager;
|
||||
import io.onedev.server.git.GitUtils;
|
||||
import io.onedev.server.model.Build;
|
||||
@ -61,7 +61,7 @@ public class FixedBetweenCriteria extends IssueCriteria {
|
||||
if (first.getProject().equals(second.getProject())) {
|
||||
this.project = first.getProject();
|
||||
} else {
|
||||
throw new OneException("'" + getRuleName(IssueQueryLexer.FixedBetween)
|
||||
throw new GeneralException("'" + getRuleName(IssueQueryLexer.FixedBetween)
|
||||
+ "' should be used for same projects");
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,7 +4,7 @@ import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.Issue;
|
||||
|
||||
@ -17,7 +17,7 @@ public class FixedInCurrentBuildCriteria extends IssueCriteria {
|
||||
if (Build.get() != null)
|
||||
return new FixedInBuildCriteria(Build.get()).getPredicate(root, builder);
|
||||
else
|
||||
throw new OneException("No build in query context");
|
||||
throw new GeneralException("No build in query context");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -25,7 +25,7 @@ public class FixedInCurrentBuildCriteria extends IssueCriteria {
|
||||
if (Build.get() != null)
|
||||
return new FixedInBuildCriteria(Build.get()).matches(issue);
|
||||
else
|
||||
throw new OneException("No build in query context");
|
||||
throw new GeneralException("No build in query context");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -4,7 +4,7 @@ import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.util.ProjectScopedCommit;
|
||||
|
||||
@ -17,7 +17,7 @@ public class FixedInCurrentCommitCriteria extends IssueCriteria {
|
||||
if (ProjectScopedCommit.get() != null)
|
||||
return new FixedInCommitCriteria(ProjectScopedCommit.get()).getPredicate(root, builder);
|
||||
else
|
||||
throw new OneException("No commit id in query context");
|
||||
throw new GeneralException("No commit id in query context");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -25,7 +25,7 @@ public class FixedInCurrentCommitCriteria extends IssueCriteria {
|
||||
if (ProjectScopedCommit.get() != null)
|
||||
return new FixedInCommitCriteria(ProjectScopedCommit.get()).matches(issue);
|
||||
else
|
||||
throw new OneException("No commit in query context");
|
||||
throw new GeneralException("No commit in query context");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -4,7 +4,7 @@ import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
|
||||
@ -17,7 +17,7 @@ public class FixedInCurrentPullRequestCriteria extends IssueCriteria {
|
||||
if (PullRequest.get() != null)
|
||||
return new FixedInPullRequestCriteria(PullRequest.get()).getPredicate(root, builder);
|
||||
else
|
||||
throw new OneException("No pull request in query context");
|
||||
throw new GeneralException("No pull request in query context");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -25,7 +25,7 @@ public class FixedInCurrentPullRequestCriteria extends IssueCriteria {
|
||||
if (PullRequest.get() != null)
|
||||
return new FixedInPullRequestCriteria(PullRequest.get()).matches(issue);
|
||||
else
|
||||
throw new OneException("No pull request in query context");
|
||||
throw new GeneralException("No pull request in query context");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -19,7 +19,7 @@ import org.antlr.v4.runtime.Recognizer;
|
||||
|
||||
import io.onedev.commons.codeassist.AntlrUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.Project;
|
||||
@ -126,22 +126,22 @@ public class IssueQuery extends EntityQuery<Issue> {
|
||||
switch (ctx.operator.getType()) {
|
||||
case IssueQueryLexer.SubmittedByMe:
|
||||
if (!withCurrentUserCriteria)
|
||||
throw new OneException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
throw new GeneralException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
return new SubmittedByMeCriteria();
|
||||
case IssueQueryLexer.FixedInCurrentBuild:
|
||||
if (!withCurrentBuildCriteria)
|
||||
throw new OneException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
throw new GeneralException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
return new FixedInCurrentBuildCriteria();
|
||||
case IssueQueryLexer.FixedInCurrentPullRequest:
|
||||
if (!withCurrentPullRequestCriteria)
|
||||
throw new OneException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
throw new GeneralException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
return new FixedInCurrentPullRequestCriteria();
|
||||
case IssueQueryLexer.FixedInCurrentCommit:
|
||||
if (!withCurrentCommitCriteria)
|
||||
throw new OneException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
throw new GeneralException("Criteria '" + ctx.operator.getText() + "' is not supported here");
|
||||
return new FixedInCurrentCommitCriteria();
|
||||
default:
|
||||
throw new OneException("Unexpected operator: " + ctx.operator.getText());
|
||||
throw new GeneralException("Unexpected operator: " + ctx.operator.getText());
|
||||
}
|
||||
}
|
||||
|
||||
@ -282,7 +282,7 @@ public class IssueQuery extends EntityQuery<Issue> {
|
||||
}
|
||||
}
|
||||
default:
|
||||
throw new OneException("Unexpected operator " + getRuleName(operator));
|
||||
throw new GeneralException("Unexpected operator " + getRuleName(operator));
|
||||
}
|
||||
}
|
||||
|
||||
@ -319,7 +319,7 @@ public class IssueQuery extends EntityQuery<Issue> {
|
||||
FieldSpec fieldSpec = getGlobalIssueSetting().getFieldSpec(fieldName);
|
||||
if (validate && !(fieldSpec instanceof ChoiceField) && !(fieldSpec instanceof DateField)
|
||||
&& !(fieldSpec instanceof NumberField)) {
|
||||
throw new OneException("Can not order by field: " + fieldName);
|
||||
throw new GeneralException("Can not order by field: " + fieldName);
|
||||
}
|
||||
}
|
||||
|
||||
@ -345,8 +345,8 @@ public class IssueQuery extends EntityQuery<Issue> {
|
||||
return OneDev.getInstance(SettingManager.class).getIssueSetting();
|
||||
}
|
||||
|
||||
private static OneException newOperatorException(String fieldName, int operator) {
|
||||
return new OneException("Field '" + fieldName + "' is not applicable for operator '" + getRuleName(operator) + "'");
|
||||
private static GeneralException newOperatorException(String fieldName, int operator) {
|
||||
return new GeneralException("Field '" + fieldName + "' is not applicable for operator '" + getRuleName(operator) + "'");
|
||||
}
|
||||
|
||||
public static void checkField(String fieldName, int operator,
|
||||
@ -354,7 +354,7 @@ public class IssueQuery extends EntityQuery<Issue> {
|
||||
boolean withCurrentPullRequestCriteria, boolean withCurrentCommitCriteria) {
|
||||
FieldSpec fieldSpec = getGlobalIssueSetting().getFieldSpec(fieldName);
|
||||
if (fieldSpec == null && !Issue.QUERY_FIELDS.contains(fieldName))
|
||||
throw new OneException("Field not found: " + fieldName);
|
||||
throw new GeneralException("Field not found: " + fieldName);
|
||||
switch (operator) {
|
||||
case IssueQueryLexer.IsEmpty:
|
||||
if (Issue.QUERY_FIELDS.contains(fieldName)
|
||||
|
||||
@ -5,7 +5,7 @@ import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.User;
|
||||
|
||||
@ -19,7 +19,7 @@ public class SubmittedByMeCriteria extends IssueCriteria {
|
||||
Path<User> attribute = root.get(Issue.PROP_SUBMITTER);
|
||||
return builder.equal(attribute, User.get());
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,7 +28,7 @@ public class SubmittedByMeCriteria extends IssueCriteria {
|
||||
if (User.get() != null)
|
||||
return User.get().equals(issue.getSubmitter());
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -4,7 +4,7 @@ import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.search.entity.EntityCriteria;
|
||||
@ -18,7 +18,7 @@ public class OwnedByMeCriteria extends EntityCriteria<Project> {
|
||||
if (User.get() != null)
|
||||
return new OwnedByCriteria(User.get()).getPredicate(root, builder);
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -26,7 +26,7 @@ public class OwnedByMeCriteria extends EntityCriteria<Project> {
|
||||
if (User.get() != null)
|
||||
return new OwnedByCriteria(User.get()).matches(project);
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -14,7 +14,7 @@ import org.antlr.v4.runtime.RecognitionException;
|
||||
import org.antlr.v4.runtime.Recognizer;
|
||||
|
||||
import io.onedev.commons.codeassist.AntlrUtils;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.search.entity.AndEntityCriteria;
|
||||
import io.onedev.server.search.entity.EntityCriteria;
|
||||
@ -125,7 +125,7 @@ public class ProjectQuery extends EntityQuery<Project> {
|
||||
case ProjectQueryLexer.IsAfter:
|
||||
return new UpdateDateCriteria(value, operator);
|
||||
default:
|
||||
throw new OneException("Unexpected operator " + getRuleName(operator));
|
||||
throw new GeneralException("Unexpected operator " + getRuleName(operator));
|
||||
}
|
||||
}
|
||||
|
||||
@ -159,7 +159,7 @@ public class ProjectQuery extends EntityQuery<Project> {
|
||||
for (OrderContext order: queryContext.order()) {
|
||||
String fieldName = getValue(order.Quoted().getText());
|
||||
if (!Project.ORDER_FIELDS.containsKey(fieldName))
|
||||
throw new OneException("Can not order by field: " + fieldName);
|
||||
throw new GeneralException("Can not order by field: " + fieldName);
|
||||
|
||||
EntitySort projectSort = new EntitySort();
|
||||
projectSort.setField(fieldName);
|
||||
@ -176,13 +176,13 @@ public class ProjectQuery extends EntityQuery<Project> {
|
||||
}
|
||||
}
|
||||
|
||||
private static OneException newOperatorException(String fieldName, int operator) {
|
||||
return new OneException("Field '" + fieldName + "' is not applicable for operator '" + getRuleName(operator) + "'");
|
||||
private static GeneralException newOperatorException(String fieldName, int operator) {
|
||||
return new GeneralException("Field '" + fieldName + "' is not applicable for operator '" + getRuleName(operator) + "'");
|
||||
}
|
||||
|
||||
public static void checkField(String fieldName, int operator) {
|
||||
if (!Project.QUERY_FIELDS.contains(fieldName))
|
||||
throw new OneException("Field not found: " + fieldName);
|
||||
throw new GeneralException("Field not found: " + fieldName);
|
||||
switch (operator) {
|
||||
case ProjectQueryLexer.Contains:
|
||||
if (!fieldName.equals(Project.NAME_DESCRIPTION))
|
||||
|
||||
@ -7,7 +7,7 @@ import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.PullRequestReview;
|
||||
import io.onedev.server.model.User;
|
||||
@ -30,7 +30,7 @@ public class ApprovedByMeCriteria extends EntityCriteria<PullRequest> {
|
||||
builder.equal(approvedPath, true)));
|
||||
return join.isNotNull();
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ public class ApprovedByMeCriteria extends EntityCriteria<PullRequest> {
|
||||
PullRequestReview review = request.getReview(User.get());
|
||||
return review != null && review.getResult() != null && review.getResult().isApproved();
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@ import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.PullRequestAssignment;
|
||||
import io.onedev.server.model.User;
|
||||
@ -26,7 +26,7 @@ public class AssignedToMeCriteria extends EntityCriteria<PullRequest> {
|
||||
join.on(builder.equal(userPath, User.get()));
|
||||
return join.isNotNull();
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@ public class AssignedToMeCriteria extends EntityCriteria<PullRequest> {
|
||||
if (user != null)
|
||||
return request.getAssignments().stream().anyMatch(it->it.getUser().equals(user));
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -5,7 +5,7 @@ import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.model.support.pullrequest.CloseInfo;
|
||||
@ -21,7 +21,7 @@ public class DiscardedByMeCriteria extends EntityCriteria<PullRequest> {
|
||||
Path<User> attribute = PullRequestQuery.getPath(root, PullRequest.PROP_CLOSE_INFO + "." + CloseInfo.PROP_USER);
|
||||
return builder.equal(attribute, User.get());
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
@ -30,7 +30,7 @@ public class DiscardedByMeCriteria extends EntityCriteria<PullRequest> {
|
||||
if (User.get() != null)
|
||||
return User.get().equals(request.getSubmitter());
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -14,7 +14,7 @@ import org.antlr.v4.runtime.RecognitionException;
|
||||
import org.antlr.v4.runtime.Recognizer;
|
||||
|
||||
import io.onedev.commons.codeassist.AntlrUtils;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.support.pullrequest.MergeStrategy;
|
||||
@ -113,7 +113,7 @@ public class PullRequestQuery extends EntityQuery<PullRequest> {
|
||||
case PullRequestQueryLexer.HasPendingReviews:
|
||||
return new HasPendingReviewsCriteria();
|
||||
default:
|
||||
throw new OneException("Unexpected operator: " + ctx.operator.getText());
|
||||
throw new GeneralException("Unexpected operator: " + ctx.operator.getText());
|
||||
}
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@ public class PullRequestQuery extends EntityQuery<PullRequest> {
|
||||
case PullRequestQueryLexer.IncludesIssue:
|
||||
return new IncludesIssueCriteria(project, value);
|
||||
default:
|
||||
throw new OneException("Unexpected operator: " + ctx.operator.getText());
|
||||
throw new GeneralException("Unexpected operator: " + ctx.operator.getText());
|
||||
}
|
||||
}
|
||||
|
||||
@ -242,7 +242,7 @@ public class PullRequestQuery extends EntityQuery<PullRequest> {
|
||||
for (OrderContext order: queryContext.order()) {
|
||||
String fieldName = getValue(order.Quoted().getText());
|
||||
if (!PullRequest.ORDER_FIELDS.containsKey(fieldName))
|
||||
throw new OneException("Can not order by field: " + fieldName);
|
||||
throw new GeneralException("Can not order by field: " + fieldName);
|
||||
|
||||
EntitySort requestSort = new EntitySort();
|
||||
requestSort.setField(fieldName);
|
||||
@ -261,7 +261,7 @@ public class PullRequestQuery extends EntityQuery<PullRequest> {
|
||||
|
||||
public static void checkField(String fieldName, int operator) {
|
||||
if (!PullRequest.QUERY_FIELDS.contains(fieldName))
|
||||
throw new OneException("Field not found: " + fieldName);
|
||||
throw new GeneralException("Field not found: " + fieldName);
|
||||
switch (operator) {
|
||||
case PullRequestQueryLexer.IsBefore:
|
||||
case PullRequestQueryLexer.IsAfter:
|
||||
@ -299,8 +299,8 @@ public class PullRequestQuery extends EntityQuery<PullRequest> {
|
||||
}
|
||||
}
|
||||
|
||||
private static OneException newOperatorException(String fieldName, int operator) {
|
||||
return new OneException("Field '" + fieldName + "' is not applicable for operator '" + getRuleName(operator) + "'");
|
||||
private static GeneralException newOperatorException(String fieldName, int operator) {
|
||||
return new GeneralException("Field '" + fieldName + "' is not applicable for operator '" + getRuleName(operator) + "'");
|
||||
}
|
||||
|
||||
public static String getRuleName(int rule) {
|
||||
|
||||
@ -7,7 +7,7 @@ import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.PullRequestReview;
|
||||
import io.onedev.server.model.User;
|
||||
@ -30,7 +30,7 @@ public class RequestedForChangesByMeCriteria extends EntityCriteria<PullRequest>
|
||||
builder.equal(approvedPath, false)));
|
||||
return join.isNotNull();
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ public class RequestedForChangesByMeCriteria extends EntityCriteria<PullRequest>
|
||||
PullRequestReview review = request.getReview(User.get());
|
||||
return review != null && review.getResult() != null && !review.getResult().isApproved();
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.search.entity.EntityCriteria;
|
||||
@ -20,7 +20,7 @@ public class SubmittedByMeCriteria extends EntityCriteria<PullRequest> {
|
||||
Path<?> attribute = root.get(PullRequest.PROP_SUBMITTER);
|
||||
return builder.equal(attribute, User.get());
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ public class SubmittedByMeCriteria extends EntityCriteria<PullRequest> {
|
||||
if (User.get() != null)
|
||||
return User.get().equals(request.getSubmitter());
|
||||
else
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -7,7 +7,7 @@ import javax.persistence.criteria.Path;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.PullRequestReview;
|
||||
import io.onedev.server.model.User;
|
||||
@ -30,7 +30,7 @@ public class ToBeReviewedByMeCriteria extends EntityCriteria<PullRequest> {
|
||||
builder.isNull(approvedPath)));
|
||||
return join.isNotNull();
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ public class ToBeReviewedByMeCriteria extends EntityCriteria<PullRequest> {
|
||||
PullRequestReview review = request.getReview(User.get());
|
||||
return review != null && review.getResult() == null;
|
||||
} else {
|
||||
throw new OneException("Please login to perform this query");
|
||||
throw new GeneralException("Please login to perform this query");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -9,10 +9,10 @@ import org.apache.shiro.web.filter.mgt.FilterChainManager;
|
||||
import org.apache.shiro.web.filter.mgt.PathMatchingFilterChainResolver;
|
||||
|
||||
@Singleton
|
||||
public class OneFilterChainResolver extends PathMatchingFilterChainResolver {
|
||||
public class DefaultFilterChainResolver extends PathMatchingFilterChainResolver {
|
||||
|
||||
@Inject
|
||||
public OneFilterChainResolver(
|
||||
public DefaultFilterChainResolver(
|
||||
Set<FilterChainConfigurator> filterChainConfigurators,
|
||||
BasicAuthenticationFilter basicAuthenticationFilter,
|
||||
BearerAuthenticationFilter bearerAuthenticationFilter) {
|
||||
@ -10,7 +10,7 @@ import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.model.User;
|
||||
|
||||
@Singleton
|
||||
public class OnePasswordService implements PasswordService {
|
||||
public class DefaultPasswordService implements PasswordService {
|
||||
|
||||
private static final Pattern BCRYPT_PATTERN = Pattern.compile("\\A\\$2a?\\$\\d\\d\\$[./0-9A-Za-z]{53}");
|
||||
|
||||
@ -18,7 +18,7 @@ import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
|
||||
@Singleton
|
||||
public class OneRememberMeManager extends CookieRememberMeManager {
|
||||
public class DefaultRememberMeManager extends CookieRememberMeManager {
|
||||
|
||||
private final UserManager userManager;
|
||||
|
||||
@ -27,7 +27,7 @@ public class OneRememberMeManager extends CookieRememberMeManager {
|
||||
private volatile KeyPair keyPair;
|
||||
|
||||
@Inject
|
||||
public OneRememberMeManager(UserManager userManager, Provider<SettingManager> settingManagerProvider) {
|
||||
public DefaultRememberMeManager(UserManager userManager, Provider<SettingManager> settingManagerProvider) {
|
||||
this.userManager = userManager;
|
||||
this.settingManagerProvider = settingManagerProvider;
|
||||
}
|
||||
@ -3,13 +3,12 @@ package io.onedev.server.security;
|
||||
import org.apache.shiro.ShiroException;
|
||||
import org.apache.shiro.util.Destroyable;
|
||||
import org.apache.shiro.util.Initializable;
|
||||
import org.apache.shiro.web.env.DefaultWebEnvironment;
|
||||
import org.apache.shiro.web.filter.mgt.FilterChainResolver;
|
||||
import org.apache.shiro.web.mgt.WebSecurityManager;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
|
||||
public class OneWebEnvironment extends DefaultWebEnvironment implements Initializable, Destroyable {
|
||||
public class DefaultWebEnvironment extends org.apache.shiro.web.env.DefaultWebEnvironment implements Initializable, Destroyable {
|
||||
|
||||
@Override
|
||||
public void init() throws ShiroException {
|
||||
@ -24,10 +24,10 @@ import org.apache.shiro.web.subject.WebSubjectContext;
|
||||
import org.apache.shiro.web.subject.support.WebDelegatingSubject;
|
||||
|
||||
@Singleton
|
||||
public class OneWebSecurityManager extends org.apache.shiro.web.mgt.DefaultWebSecurityManager {
|
||||
public class DefaultWebSecurityManager extends org.apache.shiro.web.mgt.DefaultWebSecurityManager {
|
||||
|
||||
@Inject
|
||||
public OneWebSecurityManager(Set<Realm> realms, RememberMeManager rememberMeManager) {
|
||||
public DefaultWebSecurityManager(Set<Realm> realms, RememberMeManager rememberMeManager) {
|
||||
setSubjectFactory(new DefaultWebSubjectFactory() {
|
||||
|
||||
@Override
|
||||
@ -14,7 +14,7 @@ import groovy.lang.GroovyClassLoader;
|
||||
import groovy.lang.Script;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.model.support.administration.GroovyScript;
|
||||
import io.onedev.server.util.script.ScriptContribution;
|
||||
@ -89,13 +89,13 @@ public class GroovyUtils {
|
||||
try {
|
||||
return evalScript(StringUtils.join(script.getContent(), "\n"), variables);
|
||||
} catch (Exception e) {
|
||||
throw new OneException("Error evaluating groovy script: " + scriptName, e);
|
||||
throw new GeneralException("Error evaluating groovy script: " + scriptName, e);
|
||||
}
|
||||
} else {
|
||||
throw new OneException("Unauthorized groovy script: " + scriptName);
|
||||
throw new GeneralException("Unauthorized groovy script: " + scriptName);
|
||||
}
|
||||
} else {
|
||||
throw new OneException("Groovy script not found: " + scriptName);
|
||||
throw new GeneralException("Groovy script not found: " + scriptName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.model.Project;
|
||||
|
||||
@ -30,14 +30,14 @@ public class ProjectScopedNumber {
|
||||
try {
|
||||
return new ProjectScopedNumber(project, Long.valueOf(numberStr));
|
||||
} catch (NumberFormatException e) {
|
||||
throw new OneException("Invalid number: " + numberStr);
|
||||
throw new GeneralException("Invalid number: " + numberStr);
|
||||
}
|
||||
} else {
|
||||
throw new OneException("Unable to find project: " + projectName);
|
||||
throw new GeneralException("Unable to find project: " + projectName);
|
||||
}
|
||||
}
|
||||
}
|
||||
throw new OneException("Project is not specified");
|
||||
throw new GeneralException("Project is not specified");
|
||||
}
|
||||
|
||||
public Project getProject() {
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package io.onedev.server.util;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
|
||||
public class ScriptException extends OneException {
|
||||
public class ScriptException extends GeneralException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ import org.antlr.v4.runtime.Recognizer;
|
||||
import io.onedev.commons.codeassist.AntlrUtils;
|
||||
import io.onedev.commons.codeassist.FenceAware;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.util.criteria.AndCriteria;
|
||||
import io.onedev.server.util.criteria.Criteria;
|
||||
@ -130,12 +130,12 @@ public class JobMatch extends Criteria<Build> {
|
||||
if (operator != JobMatchLexer.Is)
|
||||
throw newOperatorException(fieldName, operator);
|
||||
} else {
|
||||
throw new OneException("Invalid field: " + fieldName);
|
||||
throw new GeneralException("Invalid field: " + fieldName);
|
||||
}
|
||||
}
|
||||
|
||||
private static OneException newOperatorException(String fieldName, int operator) {
|
||||
return new OneException("Field '" + fieldName + "' is not applicable for operator '"
|
||||
private static GeneralException newOperatorException(String fieldName, int operator) {
|
||||
return new GeneralException("Field '" + fieldName + "' is not applicable for operator '"
|
||||
+ AntlrUtils.getLexerRuleName(JobMatchLexer.ruleNames, operator) + "'");
|
||||
}
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ import org.antlr.v4.runtime.tree.TerminalNode;
|
||||
import io.onedev.commons.codeassist.FenceAware;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.entitymanager.GroupManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.model.Group;
|
||||
@ -71,9 +71,9 @@ public class ReviewRequirement {
|
||||
if (!users.contains(user))
|
||||
users.add(user);
|
||||
else if (validate)
|
||||
throw new OneException("User '" + userName + "' is included multiple times");
|
||||
throw new GeneralException("User '" + userName + "' is included multiple times");
|
||||
} else if (validate) {
|
||||
throw new OneException("Unable to find user '" + userName + "'");
|
||||
throw new GeneralException("Unable to find user '" + userName + "'");
|
||||
}
|
||||
} else if (criteria.groupCriteria() != null) {
|
||||
String groupName = getValue(criteria.groupCriteria().Value());
|
||||
@ -90,10 +90,10 @@ public class ReviewRequirement {
|
||||
groups.put(group, 1);
|
||||
}
|
||||
} else if (validate) {
|
||||
throw new OneException("Group '" + groupName + "' is included multiple times");
|
||||
throw new GeneralException("Group '" + groupName + "' is included multiple times");
|
||||
}
|
||||
} else if (validate) {
|
||||
throw new OneException("Unable to find group '" + groupName + "'");
|
||||
throw new GeneralException("Unable to find group '" + groupName + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package io.onedev.server.util.usage;
|
||||
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
|
||||
public class InUseException extends OneException {
|
||||
public class InUseException extends GeneralException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ import org.antlr.v4.runtime.tree.TerminalNode;
|
||||
|
||||
import io.onedev.commons.codeassist.FenceAware;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneException;
|
||||
import io.onedev.server.GeneralException;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.util.usermatch.UserMatchParser.CriteriaContext;
|
||||
@ -72,7 +72,7 @@ public class UserMatch implements Serializable {
|
||||
specifiedGroup.setGroupName(groupName);
|
||||
return specifiedGroup;
|
||||
} else {
|
||||
throw new OneException("Unrecognized user match criteria");
|
||||
throw new GeneralException("Unrecognized user match criteria");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,260 @@
|
||||
package io.onedev.server.web;
|
||||
|
||||
import org.apache.wicket.core.request.mapper.ResourceMapper;
|
||||
import org.apache.wicket.markup.html.pages.BrowserInfoPage;
|
||||
import org.apache.wicket.protocol.http.WebApplication;
|
||||
import org.apache.wicket.request.mapper.CompoundRequestMapper;
|
||||
|
||||
import io.onedev.server.web.download.ArchiveDownloadResourceReference;
|
||||
import io.onedev.server.web.download.ArtifactDownloadResourceReference;
|
||||
import io.onedev.server.web.download.AttachmentDownloadResourceReference;
|
||||
import io.onedev.server.web.download.BuildLogDownloadResourceReference;
|
||||
import io.onedev.server.web.download.RawBlobDownloadResourceReference;
|
||||
import io.onedev.server.web.download.ServerLogDownloadResourceReference;
|
||||
import io.onedev.server.web.mapper.GeneralPageMapper;
|
||||
import io.onedev.server.web.mapper.GeneralResourceMapper;
|
||||
import io.onedev.server.web.page.admin.authenticator.AuthenticatorPage;
|
||||
import io.onedev.server.web.page.admin.databasebackup.DatabaseBackupPage;
|
||||
import io.onedev.server.web.page.admin.groovyscript.GroovyScriptListPage;
|
||||
import io.onedev.server.web.page.admin.group.GroupListPage;
|
||||
import io.onedev.server.web.page.admin.group.authorization.GroupAuthorizationsPage;
|
||||
import io.onedev.server.web.page.admin.group.create.NewGroupPage;
|
||||
import io.onedev.server.web.page.admin.group.membership.GroupMembershipsPage;
|
||||
import io.onedev.server.web.page.admin.group.profile.GroupProfilePage;
|
||||
import io.onedev.server.web.page.admin.issuesetting.defaultboard.DefaultBoardListPage;
|
||||
import io.onedev.server.web.page.admin.issuesetting.fieldspec.IssueFieldListPage;
|
||||
import io.onedev.server.web.page.admin.issuesetting.issuetemplate.IssueTemplateListPage;
|
||||
import io.onedev.server.web.page.admin.issuesetting.statespec.IssueStateListPage;
|
||||
import io.onedev.server.web.page.admin.issuesetting.transitionspec.StateTransitionsPage;
|
||||
import io.onedev.server.web.page.admin.jobexecutor.JobExecutorsPage;
|
||||
import io.onedev.server.web.page.admin.mailsetting.MailSettingPage;
|
||||
import io.onedev.server.web.page.admin.role.NewRolePage;
|
||||
import io.onedev.server.web.page.admin.role.RoleDetailPage;
|
||||
import io.onedev.server.web.page.admin.role.RoleListPage;
|
||||
import io.onedev.server.web.page.admin.securitysetting.SecuritySettingPage;
|
||||
import io.onedev.server.web.page.admin.serverinformation.ServerInformationPage;
|
||||
import io.onedev.server.web.page.admin.serverlog.ServerLogPage;
|
||||
import io.onedev.server.web.page.admin.ssh.SshSettingPage;
|
||||
import io.onedev.server.web.page.admin.sso.SsoConnectorListPage;
|
||||
import io.onedev.server.web.page.admin.sso.SsoProcessPage;
|
||||
import io.onedev.server.web.page.admin.systemsetting.SystemSettingPage;
|
||||
import io.onedev.server.web.page.admin.user.UserListPage;
|
||||
import io.onedev.server.web.page.admin.user.accesstoken.UserAccessTokenPage;
|
||||
import io.onedev.server.web.page.admin.user.authorization.UserAuthorizationsPage;
|
||||
import io.onedev.server.web.page.admin.user.avatar.UserAvatarPage;
|
||||
import io.onedev.server.web.page.admin.user.create.NewUserPage;
|
||||
import io.onedev.server.web.page.admin.user.membership.UserMembershipsPage;
|
||||
import io.onedev.server.web.page.admin.user.password.UserPasswordPage;
|
||||
import io.onedev.server.web.page.admin.user.profile.UserProfilePage;
|
||||
import io.onedev.server.web.page.admin.user.ssh.UserSshKeysPage;
|
||||
import io.onedev.server.web.page.builds.BuildListPage;
|
||||
import io.onedev.server.web.page.init.ServerInitPage;
|
||||
import io.onedev.server.web.page.issues.IssueListPage;
|
||||
import io.onedev.server.web.page.my.accesstoken.MyAccessTokenPage;
|
||||
import io.onedev.server.web.page.my.avatar.MyAvatarPage;
|
||||
import io.onedev.server.web.page.my.password.MyPasswordPage;
|
||||
import io.onedev.server.web.page.my.profile.MyProfilePage;
|
||||
import io.onedev.server.web.page.my.sshkeys.MySshKeysPage;
|
||||
import io.onedev.server.web.page.project.NewProjectPage;
|
||||
import io.onedev.server.web.page.project.ProjectListPage;
|
||||
import io.onedev.server.web.page.project.blob.ProjectBlobPage;
|
||||
import io.onedev.server.web.page.project.branches.ProjectBranchesPage;
|
||||
import io.onedev.server.web.page.project.builds.ProjectBuildsPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.InvalidBuildPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.artifacts.BuildArtifactsPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.changes.BuildChangesPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.dashboard.BuildDashboardPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.issues.FixedIssuesPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.log.BuildLogPage;
|
||||
import io.onedev.server.web.page.project.codecomments.InvalidCodeCommentPage;
|
||||
import io.onedev.server.web.page.project.codecomments.ProjectCodeCommentsPage;
|
||||
import io.onedev.server.web.page.project.commits.CommitDetailPage;
|
||||
import io.onedev.server.web.page.project.commits.ProjectCommitsPage;
|
||||
import io.onedev.server.web.page.project.compare.RevisionComparePage;
|
||||
import io.onedev.server.web.page.project.dashboard.ProjectDashboardPage;
|
||||
import io.onedev.server.web.page.project.issues.boards.IssueBoardsPage;
|
||||
import io.onedev.server.web.page.project.issues.create.NewIssuePage;
|
||||
import io.onedev.server.web.page.project.issues.detail.IssueActivitiesPage;
|
||||
import io.onedev.server.web.page.project.issues.detail.IssueBuildsPage;
|
||||
import io.onedev.server.web.page.project.issues.detail.IssueCommitsPage;
|
||||
import io.onedev.server.web.page.project.issues.detail.IssuePullRequestsPage;
|
||||
import io.onedev.server.web.page.project.issues.list.ProjectIssueListPage;
|
||||
import io.onedev.server.web.page.project.issues.milestones.MilestoneDetailPage;
|
||||
import io.onedev.server.web.page.project.issues.milestones.MilestoneEditPage;
|
||||
import io.onedev.server.web.page.project.issues.milestones.MilestoneListPage;
|
||||
import io.onedev.server.web.page.project.issues.milestones.NewMilestonePage;
|
||||
import io.onedev.server.web.page.project.pullrequests.InvalidPullRequestPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.ProjectPullRequestsPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.create.NewPullRequestPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.detail.activities.PullRequestActivitiesPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.detail.changes.PullRequestChangesPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.detail.codecomments.PullRequestCodeCommentsPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.detail.mergepreview.MergePreviewPage;
|
||||
import io.onedev.server.web.page.project.setting.authorization.ProjectAuthorizationsPage;
|
||||
import io.onedev.server.web.page.project.setting.avatar.AvatarEditPage;
|
||||
import io.onedev.server.web.page.project.setting.branchprotection.BranchProtectionsPage;
|
||||
import io.onedev.server.web.page.project.setting.build.ActionAuthorizationsPage;
|
||||
import io.onedev.server.web.page.project.setting.build.BuildPreservationsPage;
|
||||
import io.onedev.server.web.page.project.setting.build.JobSecretsPage;
|
||||
import io.onedev.server.web.page.project.setting.general.GeneralSettingPage;
|
||||
import io.onedev.server.web.page.project.setting.tagprotection.TagProtectionsPage;
|
||||
import io.onedev.server.web.page.project.setting.webhook.WebHooksPage;
|
||||
import io.onedev.server.web.page.project.stats.ProjectContribsPage;
|
||||
import io.onedev.server.web.page.project.stats.SourceLinesPage;
|
||||
import io.onedev.server.web.page.project.tags.ProjectTagsPage;
|
||||
import io.onedev.server.web.page.pullrequests.PullRequestListPage;
|
||||
import io.onedev.server.web.page.security.ForgetPage;
|
||||
import io.onedev.server.web.page.security.LoginPage;
|
||||
import io.onedev.server.web.page.security.LogoutPage;
|
||||
import io.onedev.server.web.page.security.RegisterPage;
|
||||
|
||||
public class BaseUrlMapper extends CompoundRequestMapper {
|
||||
|
||||
public BaseUrlMapper(WebApplication app) {
|
||||
add(new GeneralPageMapper("init", ServerInitPage.class));
|
||||
add(new GeneralPageMapper("loading", BrowserInfoPage.class));
|
||||
add(new GeneralPageMapper("issues", IssueListPage.class));
|
||||
add(new GeneralPageMapper("pull-requests", PullRequestListPage.class));
|
||||
add(new GeneralPageMapper("builds", BuildListPage.class));
|
||||
addProjectPages();
|
||||
addMyPages();
|
||||
addAdministrationPages();
|
||||
addSecurityPages();
|
||||
|
||||
addResources();
|
||||
}
|
||||
|
||||
private void addMyPages() {
|
||||
add(new GeneralPageMapper("my/profile", MyProfilePage.class));
|
||||
add(new GeneralPageMapper("my/avatar", MyAvatarPage.class));
|
||||
add(new GeneralPageMapper("my/password", MyPasswordPage.class));
|
||||
add(new GeneralPageMapper("my/ssh-keys", MySshKeysPage.class));
|
||||
add(new GeneralPageMapper("my/access-token", MyAccessTokenPage.class));
|
||||
}
|
||||
|
||||
private void addResources() {
|
||||
add(new ResourceMapper("downloads/server-log", new ServerLogDownloadResourceReference()));
|
||||
add(new ResourceMapper("downloads/projects/${project}/builds/${build}/log", new BuildLogDownloadResourceReference()));
|
||||
add(new ResourceMapper("projects/${project}/archive/${revision}", new ArchiveDownloadResourceReference()));
|
||||
add(new GeneralResourceMapper("projects/${project}/raw/${revision}/${path}", new RawBlobDownloadResourceReference()));
|
||||
add(new ResourceMapper("projects/${project}/attachment/${uuid}/${attachment}", new AttachmentDownloadResourceReference()));
|
||||
add(new GeneralResourceMapper("downloads/projects/${project}/builds/${build}/artifacts/${path}",
|
||||
new ArtifactDownloadResourceReference()));
|
||||
}
|
||||
|
||||
private void addSecurityPages() {
|
||||
add(new GeneralPageMapper("login", LoginPage.class));
|
||||
add(new GeneralPageMapper("logout", LogoutPage.class));
|
||||
add(new GeneralPageMapper("register", RegisterPage.class));
|
||||
add(new GeneralPageMapper("forget", ForgetPage.class));
|
||||
add(new GeneralPageMapper(SsoProcessPage.MOUNTED_PATH + "/${stage}/${connector}", SsoProcessPage.class));
|
||||
}
|
||||
|
||||
private void addAdministrationPages() {
|
||||
add(new GeneralPageMapper("administration", UserListPage.class));
|
||||
add(new GeneralPageMapper("administration/users", UserListPage.class));
|
||||
add(new GeneralPageMapper("administration/users/new", NewUserPage.class));
|
||||
add(new GeneralPageMapper("administration/users/${user}", UserProfilePage.class));
|
||||
add(new GeneralPageMapper("administration/users/${user}/profile", UserProfilePage.class));
|
||||
add(new GeneralPageMapper("administration/users/${user}/groups", UserMembershipsPage.class));
|
||||
add(new GeneralPageMapper("administration/users/${user}/authorizations", UserAuthorizationsPage.class));
|
||||
add(new GeneralPageMapper("administration/users/${user}/avatar", UserAvatarPage.class));
|
||||
add(new GeneralPageMapper("administration/users/${user}/password", UserPasswordPage.class));
|
||||
add(new GeneralPageMapper("administration/users/${user}/ssh-keys", UserSshKeysPage.class));
|
||||
add(new GeneralPageMapper("administration/users/${user}/access-token", UserAccessTokenPage.class));
|
||||
|
||||
add(new GeneralPageMapper("administration/roles", RoleListPage.class));
|
||||
add(new GeneralPageMapper("administration/roles/new", NewRolePage.class));
|
||||
add(new GeneralPageMapper("administration/roles/${role}", RoleDetailPage.class));
|
||||
|
||||
add(new GeneralPageMapper("administration/groups", GroupListPage.class));
|
||||
add(new GeneralPageMapper("administration/groups/new", NewGroupPage.class));
|
||||
add(new GeneralPageMapper("administration/groups/${group}", GroupProfilePage.class));
|
||||
add(new GeneralPageMapper("administration/groups/${group}/profile", GroupProfilePage.class));
|
||||
add(new GeneralPageMapper("administration/groups/${group}/members", GroupMembershipsPage.class));
|
||||
add(new GeneralPageMapper("administration/groups/${group}/authorizations", GroupAuthorizationsPage.class));
|
||||
|
||||
add(new GeneralPageMapper("administration/settings", SystemSettingPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/system", SystemSettingPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/mail", MailSettingPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/backup", DatabaseBackupPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/security", SecuritySettingPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/authenticator", AuthenticatorPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/sso-connectors", SsoConnectorListPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/ssh", SshSettingPage.class));
|
||||
|
||||
add(new GeneralPageMapper("administration/settings/job-executors", JobExecutorsPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/groovy-scripts", GroovyScriptListPage.class));
|
||||
|
||||
add(new GeneralPageMapper("administration/settings/issue-fields", IssueFieldListPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/issue-states", IssueStateListPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/state-transitions", StateTransitionsPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/issue-boards", DefaultBoardListPage.class));
|
||||
add(new GeneralPageMapper("administration/settings/issue-templates", IssueTemplateListPage.class));
|
||||
|
||||
add(new GeneralPageMapper("administration/server-log", ServerLogPage.class));
|
||||
add(new GeneralPageMapper("administration/server-information", ServerInformationPage.class));
|
||||
}
|
||||
|
||||
private void addProjectPages() {
|
||||
add(new GeneralPageMapper("projects", ProjectListPage.class));
|
||||
add(new GeneralPageMapper("projects/new", NewProjectPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}", ProjectDashboardPage.class));
|
||||
|
||||
add(new GeneralPageMapper("projects/${project}/blob/#{revision}/#{path}", ProjectBlobPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/commits", ProjectCommitsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/commits/${revision}", CommitDetailPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/compare", RevisionComparePage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/stats", ProjectContribsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/stats/contribs", ProjectContribsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/stats/lines", SourceLinesPage.class));
|
||||
|
||||
add(new GeneralPageMapper("projects/${project}/branches", ProjectBranchesPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/tags", ProjectTagsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/code-comments", ProjectCodeCommentsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/code-comments/${code-comment}/invalid", InvalidCodeCommentPage.class));
|
||||
|
||||
add(new GeneralPageMapper("projects/${project}/pulls", ProjectPullRequestsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/pulls/new", NewPullRequestPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/pulls/${request}", PullRequestActivitiesPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/pulls/${request}/activities", PullRequestActivitiesPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/pulls/${request}/code-comments", PullRequestCodeCommentsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/pulls/${request}/changes", PullRequestChangesPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/pulls/${request}/merge-preview", MergePreviewPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/pulls/${request}/invalid", InvalidPullRequestPage.class));
|
||||
|
||||
add(new GeneralPageMapper("projects/${project}/boards", IssueBoardsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/boards/${board}", IssueBoardsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/issues", ProjectIssueListPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/issues/${issue}", IssueActivitiesPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/issues/${issue}/activities", IssueActivitiesPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/issues/${issue}/commits", IssueCommitsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/issues/${issue}/pull-requests", IssuePullRequestsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/issues/${issue}/builds", IssueBuildsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/issues/new", NewIssuePage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/milestones", MilestoneListPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/milestones/${milestone}", MilestoneDetailPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/milestones/${milestone}/edit", MilestoneEditPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/milestones/new", NewMilestonePage.class));
|
||||
|
||||
add(new GeneralPageMapper("projects/${project}/builds", ProjectBuildsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/builds/${build}", BuildDashboardPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/builds/${build}/log", BuildLogPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/builds/${build}/changes", BuildChangesPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/builds/${build}/fixed-issues", FixedIssuesPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/builds/${build}/artifacts", BuildArtifactsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/builds/${build}/invalid", InvalidBuildPage.class));
|
||||
|
||||
add(new GeneralPageMapper("projects/${project}/settings", GeneralSettingPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/settings/general", GeneralSettingPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/settings/authorizations", ProjectAuthorizationsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/settings/avatar-edit", AvatarEditPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/settings/branch-protection", BranchProtectionsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/settings/tag-protection", TagProtectionsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/settings/build/job-secrets", JobSecretsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/settings/build/action-authorizations", ActionAuthorizationsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/settings/build/build-preserve-rules", BuildPreservationsPage.class));
|
||||
add(new GeneralPageMapper("projects/${project}/settings/web-hooks", WebHooksPage.class));
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,260 +0,0 @@
|
||||
package io.onedev.server.web;
|
||||
|
||||
import org.apache.wicket.core.request.mapper.ResourceMapper;
|
||||
import org.apache.wicket.markup.html.pages.BrowserInfoPage;
|
||||
import org.apache.wicket.protocol.http.WebApplication;
|
||||
import org.apache.wicket.request.mapper.CompoundRequestMapper;
|
||||
|
||||
import io.onedev.server.web.download.ArchiveDownloadResourceReference;
|
||||
import io.onedev.server.web.download.ArtifactDownloadResourceReference;
|
||||
import io.onedev.server.web.download.AttachmentDownloadResourceReference;
|
||||
import io.onedev.server.web.download.BuildLogDownloadResourceReference;
|
||||
import io.onedev.server.web.download.RawBlobDownloadResourceReference;
|
||||
import io.onedev.server.web.download.ServerLogDownloadResourceReference;
|
||||
import io.onedev.server.web.mapper.OnePageMapper;
|
||||
import io.onedev.server.web.mapper.OneResourceMapper;
|
||||
import io.onedev.server.web.page.admin.authenticator.AuthenticatorPage;
|
||||
import io.onedev.server.web.page.admin.databasebackup.DatabaseBackupPage;
|
||||
import io.onedev.server.web.page.admin.groovyscript.GroovyScriptListPage;
|
||||
import io.onedev.server.web.page.admin.group.GroupListPage;
|
||||
import io.onedev.server.web.page.admin.group.authorization.GroupAuthorizationsPage;
|
||||
import io.onedev.server.web.page.admin.group.create.NewGroupPage;
|
||||
import io.onedev.server.web.page.admin.group.membership.GroupMembershipsPage;
|
||||
import io.onedev.server.web.page.admin.group.profile.GroupProfilePage;
|
||||
import io.onedev.server.web.page.admin.issuesetting.defaultboard.DefaultBoardListPage;
|
||||
import io.onedev.server.web.page.admin.issuesetting.fieldspec.IssueFieldListPage;
|
||||
import io.onedev.server.web.page.admin.issuesetting.issuetemplate.IssueTemplateListPage;
|
||||
import io.onedev.server.web.page.admin.issuesetting.statespec.IssueStateListPage;
|
||||
import io.onedev.server.web.page.admin.issuesetting.transitionspec.StateTransitionsPage;
|
||||
import io.onedev.server.web.page.admin.jobexecutor.JobExecutorsPage;
|
||||
import io.onedev.server.web.page.admin.mailsetting.MailSettingPage;
|
||||
import io.onedev.server.web.page.admin.role.NewRolePage;
|
||||
import io.onedev.server.web.page.admin.role.RoleDetailPage;
|
||||
import io.onedev.server.web.page.admin.role.RoleListPage;
|
||||
import io.onedev.server.web.page.admin.securitysetting.SecuritySettingPage;
|
||||
import io.onedev.server.web.page.admin.serverinformation.ServerInformationPage;
|
||||
import io.onedev.server.web.page.admin.serverlog.ServerLogPage;
|
||||
import io.onedev.server.web.page.admin.ssh.SshSettingPage;
|
||||
import io.onedev.server.web.page.admin.sso.SsoConnectorListPage;
|
||||
import io.onedev.server.web.page.admin.sso.SsoProcessPage;
|
||||
import io.onedev.server.web.page.admin.systemsetting.SystemSettingPage;
|
||||
import io.onedev.server.web.page.admin.user.UserListPage;
|
||||
import io.onedev.server.web.page.admin.user.accesstoken.UserAccessTokenPage;
|
||||
import io.onedev.server.web.page.admin.user.authorization.UserAuthorizationsPage;
|
||||
import io.onedev.server.web.page.admin.user.avatar.UserAvatarPage;
|
||||
import io.onedev.server.web.page.admin.user.create.NewUserPage;
|
||||
import io.onedev.server.web.page.admin.user.membership.UserMembershipsPage;
|
||||
import io.onedev.server.web.page.admin.user.password.UserPasswordPage;
|
||||
import io.onedev.server.web.page.admin.user.profile.UserProfilePage;
|
||||
import io.onedev.server.web.page.admin.user.ssh.UserSshKeysPage;
|
||||
import io.onedev.server.web.page.builds.BuildListPage;
|
||||
import io.onedev.server.web.page.init.ServerInitPage;
|
||||
import io.onedev.server.web.page.issues.IssueListPage;
|
||||
import io.onedev.server.web.page.my.accesstoken.MyAccessTokenPage;
|
||||
import io.onedev.server.web.page.my.avatar.MyAvatarPage;
|
||||
import io.onedev.server.web.page.my.password.MyPasswordPage;
|
||||
import io.onedev.server.web.page.my.profile.MyProfilePage;
|
||||
import io.onedev.server.web.page.my.sshkeys.MySshKeysPage;
|
||||
import io.onedev.server.web.page.project.NewProjectPage;
|
||||
import io.onedev.server.web.page.project.ProjectListPage;
|
||||
import io.onedev.server.web.page.project.blob.ProjectBlobPage;
|
||||
import io.onedev.server.web.page.project.branches.ProjectBranchesPage;
|
||||
import io.onedev.server.web.page.project.builds.ProjectBuildsPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.InvalidBuildPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.artifacts.BuildArtifactsPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.changes.BuildChangesPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.dashboard.BuildDashboardPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.issues.FixedIssuesPage;
|
||||
import io.onedev.server.web.page.project.builds.detail.log.BuildLogPage;
|
||||
import io.onedev.server.web.page.project.codecomments.InvalidCodeCommentPage;
|
||||
import io.onedev.server.web.page.project.codecomments.ProjectCodeCommentsPage;
|
||||
import io.onedev.server.web.page.project.commits.CommitDetailPage;
|
||||
import io.onedev.server.web.page.project.commits.ProjectCommitsPage;
|
||||
import io.onedev.server.web.page.project.compare.RevisionComparePage;
|
||||
import io.onedev.server.web.page.project.dashboard.ProjectDashboardPage;
|
||||
import io.onedev.server.web.page.project.issues.boards.IssueBoardsPage;
|
||||
import io.onedev.server.web.page.project.issues.create.NewIssuePage;
|
||||
import io.onedev.server.web.page.project.issues.detail.IssueActivitiesPage;
|
||||
import io.onedev.server.web.page.project.issues.detail.IssueBuildsPage;
|
||||
import io.onedev.server.web.page.project.issues.detail.IssueCommitsPage;
|
||||
import io.onedev.server.web.page.project.issues.detail.IssuePullRequestsPage;
|
||||
import io.onedev.server.web.page.project.issues.list.ProjectIssueListPage;
|
||||
import io.onedev.server.web.page.project.issues.milestones.MilestoneDetailPage;
|
||||
import io.onedev.server.web.page.project.issues.milestones.MilestoneEditPage;
|
||||
import io.onedev.server.web.page.project.issues.milestones.MilestoneListPage;
|
||||
import io.onedev.server.web.page.project.issues.milestones.NewMilestonePage;
|
||||
import io.onedev.server.web.page.project.pullrequests.InvalidPullRequestPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.ProjectPullRequestsPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.create.NewPullRequestPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.detail.activities.PullRequestActivitiesPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.detail.changes.PullRequestChangesPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.detail.codecomments.PullRequestCodeCommentsPage;
|
||||
import io.onedev.server.web.page.project.pullrequests.detail.mergepreview.MergePreviewPage;
|
||||
import io.onedev.server.web.page.project.setting.authorization.ProjectAuthorizationsPage;
|
||||
import io.onedev.server.web.page.project.setting.avatar.AvatarEditPage;
|
||||
import io.onedev.server.web.page.project.setting.branchprotection.BranchProtectionsPage;
|
||||
import io.onedev.server.web.page.project.setting.build.ActionAuthorizationsPage;
|
||||
import io.onedev.server.web.page.project.setting.build.BuildPreservationsPage;
|
||||
import io.onedev.server.web.page.project.setting.build.JobSecretsPage;
|
||||
import io.onedev.server.web.page.project.setting.general.GeneralSettingPage;
|
||||
import io.onedev.server.web.page.project.setting.tagprotection.TagProtectionsPage;
|
||||
import io.onedev.server.web.page.project.setting.webhook.WebHooksPage;
|
||||
import io.onedev.server.web.page.project.stats.ProjectContribsPage;
|
||||
import io.onedev.server.web.page.project.stats.SourceLinesPage;
|
||||
import io.onedev.server.web.page.project.tags.ProjectTagsPage;
|
||||
import io.onedev.server.web.page.pullrequests.PullRequestListPage;
|
||||
import io.onedev.server.web.page.security.ForgetPage;
|
||||
import io.onedev.server.web.page.security.LoginPage;
|
||||
import io.onedev.server.web.page.security.LogoutPage;
|
||||
import io.onedev.server.web.page.security.RegisterPage;
|
||||
|
||||
public class OneUrlMapper extends CompoundRequestMapper {
|
||||
|
||||
public OneUrlMapper(WebApplication app) {
|
||||
add(new OnePageMapper("init", ServerInitPage.class));
|
||||
add(new OnePageMapper("loading", BrowserInfoPage.class));
|
||||
add(new OnePageMapper("issues", IssueListPage.class));
|
||||
add(new OnePageMapper("pull-requests", PullRequestListPage.class));
|
||||
add(new OnePageMapper("builds", BuildListPage.class));
|
||||
addProjectPages();
|
||||
addMyPages();
|
||||
addAdministrationPages();
|
||||
addSecurityPages();
|
||||
|
||||
addResources();
|
||||
}
|
||||
|
||||
private void addMyPages() {
|
||||
add(new OnePageMapper("my/profile", MyProfilePage.class));
|
||||
add(new OnePageMapper("my/avatar", MyAvatarPage.class));
|
||||
add(new OnePageMapper("my/password", MyPasswordPage.class));
|
||||
add(new OnePageMapper("my/ssh-keys", MySshKeysPage.class));
|
||||
add(new OnePageMapper("my/access-token", MyAccessTokenPage.class));
|
||||
}
|
||||
|
||||
private void addResources() {
|
||||
add(new ResourceMapper("downloads/server-log", new ServerLogDownloadResourceReference()));
|
||||
add(new ResourceMapper("downloads/projects/${project}/builds/${build}/log", new BuildLogDownloadResourceReference()));
|
||||
add(new ResourceMapper("projects/${project}/archive/${revision}", new ArchiveDownloadResourceReference()));
|
||||
add(new OneResourceMapper("projects/${project}/raw/${revision}/${path}", new RawBlobDownloadResourceReference()));
|
||||
add(new ResourceMapper("projects/${project}/attachment/${uuid}/${attachment}", new AttachmentDownloadResourceReference()));
|
||||
add(new OneResourceMapper("downloads/projects/${project}/builds/${build}/artifacts/${path}",
|
||||
new ArtifactDownloadResourceReference()));
|
||||
}
|
||||
|
||||
private void addSecurityPages() {
|
||||
add(new OnePageMapper("login", LoginPage.class));
|
||||
add(new OnePageMapper("logout", LogoutPage.class));
|
||||
add(new OnePageMapper("register", RegisterPage.class));
|
||||
add(new OnePageMapper("forget", ForgetPage.class));
|
||||
add(new OnePageMapper(SsoProcessPage.MOUNTED_PATH + "/${stage}/${connector}", SsoProcessPage.class));
|
||||
}
|
||||
|
||||
private void addAdministrationPages() {
|
||||
add(new OnePageMapper("administration", UserListPage.class));
|
||||
add(new OnePageMapper("administration/users", UserListPage.class));
|
||||
add(new OnePageMapper("administration/users/new", NewUserPage.class));
|
||||
add(new OnePageMapper("administration/users/${user}", UserProfilePage.class));
|
||||
add(new OnePageMapper("administration/users/${user}/profile", UserProfilePage.class));
|
||||
add(new OnePageMapper("administration/users/${user}/groups", UserMembershipsPage.class));
|
||||
add(new OnePageMapper("administration/users/${user}/authorizations", UserAuthorizationsPage.class));
|
||||
add(new OnePageMapper("administration/users/${user}/avatar", UserAvatarPage.class));
|
||||
add(new OnePageMapper("administration/users/${user}/password", UserPasswordPage.class));
|
||||
add(new OnePageMapper("administration/users/${user}/ssh-keys", UserSshKeysPage.class));
|
||||
add(new OnePageMapper("administration/users/${user}/access-token", UserAccessTokenPage.class));
|
||||
|
||||
add(new OnePageMapper("administration/roles", RoleListPage.class));
|
||||
add(new OnePageMapper("administration/roles/new", NewRolePage.class));
|
||||
add(new OnePageMapper("administration/roles/${role}", RoleDetailPage.class));
|
||||
|
||||
add(new OnePageMapper("administration/groups", GroupListPage.class));
|
||||
add(new OnePageMapper("administration/groups/new", NewGroupPage.class));
|
||||
add(new OnePageMapper("administration/groups/${group}", GroupProfilePage.class));
|
||||
add(new OnePageMapper("administration/groups/${group}/profile", GroupProfilePage.class));
|
||||
add(new OnePageMapper("administration/groups/${group}/members", GroupMembershipsPage.class));
|
||||
add(new OnePageMapper("administration/groups/${group}/authorizations", GroupAuthorizationsPage.class));
|
||||
|
||||
add(new OnePageMapper("administration/settings", SystemSettingPage.class));
|
||||
add(new OnePageMapper("administration/settings/system", SystemSettingPage.class));
|
||||
add(new OnePageMapper("administration/settings/mail", MailSettingPage.class));
|
||||
add(new OnePageMapper("administration/settings/backup", DatabaseBackupPage.class));
|
||||
add(new OnePageMapper("administration/settings/security", SecuritySettingPage.class));
|
||||
add(new OnePageMapper("administration/settings/authenticator", AuthenticatorPage.class));
|
||||
add(new OnePageMapper("administration/settings/sso-connectors", SsoConnectorListPage.class));
|
||||
add(new OnePageMapper("administration/settings/ssh", SshSettingPage.class));
|
||||
|
||||
add(new OnePageMapper("administration/settings/job-executors", JobExecutorsPage.class));
|
||||
add(new OnePageMapper("administration/settings/groovy-scripts", GroovyScriptListPage.class));
|
||||
|
||||
add(new OnePageMapper("administration/settings/issue-fields", IssueFieldListPage.class));
|
||||
add(new OnePageMapper("administration/settings/issue-states", IssueStateListPage.class));
|
||||
add(new OnePageMapper("administration/settings/state-transitions", StateTransitionsPage.class));
|
||||
add(new OnePageMapper("administration/settings/issue-boards", DefaultBoardListPage.class));
|
||||
add(new OnePageMapper("administration/settings/issue-templates", IssueTemplateListPage.class));
|
||||
|
||||
add(new OnePageMapper("administration/server-log", ServerLogPage.class));
|
||||
add(new OnePageMapper("administration/server-information", ServerInformationPage.class));
|
||||
}
|
||||
|
||||
private void addProjectPages() {
|
||||
add(new OnePageMapper("projects", ProjectListPage.class));
|
||||
add(new OnePageMapper("projects/new", NewProjectPage.class));
|
||||
add(new OnePageMapper("projects/${project}", ProjectDashboardPage.class));
|
||||
|
||||
add(new OnePageMapper("projects/${project}/blob/#{revision}/#{path}", ProjectBlobPage.class));
|
||||
add(new OnePageMapper("projects/${project}/commits", ProjectCommitsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/commits/${revision}", CommitDetailPage.class));
|
||||
add(new OnePageMapper("projects/${project}/compare", RevisionComparePage.class));
|
||||
add(new OnePageMapper("projects/${project}/stats", ProjectContribsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/stats/contribs", ProjectContribsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/stats/lines", SourceLinesPage.class));
|
||||
|
||||
add(new OnePageMapper("projects/${project}/branches", ProjectBranchesPage.class));
|
||||
add(new OnePageMapper("projects/${project}/tags", ProjectTagsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/code-comments", ProjectCodeCommentsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/code-comments/${code-comment}/invalid", InvalidCodeCommentPage.class));
|
||||
|
||||
add(new OnePageMapper("projects/${project}/pulls", ProjectPullRequestsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/pulls/new", NewPullRequestPage.class));
|
||||
add(new OnePageMapper("projects/${project}/pulls/${request}", PullRequestActivitiesPage.class));
|
||||
add(new OnePageMapper("projects/${project}/pulls/${request}/activities", PullRequestActivitiesPage.class));
|
||||
add(new OnePageMapper("projects/${project}/pulls/${request}/code-comments", PullRequestCodeCommentsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/pulls/${request}/changes", PullRequestChangesPage.class));
|
||||
add(new OnePageMapper("projects/${project}/pulls/${request}/merge-preview", MergePreviewPage.class));
|
||||
add(new OnePageMapper("projects/${project}/pulls/${request}/invalid", InvalidPullRequestPage.class));
|
||||
|
||||
add(new OnePageMapper("projects/${project}/boards", IssueBoardsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/boards/${board}", IssueBoardsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/issues", ProjectIssueListPage.class));
|
||||
add(new OnePageMapper("projects/${project}/issues/${issue}", IssueActivitiesPage.class));
|
||||
add(new OnePageMapper("projects/${project}/issues/${issue}/activities", IssueActivitiesPage.class));
|
||||
add(new OnePageMapper("projects/${project}/issues/${issue}/commits", IssueCommitsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/issues/${issue}/pull-requests", IssuePullRequestsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/issues/${issue}/builds", IssueBuildsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/issues/new", NewIssuePage.class));
|
||||
add(new OnePageMapper("projects/${project}/milestones", MilestoneListPage.class));
|
||||
add(new OnePageMapper("projects/${project}/milestones/${milestone}", MilestoneDetailPage.class));
|
||||
add(new OnePageMapper("projects/${project}/milestones/${milestone}/edit", MilestoneEditPage.class));
|
||||
add(new OnePageMapper("projects/${project}/milestones/new", NewMilestonePage.class));
|
||||
|
||||
add(new OnePageMapper("projects/${project}/builds", ProjectBuildsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/builds/${build}", BuildDashboardPage.class));
|
||||
add(new OnePageMapper("projects/${project}/builds/${build}/log", BuildLogPage.class));
|
||||
add(new OnePageMapper("projects/${project}/builds/${build}/changes", BuildChangesPage.class));
|
||||
add(new OnePageMapper("projects/${project}/builds/${build}/fixed-issues", FixedIssuesPage.class));
|
||||
add(new OnePageMapper("projects/${project}/builds/${build}/artifacts", BuildArtifactsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/builds/${build}/invalid", InvalidBuildPage.class));
|
||||
|
||||
add(new OnePageMapper("projects/${project}/settings", GeneralSettingPage.class));
|
||||
add(new OnePageMapper("projects/${project}/settings/general", GeneralSettingPage.class));
|
||||
add(new OnePageMapper("projects/${project}/settings/authorizations", ProjectAuthorizationsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/settings/avatar-edit", AvatarEditPage.class));
|
||||
add(new OnePageMapper("projects/${project}/settings/branch-protection", BranchProtectionsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/settings/tag-protection", TagProtectionsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/settings/build/job-secrets", JobSecretsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/settings/build/action-authorizations", ActionAuthorizationsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/settings/build/build-preserve-rules", BuildPreservationsPage.class));
|
||||
add(new OnePageMapper("projects/${project}/settings/web-hooks", WebHooksPage.class));
|
||||
}
|
||||
|
||||
}
|
||||
@ -31,7 +31,6 @@ import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
|
||||
import org.apache.wicket.core.request.mapper.HomePageMapper;
|
||||
import org.apache.wicket.markup.html.pages.AbstractErrorPage;
|
||||
import org.apache.wicket.markup.html.pages.BrowserInfoPage;
|
||||
import org.apache.wicket.protocol.http.WebApplication;
|
||||
import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
|
||||
import org.apache.wicket.protocol.ws.WebSocketSettings;
|
||||
import org.apache.wicket.protocol.ws.api.IWebSocketConnection;
|
||||
@ -49,10 +48,11 @@ import org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandle
|
||||
import org.apache.wicket.request.http.WebRequest;
|
||||
import org.apache.wicket.request.http.WebResponse;
|
||||
import org.apache.wicket.request.mapper.info.PageComponentInfo;
|
||||
import org.apache.wicket.request.resource.JavaScriptResourceReference;
|
||||
import org.apache.wicket.resource.JQueryResourceReference;
|
||||
import org.apache.wicket.util.IProvider;
|
||||
import org.apache.wicket.util.time.Duration;
|
||||
|
||||
import de.agilecoders.wicket.core.settings.BootstrapSettings;
|
||||
import io.onedev.commons.launcher.bootstrap.Bootstrap;
|
||||
import io.onedev.commons.launcher.loader.AppLoader;
|
||||
import io.onedev.commons.utils.ExceptionUtils;
|
||||
@ -67,14 +67,14 @@ import io.onedev.server.web.util.AbsoluteUrlRenderer;
|
||||
import io.onedev.server.web.websocket.WebSocketManager;
|
||||
|
||||
@Singleton
|
||||
public class OneWebApplication extends WebApplication {
|
||||
public class WebApplication extends org.apache.wicket.protocol.http.WebApplication {
|
||||
|
||||
private final Set<WebApplicationConfigurator> applicationConfigurators;
|
||||
|
||||
private final UICustomization uiCustomization;
|
||||
|
||||
@Inject
|
||||
public OneWebApplication(Set<WebApplicationConfigurator> applicationConfigurators,
|
||||
public WebApplication(Set<WebApplicationConfigurator> applicationConfigurators,
|
||||
UICustomization uiCustomization) {
|
||||
this.applicationConfigurators = applicationConfigurators;
|
||||
this.uiCustomization = uiCustomization;
|
||||
@ -96,6 +96,9 @@ public class OneWebApplication extends WebApplication {
|
||||
getMarkupSettings().setStripComments(true);
|
||||
getMarkupSettings().setStripWicketTags(true);
|
||||
|
||||
getJavaScriptLibrarySettings().setJQueryReference(new JavaScriptResourceReference(
|
||||
JQueryResourceReference.class, "jquery/jquery-3.5.1.min.js"));
|
||||
|
||||
getStoreSettings().setFileStoreFolder(Bootstrap.getTempDir());
|
||||
|
||||
/*
|
||||
@ -109,10 +112,6 @@ public class OneWebApplication extends WebApplication {
|
||||
|
||||
getRequestCycleSettings().setTimeout(Duration.minutes(30));
|
||||
|
||||
BootstrapSettings bootstrapSettings = new BootstrapSettings();
|
||||
bootstrapSettings.setAutoAppendResources(false);
|
||||
de.agilecoders.wicket.core.Bootstrap.install(this, bootstrapSettings);
|
||||
|
||||
getComponentInstantiationListeners().add(new IComponentInstantiationListener() {
|
||||
|
||||
@Override
|
||||
@ -208,7 +207,7 @@ public class OneWebApplication extends WebApplication {
|
||||
|
||||
});
|
||||
|
||||
mount(new OneUrlMapper(this));
|
||||
mount(new BaseUrlMapper(this));
|
||||
|
||||
for (WebApplicationConfigurator configurator: applicationConfigurators)
|
||||
configurator.configure(this);
|
||||
@ -251,8 +250,8 @@ public class OneWebApplication extends WebApplication {
|
||||
};
|
||||
}
|
||||
|
||||
public static OneWebApplication get() {
|
||||
return (OneWebApplication) Application.get();
|
||||
public static WebApplication get() {
|
||||
return (WebApplication) Application.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -0,0 +1,13 @@
|
||||
package io.onedev.server.web.asset.bootstrap;
|
||||
|
||||
import org.apache.wicket.request.resource.CssResourceReference;
|
||||
|
||||
public class BootstrapCssResourceReference extends CssResourceReference {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public BootstrapCssResourceReference() {
|
||||
super(BootstrapCssResourceReference.class, "css/bootstrap.min.css");
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
package io.onedev.server.web.asset.bootstrap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.Application;
|
||||
import org.apache.wicket.markup.head.CssHeaderItem;
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
import org.apache.wicket.request.resource.JavaScriptResourceReference;
|
||||
|
||||
public class BootstrapResourceReference extends JavaScriptResourceReference {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public BootstrapResourceReference() {
|
||||
super(BootstrapResourceReference.class, "js/bootstrap.bundle.min.js");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HeaderItem> getDependencies() {
|
||||
List<HeaderItem> dependencies = new ArrayList<>();
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference()));
|
||||
dependencies.add(CssHeaderItem.forReference(new BootstrapCssResourceReference()));
|
||||
return dependencies;
|
||||
}
|
||||
|
||||
}
|
||||
3872
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap-grid.css
vendored
Normal file
3872
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap-grid.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
7
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap-grid.min.css
vendored
Normal file
7
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap-grid.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
325
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap-reboot.css
vendored
Normal file
325
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap-reboot.css
vendored
Normal file
@ -0,0 +1,325 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v4.5.2 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2020 The Bootstrap Authors
|
||||
* Copyright 2011-2020 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
|
||||
*/
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: sans-serif;
|
||||
line-height: 1.15;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: #212529;
|
||||
text-align: left;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
[tabindex="-1"]:focus:not(:focus-visible) {
|
||||
outline: 0 !important;
|
||||
}
|
||||
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title],
|
||||
abbr[data-original-title] {
|
||||
text-decoration: underline;
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
border-bottom: 0;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: .5rem;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #0056b3;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:not([href]):not([class]) {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
-ms-overflow-style: scrollbar;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
svg {
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.75rem;
|
||||
padding-bottom: 0.75rem;
|
||||
color: #6c757d;
|
||||
text-align: left;
|
||||
caption-side: bottom;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus {
|
||||
outline: 1px dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role="button"] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
button:not(:disabled),
|
||||
[type="button"]:not(:disabled),
|
||||
[type="reset"]:not(:disabled),
|
||||
[type="submit"]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: .5rem;
|
||||
font-size: 1.5rem;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type="search"] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-reboot.css.map */
|
||||
File diff suppressed because one or more lines are too long
8
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap-reboot.min.css
vendored
Normal file
8
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap-reboot.min.css
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v4.5.2 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2020 The Bootstrap Authors
|
||||
* Copyright 2011-2020 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
|
||||
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
|
||||
/*# sourceMappingURL=bootstrap-reboot.min.css.map */
|
||||
File diff suppressed because one or more lines are too long
10259
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap.css
vendored
Normal file
10259
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
7
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap.min.css
vendored
Normal file
7
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/css/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
7023
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/js/bootstrap.bundle.js
vendored
Normal file
7023
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/js/bootstrap.bundle.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
7
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/js/bootstrap.bundle.min.js
vendored
Normal file
7
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/js/bootstrap.bundle.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4410
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/js/bootstrap.js
vendored
Normal file
4410
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/js/bootstrap.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
7
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/js/bootstrap.min.js
vendored
Normal file
7
server-core/src/main/java/io/onedev/server/web/asset/bootstrap/js/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -5,9 +5,9 @@ import java.util.List;
|
||||
import org.apache.wicket.markup.head.CssHeaderItem;
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
import org.apache.wicket.request.resource.CssResourceReference;
|
||||
import org.apache.wicket.request.resource.JavaScriptResourceReference;
|
||||
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference;
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
|
||||
import io.onedev.server.web.asset.hotkeys.HotkeysResourceReference;
|
||||
import io.onedev.server.web.page.base.BaseDependentCssResourceReference;
|
||||
import io.onedev.server.web.page.base.BaseDependentResourceReference;
|
||||
@ -19,52 +19,52 @@ public class CodeMirrorResourceReference extends BaseDependentResourceReference
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public CodeMirrorResourceReference() {
|
||||
super(CodeMirrorResourceReference.class, "codemirror.js");
|
||||
super(CodeMirrorResourceReference.class, "codemirror-int.js");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HeaderItem> getDependencies() {
|
||||
List<HeaderItem> dependencies = super.getDependencies();
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/lib/codemirror.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/mode/overlay.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/mode/simple.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/mode/multiplex.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/edit/matchbrackets.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/dialog/dialog.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/fold/foldcode.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/fold/foldgutter.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/fold/brace-fold.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/fold/xml-fold.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/fold/markdown-fold.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/fold/comment-fold.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/search/searchcursor.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/search/search.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/search/matchesonscrollbar.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "lib/codemirror.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/mode/overlay.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/mode/simple.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/mode/multiplex.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/edit/matchbrackets.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/dialog/dialog.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/fold/foldcode.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/fold/foldgutter.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/fold/brace-fold.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/fold/xml-fold.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/fold/markdown-fold.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/fold/comment-fold.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/search/searchcursor.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/search/search.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/search/matchesonscrollbar.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new BaseDependentResourceReference(CodeMirrorResourceReference.class, "matchesonscrollbar2.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/selection/active-line.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/scroll/annotatescrollbar.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/display/fullscreen.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/selection/mark-selection.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/addon/hint/show-hint.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/selection/active-line.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/scroll/annotatescrollbar.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/display/fullscreen.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/selection/mark-selection.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "addon/hint/show-hint.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new BaseDependentResourceReference(CodeMirrorResourceReference.class, "annotatescrollbar2.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new BaseDependentResourceReference(CodeMirrorResourceReference.class, "simplescrollbars.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new BaseDependentResourceReference(CodeMirrorResourceReference.class, "gotoline.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new BaseDependentResourceReference(CodeMirrorResourceReference.class, "identifier-highlighter.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new BaseDependentResourceReference(CodeMirrorResourceReference.class, "loadmode.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("codemirror/current/mode/meta.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(CodeMirrorResourceReference.class, "mode/meta.js")));
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new ModeUrlResourceReference()));
|
||||
|
||||
dependencies.add(JavaScriptHeaderItem.forReference(new HotkeysResourceReference()));
|
||||
|
||||
dependencies.add(CssHeaderItem.forReference(new WebjarsCssResourceReference("codemirror/current/lib/codemirror.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new WebjarsCssResourceReference("codemirror/current/theme/eclipse.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new WebjarsCssResourceReference("codemirror/current/addon/dialog/dialog.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new WebjarsCssResourceReference("codemirror/current/addon/fold/foldgutter.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new WebjarsCssResourceReference("codemirror/current/addon/scroll/simplescrollbars.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new WebjarsCssResourceReference("codemirror/current/addon/search/matchesonscrollbar.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new WebjarsCssResourceReference("codemirror/current/addon/display/fullscreen.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new WebjarsCssResourceReference("codemirror/current/addon/hint/show-hint.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new BaseDependentCssResourceReference(CodeMirrorResourceReference.class, "codemirror.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new CssResourceReference(CodeMirrorResourceReference.class, "lib/codemirror.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new CssResourceReference(CodeMirrorResourceReference.class, "theme/eclipse.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new CssResourceReference(CodeMirrorResourceReference.class, "addon/dialog/dialog.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new CssResourceReference(CodeMirrorResourceReference.class, "addon/fold/foldgutter.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new CssResourceReference(CodeMirrorResourceReference.class, "addon/scroll/simplescrollbars.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new CssResourceReference(CodeMirrorResourceReference.class, "addon/search/matchesonscrollbar.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new CssResourceReference(CodeMirrorResourceReference.class, "addon/display/fullscreen.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new CssResourceReference(CodeMirrorResourceReference.class, "addon/hint/show-hint.css")));
|
||||
dependencies.add(CssHeaderItem.forReference(new BaseDependentCssResourceReference(CodeMirrorResourceReference.class, "codemirror-custom.css")));
|
||||
|
||||
return dependencies;
|
||||
}
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
package io.onedev.server.web.asset.codemirror;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.markup.head.CssHeaderItem;
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.request.resource.CssResourceReference;
|
||||
|
||||
public class CodeThemeCssResourceReference extends CssResourceReference {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public CodeThemeCssResourceReference() {
|
||||
super(CodeThemeCssResourceReference.class, "theme-custom.css");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HeaderItem> getDependencies() {
|
||||
List<HeaderItem> dependencies = super.getDependencies();
|
||||
dependencies.add(CssHeaderItem.forReference(new CssResourceReference(
|
||||
CodeThemeCssResourceReference.class, "theme/eclipse.css")));
|
||||
return dependencies;
|
||||
}
|
||||
|
||||
}
|
||||
@ -8,7 +8,6 @@ import org.apache.wicket.request.cycle.RequestCycle;
|
||||
import org.apache.wicket.request.mapper.parameter.PageParameters;
|
||||
import org.apache.wicket.request.resource.JavaScriptResourceReference;
|
||||
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
|
||||
public class ModeUrlResourceReference extends JavaScriptResourceReference {
|
||||
@ -31,7 +30,7 @@ public class ModeUrlResourceReference extends JavaScriptResourceReference {
|
||||
@Override
|
||||
public List<HeaderItem> getDependencies() {
|
||||
List<HeaderItem> dependencies = super.getDependencies();
|
||||
WebjarsJavaScriptResourceReference metaReference = new WebjarsJavaScriptResourceReference("codemirror/current/mode/meta.js");
|
||||
JavaScriptResourceReference metaReference = new JavaScriptResourceReference(ModeUrlResourceReference.class, "mode/meta.js");
|
||||
String modeBase = StringUtils.substringBeforeLast(RequestCycle.get().urlFor(metaReference, new PageParameters()).toString(), "/");
|
||||
dependencies.add(OnDomReadyHeaderItem.forScript("CodeMirror.modeURL = '" + modeBase + "/%N/%N.js';"));
|
||||
return dependencies;
|
||||
|
||||
206
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/comment/comment.js
vendored
Normal file
206
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/comment/comment.js
vendored
Normal file
@ -0,0 +1,206 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
|
||||
var noOptions = {};
|
||||
var nonWS = /[^\s\u00a0]/;
|
||||
var Pos = CodeMirror.Pos;
|
||||
|
||||
function firstNonWS(str) {
|
||||
var found = str.search(nonWS);
|
||||
return found == -1 ? 0 : found;
|
||||
}
|
||||
|
||||
CodeMirror.commands.toggleComment = function(cm) {
|
||||
cm.toggleComment();
|
||||
};
|
||||
|
||||
CodeMirror.defineExtension("toggleComment", function(options) {
|
||||
if (!options) options = noOptions;
|
||||
var cm = this;
|
||||
var minLine = Infinity, ranges = this.listSelections(), mode = null;
|
||||
for (var i = ranges.length - 1; i >= 0; i--) {
|
||||
var from = ranges[i].from(), to = ranges[i].to();
|
||||
if (from.line >= minLine) continue;
|
||||
if (to.line >= minLine) to = Pos(minLine, 0);
|
||||
minLine = from.line;
|
||||
if (mode == null) {
|
||||
if (cm.uncomment(from, to, options)) mode = "un";
|
||||
else { cm.lineComment(from, to, options); mode = "line"; }
|
||||
} else if (mode == "un") {
|
||||
cm.uncomment(from, to, options);
|
||||
} else {
|
||||
cm.lineComment(from, to, options);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Rough heuristic to try and detect lines that are part of multi-line string
|
||||
function probablyInsideString(cm, pos, line) {
|
||||
return /\bstring\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\'\"`]/.test(line)
|
||||
}
|
||||
|
||||
CodeMirror.defineExtension("lineComment", function(from, to, options) {
|
||||
if (!options) options = noOptions;
|
||||
var self = this, mode = self.getModeAt(from);
|
||||
var firstLine = self.getLine(from.line);
|
||||
if (firstLine == null || probablyInsideString(self, from, firstLine)) return;
|
||||
|
||||
var commentString = options.lineComment || mode.lineComment;
|
||||
if (!commentString) {
|
||||
if (options.blockCommentStart || mode.blockCommentStart) {
|
||||
options.fullLines = true;
|
||||
self.blockComment(from, to, options);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);
|
||||
var pad = options.padding == null ? " " : options.padding;
|
||||
var blankLines = options.commentBlankLines || from.line == to.line;
|
||||
|
||||
self.operation(function() {
|
||||
if (options.indent) {
|
||||
var baseString = null;
|
||||
for (var i = from.line; i < end; ++i) {
|
||||
var line = self.getLine(i);
|
||||
var whitespace = line.slice(0, firstNonWS(line));
|
||||
if (baseString == null || baseString.length > whitespace.length) {
|
||||
baseString = whitespace;
|
||||
}
|
||||
}
|
||||
for (var i = from.line; i < end; ++i) {
|
||||
var line = self.getLine(i), cut = baseString.length;
|
||||
if (!blankLines && !nonWS.test(line)) continue;
|
||||
if (line.slice(0, cut) != baseString) cut = firstNonWS(line);
|
||||
self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));
|
||||
}
|
||||
} else {
|
||||
for (var i = from.line; i < end; ++i) {
|
||||
if (blankLines || nonWS.test(self.getLine(i)))
|
||||
self.replaceRange(commentString + pad, Pos(i, 0));
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
CodeMirror.defineExtension("blockComment", function(from, to, options) {
|
||||
if (!options) options = noOptions;
|
||||
var self = this, mode = self.getModeAt(from);
|
||||
var startString = options.blockCommentStart || mode.blockCommentStart;
|
||||
var endString = options.blockCommentEnd || mode.blockCommentEnd;
|
||||
if (!startString || !endString) {
|
||||
if ((options.lineComment || mode.lineComment) && options.fullLines != false)
|
||||
self.lineComment(from, to, options);
|
||||
return;
|
||||
}
|
||||
if (/\bcomment\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return
|
||||
|
||||
var end = Math.min(to.line, self.lastLine());
|
||||
if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;
|
||||
|
||||
var pad = options.padding == null ? " " : options.padding;
|
||||
if (from.line > end) return;
|
||||
|
||||
self.operation(function() {
|
||||
if (options.fullLines != false) {
|
||||
var lastLineHasText = nonWS.test(self.getLine(end));
|
||||
self.replaceRange(pad + endString, Pos(end));
|
||||
self.replaceRange(startString + pad, Pos(from.line, 0));
|
||||
var lead = options.blockCommentLead || mode.blockCommentLead;
|
||||
if (lead != null) for (var i = from.line + 1; i <= end; ++i)
|
||||
if (i != end || lastLineHasText)
|
||||
self.replaceRange(lead + pad, Pos(i, 0));
|
||||
} else {
|
||||
self.replaceRange(endString, to);
|
||||
self.replaceRange(startString, from);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
CodeMirror.defineExtension("uncomment", function(from, to, options) {
|
||||
if (!options) options = noOptions;
|
||||
var self = this, mode = self.getModeAt(from);
|
||||
var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);
|
||||
|
||||
// Try finding line comments
|
||||
var lineString = options.lineComment || mode.lineComment, lines = [];
|
||||
var pad = options.padding == null ? " " : options.padding, didSomething;
|
||||
lineComment: {
|
||||
if (!lineString) break lineComment;
|
||||
for (var i = start; i <= end; ++i) {
|
||||
var line = self.getLine(i);
|
||||
var found = line.indexOf(lineString);
|
||||
if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;
|
||||
if (found == -1 && nonWS.test(line)) break lineComment;
|
||||
if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;
|
||||
lines.push(line);
|
||||
}
|
||||
self.operation(function() {
|
||||
for (var i = start; i <= end; ++i) {
|
||||
var line = lines[i - start];
|
||||
var pos = line.indexOf(lineString), endPos = pos + lineString.length;
|
||||
if (pos < 0) continue;
|
||||
if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;
|
||||
didSomething = true;
|
||||
self.replaceRange("", Pos(i, pos), Pos(i, endPos));
|
||||
}
|
||||
});
|
||||
if (didSomething) return true;
|
||||
}
|
||||
|
||||
// Try block comments
|
||||
var startString = options.blockCommentStart || mode.blockCommentStart;
|
||||
var endString = options.blockCommentEnd || mode.blockCommentEnd;
|
||||
if (!startString || !endString) return false;
|
||||
var lead = options.blockCommentLead || mode.blockCommentLead;
|
||||
var startLine = self.getLine(start), open = startLine.indexOf(startString)
|
||||
if (open == -1) return false
|
||||
var endLine = end == start ? startLine : self.getLine(end)
|
||||
var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);
|
||||
if (close == -1 && start != end) {
|
||||
endLine = self.getLine(--end);
|
||||
close = endLine.indexOf(endString);
|
||||
}
|
||||
if (close == -1 ||
|
||||
!/comment/.test(self.getTokenTypeAt(Pos(start, open + 1))) ||
|
||||
!/comment/.test(self.getTokenTypeAt(Pos(end, close + 1))))
|
||||
return false;
|
||||
|
||||
// Avoid killing block comments completely outside the selection.
|
||||
// Positions of the last startString before the start of the selection, and the first endString after it.
|
||||
var lastStart = startLine.lastIndexOf(startString, from.ch);
|
||||
var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);
|
||||
if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;
|
||||
// Positions of the first endString after the end of the selection, and the last startString before it.
|
||||
firstEnd = endLine.indexOf(endString, to.ch);
|
||||
var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);
|
||||
lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;
|
||||
if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;
|
||||
|
||||
self.operation(function() {
|
||||
self.replaceRange("", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),
|
||||
Pos(end, close + endString.length));
|
||||
var openEnd = open + startString.length;
|
||||
if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;
|
||||
self.replaceRange("", Pos(start, open), Pos(start, openEnd));
|
||||
if (lead) for (var i = start + 1; i <= end; ++i) {
|
||||
var line = self.getLine(i), found = line.indexOf(lead);
|
||||
if (found == -1 || nonWS.test(line.slice(0, found))) continue;
|
||||
var foundEnd = found + lead.length;
|
||||
if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;
|
||||
self.replaceRange("", Pos(i, found), Pos(i, foundEnd));
|
||||
}
|
||||
});
|
||||
return true;
|
||||
});
|
||||
});
|
||||
85
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/comment/continuecomment.js
vendored
Normal file
85
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/comment/continuecomment.js
vendored
Normal file
@ -0,0 +1,85 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
var modes = ["clike", "css", "javascript"];
|
||||
|
||||
for (var i = 0; i < modes.length; ++i)
|
||||
CodeMirror.extendMode(modes[i], {blockCommentContinue: " * "});
|
||||
|
||||
function continueComment(cm) {
|
||||
if (cm.getOption("disableInput")) return CodeMirror.Pass;
|
||||
var ranges = cm.listSelections(), mode, inserts = [];
|
||||
for (var i = 0; i < ranges.length; i++) {
|
||||
var pos = ranges[i].head, token = cm.getTokenAt(pos);
|
||||
if (token.type != "comment") return CodeMirror.Pass;
|
||||
var modeHere = CodeMirror.innerMode(cm.getMode(), token.state).mode;
|
||||
if (!mode) mode = modeHere;
|
||||
else if (mode != modeHere) return CodeMirror.Pass;
|
||||
|
||||
var insert = null;
|
||||
if (mode.blockCommentStart && mode.blockCommentContinue) {
|
||||
var end = token.string.indexOf(mode.blockCommentEnd);
|
||||
var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found;
|
||||
if (end != -1 && end == token.string.length - mode.blockCommentEnd.length && pos.ch >= end) {
|
||||
// Comment ended, don't continue it
|
||||
} else if (token.string.indexOf(mode.blockCommentStart) == 0) {
|
||||
insert = full.slice(0, token.start);
|
||||
if (!/^\s*$/.test(insert)) {
|
||||
insert = "";
|
||||
for (var j = 0; j < token.start; ++j) insert += " ";
|
||||
}
|
||||
} else if ((found = full.indexOf(mode.blockCommentContinue)) != -1 &&
|
||||
found + mode.blockCommentContinue.length > token.start &&
|
||||
/^\s*$/.test(full.slice(0, found))) {
|
||||
insert = full.slice(0, found);
|
||||
}
|
||||
if (insert != null) insert += mode.blockCommentContinue;
|
||||
}
|
||||
if (insert == null && mode.lineComment && continueLineCommentEnabled(cm)) {
|
||||
var line = cm.getLine(pos.line), found = line.indexOf(mode.lineComment);
|
||||
if (found > -1) {
|
||||
insert = line.slice(0, found);
|
||||
if (/\S/.test(insert)) insert = null;
|
||||
else insert += mode.lineComment + line.slice(found + mode.lineComment.length).match(/^\s*/)[0];
|
||||
}
|
||||
}
|
||||
if (insert == null) return CodeMirror.Pass;
|
||||
inserts[i] = "\n" + insert;
|
||||
}
|
||||
|
||||
cm.operation(function() {
|
||||
for (var i = ranges.length - 1; i >= 0; i--)
|
||||
cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), "+insert");
|
||||
});
|
||||
}
|
||||
|
||||
function continueLineCommentEnabled(cm) {
|
||||
var opt = cm.getOption("continueComments");
|
||||
if (opt && typeof opt == "object")
|
||||
return opt.continueLineComment !== false;
|
||||
return true;
|
||||
}
|
||||
|
||||
CodeMirror.defineOption("continueComments", null, function(cm, val, prev) {
|
||||
if (prev && prev != CodeMirror.Init)
|
||||
cm.removeKeyMap("continueComment");
|
||||
if (val) {
|
||||
var key = "Enter";
|
||||
if (typeof val == "string")
|
||||
key = val;
|
||||
else if (typeof val == "object" && val.key)
|
||||
key = val.key;
|
||||
var map = {name: "continueComment"};
|
||||
map[key] = continueComment;
|
||||
cm.addKeyMap(map);
|
||||
}
|
||||
});
|
||||
});
|
||||
32
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/dialog/dialog.css
vendored
Normal file
32
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/dialog/dialog.css
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
.CodeMirror-dialog {
|
||||
position: absolute;
|
||||
left: 0; right: 0;
|
||||
background: inherit;
|
||||
z-index: 15;
|
||||
padding: .1em .8em;
|
||||
overflow: hidden;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.CodeMirror-dialog-top {
|
||||
border-bottom: 1px solid #eee;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.CodeMirror-dialog-bottom {
|
||||
border-top: 1px solid #eee;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.CodeMirror-dialog input {
|
||||
border: none;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
width: 20em;
|
||||
color: inherit;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.CodeMirror-dialog button {
|
||||
font-size: 70%;
|
||||
}
|
||||
157
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/dialog/dialog.js
vendored
Normal file
157
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/dialog/dialog.js
vendored
Normal file
@ -0,0 +1,157 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
// Open simple dialogs on top of an editor. Relies on dialog.css.
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
function dialogDiv(cm, template, bottom) {
|
||||
var wrap = cm.getWrapperElement();
|
||||
var dialog;
|
||||
dialog = wrap.appendChild(document.createElement("div"));
|
||||
if (bottom)
|
||||
dialog.className = "CodeMirror-dialog CodeMirror-dialog-bottom";
|
||||
else
|
||||
dialog.className = "CodeMirror-dialog CodeMirror-dialog-top";
|
||||
|
||||
if (typeof template == "string") {
|
||||
dialog.innerHTML = template;
|
||||
} else { // Assuming it's a detached DOM element.
|
||||
dialog.appendChild(template);
|
||||
}
|
||||
return dialog;
|
||||
}
|
||||
|
||||
function closeNotification(cm, newVal) {
|
||||
if (cm.state.currentNotificationClose)
|
||||
cm.state.currentNotificationClose();
|
||||
cm.state.currentNotificationClose = newVal;
|
||||
}
|
||||
|
||||
CodeMirror.defineExtension("openDialog", function(template, callback, options) {
|
||||
if (!options) options = {};
|
||||
|
||||
closeNotification(this, null);
|
||||
|
||||
var dialog = dialogDiv(this, template, options.bottom);
|
||||
var closed = false, me = this;
|
||||
function close(newVal) {
|
||||
if (typeof newVal == 'string') {
|
||||
inp.value = newVal;
|
||||
} else {
|
||||
if (closed) return;
|
||||
closed = true;
|
||||
dialog.parentNode.removeChild(dialog);
|
||||
me.focus();
|
||||
|
||||
if (options.onClose) options.onClose(dialog);
|
||||
}
|
||||
}
|
||||
|
||||
var inp = dialog.getElementsByTagName("input")[0], button;
|
||||
if (inp) {
|
||||
inp.focus();
|
||||
|
||||
if (options.value) {
|
||||
inp.value = options.value;
|
||||
if (options.selectValueOnOpen !== false) {
|
||||
inp.select();
|
||||
}
|
||||
}
|
||||
|
||||
if (options.onInput)
|
||||
CodeMirror.on(inp, "input", function(e) { options.onInput(e, inp.value, close);});
|
||||
if (options.onKeyUp)
|
||||
CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value, close);});
|
||||
|
||||
CodeMirror.on(inp, "keydown", function(e) {
|
||||
if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }
|
||||
if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {
|
||||
inp.blur();
|
||||
CodeMirror.e_stop(e);
|
||||
close();
|
||||
}
|
||||
if (e.keyCode == 13) callback(inp.value, e);
|
||||
});
|
||||
|
||||
if (options.closeOnBlur !== false) CodeMirror.on(inp, "blur", close);
|
||||
} else if (button = dialog.getElementsByTagName("button")[0]) {
|
||||
CodeMirror.on(button, "click", function() {
|
||||
close();
|
||||
me.focus();
|
||||
});
|
||||
|
||||
if (options.closeOnBlur !== false) CodeMirror.on(button, "blur", close);
|
||||
|
||||
button.focus();
|
||||
}
|
||||
return close;
|
||||
});
|
||||
|
||||
CodeMirror.defineExtension("openConfirm", function(template, callbacks, options) {
|
||||
closeNotification(this, null);
|
||||
var dialog = dialogDiv(this, template, options && options.bottom);
|
||||
var buttons = dialog.getElementsByTagName("button");
|
||||
var closed = false, me = this, blurring = 1;
|
||||
function close() {
|
||||
if (closed) return;
|
||||
closed = true;
|
||||
dialog.parentNode.removeChild(dialog);
|
||||
me.focus();
|
||||
}
|
||||
buttons[0].focus();
|
||||
for (var i = 0; i < buttons.length; ++i) {
|
||||
var b = buttons[i];
|
||||
(function(callback) {
|
||||
CodeMirror.on(b, "click", function(e) {
|
||||
CodeMirror.e_preventDefault(e);
|
||||
close();
|
||||
if (callback) callback(me);
|
||||
});
|
||||
})(callbacks[i]);
|
||||
CodeMirror.on(b, "blur", function() {
|
||||
--blurring;
|
||||
setTimeout(function() { if (blurring <= 0) close(); }, 200);
|
||||
});
|
||||
CodeMirror.on(b, "focus", function() { ++blurring; });
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* openNotification
|
||||
* Opens a notification, that can be closed with an optional timer
|
||||
* (default 5000ms timer) and always closes on click.
|
||||
*
|
||||
* If a notification is opened while another is opened, it will close the
|
||||
* currently opened one and open the new one immediately.
|
||||
*/
|
||||
CodeMirror.defineExtension("openNotification", function(template, options) {
|
||||
closeNotification(this, close);
|
||||
var dialog = dialogDiv(this, template, options && options.bottom);
|
||||
var closed = false, doneTimer;
|
||||
var duration = options && typeof options.duration !== "undefined" ? options.duration : 5000;
|
||||
|
||||
function close() {
|
||||
if (closed) return;
|
||||
closed = true;
|
||||
clearTimeout(doneTimer);
|
||||
dialog.parentNode.removeChild(dialog);
|
||||
}
|
||||
|
||||
CodeMirror.on(dialog, 'click', function(e) {
|
||||
CodeMirror.e_preventDefault(e);
|
||||
close();
|
||||
});
|
||||
|
||||
if (duration)
|
||||
doneTimer = setTimeout(close, duration);
|
||||
|
||||
return close;
|
||||
});
|
||||
});
|
||||
47
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/display/autorefresh.js
vendored
Normal file
47
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/display/autorefresh.js
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"))
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod)
|
||||
else // Plain browser env
|
||||
mod(CodeMirror)
|
||||
})(function(CodeMirror) {
|
||||
"use strict"
|
||||
|
||||
CodeMirror.defineOption("autoRefresh", false, function(cm, val) {
|
||||
if (cm.state.autoRefresh) {
|
||||
stopListening(cm, cm.state.autoRefresh)
|
||||
cm.state.autoRefresh = null
|
||||
}
|
||||
if (val && cm.display.wrapper.offsetHeight == 0)
|
||||
startListening(cm, cm.state.autoRefresh = {delay: val.delay || 250})
|
||||
})
|
||||
|
||||
function startListening(cm, state) {
|
||||
function check() {
|
||||
if (cm.display.wrapper.offsetHeight) {
|
||||
stopListening(cm, state)
|
||||
if (cm.display.lastWrapHeight != cm.display.wrapper.clientHeight)
|
||||
cm.refresh()
|
||||
} else {
|
||||
state.timeout = setTimeout(check, state.delay)
|
||||
}
|
||||
}
|
||||
state.timeout = setTimeout(check, state.delay)
|
||||
state.hurry = function() {
|
||||
clearTimeout(state.timeout)
|
||||
state.timeout = setTimeout(check, 50)
|
||||
}
|
||||
CodeMirror.on(window, "mouseup", state.hurry)
|
||||
CodeMirror.on(window, "keyup", state.hurry)
|
||||
}
|
||||
|
||||
function stopListening(_cm, state) {
|
||||
clearTimeout(state.timeout)
|
||||
CodeMirror.off(window, "mouseup", state.hurry)
|
||||
CodeMirror.off(window, "keyup", state.hurry)
|
||||
}
|
||||
});
|
||||
6
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/display/fullscreen.css
vendored
Normal file
6
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon/display/fullscreen.css
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
.CodeMirror-fullscreen {
|
||||
position: fixed;
|
||||
top: 0; left: 0; right: 0; bottom: 0;
|
||||
height: auto;
|
||||
z-index: 9;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user