Initial commit

This commit is contained in:
Ivan Meredith 2016-07-15 12:48:53 +12:00
parent 4046c47e55
commit cb312f43a6
11 changed files with 60 additions and 32 deletions

View File

@ -56,7 +56,7 @@ public class BlueMessageEnricher extends MessageEnricher {
public void enrich(@Nonnull Message message) {
// TODO: Replace once https://issues.jenkins-ci.org/browse/JENKINS-36286 is done
message.set(EventProps.Jenkins.jenkins_org, OrganizationImpl.INSTANCE.getName());
message.set(EventProps.Jenkins.jenkins_org, OrganizationImpl.DEFAULT_ORGANIZATION.getName());
String channelName = message.getChannelName();
if (channelName.equals(Events.JobChannel.NAME)) {
@ -80,7 +80,7 @@ public class BlueMessageEnricher extends MessageEnricher {
// TODO: Replace once https://issues.jenkins-ci.org/browse/JENKINS-36286 is done
private static @Nonnull Link getLink(@Nonnull ParameterizedJobMixIn.ParameterizedJob job) {
Link orgLink = new Link("/rest/organizations/" + OrganizationImpl.INSTANCE.getName());
Link orgLink = new Link("/rest/organizations/" + OrganizationImpl.DEFAULT_ORGANIZATION.getName());
if (job instanceof WorkflowJob) {
ItemGroup<? extends Item> parent = job.getParent();

View File

@ -122,7 +122,11 @@
<artifactId>token-macro</artifactId>
<version>1.12.1</version>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>jenkins-organizations</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>

View File

@ -58,7 +58,7 @@ public class AbstractRunImpl<T extends Run> extends BlueRun {
@Override
public String getOrganization() {
return OrganizationImpl.INSTANCE.getName();
return OrganizationImpl.DEFAULT_ORGANIZATION.getName();
}
@Override
@ -247,7 +247,7 @@ public class AbstractRunImpl<T extends Run> extends BlueRun {
@Override
public Link getLink() {
if(parent == null){
return OrganizationImpl.INSTANCE.getLink().rel(String.format("pipelines/%s/runs/%s", run.getParent().getName(), getId()));
return OrganizationImpl.DEFAULT_ORGANIZATION.getLink().rel(String.format("pipelines/%s/runs/%s", run.getParent().getName(), getId()));
}
return parent.rel("runs/"+getId());
}

View File

@ -56,7 +56,7 @@ public abstract class BluePipelineFactory implements ExtensionPoint {
Item nextStep = findNextStep(Jenkins.getInstance(), item);
for (BluePipelineFactory f : all()) {
Resource r = f.resolve(nextStep, OrganizationImpl.INSTANCE.getPipelines(), item);
Resource r = f.resolve(nextStep, OrganizationImpl.DEFAULT_ORGANIZATION.getPipelines(), item);
if (r!=null) return r;
}
return null;

View File

@ -43,12 +43,12 @@ public class MultiBranchPipelineImpl extends BlueMultiBranchPipeline {
private final Link self;
public MultiBranchPipelineImpl(MultiBranchProject mbp) {
this.mbp = mbp;
this.self = OrganizationImpl.INSTANCE.getLink().rel("pipelines").rel(PipelineImpl.getRecursivePathFromFullName(this));
this.self = OrganizationImpl.DEFAULT_ORGANIZATION.getLink().rel("pipelines").rel(PipelineImpl.getRecursivePathFromFullName(this));
}
@Override
public String getOrganization() {
return OrganizationImpl.INSTANCE.getName();
return OrganizationImpl.DEFAULT_ORGANIZATION.getName();
}

View File

@ -1,15 +1,19 @@
package io.jenkins.blueocean.service.embedded.rest;
import com.google.common.collect.Lists;
import hudson.Extension;
import hudson.model.Item;
import io.jenkins.blueocean.commons.ServiceException;
import io.jenkins.blueocean.rest.ApiHead;
import io.jenkins.blueocean.rest.hal.Link;
import io.jenkins.blueocean.rest.model.BlueOrganization;
import io.jenkins.blueocean.rest.model.BlueOrganizationContainer;
import jenkins.model.Jenkins;
import org.jenkinsci.plugins.jenkinsorganizations.JenkinsOrganizationFolder;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
/**
* {@link BlueOrganizationContainer} for the embedded use
@ -22,20 +26,29 @@ public class OrganizationContainerImpl extends BlueOrganizationContainer {
@Override
public BlueOrganization get(String name) {
validateOrganization(name);
return OrganizationImpl.INSTANCE;
if(OrganizationImpl.DEFAULT_ORGANIZATION.getName().equals(name)){
return OrganizationImpl.DEFAULT_ORGANIZATION;
} else {
Item item = Jenkins.getInstance().getItem(name);
if(item instanceof JenkinsOrganizationFolder) {
return new OrganizationImpl((JenkinsOrganizationFolder) item);
} else {
return null;
}
}
}
@Override
public Iterator<BlueOrganization> iterator() {
return Collections.<BlueOrganization>singleton(OrganizationImpl.INSTANCE).iterator();
}
protected void validateOrganization(String organization){
if (!organization.equals(Jenkins.getActiveInstance().getDisplayName().toLowerCase())) {
throw new ServiceException.UnprocessableEntityException(String.format("Organization %s not found",
organization));
List<JenkinsOrganizationFolder> orgs = Jenkins.getInstance().getAllItems(JenkinsOrganizationFolder.class);
List<BlueOrganization> ret = Lists.newArrayList();
for (JenkinsOrganizationFolder org : orgs) {
ret.add(new OrganizationImpl(org));
}
ret.add(new OrganizationImpl());
return ret.iterator();
}
@Override

View File

@ -10,6 +10,7 @@ import io.jenkins.blueocean.rest.model.BluePipelineContainer;
import io.jenkins.blueocean.rest.model.BlueUser;
import io.jenkins.blueocean.rest.model.BlueUserContainer;
import jenkins.model.Jenkins;
import org.jenkinsci.plugins.jenkinsorganizations.JenkinsOrganizationFolder;
import org.kohsuke.stapler.WebMethod;
import org.kohsuke.stapler.verb.DELETE;
import org.kohsuke.stapler.verb.PUT;
@ -24,20 +25,28 @@ import java.io.IOException;
*/
public class OrganizationImpl extends BlueOrganization {
private final UserContainerImpl users = new UserContainerImpl(this);
final JenkinsOrganizationFolder organizationFolder;
/**
* In embedded mode, there's only one organization
*/
public static final OrganizationImpl INSTANCE = new OrganizationImpl();
public static final OrganizationImpl DEFAULT_ORGANIZATION = new OrganizationImpl();
public OrganizationImpl(JenkinsOrganizationFolder organizationFolder) {
this.organizationFolder = organizationFolder;
}
private OrganizationImpl() {
this(null);
}
/**
* In embedded mode, there's only one organization
*/
public String getName() {
return Jenkins.getInstance().getDisplayName().toLowerCase();
if(organizationFolder == null) {
return Jenkins.getInstance().getDisplayName().toLowerCase();
} else {
return organizationFolder.getDisplayName();
}
}
@Override
@ -77,7 +86,7 @@ public class OrganizationImpl extends BlueOrganization {
if(user == null){
throw new ServiceException.NotFoundException("No authenticated user found");
}
return new UserImpl(user,new UserContainerImpl(OrganizationImpl.INSTANCE));
return new UserImpl(user,new UserContainerImpl(OrganizationImpl.DEFAULT_ORGANIZATION));
}
@Override

View File

@ -21,21 +21,23 @@ import java.util.List;
public class PipelineContainerImpl extends BluePipelineContainer {
private final @Nonnull ItemGroup itemGroup;
private final Link self;
final OrganizationImpl organization;
public PipelineContainerImpl() {
this(Jenkins.getInstance(),null);
public PipelineContainerImpl(OrganizationImpl organization) {
this(Jenkins.getInstance(), organization, null);
}
public PipelineContainerImpl(ItemGroup itemGroup) {
this(itemGroup,null);
public PipelineContainerImpl(ItemGroup itemGroup, OrganizationImpl organization) {
this(itemGroup, organization, null);
}
public PipelineContainerImpl(ItemGroup itemGroup, Reachable parent) {
public PipelineContainerImpl(ItemGroup itemGroup, OrganizationImpl organization, Reachable parent) {
this.itemGroup = itemGroup;
this.organization = organization;
if(parent!=null){
this.self = parent.getLink().rel("pipelines");
}else{
this.self = OrganizationImpl.INSTANCE.getLink().rel("pipelines");
this.self = organization.getLink().rel("pipelines");
}
}
@Override

View File

@ -36,7 +36,7 @@ public class PipelineFolderImpl extends BluePipelineFolder {
@Override
public String getOrganization() {
return OrganizationImpl.INSTANCE.getName();
return OrganizationImpl.DEFAULT_ORGANIZATION.getName();
}
@Override
@ -99,7 +99,7 @@ public class PipelineFolderImpl extends BluePipelineFolder {
@Override
public Link getLink() {
return OrganizationImpl.INSTANCE.getLink().rel("pipelines").rel(getRecursivePathFromFullName(this));
return OrganizationImpl.DEFAULT_ORGANIZATION.getLink().rel("pipelines").rel(getRecursivePathFromFullName(this));
}
@Extension(ordinal = 0)

View File

@ -40,7 +40,7 @@ public class PipelineImpl extends BluePipeline {
@Override
public String getOrganization() {
return OrganizationImpl.INSTANCE.getName();
return OrganizationImpl.DEFAULT_ORGANIZATION.getName();
}
@Override
@ -120,7 +120,7 @@ public class PipelineImpl extends BluePipeline {
@Override
public Link getLink() {
return OrganizationImpl.INSTANCE.getLink().rel("pipelines").rel(getRecursivePathFromFullName(this));
return OrganizationImpl.DEFAULT_ORGANIZATION.getLink().rel("pipelines").rel(getRecursivePathFromFullName(this));
}
protected static String getRecursivePathFromFullName(BluePipeline pipeline){

View File

@ -48,7 +48,7 @@ public class PipelineSearch extends OmniSearch<BluePipeline>{
String s = q.param(EXCLUDED_FROM_FLATTENING_PARAM);
String org = q.param(ORGANIZATION_PARAM);
if(org!=null && !OrganizationImpl.INSTANCE.getName().equals(org)){
if(org!=null && !OrganizationImpl.DEFAULT_ORGANIZATION.getName().equals(org)){
throw new ServiceException.BadRequestExpception(
String.format("Organization %s not found. Query parameter %s value: %s is invalid. ", org,ORGANIZATION_PARAM,org));
}