Skip to content

Commit

Permalink
bz983455:No possibility to create a repository within any group via R…
Browse files Browse the repository at this point in the history
…EST API
  • Loading branch information
jervisliu committed Jul 19, 2013
1 parent 9c606c5 commit 5db9481
Show file tree
Hide file tree
Showing 3 changed files with 150 additions and 14 deletions.
Expand Up @@ -5,12 +5,15 @@
import javax.enterprise.event.Observes;
import javax.inject.Inject;

import org.kie.workbench.common.services.shared.rest.AddRepositoryToGroupRequest;
import org.kie.workbench.common.services.shared.rest.CloneRepositoryRequest;
import org.kie.workbench.common.services.shared.rest.CompileProjectRequest;
import org.kie.workbench.common.services.shared.rest.CreateGroupRequest;
import org.kie.workbench.common.services.shared.rest.CreateProjectRequest;
import org.kie.workbench.common.services.shared.rest.InstallProjectRequest;
import org.kie.workbench.common.services.shared.rest.JobRequest;
import org.kie.workbench.common.services.shared.rest.JobResult;
import org.kie.workbench.common.services.shared.rest.RemoveRepositoryFromGroupRequest;
import org.kie.workbench.common.services.shared.rest.TestProjectRequest;


Expand Down Expand Up @@ -59,6 +62,27 @@ public void onTestProjectRequest( final @Observes TestProjectRequest jobRequest)
projectResourceDispatcher.testProject(jobRequest.getJodId(), jobRequest.getRepositoryName(), jobRequest.getProjectName(), jobRequest.getBuildConfig());
}

public void onCreateGroupRequest( final @Observes CreateGroupRequest jobRequest) {
if(!approveRequest(jobRequest)) {
return;
}
projectResourceDispatcher.createGroup(jobRequest.getJodId(), jobRequest.getGroupName(), jobRequest.getOwnder(), jobRequest.getRepositories());
}

public void onAddRepositoryToGroupRequest( final @Observes AddRepositoryToGroupRequest jobRequest) {
if(!approveRequest(jobRequest)) {
return;
}
projectResourceDispatcher.addRepositoryToGroup(jobRequest.getJodId(), jobRequest.getGroupName(), jobRequest.getRepositoryName());
}

public void onAddRepositoryToGroupRequest( final @Observes RemoveRepositoryFromGroupRequest jobRequest) {
if(!approveRequest(jobRequest)) {
return;
}
projectResourceDispatcher.removeRepositoryFromGroup(jobRequest.getJodId(), jobRequest.getGroupName(), jobRequest.getRepositoryName());
}

