update asset source #82
null pointer when using non existing workspace or project in updateAsset Source #81
This commit is contained in:
parent
7feaeee7d8
commit
e3375f4216
5 changed files with 491 additions and 244 deletions
|
|
@ -36,7 +36,14 @@ public class DababaseContentInit {
|
||||||
|
|
||||||
User adminUser = userRepository.findByLogin("admin");
|
User adminUser = userRepository.findByLogin("admin");
|
||||||
if (adminUser==null){
|
if (adminUser==null){
|
||||||
|
/**
|
||||||
|
* admin The administrator
|
||||||
|
* analyst The analyst
|
||||||
|
* developer The developer
|
||||||
|
* manager The manager
|
||||||
|
* user The end user
|
||||||
|
* kiemgmt KIE management user
|
||||||
|
*/
|
||||||
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"process-admin"));
|
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"process-admin"));
|
||||||
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"manager"));
|
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"manager"));
|
||||||
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"admin"));
|
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"admin"));
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ import com.mongodb.client.MongoCollection;
|
||||||
import com.mongodb.client.MongoDatabase;
|
import com.mongodb.client.MongoDatabase;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.bson.codecs.configuration.CodecRegistry;
|
import org.bson.codecs.configuration.CodecRegistry;
|
||||||
|
import org.bson.types.ObjectId;
|
||||||
import org.jboss.errai.security.shared.api.Group;
|
import org.jboss.errai.security.shared.api.Group;
|
||||||
import org.jboss.errai.security.shared.api.GroupImpl;
|
import org.jboss.errai.security.shared.api.GroupImpl;
|
||||||
import org.jboss.errai.security.shared.api.Role;
|
import org.jboss.errai.security.shared.api.Role;
|
||||||
|
|
@ -102,11 +103,11 @@ public class KiePlatformUserManager implements UserManager, ContextualManager {
|
||||||
User user = fillUser(userName, document);
|
User user = fillUser(userName, document);
|
||||||
users.add(user);
|
users.add(user);
|
||||||
});
|
});
|
||||||
boolean hasNextPage=true;
|
boolean hasNextPage = true;
|
||||||
if ((request.getPageSize() * (request.getPage())>totalNumber)){
|
if ((request.getPageSize() * (request.getPage()) > totalNumber)) {
|
||||||
hasNextPage=false;
|
hasNextPage = false;
|
||||||
}
|
}
|
||||||
SearchResponse<User> response = new SearchResponseImpl(users, request.getPage(),request.getPageSize(),Long.valueOf(totalNumber).intValue(), hasNextPage);
|
SearchResponse<User> response = new SearchResponseImpl(users, request.getPage(), request.getPageSize(), Long.valueOf(totalNumber).intValue(), hasNextPage);
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -119,10 +120,10 @@ public class KiePlatformUserManager implements UserManager, ContextualManager {
|
||||||
User user = fillUser(userName, document);
|
User user = fillUser(userName, document);
|
||||||
users.add(user);
|
users.add(user);
|
||||||
});
|
});
|
||||||
if (users.size()==1){
|
if (users.size() == 1) {
|
||||||
return users.get(0);
|
return users.get(0);
|
||||||
}else {
|
} else {
|
||||||
throw new SecurityManagementException("Unknown identifier "+identifier);
|
return new UserImpl(identifier);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -146,30 +147,83 @@ public class KiePlatformUserManager implements UserManager, ContextualManager {
|
||||||
groups.set((ArrayList) document.get("userGroups"));
|
groups.set((ArrayList) document.get("userGroups"));
|
||||||
List<Role> roleList = new ArrayList<>();
|
List<Role> roleList = new ArrayList<>();
|
||||||
for (DBRef dbRef : roles.get()) {
|
for (DBRef dbRef : roles.get()) {
|
||||||
Document roleDocument = Utils.getDocumentFromRef(dbRef,database);
|
Document roleDocument = Utils.getDocumentFromRef(dbRef, database);
|
||||||
Role role = new RoleImpl(roleDocument.getString("name"));
|
Role role = new RoleImpl(roleDocument.getString("name"));
|
||||||
roleList.add(role);
|
roleList.add(role);
|
||||||
}
|
}
|
||||||
List<Group> groupList = new ArrayList<>();
|
List<Group> groupList = new ArrayList<>();
|
||||||
for (DBRef dbRef : groups.get()) {
|
for (DBRef dbRef : groups.get()) {
|
||||||
Document groupDocument = Utils.getDocumentFromRef(dbRef,database);
|
Document groupDocument = Utils.getDocumentFromRef(dbRef, database);
|
||||||
Group group = new GroupImpl(groupDocument.getString("name"));
|
Group group = new GroupImpl(groupDocument.getString("name"));
|
||||||
groupList.add(group);
|
groupList.add(group);
|
||||||
}
|
}
|
||||||
User user = new UserImpl(userName,roleList,groupList);
|
User user = new UserImpl(userName, roleList, groupList);
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public User create(User entity) throws SecurityManagementException {
|
public User create(User entity) throws SecurityManagementException {
|
||||||
|
save(entity, true);
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public User update(User entity) throws SecurityManagementException {
|
public User update(User entity) throws SecurityManagementException {
|
||||||
|
save(entity, false);
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void save(User entity, boolean isCreated) throws SecurityManagementException {
|
||||||
|
MongoCollection<Document> userCollection = database.getCollection("user");
|
||||||
|
MongoCollection<Document> userGroupsCollection = database.getCollection("userGroups");
|
||||||
|
MongoCollection<Document> userRolesCollection = database.getCollection("userRoles");
|
||||||
|
AtomicReference<ArrayList<DBRef>> roles = new AtomicReference<>(new ArrayList<>());
|
||||||
|
AtomicReference<ArrayList<DBRef>> groups = new AtomicReference<>(new ArrayList<>());
|
||||||
|
List<Document> users = new ArrayList<>();
|
||||||
|
if (isCreated) {
|
||||||
|
userCollection.find(eq("login", entity.getIdentifier())).forEach((Block<? super Document>) document -> {
|
||||||
|
throw new SecurityManagementException("Existing identifier " + entity.getIdentifier());
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
userCollection.find(eq("login", entity.getIdentifier())).forEach((Block<? super Document>) document -> {
|
||||||
|
users.add(document);
|
||||||
|
});
|
||||||
|
if (users.size() == 0) {
|
||||||
|
throw new SecurityManagementException("unknown identifier " + entity.getIdentifier());
|
||||||
|
}
|
||||||
|
if (users.size() > 1) {
|
||||||
|
throw new SecurityManagementException("existing multiple times with identifier " + entity.getIdentifier());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (Group group : entity.getGroups()) {
|
||||||
|
|
||||||
|
userGroupsCollection.find(eq("name", group.getName())).forEach((Block<? super Document>) document -> {
|
||||||
|
DBRef dbRef = new DBRef("userGroups", document.get("_id"));
|
||||||
|
groups.get().add(dbRef);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Role role : entity.getRoles()) {
|
||||||
|
userRolesCollection.find(eq("name", role.getName())).forEach((Block<? super Document>) document -> {
|
||||||
|
DBRef dbRef = new DBRef("userRoles", document.get("_id"));
|
||||||
|
roles.get().add(dbRef);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Document userDocument = new Document("_id", new ObjectId());
|
||||||
|
userDocument.append("login", entity.getIdentifier());
|
||||||
|
userDocument.append("password", entity.getIdentifier());
|
||||||
|
userDocument.append("userRoles", roles);
|
||||||
|
userDocument.append("userGroups", groups);
|
||||||
|
if (isCreated) {
|
||||||
|
userCollection.insertOne(userDocument);
|
||||||
|
} else {
|
||||||
|
userCollection.replaceOne(eq("login", entity.getIdentifier()), userDocument);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(String... identifiers) throws SecurityManagementException {
|
public void delete(String... identifiers) throws SecurityManagementException {
|
||||||
|
|
||||||
|
|
@ -208,6 +262,12 @@ public class KiePlatformUserManager implements UserManager, ContextualManager {
|
||||||
@Override
|
@Override
|
||||||
public void changePassword(String username,
|
public void changePassword(String username,
|
||||||
String newPassword) throws SecurityManagementException {
|
String newPassword) throws SecurityManagementException {
|
||||||
|
MongoCollection<Document> userCollection = database.getCollection("user");
|
||||||
|
|
||||||
|
userCollection.find(eq("login", username)).forEach((Block<? super Document>) document -> {
|
||||||
|
document.append("password", newPassword);
|
||||||
|
userCollection.replaceOne(eq("login", username), document);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,21 +5,16 @@ import org.chtijbug.guvnor.server.jaxrs.api.UserLoginInformation;
|
||||||
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
|
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
|
||||||
import org.chtijbug.guvnor.server.jaxrs.jaxb.Package;
|
import org.chtijbug.guvnor.server.jaxrs.jaxb.Package;
|
||||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
|
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
|
||||||
import org.guvnor.common.services.project.model.Module;
|
import org.chtijbug.kie.rest.backend.service.AssetService;
|
||||||
import org.guvnor.common.services.project.model.WorkspaceProject;
|
import org.guvnor.common.services.project.model.WorkspaceProject;
|
||||||
import org.guvnor.common.services.project.service.WorkspaceProjectService;
|
import org.guvnor.common.services.project.service.WorkspaceProjectService;
|
||||||
import org.guvnor.structure.organizationalunit.OrganizationalUnit;
|
import org.guvnor.structure.organizationalunit.OrganizationalUnit;
|
||||||
import org.guvnor.structure.organizationalunit.OrganizationalUnitService;
|
import org.guvnor.structure.organizationalunit.OrganizationalUnitService;
|
||||||
import org.guvnor.structure.repositories.Branch;
|
import org.guvnor.structure.repositories.Branch;
|
||||||
import org.guvnor.structure.repositories.PublicURI;
|
|
||||||
import org.guvnor.structure.repositories.Repository;
|
import org.guvnor.structure.repositories.Repository;
|
||||||
import org.guvnor.structure.repositories.RepositoryService;
|
import org.guvnor.structure.repositories.RepositoryService;
|
||||||
import org.kie.workbench.common.screens.datamodeller.model.EditorModelContent;
|
|
||||||
import org.kie.workbench.common.screens.datamodeller.service.DataModelerService;
|
import org.kie.workbench.common.screens.datamodeller.service.DataModelerService;
|
||||||
import org.kie.workbench.common.services.datamodeller.core.DataObject;
|
|
||||||
import org.kie.workbench.common.services.datamodeller.core.impl.DataModelImpl;
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.uberfire.backend.vfs.PathFactory;
|
|
||||||
import org.uberfire.io.IOService;
|
import org.uberfire.io.IOService;
|
||||||
import org.uberfire.java.nio.base.options.CommentedOption;
|
import org.uberfire.java.nio.base.options.CommentedOption;
|
||||||
import org.uberfire.java.nio.file.DirectoryStream;
|
import org.uberfire.java.nio.file.DirectoryStream;
|
||||||
|
|
@ -29,15 +24,13 @@ import javax.enterprise.context.ApplicationScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.*;
|
||||||
import javax.ws.rs.core.Context;
|
import javax.ws.rs.core.*;
|
||||||
import javax.ws.rs.core.MediaType;
|
|
||||||
import javax.ws.rs.core.SecurityContext;
|
|
||||||
import javax.ws.rs.core.UriInfo;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
import java.nio.file.FileAlreadyExistsException;
|
import java.nio.file.FileAlreadyExistsException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
|
||||||
@Path("/chtijbug")
|
@Path("/chtijbug")
|
||||||
@Named
|
@Named
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
|
|
@ -54,28 +47,25 @@ public class PackageResource {
|
||||||
@Inject
|
@Inject
|
||||||
@Named("ioStrategy")
|
@Named("ioStrategy")
|
||||||
private IOService ioService;
|
private IOService ioService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private OrganizationalUnitService organizationalUnitService;
|
private OrganizationalUnitService organizationalUnitService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private RepositoryService repositoryService;
|
private RepositoryService repositoryService;
|
||||||
@Inject
|
@Inject
|
||||||
private WorkspaceProjectService projectService;
|
private WorkspaceProjectService projectService;
|
||||||
|
|
||||||
private RestTypeDefinition dotFileFilter = new RestTypeDefinition();
|
private RestTypeDefinition dotFileFilter = new RestTypeDefinition();
|
||||||
@Inject
|
@Inject
|
||||||
private DataModelerService dataModelerService;
|
private DataModelerService dataModelerService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private WorkspaceProjectService workspaceProjectService;
|
private WorkspaceProjectService workspaceProjectService;
|
||||||
|
@Inject
|
||||||
|
private AssetService assetService;
|
||||||
|
|
||||||
|
|
||||||
public PackageResource() {
|
public PackageResource() {
|
||||||
System.out.println("coucou");
|
System.out.println("coucou");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Path("/login")
|
@Path("/login")
|
||||||
|
|
@ -89,87 +79,18 @@ public class PackageResource {
|
||||||
userLoginInformation.getRoles().add(role);
|
userLoginInformation.getRoles().add(role);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
userLoginInformation.setProjects(getAllProjects());
|
userLoginInformation.setProjects(assetService.getAllProjects());
|
||||||
return userLoginInformation;
|
return userLoginInformation;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Path("/detailedSpaces")
|
@Path("/detailedSpaces")
|
||||||
// @RolesAllowed({REST_ROLE, REST_PROJECT_ROLE})
|
// @RolesAllowed({REST_ROLE, REST_PROJECT_ROLE})
|
||||||
public Collection<PlatformProjectResponse> getProjects() {
|
public Collection<PlatformProjectResponse> getProjects() {
|
||||||
logger.debug("-----getSpaces--- ");
|
logger.debug("-----getSpaces--- ");
|
||||||
|
return assetService.getAllProjects();
|
||||||
|
|
||||||
return getAllProjects();
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<PlatformProjectResponse> getAllProjects() {
|
|
||||||
final List<PlatformProjectResponse> spaces = new ArrayList<>();
|
|
||||||
for (OrganizationalUnit ou : organizationalUnitService.getOrganizationalUnits()) {
|
|
||||||
spaces.addAll(getSpace(ou));
|
|
||||||
}
|
|
||||||
|
|
||||||
return spaces;
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<PlatformProjectResponse> getSpace(OrganizationalUnit ou) {
|
|
||||||
|
|
||||||
final List<PlatformProjectResponse> repoNames = new ArrayList<>();
|
|
||||||
for (WorkspaceProject workspaceProject : workspaceProjectService.getAllWorkspaceProjects(ou)) {
|
|
||||||
for (Branch branch : workspaceProject.getRepository().getBranches()){
|
|
||||||
repoNames.add(getProjectResponse(workspaceProject,branch));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return repoNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toto() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private PlatformProjectResponse getProjectResponse(WorkspaceProject workspaceProject,Branch branch) {
|
|
||||||
final PlatformProjectResponse projectResponse = new PlatformProjectResponse();
|
|
||||||
projectResponse.setName(workspaceProject.getName());
|
|
||||||
projectResponse.setSpaceName(workspaceProject.getOrganizationalUnit().getName());
|
|
||||||
|
|
||||||
if (workspaceProject.getMainModule() != null) {
|
|
||||||
Module kmodule = workspaceProject.getMainModule();
|
|
||||||
org.uberfire.backend.vfs.Path importVFPath = PathFactory.newPath("project.imports", branch.getPath().toURI()+"project.imports");
|
|
||||||
EditorModelContent econtent = dataModelerService.loadContent(importVFPath);
|
|
||||||
//EditorModelContent econtent = dataModelerService.loadContent(((KieModule) kmodule).getImportsPath());
|
|
||||||
DataModelImpl econtentDataModel = (DataModelImpl) econtent.getDataModel();
|
|
||||||
List<DataObject> dataObjects = econtentDataModel.getExternalClasses();
|
|
||||||
for (DataObject dataObject : dataObjects) {
|
|
||||||
System.out.println(dataObject.toString());
|
|
||||||
String className = "class=" + dataObject.getPackageName() + "." + dataObject.getName();
|
|
||||||
projectResponse.getJavaClasses().add(className);
|
|
||||||
|
|
||||||
}
|
|
||||||
projectResponse.setArtifactId(workspaceProject.getMainModule().getPom().getGav().getArtifactId());
|
|
||||||
projectResponse.setGroupId(workspaceProject.getMainModule().getPom().getGav().getGroupId());
|
|
||||||
projectResponse.setVersion(workspaceProject.getMainModule().getPom().getGav().getVersion());
|
|
||||||
projectResponse.setDescription(workspaceProject.getMainModule().getPom().getDescription());
|
|
||||||
projectResponse.setBranch(branch.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
final ArrayList<org.guvnor.rest.client.PublicURI> publicURIs = new ArrayList<>();
|
|
||||||
|
|
||||||
for (PublicURI publicURI : workspaceProject.getRepository().getPublicURIs()) {
|
|
||||||
final org.guvnor.rest.client.PublicURI responseURI = new org.guvnor.rest.client.PublicURI();
|
|
||||||
responseURI.setProtocol(publicURI.getProtocol());
|
|
||||||
responseURI.setUri(publicURI.getURI());
|
|
||||||
publicURIs.add(responseURI);
|
|
||||||
}
|
|
||||||
|
|
||||||
projectResponse.setPublicURIs(publicURIs);
|
|
||||||
return projectResponse;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
|
|
@ -206,12 +127,12 @@ public class PackageResource {
|
||||||
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName) {
|
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName) {
|
||||||
try {
|
try {
|
||||||
List<Asset> contentList = new LinkedList<>();
|
List<Asset> contentList = new LinkedList<>();
|
||||||
WorkspaceProject project = getProject(organizationalUnitName, projectName);
|
WorkspaceProject project = assetService.getProject(organizationalUnitName, projectName);
|
||||||
if (project != null) {
|
if (project != null) {
|
||||||
org.uberfire.backend.vfs.Path rootPath = project.getRootPath();
|
org.uberfire.backend.vfs.Path rootPath = project.getRootPath();
|
||||||
org.uberfire.java.nio.file.Path nioPath = Paths.get(rootPath.toURI());
|
org.uberfire.java.nio.file.Path nioPath = Paths.get(rootPath.toURI());
|
||||||
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream = ioService.newDirectoryStream(nioPath);
|
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream = ioService.newDirectoryStream(nioPath);
|
||||||
getContent(directoryStream, contentList);
|
assetService.getContent(directoryStream, contentList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -221,118 +142,6 @@ public class PackageResource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private WorkspaceProject getProject(String organizationalUnitName, String projectName) {
|
|
||||||
OrganizationalUnit organizationalUnit = organizationalUnitService.getOrganizationalUnit(organizationalUnitName);
|
|
||||||
Collection<WorkspaceProject> workspaceProjects = projectService.getAllWorkspaceProjects(organizationalUnit);
|
|
||||||
|
|
||||||
for (WorkspaceProject project : workspaceProjects) {
|
|
||||||
if (project.getName().equals(projectName)) {
|
|
||||||
return project;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void getContentSource(DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream, Asset asset, List<org.uberfire.java.nio.file.Path> pathLinkedList) {
|
|
||||||
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);
|
|
||||||
getContentSource(adirectoryStream, asset, pathLinkedList);
|
|
||||||
} else {
|
|
||||||
if (dotFileFilter.accept(elementPath.getFileName().toString())) {
|
|
||||||
Map<String, Object> listAttributes = ioService.readAttributes(elementPath);
|
|
||||||
if (asset.getTitle().equals(elementPath.getFileName().toString())) {
|
|
||||||
pathLinkedList.add(elementPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void getContent(DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream, Collection<Asset> contentList) {
|
|
||||||
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);
|
|
||||||
getContent(adirectoryStream, contentList);
|
|
||||||
} else {
|
|
||||||
if (dotFileFilter.accept(elementPath.getFileName().toString())) {
|
|
||||||
Map<String, Object> listAttributes = ioService.readAttributes(elementPath);
|
|
||||||
Asset asset = new Asset();
|
|
||||||
asset.setTitle(elementPath.getFileName().toString());
|
|
||||||
asset.setDirectory(elementPath.getParent().toString());
|
|
||||||
asset.setRefLink(elementPath.getFileName().toUri());
|
|
||||||
contentList.add(asset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getContentSource(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);
|
|
||||||
String result = getContentSource(adirectoryStream, assetName);
|
|
||||||
if (result != null && result.length() > 0) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if (elementPath.getFileName().toString().startsWith(".") == false) {
|
|
||||||
if (elementPath.getFileName().toString().equals(assetName)) {
|
|
||||||
return ioService.readAllString(elementPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private org.uberfire.java.nio.file.Path getFileElementPath(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 = getFileElementPath(adirectoryStream, assetName);
|
|
||||||
if (foundElementPath != null) {
|
|
||||||
return foundElementPath;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dotFileFilter.accept(elementPath.getFileName().toString())
|
|
||||||
&& elementPath.getFileName().toString().contains(assetName)) {
|
|
||||||
return elementPath;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private org.uberfire.java.nio.file.Path getDirectoryElementPath(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=null;
|
|
||||||
try {
|
|
||||||
adirectoryStream = ioService.newDirectoryStream(elementPath);
|
|
||||||
if (elementPath.getFileName().toString().equals(assetName)) {
|
|
||||||
return elementPath;
|
|
||||||
}
|
|
||||||
org.uberfire.java.nio.file.Path foundElementPath = getDirectoryElementPath(adirectoryStream, assetName);
|
|
||||||
if (foundElementPath != null) {
|
|
||||||
return foundElementPath;
|
|
||||||
}
|
|
||||||
}catch (Exception e){
|
|
||||||
|
|
||||||
}finally {
|
|
||||||
if (adirectoryStream!= null){
|
|
||||||
adirectoryStream.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("{organizationalUnitName}/{projectName}/assets/{assetName}")
|
@Path("{organizationalUnitName}/{projectName}/assets/{assetName}")
|
||||||
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
|
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
|
||||||
|
|
@ -340,13 +149,13 @@ public class PackageResource {
|
||||||
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName, @PathParam("assetName") String assetName) {
|
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName, @PathParam("assetName") String assetName) {
|
||||||
List<Asset> resultList = new LinkedList<>();
|
List<Asset> resultList = new LinkedList<>();
|
||||||
try {
|
try {
|
||||||
WorkspaceProject project = getProject(organizationalUnitName, projectName);
|
WorkspaceProject project = assetService.getProject(organizationalUnitName, projectName);
|
||||||
if (project != null) {
|
if (project != null) {
|
||||||
List<Asset> contentList = new LinkedList<>();
|
List<Asset> contentList = new LinkedList<>();
|
||||||
org.uberfire.backend.vfs.Path rootPath = project.getRootPath();
|
org.uberfire.backend.vfs.Path rootPath = project.getRootPath();
|
||||||
org.uberfire.java.nio.file.Path nioPath = Paths.get(rootPath.toURI());
|
org.uberfire.java.nio.file.Path nioPath = Paths.get(rootPath.toURI());
|
||||||
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream = ioService.newDirectoryStream(nioPath);
|
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream = ioService.newDirectoryStream(nioPath);
|
||||||
getContent(directoryStream, contentList);
|
assetService.getContent(directoryStream, contentList);
|
||||||
for (Asset asset : contentList) {
|
for (Asset asset : contentList) {
|
||||||
if (asset.getTitle().equals(assetName)) {
|
if (asset.getTitle().equals(assetName)) {
|
||||||
resultList.add(asset);
|
resultList.add(asset);
|
||||||
|
|
@ -368,12 +177,12 @@ public class PackageResource {
|
||||||
List<Asset> resultList = new LinkedList<>();
|
List<Asset> resultList = new LinkedList<>();
|
||||||
String result = "";
|
String result = "";
|
||||||
try {
|
try {
|
||||||
WorkspaceProject project = getProject(organizationalUnitName, projectName);
|
WorkspaceProject project = assetService.getProject(organizationalUnitName, projectName);
|
||||||
if (project != null) {
|
if (project != null) {
|
||||||
org.uberfire.backend.vfs.Path rootPath = project.getRootPath();
|
org.uberfire.backend.vfs.Path rootPath = project.getRootPath();
|
||||||
org.uberfire.java.nio.file.Path nioPath = Paths.get(rootPath.toURI());
|
org.uberfire.java.nio.file.Path nioPath = Paths.get(rootPath.toURI());
|
||||||
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream = ioService.newDirectoryStream(nioPath);
|
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream = ioService.newDirectoryStream(nioPath);
|
||||||
result = getContentSource(directoryStream, assetName);
|
result = assetService.getContentSource(directoryStream, assetName);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
|
|
@ -385,10 +194,10 @@ public class PackageResource {
|
||||||
@PUT
|
@PUT
|
||||||
@Path("{organizationalUnitName}/{projectName}/asset/{assetName}")
|
@Path("{organizationalUnitName}/{projectName}/asset/{assetName}")
|
||||||
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
|
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
|
||||||
public void updateAssetFromJAXB(
|
public Response updateAssetFromJAXB(@Context HttpHeaders headers,
|
||||||
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName,
|
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName,
|
||||||
@PathParam("assetName") String assetName, String asset) {
|
@PathParam("assetName") String assetName, String asset) {
|
||||||
updateAssetContent(organizationalUnitName, projectName, assetName, asset);
|
return updateAssetContent(headers, organizationalUnitName, projectName, assetName, asset, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
|
|
@ -398,15 +207,15 @@ public class PackageResource {
|
||||||
public Asset createAssetFromSourceAndJAXB(
|
public Asset createAssetFromSourceAndJAXB(
|
||||||
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName, Asset asset) {
|
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName, Asset asset) {
|
||||||
try {
|
try {
|
||||||
WorkspaceProject project = getProject(organizationalUnitName, projectName);
|
WorkspaceProject project = assetService.getProject(organizationalUnitName, projectName);
|
||||||
if (project!= null) {
|
if (project != null) {
|
||||||
org.uberfire.backend.vfs.Path rootPath = project.getRootPath();
|
org.uberfire.backend.vfs.Path rootPath = project.getRootPath();
|
||||||
org.uberfire.java.nio.file.Path nioPathDirectory = Paths.get(rootPath.toURI());
|
org.uberfire.java.nio.file.Path nioPathDirectory = Paths.get(rootPath.toURI());
|
||||||
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream=null;
|
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream = null;
|
||||||
try {
|
try {
|
||||||
directoryStream = ioService.newDirectoryStream(nioPathDirectory);
|
directoryStream = ioService.newDirectoryStream(nioPathDirectory);
|
||||||
org.uberfire.java.nio.file.Path directoryWhereCreateAsset = getDirectoryElementPath(directoryStream, asset.getTitle());
|
org.uberfire.java.nio.file.Path directoryWhereCreateAsset = assetService.getDirectoryElementPath(directoryStream, asset.getTitle());
|
||||||
if (directoryWhereCreateAsset!= null) {
|
if (directoryWhereCreateAsset != null) {
|
||||||
final org.uberfire.java.nio.file.Path nioPath = Paths.get(directoryWhereCreateAsset.toUri());
|
final org.uberfire.java.nio.file.Path nioPath = Paths.get(directoryWhereCreateAsset.toUri());
|
||||||
if (ioService.exists(nioPath)) {
|
if (ioService.exists(nioPath)) {
|
||||||
throw new FileAlreadyExistsException(nioPath.toString());
|
throw new FileAlreadyExistsException(nioPath.toString());
|
||||||
|
|
@ -414,10 +223,10 @@ public class PackageResource {
|
||||||
CommentedOption commentedOption = new CommentedOption(asset.getComment());
|
CommentedOption commentedOption = new CommentedOption(asset.getComment());
|
||||||
ioService.write(nioPath, asset.getContent().getBytes(), commentedOption);
|
ioService.write(nioPath, asset.getContent().getBytes(), commentedOption);
|
||||||
}
|
}
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
|
|
||||||
}finally {
|
} finally {
|
||||||
if (directoryStream!= null){
|
if (directoryStream != null) {
|
||||||
directoryStream.close();
|
directoryStream.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -433,14 +242,28 @@ public class PackageResource {
|
||||||
@POST
|
@POST
|
||||||
@Path("{organizationalUnitName}/{projectName}/asset/{assetName}/source")
|
@Path("{organizationalUnitName}/{projectName}/asset/{assetName}/source")
|
||||||
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN})
|
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN})
|
||||||
public void updateAssetSource(
|
public Response createAssetSource(@Context HttpHeaders headers,
|
||||||
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName, @PathParam("assetName") String assetName, String content) {
|
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName, @PathParam("assetName") String assetName, String content) {
|
||||||
updateAssetContent(organizationalUnitName, projectName, assetName, content);
|
|
||||||
|
return updateAssetContent(headers, organizationalUnitName, projectName, assetName, content, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateAssetContent(String organizationalUnitName, String projectName, String assetName, String content) {
|
@PUT
|
||||||
try {
|
@Path("{organizationalUnitName}/{projectName}/asset/{assetName}/source")
|
||||||
WorkspaceProject project = getProject(organizationalUnitName, projectName);
|
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN})
|
||||||
|
public Response updateAssetSource(@Context HttpHeaders headers,
|
||||||
|
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName, @PathParam("assetName") String assetName, String content) {
|
||||||
|
|
||||||
|
return updateAssetContent(headers, organizationalUnitName, projectName, assetName, content, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DELETE
|
||||||
|
@Path("{organizationalUnitName}/{projectName}/asset/{assetName}/source")
|
||||||
|
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN})
|
||||||
|
public Response deleteAssetSource(@Context HttpHeaders headers,
|
||||||
|
@PathParam("organizationalUnitName") String organizationalUnitName, @PathParam("projectName") String projectName, @PathParam("assetName") String assetName, String content) {
|
||||||
|
|
||||||
|
WorkspaceProject project = assetService.getProject(organizationalUnitName, projectName);
|
||||||
|
|
||||||
if (project != null) {
|
if (project != null) {
|
||||||
// Optional<Branch> rr = project.getRepository().getBranch("ee");
|
// Optional<Branch> rr = project.getRepository().getBranch("ee");
|
||||||
|
|
@ -449,23 +272,79 @@ public class PackageResource {
|
||||||
org.uberfire.java.nio.file.Path nioPath = Paths.get(rootPath.toURI());
|
org.uberfire.java.nio.file.Path nioPath = Paths.get(rootPath.toURI());
|
||||||
|
|
||||||
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream = ioService.newDirectoryStream(nioPath);
|
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream = ioService.newDirectoryStream(nioPath);
|
||||||
org.uberfire.java.nio.file.Path elementToUpdate = getFileElementPath(directoryStream, assetName);
|
org.uberfire.java.nio.file.Path elementToDelete = assetService.getFileElementPath(directoryStream, assetName);
|
||||||
if (elementToUpdate != null) {
|
if (elementToDelete == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).build();
|
||||||
|
} else {
|
||||||
|
|
||||||
|
File fileToUpdate = elementToDelete.toFile();
|
||||||
|
if (fileToUpdate.isFile()) {
|
||||||
|
content = content.replace("\"", "");
|
||||||
|
ioService.delete(elementToDelete);
|
||||||
|
logger.debug("Returning OK response with content '{}'", content);
|
||||||
|
return Response.status(Response.Status.NO_CONTENT).build();
|
||||||
|
} else {
|
||||||
|
return Response.status(Response.Status.NOT_MODIFIED).entity("Asset is not a file").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.info("Project {} or Organization {} not found ", projectName, organizationalUnitName);
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Project or Organization not found").build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private Response updateAssetContent(HttpHeaders headers, String organizationalUnitName, String projectName, String assetName, String content, boolean isCreate) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
WorkspaceProject project = assetService.getProject(organizationalUnitName, projectName);
|
||||||
|
|
||||||
|
if (project != null) {
|
||||||
|
// Optional<Branch> rr = project.getRepository().getBranch("ee");
|
||||||
|
// org.uberfire.backend.vfs.Path tata = rr.get().getPath();
|
||||||
|
org.uberfire.backend.vfs.Path rootPath = project.getRootPath();
|
||||||
|
org.uberfire.java.nio.file.Path nioPath = Paths.get(rootPath.toURI());
|
||||||
|
|
||||||
|
DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream = ioService.newDirectoryStream(nioPath);
|
||||||
|
org.uberfire.java.nio.file.Path elementToUpdate = assetService.getFileElementPath(directoryStream, assetName);
|
||||||
|
if (elementToUpdate != null && isCreate) {
|
||||||
|
return Response.status(Response.Status.CONFLICT).build();
|
||||||
|
} else if (elementToUpdate != null && !isCreate) {
|
||||||
File fileToUpdate = elementToUpdate.toFile();
|
File fileToUpdate = elementToUpdate.toFile();
|
||||||
if (fileToUpdate.isFile()) {
|
if (fileToUpdate.isFile()) {
|
||||||
content = content.replace("\"", "");
|
content = content.replace("\"", "");
|
||||||
ioService.write(elementToUpdate, content);
|
ioService.write(elementToUpdate, content);
|
||||||
// FileOutputStream fileOutputStream = new FileOutputStream(fileToUpdate);
|
logger.debug("Returning OK response with content '{}'", content);
|
||||||
// fileOutputStream.write(content.getBytes());
|
return Response.status(Response.Status.ACCEPTED).build();
|
||||||
// fileOutputStream.close();
|
} else {
|
||||||
|
return Response.status(Response.Status.NOT_MODIFIED).entity("Asset is not a file").build();
|
||||||
}
|
}
|
||||||
|
} else {//
|
||||||
|
if (isCreate) {
|
||||||
|
org.uberfire.java.nio.file.Path directoryWhereCreateAsset = assetService.getRuleDirectory(directoryStream, assetName);
|
||||||
|
|
||||||
|
if (directoryWhereCreateAsset != null) {
|
||||||
|
URI parentURI = directoryWhereCreateAsset.getParent().toUri();
|
||||||
|
URI uri = new URI(parentURI.getScheme(), parentURI.getUserInfo(), parentURI.getHost(), parentURI.getPort(), parentURI.getPath() + "/" + assetName, parentURI.getQuery(), parentURI.getFragment());
|
||||||
|
final org.uberfire.java.nio.file.Path nioPathWhere = Paths.get(uri);
|
||||||
|
CommentedOption commentedOption = new CommentedOption("Created from rest");
|
||||||
|
ioService.write(nioPathWhere, content.getBytes(), commentedOption);
|
||||||
|
return Response.status(Response.Status.CREATED).build();
|
||||||
|
} else {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("no Rule package").build();
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
throw new WebApplicationException("Asset not found " + assetName);
|
return Response.status(Response.Status.NOT_FOUND).entity("Asset not found").build();
|
||||||
}
|
}
|
||||||
} catch (RuntimeException e) {
|
}
|
||||||
throw new WebApplicationException(e);
|
} else {
|
||||||
|
logger.info("Project {} or Organization {} not found ", projectName, organizationalUnitName);
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Project or Organization not found").build();
|
||||||
|
}
|
||||||
|
} catch (RuntimeException | URISyntaxException e) {
|
||||||
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,45 @@ public class RestTypeDefinition {
|
||||||
|| fileName.endsWith("." + ResourceType.FEEL.getDefaultExtension())
|
|| fileName.endsWith("." + ResourceType.FEEL.getDefaultExtension())
|
||||||
|
|
||||||
|
|
||||||
|
) {
|
||||||
|
result = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public boolean acceptDroolsFile(String fileName) {
|
||||||
|
boolean result = false;
|
||||||
|
|
||||||
|
if (fileName.startsWith(".") == false) {
|
||||||
|
|
||||||
|
if (fileName.endsWith("." + ResourceType.DRL.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.GDRL.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.RDRL.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.XDRL.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.DSL.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.DSLR.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.RDSLR.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.DRF.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.BPMN2.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.CMMN.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.DTABLE.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.BRL.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.XSD.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.PMML.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.DESCR.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.SCARD.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.TDRL.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.BAYES.getDefaultExtension())
|
||||||
|
// ||fileName.endsWith("." + ResourceType.JAVA.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.TEMPLATE.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.DRT.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.GDST.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.SCGD.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.SOLVER.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.DMN.getDefaultExtension())
|
||||||
|
|| fileName.endsWith("." + ResourceType.FEEL.getDefaultExtension())
|
||||||
|
|
||||||
|
|
||||||
) {
|
) {
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,262 @@
|
||||||
|
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.kie.rest.backend.RestTypeDefinition;
|
||||||
|
import org.guvnor.common.services.project.model.Module;
|
||||||
|
import org.guvnor.common.services.project.model.WorkspaceProject;
|
||||||
|
import org.guvnor.common.services.project.service.WorkspaceProjectService;
|
||||||
|
import org.guvnor.structure.organizationalunit.OrganizationalUnit;
|
||||||
|
import org.guvnor.structure.organizationalunit.OrganizationalUnitService;
|
||||||
|
import org.guvnor.structure.repositories.Branch;
|
||||||
|
import org.guvnor.structure.repositories.PublicURI;
|
||||||
|
import org.guvnor.structure.repositories.RepositoryService;
|
||||||
|
import org.jboss.errai.bus.server.annotations.Service;
|
||||||
|
import org.kie.workbench.common.screens.datamodeller.model.EditorModelContent;
|
||||||
|
import org.kie.workbench.common.screens.datamodeller.service.DataModelerService;
|
||||||
|
import org.kie.workbench.common.services.datamodeller.core.DataObject;
|
||||||
|
import org.kie.workbench.common.services.datamodeller.core.impl.DataModelImpl;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.uberfire.backend.vfs.PathFactory;
|
||||||
|
import org.uberfire.io.IOService;
|
||||||
|
import org.uberfire.java.nio.file.DirectoryStream;
|
||||||
|
import org.uberfire.java.nio.file.Path;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
|
import javax.ws.rs.core.Context;
|
||||||
|
import javax.ws.rs.core.SecurityContext;
|
||||||
|
import javax.ws.rs.core.UriInfo;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class AssetService {
|
||||||
|
|
||||||
|
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(AssetService.class);
|
||||||
|
|
||||||
|
@Context
|
||||||
|
protected UriInfo uriInfo;
|
||||||
|
|
||||||
|
@Context
|
||||||
|
protected SecurityContext sc;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
@Named("ioStrategy")
|
||||||
|
private IOService ioService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private OrganizationalUnitService organizationalUnitService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private RepositoryService repositoryService;
|
||||||
|
@Inject
|
||||||
|
private WorkspaceProjectService projectService;
|
||||||
|
|
||||||
|
private RestTypeDefinition dotFileFilter = new RestTypeDefinition();
|
||||||
|
@Inject
|
||||||
|
private DataModelerService dataModelerService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private WorkspaceProjectService workspaceProjectService;
|
||||||
|
|
||||||
|
public List<PlatformProjectResponse> getAllProjects() {
|
||||||
|
final List<PlatformProjectResponse> spaces = new ArrayList<>();
|
||||||
|
for (OrganizationalUnit ou : organizationalUnitService.getOrganizationalUnits()) {
|
||||||
|
spaces.addAll(getSpace(ou));
|
||||||
|
}
|
||||||
|
|
||||||
|
return spaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<PlatformProjectResponse> getSpace(OrganizationalUnit ou) {
|
||||||
|
|
||||||
|
final List<PlatformProjectResponse> repoNames = new ArrayList<>();
|
||||||
|
for (WorkspaceProject workspaceProject : workspaceProjectService.getAllWorkspaceProjects(ou)) {
|
||||||
|
for (Branch branch : workspaceProject.getRepository().getBranches()) {
|
||||||
|
repoNames.add(getProjectResponse(workspaceProject, branch));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return repoNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private PlatformProjectResponse getProjectResponse(WorkspaceProject workspaceProject, Branch branch) {
|
||||||
|
final PlatformProjectResponse projectResponse = new PlatformProjectResponse();
|
||||||
|
projectResponse.setName(workspaceProject.getName());
|
||||||
|
projectResponse.setSpaceName(workspaceProject.getOrganizationalUnit().getName());
|
||||||
|
|
||||||
|
if (workspaceProject.getMainModule() != null) {
|
||||||
|
Module kmodule = workspaceProject.getMainModule();
|
||||||
|
org.uberfire.backend.vfs.Path importVFPath = PathFactory.newPath("project.imports", branch.getPath().toURI() + "project.imports");
|
||||||
|
EditorModelContent econtent = dataModelerService.loadContent(importVFPath);
|
||||||
|
//EditorModelContent econtent = dataModelerService.loadContent(((KieModule) kmodule).getImportsPath());
|
||||||
|
DataModelImpl econtentDataModel = (DataModelImpl) econtent.getDataModel();
|
||||||
|
List<DataObject> dataObjects = econtentDataModel.getExternalClasses();
|
||||||
|
for (DataObject dataObject : dataObjects) {
|
||||||
|
System.out.println(dataObject.toString());
|
||||||
|
String className = "class=" + dataObject.getPackageName() + "." + dataObject.getName();
|
||||||
|
projectResponse.getJavaClasses().add(className);
|
||||||
|
|
||||||
|
}
|
||||||
|
projectResponse.setArtifactId(workspaceProject.getMainModule().getPom().getGav().getArtifactId());
|
||||||
|
projectResponse.setGroupId(workspaceProject.getMainModule().getPom().getGav().getGroupId());
|
||||||
|
projectResponse.setVersion(workspaceProject.getMainModule().getPom().getGav().getVersion());
|
||||||
|
projectResponse.setDescription(workspaceProject.getMainModule().getPom().getDescription());
|
||||||
|
projectResponse.setBranch(branch.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
final ArrayList<org.guvnor.rest.client.PublicURI> publicURIs = new ArrayList<>();
|
||||||
|
|
||||||
|
for (PublicURI publicURI : workspaceProject.getRepository().getPublicURIs()) {
|
||||||
|
final org.guvnor.rest.client.PublicURI responseURI = new org.guvnor.rest.client.PublicURI();
|
||||||
|
responseURI.setProtocol(publicURI.getProtocol());
|
||||||
|
responseURI.setUri(publicURI.getURI());
|
||||||
|
publicURIs.add(responseURI);
|
||||||
|
}
|
||||||
|
|
||||||
|
projectResponse.setPublicURIs(publicURIs);
|
||||||
|
return projectResponse;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public WorkspaceProject getProject(String organizationalUnitName, String projectName) {
|
||||||
|
OrganizationalUnit organizationalUnit = organizationalUnitService.getOrganizationalUnit(organizationalUnitName);
|
||||||
|
if (organizationalUnit==null){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Collection<WorkspaceProject> workspaceProjects = projectService.getAllWorkspaceProjects(organizationalUnit);
|
||||||
|
if (workspaceProjects==null){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (WorkspaceProject project : workspaceProjects) {
|
||||||
|
if (project.getName().equals(projectName)) {
|
||||||
|
return project;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void getContentSource(DirectoryStream<Path> directoryStream, Asset asset, List<org.uberfire.java.nio.file.Path> pathLinkedList) {
|
||||||
|
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);
|
||||||
|
getContentSource(adirectoryStream, asset, pathLinkedList);
|
||||||
|
} else {
|
||||||
|
if (dotFileFilter.accept(elementPath.getFileName().toString())) {
|
||||||
|
Map<String, Object> listAttributes = ioService.readAttributes(elementPath);
|
||||||
|
if (asset.getTitle().equals(elementPath.getFileName().toString())) {
|
||||||
|
pathLinkedList.add(elementPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getContent(DirectoryStream<org.uberfire.java.nio.file.Path> directoryStream, Collection<Asset> contentList) {
|
||||||
|
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);
|
||||||
|
getContent(adirectoryStream, contentList);
|
||||||
|
} else {
|
||||||
|
if (dotFileFilter.accept(elementPath.getFileName().toString())) {
|
||||||
|
Map<String, Object> listAttributes = ioService.readAttributes(elementPath);
|
||||||
|
Asset asset = new Asset();
|
||||||
|
asset.setTitle(elementPath.getFileName().toString());
|
||||||
|
asset.setDirectory(elementPath.getParent().toString());
|
||||||
|
asset.setRefLink(elementPath.getFileName().toUri());
|
||||||
|
contentList.add(asset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContentSource(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);
|
||||||
|
String result = getContentSource(adirectoryStream, assetName);
|
||||||
|
if (result != null && result.length() > 0) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (elementPath.getFileName().toString().startsWith(".") == false) {
|
||||||
|
if (elementPath.getFileName().toString().equals(assetName)) {
|
||||||
|
return ioService.readAllString(elementPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public org.uberfire.java.nio.file.Path getFileElementPath(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 = getFileElementPath(adirectoryStream, assetName);
|
||||||
|
if (foundElementPath != null) {
|
||||||
|
return foundElementPath;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (dotFileFilter.accept(elementPath.getFileName().toString())
|
||||||
|
&& 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) {
|
||||||
|
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 = getRuleDirectory(adirectoryStream, assetName);
|
||||||
|
if (foundElementPath != null) {
|
||||||
|
return foundElementPath;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (dotFileFilter.acceptDroolsFile(elementPath.getFileName().toString())) {
|
||||||
|
return elementPath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public org.uberfire.java.nio.file.Path getDirectoryElementPath(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 = null;
|
||||||
|
try {
|
||||||
|
adirectoryStream = ioService.newDirectoryStream(elementPath);
|
||||||
|
if (elementPath.getFileName().toString().equals(assetName)) {
|
||||||
|
return elementPath;
|
||||||
|
}
|
||||||
|
org.uberfire.java.nio.file.Path foundElementPath = getDirectoryElementPath(adirectoryStream, assetName);
|
||||||
|
if (foundElementPath != null) {
|
||||||
|
return foundElementPath;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
if (adirectoryStream != null) {
|
||||||
|
adirectoryStream.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
editor.link_modal.header
Reference in a new issue