private void postProcess(ProjectDescriptor descriptor) { if (descriptor.getClasspath() == null) { descriptor.setClasspath(new ArrayList<PathEntry>()); } if (descriptor.getModules() == null) { descriptor.setModules(new ArrayList<Module>()); } } }
private void addDependentProjects(List<ProjectDescriptor> projectDescriptors, ProjectDescriptor project, Collection<ProjectDescriptor> projectsInWorkspace) { if (project.getDependencies() != null) { for (ProjectDependencyDescriptor dependencyDescriptor : project.getDependencies()) { boolean found = false; for (ProjectDescriptor projectDescriptor : projectsInWorkspace) { if (dependencyDescriptor.getName().equals(projectDescriptor.getName())) { projectDescriptors.add(projectDescriptor); addDependentProjects(projectDescriptors, projectDescriptor, projectsInWorkspace); found = true; break; } } if (!found) { log.warn("Dependency '{}' for project '{}' hasn't been found", dependencyDescriptor.getName(), project.getName()); } } } }
public String getModulePath(Module module) { PathEntry modulePath = module == null ? null : module.getRulesRootPath(); if (modulePath == null) return null; String moduleFullPath = modulePath.getPath(); ProjectDescriptor project = module.getProject(); if (project == null || project.getProjectFolder() == null) { return moduleFullPath; } String projectFullPath = project.getProjectFolder().getAbsolutePath(); if (moduleFullPath.contains(projectFullPath)) { return moduleFullPath.replace(projectFullPath, "").substring(1); } return moduleFullPath; }
private ProjectDescriptor createDescriptor(File folder) throws IOException{ ProjectDescriptor project = new ProjectDescriptor(); project.setProjectFolder(folder.getCanonicalFile()); project.setName(folder.getName()); return project; } }
protected ProjectDescriptor createNewProject() { ProjectDescriptor project = new ProjectDescriptor(); project.setName(defaultProjectName != null ? defaultProjectName : getDisplayName()); List<PathEntry> classpath = new ArrayList<PathEntry>(); for (String path : defaultClasspaths) { classpath.add(new PathEntry(path)); } project.setClasspath(classpath); return project; }
ProjectDescriptor_v5_13 descriptor = new ProjectDescriptor_v5_13(); descriptor.setName(currentVersion.getName()); descriptor.setComment(currentVersion.getComment()); descriptor.setClasspath(currentVersion.getClasspath()); List<Module_v5_13> modules = CollectionUtils.map(currentVersion.getModules(), new CollectionUtils.Mapper<Module, Module_v5_13>() { @Override descriptor.setModules(modules); List<ProjectDependencyDescriptor_v5_12> dependencies = CollectionUtils.map(currentVersion.getDependencies(), new CollectionUtils.Mapper<ProjectDependencyDescriptor, ProjectDependencyDescriptor_v5_12>() { @Override descriptor.setPropertiesFileNamePattern(currentVersion.getPropertiesFileNamePattern()); descriptor.setPropertiesFileNameProcessor(currentVersion.getPropertiesFileNameProcessor());
@Override public ProjectDescriptor fromOldVersion(ProjectDescriptor_v5_16 oldVersion) { ProjectDescriptor descriptor = new ProjectDescriptor(); descriptor.setName(oldVersion.getName()); descriptor.setComment(oldVersion.getComment()); descriptor.setClasspath(oldVersion.getClasspath()); List<Module> modules = CollectionUtils.map(oldVersion.getModules(), new CollectionUtils.Mapper<Module_v5_16, Module>() { @Override public Module map(Module_v5_16 input) { return moduleVersionConverter.fromOldVersion(input); } }); descriptor.setModules(modules); List<ProjectDependencyDescriptor> dependencies = CollectionUtils.map(oldVersion.getDependencies(), new CollectionUtils.Mapper<ProjectDependencyDescriptor_v5_12, ProjectDependencyDescriptor>() { @Override public ProjectDependencyDescriptor map(ProjectDependencyDescriptor_v5_12 input) { return dependencyConverter.fromOldVersion(input); } }); if (CollectionUtils.isNotEmpty(dependencies)) { descriptor.setDependencies(dependencies); } descriptor.setPropertiesFileNamePattern(oldVersion.getPropertiesFileNamePattern()); descriptor.setPropertiesFileNameProcessor(oldVersion.getPropertiesFileNameProcessor()); return descriptor; }
private void clean(ProjectDescriptor descriptor) { if (CollectionUtils.isEmpty(descriptor.getClasspath())) { descriptor.setClasspath(null); if (StringUtils.isBlank(descriptor.getPropertiesFileNamePattern())) { descriptor.setPropertiesFileNamePattern(null); if (StringUtils.isBlank(descriptor.getPropertiesFileNameProcessor())) { descriptor.setPropertiesFileNameProcessor(null); if (CollectionUtils.isEmpty(descriptor.getDependencies())) { descriptor.setDependencies(null); List<Module> modules = descriptor.getModules(); if (CollectionUtils.isEmpty(modules)) { descriptor.setModules(null); return; descriptor.setProjectFolder(null);
@Override public ProjectDescriptor fromOldVersion(ProjectDescriptor_v5_11 oldVersion) { ProjectDescriptor descriptor = new ProjectDescriptor(); descriptor.setName(oldVersion.getName()); descriptor.setComment(oldVersion.getComment()); descriptor.setClasspath(oldVersion.getClasspath()); List<Module> modules = CollectionUtils.map(oldVersion.getModules(), new CollectionUtils.Mapper<Module_v5_11, Module>() { @Override public Module map(Module_v5_11 input) { return moduleVersionConverter.fromOldVersion(input); } }); descriptor.setModules(modules); return descriptor; }
@Override public ProjectDescriptor_v5_11 toOldVersion(ProjectDescriptor currentVersion) { ProjectDescriptor_v5_11 descriptor = new ProjectDescriptor_v5_11(); descriptor.setId(currentVersion.getName()); descriptor.setName(currentVersion.getName()); descriptor.setComment(currentVersion.getComment()); descriptor.setClasspath(currentVersion.getClasspath()); List<Module_v5_11> modules = CollectionUtils.map(currentVersion.getModules(), new CollectionUtils.Mapper<Module, Module_v5_11>() { @Override public Module_v5_11 map(Module input) { return moduleVersionConverter.toOldVersion(input); } }); descriptor.setModules(modules); return descriptor; } }
public Module getModule(ProjectDescriptor project, final String moduleName) { if (project == null) { return null; } return CollectionUtils.findFirst(project.getModules(), new CollectionUtils.Predicate<Module>() { @Override public boolean evaluate(Module module) { return module.getName() != null && module.getName().equals(moduleName); } }); }
public List<SelectItem> getModules() { WebStudio studio = getWebStudio(); List<ProjectDescriptor> projects = studio.getAllProjects(); List<SelectItem> selectItems = new ArrayList<SelectItem>(); for (ProjectDescriptor project : projects) { selectItems.add(new SelectItem(project.getId(), project.getName(), null, true)); for (Module module : project.getModules()) { selectItems.add(new SelectItem(studio.getModuleId(module), module.getName())); } } return selectItems; }
public void validate(ProjectDescriptor descriptor) throws ValidationException { if (descriptor == null) { throw new ValidationException("Project descriptor is null."); } if (descriptor.getName() == null || descriptor.getName().trim().isEmpty()) { throw new ValidationException("Project name aren't defined."); } if (descriptor.getModules() == null || descriptor.getModules().size() == 0) { throw new ValidationException("Project modules aren't defined."); } for (Module module : descriptor.getModules()) { validateModule(module); } }
public void replaceClassLoader(ProjectDescriptor project, ClassLoader classLoader) { ClassLoader oldClassloader = classLoaders.get(project.getName()); if (oldClassloader != null && oldClassloader != classLoader) { oldClassLoaders.add(oldClassloader); } classLoaders.put(project.getName(), classLoader); }
public ClassLoader getClassLoader(ProjectDescriptor project) { getDependencyLoaders(); if (classLoaders.get(project.getName()) != null) { return classLoaders.get(project.getName()); } SimpleBundleClassLoader classLoader = new SimpleBundleClassLoader(project.getClassPathUrls(), rootClassLoader); classLoader.addClassLoader(project.getClassLoader(false)); if (project.getDependencies() != null) { for (ProjectDependencyDescriptor projectDependencyDescriptor : project.getDependencies()) { if (getProjectDescriptors() != null) { for (ProjectDescriptor projectDescriptor : getProjectDescriptors()) { if (projectDependencyDescriptor.getName().equals(projectDescriptor.getName())) { classLoader.addClassLoader(getClassLoader(projectDescriptor)); break; } } } } } classLoaders.put(project.getName(), classLoader); return classLoader; }
processor = buildProcessor(globalErrorMessages, projectDescriptor, propertiesFileNameProcessorBuilder); if (processor != null) { for (Module module : projectDescriptor.getModules()) { Set<String> moduleErrorMessages = new HashSet<String>(globalErrorMessages); Set<String> moduleWarnMessages = new HashSet<String>(globalWarnMessages); try { ITableProperties tableProperties = processor.process(module, projectDescriptor.getPropertiesFileNamePattern()); params.put(PropertiesLoader.EXTERNAL_MODULE_PROPERTIES_KEY, tableProperties); } catch (NoMatchFileNameException e) { String moduleFileName = FilenameExtractorUtil.extractFileNameFromModule(module); String defaultMessage = null; if (projectDescriptor.getPropertiesFileNamePattern() != null){ defaultMessage = "Module file name '" + moduleFileName + "' doesn't match file name pattern! File name pattern is: " + projectDescriptor.getPropertiesFileNamePattern(); }else{ defaultMessage = "Module file name '" + moduleFileName + "' doesn't match file name pattern!";
protected InputStream changeFileIfNeeded(String fileName, InputStream inputStream) throws ProjectException { if (ProjectDescriptorBasedResolvingStrategy.PROJECT_DESCRIPTOR_FILE_NAME.equals(fileName)) { // Read the stream to memory and try to parse it and then change project name. If it can't be parsed return original rules.xml. ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { IOUtils.copyAndClose(inputStream, outputStream); } catch (IOException e) { throw new ProjectException(e.getMessage(), e); } ByteArrayInputStream copy = new ByteArrayInputStream(outputStream.toByteArray()); try { XmlProjectDescriptorSerializer serializer = new XmlProjectDescriptorSerializer(false); ProjectDescriptor projectDescriptor = serializer.deserialize(copy); projectDescriptor.setName(getProjectName()); return IOUtils.toInputStream(serializer.serialize(projectDescriptor)); } catch (Exception e) { log.warn(e.getMessage(), e); copy.reset(); return copy; } } else { return inputStream; } }
private PropertiesFileNameProcessor buildProcessor(final Set<String> globalErrorMessages, ProjectDescriptor projectDescriptor, PropertiesFileNameProcessorBuilder propertiesFileNameProcessorBuilder) throws InvalidFileNameProcessorException { if (StringUtils.isNotBlank(projectDescriptor.getPropertiesFileNameProcessor())) { try { return propertiesFileNameProcessorBuilder.buildCustomProcessor(projectDescriptor); } catch (InvalidFileNameProcessorException e) { String message = e.getMessage(); log.warn(message); globalErrorMessages.add(message); return null; } } else { if (StringUtils.isNotBlank(projectDescriptor.getPropertiesFileNamePattern())) { return propertiesFileNameProcessorBuilder.buildDefaultProcessor(projectDescriptor); } return null; } } }
public void removeDependency(String name) { ProjectDescriptor projectDescriptor = studio.getCurrentProjectDescriptor(); ProjectDescriptor newProjectDescriptor = cloneProjectDescriptor(projectDescriptor); clean(newProjectDescriptor); List<ProjectDependencyDescriptor> resultDependencies = newProjectDescriptor.getDependencies(); for (ProjectDependencyDescriptor dependency : new ArrayList<ProjectDependencyDescriptor>(resultDependencies)) { if (dependency.getName().equals(name)) { resultDependencies.remove(dependency); } } newProjectDescriptor.setDependencies(!resultDependencies.isEmpty() ? resultDependencies : null); save(newProjectDescriptor); }
public void editSources() { List<PathEntry> sourceList = new ArrayList<PathEntry>(); String[] sourceArray = sources.split(StringTool.NEW_LINE); if (CollectionUtils.isNotEmpty(sourceArray)) { for (String source : sourceArray) { if (StringUtils.isNotBlank(source)) { PathEntry sourcePath = new PathEntry(source); sourceList.add(sourcePath); } } } ProjectDescriptor projectDescriptor = studio.getCurrentProjectDescriptor(); ProjectDescriptor newProjectDescriptor = cloneProjectDescriptor(projectDescriptor); clean(newProjectDescriptor); newProjectDescriptor.setClasspath(!sourceList.isEmpty() ? sourceList : null); save(newProjectDescriptor); }