//Commented out for the time being, due to kssion problem.
public boolean approveRequest(JobRequest jobRequest) {
if(!defaultGuvnorApprover.requestApproval(jobRequest)) {
Expand Down
Expand Up @@ -35,16 +35,18 @@
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;

import org.guvnor.common.services.project.builder.service.BuildService;
import org.guvnor.common.services.project.service.ProjectService;
import org.jboss.resteasy.annotations.GZIP;
import org.kie.commons.io.IOService;
import org.kie.commons.java.nio.file.FileSystem;
import org.kie.workbench.common.services.shared.rest.AddRepositoryToGroupRequest;
import org.kie.workbench.common.services.shared.rest.BuildConfig;
import org.kie.workbench.common.services.shared.rest.CloneRepositoryRequest;
import org.kie.workbench.common.services.shared.rest.CompileProjectRequest;
Expand All @@ -56,6 +58,7 @@
import org.kie.workbench.common.services.shared.rest.InstallProjectRequest;
import org.kie.workbench.common.services.shared.rest.JobRequest;
import org.kie.workbench.common.services.shared.rest.JobResult;
import org.kie.workbench.common.services.shared.rest.RemoveRepositoryFromGroupRequest;
import org.kie.workbench.common.services.shared.rest.Repository;
import org.kie.workbench.common.services.shared.rest.TestProjectRequest;
import org.uberfire.backend.group.GroupService;
Expand Down Expand Up @@ -128,7 +131,11 @@ public void setMaxSize(int maxSize) {
private Event<DeployProjectRequest> deployProjectRequestEvent;
@Inject
private Event<CreateGroupRequest> createGroupRequestEvent;

@Inject
private Event<AddRepositoryToGroupRequest> addRepositoryToGroupRequest;
@Inject
private Event<RemoveRepositoryFromGroupRequest> removeRepositoryFromGroupRequest;

@PostConstruct
public void start() {
cache = new Cache(maxCacheSize);
Expand Down Expand Up @@ -268,7 +275,10 @@ public JobRequest deleteProject(
@PathParam("projectName") String projectName ) {
System.out.println( "-----deleteProject--- , repositoryName:" + repositoryName + ", project name:" + projectName );

String id = "" + System.currentTimeMillis() + "-" + counter.incrementAndGet();
throw new WebApplicationException(Response.status(Response.Status.NOT_ACCEPTABLE)
.entity("UNIMPLEMENTED").build());

/* String id = "" + System.currentTimeMillis() + "-" + counter.incrementAndGet();
CreateProjectRequest jobRequest = new CreateProjectRequest();
jobRequest.setStatus(JobRequest.Status.ACCEPTED);
jobRequest.setJodId(id);
Expand All @@ -283,7 +293,7 @@ public JobRequest deleteProject(
//TODO: Delete project. ProjectService does not have a removeProject method yet.
//createProjectRequestEvent.fire(jobRequest);
return jobRequest;
return jobRequest;*/
}

@POST
Expand Down Expand Up @@ -411,6 +421,7 @@ public JobRequest createGroup( Group group ) {
jobRequest.setJodId(id);
jobRequest.setGroupName(group.getName());
jobRequest.setOwnder(group.getOwner());
jobRequest.setRepositories(group.getRepositories());

JobResult jobResult = new JobResult();
jobResult.setJodId(id);
Expand All @@ -422,13 +433,65 @@ public JobRequest createGroup( Group group ) {
return jobRequest;
}

@POST
@Produces(MediaType.APPLICATION_JSON)
@Path("/groups/{groupName}/{repositoryName}")
public JobRequest addRepositoryToGroup( @PathParam("groupName") String groupName, @PathParam("repositoryName") String repositoryName) {
System.out.println( "-----addRepositoryToGroup--- , Group name:" + groupName + ", Repository name:" + repositoryName );

String id = "" + System.currentTimeMillis() + "-" + counter.incrementAndGet();
AddRepositoryToGroupRequest jobRequest = new AddRepositoryToGroupRequest();
jobRequest.setStatus(JobRequest.Status.ACCEPTED);
jobRequest.setJodId(id);
jobRequest.setGroupName(groupName);
jobRequest.setRepositoryName(repositoryName);

JobResult jobResult = new JobResult();
jobResult.setJodId(id);
jobResult.setStatus(JobRequest.Status.ACCEPTED);
jobs.put(id, jobResult);

addRepositoryToGroupRequest.fire(jobRequest);

return jobRequest;
}

@DELETE
@Produces(MediaType.APPLICATION_JSON)
@Path("/groups/{groupName}/{repositoryName}")
public JobRequest removeRepositoryFromGroup( @PathParam("groupName") String groupName, @PathParam("repositoryName") String repositoryName) {
System.out.println( "-----removeRepositoryFromGroup--- , Group name:" + groupName + ", Repository name:" + repositoryName );

String id = "" + System.currentTimeMillis() + "-" + counter.incrementAndGet();
RemoveRepositoryFromGroupRequest jobRequest = new RemoveRepositoryFromGroupRequest();
jobRequest.setStatus(JobRequest.Status.ACCEPTED);
jobRequest.setJodId(id);
jobRequest.setGroupName(groupName);
jobRequest.setRepositoryName(repositoryName);

JobResult jobResult = new JobResult();
jobResult.setJodId(id);
jobResult.setStatus(JobRequest.Status.ACCEPTED);
jobs.put(id, jobResult);

removeRepositoryFromGroupRequest.fire(jobRequest);

return jobRequest;
}

@DELETE
@Produces(MediaType.APPLICATION_JSON)
@Path("/groups/{groupName}")
public JobRequest deleteGroup( @PathParam("groupName") String groupName ) {
System.out.println( "-----deleteGroup--- , Group name:" + groupName );

throw new WebApplicationException(Response.status(Response.Status.NOT_ACCEPTABLE)
.entity("UNIMPLEMENTED").build());

String id = "" + System.currentTimeMillis() + "-" + counter.incrementAndGet();
//TODO:GroupService does not have removeGroup method yet
//groupService.removeGroup(groupName);
//createGroupRequestEvent.fire(jobRequest);
/* String id = "" + System.currentTimeMillis() + "-" + counter.incrementAndGet();
CreateGroupRequest jobRequest = new CreateGroupRequest();
jobRequest.setStatus(JobRequest.Status.ACCEPTED);
jobRequest.setJodId(id);
Expand All @@ -439,11 +502,9 @@ public JobRequest deleteGroup( @PathParam("groupName") String groupName ) {
jobResult.setStatus(JobRequest.Status.ACCEPTED);
jobs.put(id, jobResult);
//TODO:GroupService does not have removeGroup method yet
//groupService.removeGroup(groupName);
//createGroupRequestEvent.fire(jobRequest);
return jobRequest;
return jobRequest;*/
}

public org.kie.commons.java.nio.file.Path getRepositoryRootPath( String repositoryName ) {
Expand Down
Expand Up @@ -2,6 +2,7 @@

import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
Expand Down Expand Up @@ -32,6 +33,7 @@
import org.kie.workbench.common.services.shared.rest.JobResult;
import org.kie.workbench.common.services.shared.rest.Repository;
import org.uberfire.backend.group.GroupService;
import org.uberfire.backend.group.impl.GroupImpl;
import org.uberfire.backend.repositories.RepositoryService;
import org.uberfire.backend.repositories.impl.git.GitRepository;
import org.uberfire.backend.server.util.Paths;
Expand Down Expand Up @@ -337,19 +339,68 @@ public void deployProject(String jobId, String repositoryName, String projectNam
}
}

public void createGroup(String jobId, Group group ) {
System.out.println( "-----createGroup--- , Group name:" + group.getName() + ", Group owner:" + group.getOwner() );
public void createGroup(String jobId, String groupName, String groupOwer, List<String> repositoryNameList ) {
System.out.println( "-----createGroup--- , Group name:" + groupName + ", Group owner:" + groupOwer );
JobResult result = new JobResult();
result.setJodId(jobId);

if ( group.getName() == null || group.getOwner() == null ) {
result.setStatus(JobRequest.Status.RESOURCE_NOT_EXIST);
if ( groupName == null || groupOwer == null ) {
result.setStatus(JobRequest.Status.BAD_REQUEST);
result.setResult("Group name and owner must be provided");
jobResultEvent.fire(result);
return;
}

groupService.createGroup( group.getName(), group.getOwner() );
List<org.uberfire.backend.repositories.Repository> repositories = new ArrayList<org.uberfire.backend.repositories.Repository>();
if(repositoryNameList != null && repositoryNameList.size() > 0) {
for(String repoName : repositoryNameList) {
GitRepository repo = new GitRepository(repoName);
repositories.add(repo);
}
groupService.createGroup( groupName, groupOwer, repositories );
} else {
groupService.createGroup( groupName, groupOwer );
}

result.setStatus(JobRequest.Status.SUCCESS);
jobResultEvent.fire(result);
}

public void addRepositoryToGroup(String jobId, String groupName, String repositoryName ) {
System.out.println( "-----addRepositoryToGroup--- , Group name:" + groupName + ", repository name:" + repositoryName );
JobResult result = new JobResult();
result.setJodId(jobId);

if ( groupName == null || repositoryName == null ) {
result.setStatus(JobRequest.Status.BAD_REQUEST);
result.setResult("Group name and repository name must be provided");
jobResultEvent.fire(result);
return;
}

GroupImpl group = new GroupImpl(groupName, null);
GitRepository repo = new GitRepository(repositoryName);
groupService.addRepository(group, repo);

result.setStatus(JobRequest.Status.SUCCESS);
jobResultEvent.fire(result);
}

public void removeRepositoryFromGroup(String jobId, String groupName, String repositoryName ) {
System.out.println( "-----removeRepositoryFromGroup--- , Group name:" + groupName + ", repository name:" + repositoryName );
JobResult result = new JobResult();
result.setJodId(jobId);

if ( groupName == null || repositoryName == null ) {
result.setStatus(JobRequest.Status.BAD_REQUEST);
result.setResult("Group name and repository name must be provided");
jobResultEvent.fire(result);
return;
}

GroupImpl group = new GroupImpl(groupName, null);
GitRepository repo = new GitRepository(repositoryName);
groupService.removeRepository(group, repo);

result.setStatus(JobRequest.Status.SUCCESS);
jobResultEvent.fire(result);
Expand Down

0 comments on commit 5db9481

Please sign in to comment.