Compare commits

...

6 Commits

Author SHA1 Message Date
bhe-talendbj
161d54bf69 Merge branch 'maintenance/8.0' into tmp/TUP-36673_TUP-36683 2022-10-19 16:37:06 +08:00
bhe-talendbj
a136f6dc78 feat(TUP-36673): fix cache 2022-10-18 18:19:59 +08:00
bhe-talendbj
7ae8a8c2c5 Merge branch 'tmp/TUP-36673_TUP-36683' of https://github.com/Talend/tcommon-studio-se into tmp/TUP-36673_TUP-36683 2022-10-18 17:49:05 +08:00
bhe-talendbj
cf0bf94a00 feat(TUP-36673): fix cache 2022-10-18 17:48:37 +08:00
Zhiwei Xue
7ff3f7b1c1 feat(TUP-36683):Selective generateAllPoms 2022-10-18 09:55:06 +08:00
bhe-talendbj
0e2dd9c981 feat(36673): add cache 2022-10-18 09:29:04 +08:00
3 changed files with 84 additions and 46 deletions

View File

@@ -1,5 +1,6 @@
package org.talend.core.runtime.services;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.IService;
import org.talend.core.model.properties.Item;
@@ -9,4 +10,11 @@ public interface IFilterService extends IService {
public boolean isFilterAccepted(Item item, String filter);
public static IFilterService get() {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IFilterService.class)) {
return GlobalServiceRegister.getDefault().getService(IFilterService.class);
}
return null;
}
}

View File

