Creation of an API in the admin console to create workspace and projects #151
This commit is contained in:
parent
69c5ef7d43
commit
4515972023
27 changed files with 694 additions and 153 deletions
|
|
@ -17,7 +17,7 @@
|
|||
package org.chtijbug.guvnor.server.jaxrs.api;
|
||||
|
||||
|
||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
|
||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
|
|
@ -30,17 +30,17 @@ import java.util.List;
|
|||
public class UserLoginInformation {
|
||||
|
||||
|
||||
private List<PlatformProjectResponse> projects = new ArrayList<>();
|
||||
private List<PlatformProjectData> projects = new ArrayList<>();
|
||||
|
||||
private String username;
|
||||
|
||||
private List<String> roles = new ArrayList<>();
|
||||
|
||||
public List<PlatformProjectResponse> getProjects() {
|
||||
public List<PlatformProjectData> getProjects() {
|
||||
return projects;
|
||||
}
|
||||
|
||||
public void setProjects(List<PlatformProjectResponse> projects) {
|
||||
public void setProjects(List<PlatformProjectData> projects) {
|
||||
this.projects = projects;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,43 @@
|
|||
package org.chtijbug.guvnor.server.jaxrs.model;
|
||||
|
||||
public class DependencyData {
|
||||
private String groupId;
|
||||
|
||||
|
||||
private String artifactId;
|
||||
|
||||
private String version;
|
||||
|
||||
public DependencyData() {
|
||||
}
|
||||
|
||||
public DependencyData(String groupId, String artifactId, String version) {
|
||||
this.groupId = groupId;
|
||||
this.artifactId = artifactId;
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getGroupId() {
|
||||
return groupId;
|
||||
}
|
||||
|
||||
public void setGroupId(String groupId) {
|
||||
this.groupId = groupId;
|
||||
}
|
||||
|
||||
public String getArtifactId() {
|
||||
return artifactId;
|
||||
}
|
||||
|
||||
public void setArtifactId(String artifactId) {
|
||||
this.artifactId = artifactId;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package org.chtijbug.guvnor.server.jaxrs.model;
|
||||
|
||||
public class KModuleData {
|
||||
|
||||
private String kbaseToInclude;
|
||||
|
||||
private String kbase;
|
||||
|
||||
public KModuleData() {
|
||||
}
|
||||
|
||||
public String getKbaseToInclude() {
|
||||
return kbaseToInclude;
|
||||
}
|
||||
|
||||
public void setKbaseToInclude(String kbaseToInclude) {
|
||||
this.kbaseToInclude = kbaseToInclude;
|
||||
}
|
||||
|
||||
public String getKbase() {
|
||||
return kbase;
|
||||
}
|
||||
|
||||
public void setKbase(String kbase) {
|
||||
this.kbase = kbase;
|
||||
}
|
||||
}
|
||||
|
|
@ -5,18 +5,33 @@ import org.guvnor.rest.client.ProjectResponse;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PlatformProjectResponse extends ProjectResponse {
|
||||
public class PlatformProjectData extends ProjectResponse {
|
||||
|
||||
private String artifactId;
|
||||
|
||||
private String wbName;
|
||||
|
||||
private String branch;
|
||||
|
||||
private List<String> javaClasses = new ArrayList<>();
|
||||
|
||||
public PlatformProjectResponse() {
|
||||
private List<DependencyData> dependencies = new ArrayList<>();
|
||||
|
||||
private KModuleData kModule;
|
||||
|
||||
|
||||
public PlatformProjectData() {
|
||||
super();
|
||||
}
|
||||
|
||||
public String getWbName() {
|
||||
return wbName;
|
||||
}
|
||||
|
||||
public void setWbName(String wbName) {
|
||||
this.wbName = wbName;
|
||||
}
|
||||
|
||||
public List<String> getJavaClasses() {
|
||||
return javaClasses;
|
||||
}
|
||||
|
|
@ -40,4 +55,20 @@ public class PlatformProjectResponse extends ProjectResponse {
|
|||
public void setBranch(String branch) {
|
||||
this.branch = branch;
|
||||
}
|
||||
|
||||
public List<DependencyData> getDependencies() {
|
||||
return dependencies;
|
||||
}
|
||||
|
||||
public void setDependencies(List<DependencyData> dependencies) {
|
||||
this.dependencies = dependencies;
|
||||
}
|
||||
|
||||
public KModuleData getkModule() {
|
||||
return kModule;
|
||||
}
|
||||
|
||||
public void setkModule(KModuleData kModule) {
|
||||
this.kModule = kModule;
|
||||
}
|
||||
}
|
||||
|
|
@ -4,8 +4,11 @@ package org.chtijbug.kie.rest.backend;
|
|||
import org.chtijbug.guvnor.server.jaxrs.api.UserLoginInformation;
|
||||
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
|
||||
import org.chtijbug.guvnor.server.jaxrs.jaxb.Package;
|
||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
|
||||
import org.chtijbug.guvnor.server.jaxrs.model.DependencyData;
|
||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
|
||||
import org.chtijbug.kie.rest.backend.service.AssetService;
|
||||
import org.guvnor.common.services.project.model.GAV;
|
||||
import org.guvnor.common.services.project.model.POM;
|
||||
import org.guvnor.common.services.project.model.WorkspaceProject;
|
||||
import org.guvnor.common.services.project.service.WorkspaceProjectService;
|
||||
import org.guvnor.structure.organizationalunit.OrganizationalUnit;
|
||||
|
|
@ -88,7 +91,7 @@ public class PackageResource {
|
|||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Path("/detailedSpaces")
|
||||
// @RolesAllowed({REST_ROLE, REST_PROJECT_ROLE})
|
||||
public Collection<PlatformProjectResponse> getProjects() {
|
||||
public Collection<PlatformProjectData> getProjects() {
|
||||
logger.debug("-----getSpaces--- ");
|
||||
return assetService.getAllProjects();
|
||||
}
|
||||
|
|
@ -348,4 +351,88 @@ public class PackageResource {
|
|||
}
|
||||
}
|
||||
|
||||
@PUT
|
||||
@Path("{organizationalUnitName}/{projectName}/dependency")
|
||||
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN})
|
||||
public Response updateProjectDependencies(@Context HttpHeaders headers,
|
||||
@PathParam("organizationalUnitName") String organizationalUnitName,
|
||||
@PathParam("projectName") String projectName, PlatformProjectData request) {
|
||||
|
||||
try {
|
||||
|
||||
WorkspaceProject project = assetService.getProject(organizationalUnitName, projectName);
|
||||
List<DependencyData> toAdd = new ArrayList<>();
|
||||
if (project != null) {
|
||||
POM pom = project.getMainModule().getPom();
|
||||
for (DependencyData dependencyData : request.getDependencies()) {
|
||||
for (GAV element : pom.getDependencies().getGavs()) {
|
||||
if (element.getGroupId().equals(dependencyData.getGroupId())
|
||||
&& element.getArtifactId().equals(dependencyData.getArtifactId())
|
||||
&& element.getVersion().equals(dependencyData.getVersion())) {
|
||||
toAdd.add(dependencyData);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
|
||||
stringBuilder.append("\n");
|
||||
for (DependencyData dependencyData : toAdd) {
|
||||
|
||||
stringBuilder.append("<dependency>").append("\n");
|
||||
stringBuilder.append("\t").append("<groupId>").append(dependencyData.getGroupId()).append("</groupId>").append("\n");
|
||||
stringBuilder.append("\t").append("<artifactId>").append(dependencyData.getArtifactId()).append("</artifactId>").append("\n");
|
||||
stringBuilder.append("\t").append("<version>").append(dependencyData.getVersion()).append("</version>").append("\n");
|
||||
stringBuilder.append("</dependency>").append("\n").append("\n");
|
||||
}
|
||||
stringBuilder.append("\n");
|
||||
org.uberfire.backend.vfs.Path pomPath = project.getMainModule().getPomXMLPath();
|
||||
org.uberfire.java.nio.file.Path nioPath = Paths.get(pomPath.toURI());
|
||||
String pomContent = ioService.readAllString(nioPath);
|
||||
int dependInt = pomContent.indexOf("/dependencies");
|
||||
String newPomContent = pomContent.substring(0, dependInt - 1) + stringBuilder.toString() + pomContent.substring(dependInt-1, pomContent.length());
|
||||
CommentedOption commentedOption = new CommentedOption("Added from rest");
|
||||
ioService.write(nioPath, newPomContent.getBytes(), commentedOption);
|
||||
if (request.getkModule()!= null ) {
|
||||
String kbase="kbase";
|
||||
if (request.getkModule().getKbase()!=null
|
||||
&& !request.getkModule().getKbase().isEmpty()){
|
||||
kbase=request.getkModule().getKbase();
|
||||
}
|
||||
String basePackage = pom.getGav().getGroupId() + "."+projectName.replace("-", "_");
|
||||
|
||||
org.uberfire.backend.vfs.Path rootPath = project.getRootPath();
|
||||
org.uberfire.java.nio.file.Path nioRootPath = Paths.get(rootPath.toURI());
|
||||
DirectoryStream<org.uberfire.java.nio.file.Path> directoryRootStream = ioService.newDirectoryStream(nioRootPath);
|
||||
org.uberfire.java.nio.file.Path kmodulePath = assetService.findFileByName(directoryRootStream, "kmodule.xml");
|
||||
String kmoduleContent = ioService.readAllString(kmodulePath);
|
||||
/**
|
||||
* <?xml version="1.0" encoding="UTF-8"?>
|
||||
* <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
|
||||
* <kbase name="kbase-extension" packages="com.adeo.lys.rules" includes="kbase-base">
|
||||
* <ksession name="session-extension" type="stateful" default="false" clockType="realtime"/>
|
||||
* </kbase>
|
||||
* </kmodule>
|
||||
*/
|
||||
StringBuilder kModuleBuilder = new StringBuilder();
|
||||
kModuleBuilder.append("<kmodule xmlns=\"http://jboss.org/kie/6.0.0/kmodule\">").append("\n");
|
||||
kModuleBuilder.append("\t").append("<kbase name=\"").append(kbase).append("\" default=\"true\" eventProcessingMode=\"stream\" equalsBehavior=\"identity\" packages=\"").append(basePackage).append("\" includes=\"").append(request.getkModule().getKbaseToInclude()).append("\">").append("\n");
|
||||
kModuleBuilder.append("\t").append("\t").append(" <ksession name=\"session-extension\" type=\"stateful\" default=\"false\" clockType=\"realtime\"/>").append("\n");
|
||||
kModuleBuilder.append("\t").append("</kbase>").append("\n");
|
||||
kModuleBuilder.append("</kmodule>").append("\n");
|
||||
kmoduleContent=kModuleBuilder.toString();
|
||||
CommentedOption commentedOption2= new CommentedOption("Added from rest");
|
||||
ioService.write(kmodulePath, kmoduleContent.getBytes(), commentedOption2);
|
||||
logger.info("Kmodule updated");
|
||||
}
|
||||
return Response.status(Response.Status.CREATED).entity(request).build();
|
||||
} else {
|
||||
logger.info("Project {} or Organization {} not found ", projectName, organizationalUnitName);
|
||||
return Response.status(Response.Status.NOT_FOUND).entity(request).build();
|
||||
}
|
||||
} catch (RuntimeException e) {
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e).build();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package org.chtijbug.kie.rest.backend.service;
|
||||
|
||||
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
|
||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
|
||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
|
||||
import org.chtijbug.kie.rest.backend.RestTypeDefinition;
|
||||
import org.guvnor.common.services.project.model.Module;
|
||||
import org.guvnor.common.services.project.model.WorkspaceProject;
|
||||
|
|
@ -62,8 +62,8 @@ public class AssetService {
|
|||
@Inject
|
||||
private WorkspaceProjectService workspaceProjectService;
|
||||
|
||||
public List<PlatformProjectResponse> getAllProjects() {
|
||||
final List<PlatformProjectResponse> spaces = new ArrayList<>();
|
||||
public List<PlatformProjectData> getAllProjects() {
|
||||
final List<PlatformProjectData> spaces = new ArrayList<>();
|
||||
for (OrganizationalUnit ou : organizationalUnitService.getOrganizationalUnits()) {
|
||||
spaces.addAll(getSpace(ou));
|
||||
}
|
||||
|
|
@ -71,9 +71,9 @@ public class AssetService {
|
|||
return spaces;
|
||||
}
|
||||
|
||||
private List<PlatformProjectResponse> getSpace(OrganizationalUnit ou) {
|
||||
private List<PlatformProjectData> getSpace(OrganizationalUnit ou) {
|
||||
|
||||
final List<PlatformProjectResponse> repoNames = new ArrayList<>();
|
||||
final List<PlatformProjectData> repoNames = new ArrayList<>();
|
||||
try {
|
||||
for (WorkspaceProject workspaceProject : workspaceProjectService.getAllWorkspaceProjects(ou)) {
|
||||
for (Branch branch : workspaceProject.getRepository().getBranches()) {
|
||||
|
|
@ -89,11 +89,14 @@ public class AssetService {
|
|||
|
||||
|
||||
|
||||
private PlatformProjectResponse getProjectResponse(WorkspaceProject workspaceProject, Branch branch) {
|
||||
final PlatformProjectResponse projectResponse = new PlatformProjectResponse();
|
||||
private PlatformProjectData getProjectResponse(WorkspaceProject workspaceProject, Branch branch) {
|
||||
final PlatformProjectData projectResponse = new PlatformProjectData();
|
||||
projectResponse.setName(workspaceProject.getName());
|
||||
projectResponse.setSpaceName(workspaceProject.getOrganizationalUnit().getName());
|
||||
|
||||
String wbName=System.getProperty("org.chtijbug.wbname");
|
||||
if (wbName==null || wbName.length()==0)
|
||||
wbName="demo";
|
||||
projectResponse.setWbName(wbName);
|
||||
if (workspaceProject.getMainModule() != null) {
|
||||
Module kmodule = workspaceProject.getMainModule();
|
||||
org.uberfire.backend.vfs.Path importVFPath = PathFactory.newPath("project.imports", branch.getPath().toURI() + "project.imports");
|
||||
|
|
@ -220,6 +223,22 @@ public class AssetService {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
public org.uberfire.java.nio.file.Path findFileByName(DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream, String assetName) {
|
||||
for (org.uberfire.java.nio.file.Path elementPath : directoryStream) {
|
||||
if (org.uberfire.java.nio.file.Files.isDirectory(elementPath)) {
|
||||
DirectoryStream<org.uberfire.java.nio.file.Path> adirectoryStream = ioService.newDirectoryStream(elementPath);
|
||||
org.uberfire.java.nio.file.Path foundElementPath = findFileByName(adirectoryStream, assetName);
|
||||
if (foundElementPath != null) {
|
||||
return foundElementPath;
|
||||
}
|
||||
} else {
|
||||
if (elementPath.getFileName().toString().contains(assetName)) {
|
||||
return elementPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public org.uberfire.java.nio.file.Path getRuleDirectory(DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream, String assetName) {
|
||||
for (org.uberfire.java.nio.file.Path elementPath : directoryStream) {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# Start Wildfly with the given arguments.
|
||||
echo "Running Drools Workbench on JBoss Wildfly..."
|
||||
#export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=50505,suspend=y,server=y"
|
||||
export JAVA_OPTS=" -Djava.net.preferIPv4Stack=true -Dorg.uberfire.metadata.index.dir=/home/lucene -Dorg.uberfire.nio.git.daemon.host=0.0.0.0 -Dorg.uberfire.nio.git.ssh.host=0.0.0.0 -Dorg.guvnor.m2repo.dir=/m2_kiewb/repository -DM2_HOME=/m2_kiewb/repository -Dorg.uberfire.nio.git.dir=/home/niodir -Dorg.uberfire.nio.git.dirname=gitBase -Dorg.appformer.m2repo.url=http://localhost:8080/kie-wb/maven2 -Dkie.maven.settings.custom=/m2_kiewb/settings.xml -Dfile.encoding=UTF-8 -Duser.language=fr -Duser.country=FR -Dorg.uberfire.ext.security.management.api.userManagementServices=PymmaKieSecurityService $PYMMA_OPTS"
|
||||
export JAVA_OPTS=" -Dorg.kie.workbench.profile=PLANNER_AND_RULES -Djava.net.preferIPv4Stack=true -Dorg.uberfire.metadata.index.dir=/home/lucene -Dorg.uberfire.nio.git.daemon.host=0.0.0.0 -Dorg.uberfire.nio.git.ssh.host=0.0.0.0 -Dorg.guvnor.m2repo.dir=/m2_kiewb/repository -DM2_HOME=/m2_kiewb/repository -Dorg.uberfire.nio.git.dir=/home/niodir -Dorg.uberfire.nio.git.dirname=gitBase -Dorg.appformer.m2repo.url=http://localhost:8080/kie-wb/maven2 -Dkie.maven.settings.custom=/m2_kiewb/settings.xml -Dfile.encoding=UTF-8 -Duser.language=fr -Duser.country=FR -Dorg.uberfire.ext.security.management.api.userManagementServices=PymmaKieSecurityService $PYMMA_OPTS"
|
||||
exec ./standalone.sh -b $JBOSS_BIND_ADDRESS -c $KIE_SERVER_PROFILE.xml
|
||||
exit $?
|
||||
|
||||
|
|
|
|||
Loading…
Add table
editor.link_modal.header
Reference in a new issue