@@ -14,15 +14,16 @@ package org.talend.designer.maven.tools;
import static org.talend.designer.maven.model.TalendJavaProjectConstants.*;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -64,8 +65,10 @@ import org.talend.core.model.general.ILibrariesService;
import org.talend.core.model.general.ModuleNeeded;
import org.talend.core.model.general.ModuleNeeded.ELibraryInstallStatus;
import org.talend.core.model.general.Project;
import org.talend.core.model.process.JobInfo;
import org.talend.core.model.process.ProcessUtils;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.ProcessItem;
import org.talend.core.model.properties.ProjectReference;
import org.talend.core.model.properties.Property;
import org.talend.core.model.relationship.Relation;
@@ -525,7 +528,7 @@ public class AggregatorPomsHelper {
@Override
public void run(final IProgressMonitor monitor) throws CoreException {
try {
syncAllPomsWithoutProgress(monitor, PomIdsHelper.getPomFilter());
syncAllPomsWithoutProgress(monitor, PomIdsHelper.getPomFilter(), false);
} catch (Exception e) {
ExceptionHandler.process(e);
}
@@ -620,10 +623,11 @@ public class AggregatorPomsHelper {
}
public void syncAllPomsWithoutProgress(IProgressMonitor monitor) throws Exception {
syncAllPomsWithoutProgress(monitor, PomIdsHelper.getPomFilter());
syncAllPomsWithoutProgress(monitor, PomIdsHelper.getPomFilter(), false);
}
public void syncAllPomsWithoutProgress(IProgressMonitor monitor, String pomFilter) throws Exception {
public void syncAllPomsWithoutProgress(IProgressMonitor monitor, String pomFilter, boolean withDependencies)
throws Exception {
LOGGER.info("syncAllPomsWithoutProgress, pomFilter: " + pomFilter);
IRunProcessService runProcessService = IRunProcessService.get();
if (runProcessService == null) {
@@ -634,11 +638,43 @@ public class AggregatorPomsHelper {
Boolean isCIMode = IRunProcessService.get().isCIMode();
List<IRepositoryViewObject> objects = new ArrayList<>();
List<ERepositoryObjectType> allJobletTypes = ERepositoryObjectType.getAllTypesOfJoblet();
for (ERepositoryObjectType type : ERepositoryObjectType.getAllTypesOfProcess2()) {
if (isCIMode && withDependencies && allJobletTypes.contains(type)) {
continue;
}
objects.addAll(ProxyRepositoryFactory.getInstance().getAll(type, true, true));
}
Iterator<IRepositoryViewObject> iterator = objects.iterator();
while (iterator.hasNext()) {
IRepositoryViewObject object = iterator.next();
if (object.getProperty() == null || object.getProperty().getItem() == null) {
iterator.remove();
continue;
}
if (isCIMode && !allJobletTypes.contains(object.getRepositoryObjectType()) && IFilterService.get() != null
&& !IFilterService.get().isFilterAccepted(object.getProperty().getItem(), pomFilter)) {
iterator.remove();
continue;
}
if (isCIMode && object.isDeleted() && PomIdsHelper.getIfExcludeDeletedItems()) {
iterator.remove();
}
}
Set<Item> allItems;
if (withDependencies) {
allItems = objects.stream().flatMap(object -> {
ProcessItem item = (ProcessItem) object.getProperty().getItem();
Set<JobInfo> allJobInfos = ProcessorUtilities.getChildrenJobInfo(item, false, true);
allJobInfos.add(new JobInfo(item, item.getProcess().getDefaultContext()));
return allJobInfos.stream();
}).map(info -> info.getJobletProperty() != null ? info.getJobletProperty().getItem() : info.getProcessItem())
.collect(Collectors.toSet());
} else {
allItems = objects.stream().map(object -> object.getProperty().getItem()).collect(Collectors.toSet());
}
int size = 3 + objects.size();
int size = 3 + allItems.size();
monitor.setTaskName("Synchronize all poms"); //$NON-NLS-1$
monitor.beginTask("", size); //$NON-NLS-1$
// project pom
@@ -674,41 +710,17 @@ public class AggregatorPomsHelper {
}
// all jobs pom
List<String> modules = new ArrayList<>();
IFilterService filterService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IFilterService.class)) {
filterService = (IFilterService) GlobalServiceRegister.getDefault().getService(IFilterService.class);
}
List<Property> serviceRefJobs = getAllServiceReferencedJobs();
List<ERepositoryObjectType> allJobletTypes = ERepositoryObjectType.getAllTypesOfJoblet();
for (IRepositoryViewObject object : objects) {
if (filterService != null) {
if (isCIMode && !allJobletTypes.contains(object.getRepositoryObjectType())
&& !filterService.isFilterAccepted(object.getProperty().getItem(), pomFilter)) {
continue;
}
}
if (object.getProperty() != null && object.getProperty().getItem() != null) {
if (isCIMode && object.isDeleted() && PomIdsHelper.getIfExcludeDeletedItems()) {
continue;
}
Item item = object.getProperty().getItem();
if (ProjectManager.getInstance().isInCurrentMainProject(item)) {
monitor.subTask("Synchronize job pom: " + item.getProperty().getLabel() //$NON-NLS-1$
+ "_" + item.getProperty().getVersion()); //$NON-NLS-1$
if (runProcessService != null) {
// already filtered
runProcessService.generatePom(item, TalendProcessOptionConstants.GENERATE_POM_NO_FILTER);
} else {
ExceptionHandler.log("Cannot generate pom for " + object.getLabel()
+ " - Reason: RunProcessService is null.");
}
IFile pomFile = getItemPomFolder(item.getProperty()).getFile(TalendMavenConstants.POM_FILE_NAME);
// TODO if not work, use serviceRefJobs.contains(object.getProperty()) to judge
// filter esb data service node
if (isCIMode && !isSOAPServiceProvider(object.getProperty()) && pomFile.exists()) {
modules.add(getModulePath(pomFile));
}
for (Item item : allItems) {
if (ProjectManager.getInstance().isInCurrentMainProject(item)) {
monitor.subTask("Synchronize job pom: " + item.getProperty().getLabel() //$NON-NLS-1$
+ "_" + item.getProperty().getVersion()); //$NON-NLS-1$
runProcessService.generatePom(item, TalendProcessOptionConstants.GENERATE_POM_NO_FILTER);
IFile pomFile = getItemPomFolder(item.getProperty()).getFile(TalendMavenConstants.POM_FILE_NAME);
// filter esb data service node
// FIXME use serviceRefJobs.contains(item.getProperty()) if isSOAPServiceProvider() doesn't work.
if (isCIMode && !isSOAPServiceProvider(item.getProperty()) && pomFile.exists()) {
modules.add(getModulePath(pomFile));
}
}
monitor.worked(1);

View File

@@ -217,6 +217,24 @@ public class LocalRepositoryFactory extends AbstractEMFRepositoryFactory impleme
private boolean copyScreenshotFlag = false;
private Set<String> invalidFiles = new HashSet<String>();
private Set<String> LoadedIDTypes = new HashSet<String>();
private static final boolean IS_CIMode = Boolean.getBoolean("ci.mode");
protected void addLoadedIDTypes(String id, ERepositoryObjectType type) {
if (!IS_CIMode || StringUtils.isEmpty(id)) {
return;
}
LoadedIDTypes.add(id + "," + type.getKey());
}
protected boolean containsLoadedIDType(String id, ERepositoryObjectType type) {
if (!IS_CIMode || StringUtils.isEmpty(id)) {
return false;
}
return LoadedIDTypes.contains(id + "," + type.getKey());
}
public LocalRepositoryFactory() {
super();
@@ -597,9 +615,9 @@ public class LocalRepositoryFactory extends AbstractEMFRepositoryFactory impleme
protected synchronized List<IRepositoryViewObject> getSerializableFromFolder(Project project, Object folder, String id,
ERepositoryObjectType type, boolean allVersion, boolean searchInChildren, boolean withDeleted,
boolean avoidSaveProject, boolean... recursiveCall) throws PersistenceException {
List<IRepositoryViewObject> toReturn = new VersionList(allVersion);
FolderHelper folderHelper = getFolderHelper(project.getEmfProject());
if (folder != null) {
IFolder physicalFolder;
FolderItem currentFolderItem = null;
@@ -628,8 +646,7 @@ public class LocalRepositoryFactory extends AbstractEMFRepositoryFactory impleme
if (property != null) {
if (curItem instanceof FolderItem && searchInChildren) {
folderNamesFounds.add(curItem.getProperty().getLabel());
toReturn.addAll(getSerializableFromFolder(project, curItem, id, type, allVersion, true, withDeleted,
avoidSaveProject, true));
toReturn.addAll(getSerializableFromFolder(project, curItem, id, type, allVersion, true, withDeleted, avoidSaveProject, recursiveCall));
} else if (!(curItem instanceof FolderItem)) {
if (property.eResource() != null && property.eResource().getResourceSet() != null) {
propertyFounds.add(property.eResource().getURI().lastSegment());
@@ -639,6 +656,7 @@ public class LocalRepositoryFactory extends AbstractEMFRepositoryFactory impleme
}
}
property.getItem().setParent(currentFolderItem);
addLoadedIDTypes(property.getId(), type);
addToHistory(id, type, property.getItem().getState().getPath());
} else {
toRemoveFromFolder.add(curItem);
@@ -652,8 +670,7 @@ public class LocalRepositoryFactory extends AbstractEMFRepositoryFactory impleme
currentFolderItem.getChildren().removeAll(toRemoveFromFolder);
}
}
// check the items from physical folder, in case any item has been added (or deleted) manually (or from copy
// to branch)
if (physicalFolder.exists()) {
Set<String> physicalPropertyFounds = new HashSet<String>();
Set<String> physicalDirectoryFounds = new HashSet<String>();
@@ -684,6 +701,7 @@ public class LocalRepositoryFactory extends AbstractEMFRepositoryFactory impleme
}
continue;
}
addLoadedIDTypes(property.getId(), type);
addToHistory(property.getId(), type, property.getItem().getState().getPath());
if (id == null || property.getId().equals(id)) {
if (withDeleted || !property.getItem().getState().isDeleted()) {
@@ -716,8 +734,7 @@ public class LocalRepositoryFactory extends AbstractEMFRepositoryFactory impleme
parentFolder = folderHelper.createFolder(current.getProjectRelativePath().toString());
}
parentFolder.setParent(currentFolderItem);
toReturn.addAll(getSerializableFromFolder(project, (IFolder) current, id, type, allVersion, true,
withDeleted, avoidSaveProject, true));
toReturn.addAll(getSerializableFromFolder(project, (IFolder) current, id, type, allVersion, true, withDeleted, avoidSaveProject, recursiveCall));
}
if (((IFolder) current).getName().equals(BIN)) {
@@ -776,6 +793,7 @@ public class LocalRepositoryFactory extends AbstractEMFRepositoryFactory impleme
currentFolderItem.getChildren().removeAll(itemsDeleted);
}
}
}
return toReturn;
}