Compare commits
16 Commits
release/7.
...
release/7.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c7fb9616ff | ||
|
|
74944201c7 | ||
|
|
f1ba902b6e | ||
|
|
984814d620 | ||
|
|
bbc6e17412 | ||
|
|
6665603efc | ||
|
|
ae1b013c5f | ||
|
|
8b0ea868e9 | ||
|
|
1a24f07710 | ||
|
|
43cdc97d1e | ||
|
|
f1c40a3920 | ||
|
|
b47a7b2067 | ||
|
|
7c8614b4ac | ||
|
|
baacc284fd | ||
|
|
9d0fdc4532 | ||
|
|
f3ad09604f |
@@ -872,25 +872,38 @@ public abstract class AbstractEMFRepositoryFactory extends AbstractRepositoryFac
|
||||
@Override
|
||||
public IRepositoryViewObject getLastVersion(Project project, String id, String relativeFolder, ERepositoryObjectType type)
|
||||
throws PersistenceException {
|
||||
List<IRepositoryViewObject> serializableAllVersion = null;
|
||||
Object fullFolder = getFullFolder(project, type, relativeFolder);
|
||||
serializableAllVersion = getSerializableFromFolder(project, fullFolder, id, type, false, false, true, true);
|
||||
List<IRepositoryViewObject> serializableAllVersion = new ArrayList<>();
|
||||
if (lastFolderForItemMap.containsKey(id)) {
|
||||
ERepositoryObjectType itemType = lastRepositoryTypeForItemMap.get(id);
|
||||
String currentPath = lastFolderForItemMap.get(id);
|
||||
Object fullFolder = getFullFolder(project, itemType, currentPath);
|
||||
try {
|
||||
if (fullFolder != null && (fullFolder instanceof FolderItem || ((IFolder) fullFolder).exists())) {
|
||||
serializableAllVersion.addAll(getSerializableFromFolder(project, fullFolder, id, itemType, false, false, true, true));
|
||||
}
|
||||
} catch (PersistenceException e) {
|
||||
// do nothing.
|
||||
// if any exception happen or can't find the item, just try to look for it everywhere.
|
||||
}
|
||||
}
|
||||
if (serializableAllVersion.isEmpty()) {
|
||||
// look in all folders for this item type
|
||||
serializableAllVersion = getSerializableFromFolder(project, fullFolder, id, type, false, true, true, true, true);
|
||||
Object fullFolder = getFullFolder(project, type, relativeFolder);
|
||||
serializableAllVersion = getSerializableFromFolder(project, fullFolder, id, type, false, false, true, true);
|
||||
if (serializableAllVersion.isEmpty()) {
|
||||
// look in all folders for this item type
|
||||
serializableAllVersion = getSerializableFromFolder(project, fullFolder, id, type, false, true, true, true, true);
|
||||
}
|
||||
}
|
||||
int size = serializableAllVersion.size();
|
||||
|
||||
if (size > 1) {
|
||||
String message = getItemsMessages(serializableAllVersion, size);
|
||||
|
||||
throw new PersistenceException(Messages.getString(
|
||||
"AbstractEMFRepositoryFactory.presistenceException.OnlyOneOccurenceMustbeFound", message)); //$NON-NLS-1$
|
||||
} else if (size == 1) {
|
||||
return serializableAllVersion.get(0);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
if (size == 1) {
|
||||
return serializableAllVersion.get(0);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected void computePropertyMaxInformationLevel(Property property) {
|
||||
|
||||
@@ -2199,6 +2199,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(IUpdateService.class)) {
|
||||
IUpdateService updateService = GlobalServiceRegister.getDefault().getService(IUpdateService.class);
|
||||
updateService.syncComponentM2Jars(currentMonitor);
|
||||
updateService.installComponents(currentMonitor);
|
||||
}
|
||||
|
||||
// init sdk component
|
||||
|
||||
@@ -88,8 +88,8 @@ public enum EDatabaseVersion4Drivers {
|
||||
"Microsoft", "MSSQL_PROP", //$NON-NLS-1$ //$NON-NLS-2$
|
||||
new String[] { "mssql-jdbc.jar", "slf4j-api-1.7.25.jar", "slf4j-log4j12-1.7.25.jar", "adal4j-1.6.7.jar", //$NON-NLS-1$
|
||||
"commons-lang3-3.10.jar", "commons-codec-1.14.jar", "gson-2.8.9.jar", "oauth2-oidc-sdk-9.7.jar",
|
||||
"json-smart-2.4.9.jar", "nimbus-jose-jwt-9.22.jar", "javax.mail-1.6.2.jar", "reload4j-1.2.19.jar",
|
||||
"accessors-smart-2.4.9.jar", "asm-9.5.jar", "content-type-2.1.jar" })),
|
||||
"json-smart-2.4.11.jar", "nimbus-jose-jwt-9.22.jar", "javax.mail-1.6.2.jar", "reload4j-1.2.19.jar",
|
||||
"accessors-smart-2.4.11.jar", "asm-9.5.jar", "content-type-2.1.jar" })),
|
||||
|
||||
VERTICA_9(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 9.X", "VERTICA_9_0", "vertica-jdbc-9.3.1-0.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
VERTICA_7_1_X(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 7.1.X (Deprecated)", "VERTICA_7_1_X", "vertica-jdbc-7.1.2-0.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
|
||||
@@ -495,11 +495,16 @@ public class ContextUtils {
|
||||
}
|
||||
return itemMap;
|
||||
}
|
||||
|
||||
private static Set<String> missingContexts = new HashSet<>();
|
||||
|
||||
public static void clearMissingContextCache() {
|
||||
missingContexts.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* get the repository context item,now contextId can be either joblet node or context node.
|
||||
*/
|
||||
* get the repository context item, now contextId can be either joblet node or context node.
|
||||
*/
|
||||
public static Item getRepositoryContextItemById(String contextId) {
|
||||
if (IContextParameter.BUILT_IN.equals(contextId)) {
|
||||
return null;
|
||||
@@ -507,6 +512,9 @@ public class ContextUtils {
|
||||
if (checkObject(contextId)) {
|
||||
return null;
|
||||
}
|
||||
if (missingContexts.contains(contextId)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<ERepositoryObjectType> possibleTypes = new ArrayList<ERepositoryObjectType>();
|
||||
possibleTypes.add(ERepositoryObjectType.CONTEXT);
|
||||
@@ -521,6 +529,8 @@ public class ContextUtils {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
missingContexts.add(contextId);
|
||||
ExceptionHandler.log("Can't find Context item[id=" + contextId + "].");
|
||||
} catch (PersistenceException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
@@ -831,6 +841,7 @@ public class ContextUtils {
|
||||
ItemContextLink itemContextLink) {
|
||||
Map<String, String> renamedMap = new HashMap<String, String>();
|
||||
Map<String, Item> tempItemMap = new HashMap<String, Item>();
|
||||
clearMissingContextCache();
|
||||
for (ContextType contextType : contextTypeList) {
|
||||
for (Object obj : contextType.getContextParameter()) {
|
||||
if (obj instanceof ContextParameterType) {
|
||||
@@ -893,6 +904,7 @@ public class ContextUtils {
|
||||
*/
|
||||
public static Map<String, String> calculateRenamedMapFromLinkFile(String projectLabel, String itemId,
|
||||
List<IContext> contextList) {
|
||||
clearMissingContextCache();
|
||||
Map<String, String> renamedMap = new HashMap<String, String>();
|
||||
Map<String, Item> idToItemMap = new HashMap<String, Item>();
|
||||
try {
|
||||
|
||||
@@ -299,6 +299,7 @@ public class JobContextManager implements IContextManager {
|
||||
}
|
||||
List<ContextItem> contextItemList = ContextUtils.getAllContextItem();
|
||||
boolean setDefault = false;
|
||||
ContextUtils.clearMissingContextCache();
|
||||
for (int i = 0; i < contextTypeList.size(); i++) {
|
||||
contextType = (ContextType) contextTypeList.get(i);
|
||||
String name = contextType.getName();
|
||||
@@ -526,6 +527,7 @@ public class JobContextManager implements IContextManager {
|
||||
|
||||
EList newcontextTypeList = new BasicEList();
|
||||
Map<String, Item> idToItemMap = new HashMap<String, Item>();
|
||||
ContextUtils.clearMissingContextCache();
|
||||
for (int i = 0; i < listContext.size(); i++) {
|
||||
IContext context = listContext.get(i);
|
||||
String contextGroupName = renameGroupContext.get(context);
|
||||
|
||||
@@ -51,6 +51,7 @@ public abstract class AbstractItemContextLinkService implements IItemContextLink
|
||||
itemContextLink.setItemId(itemId);
|
||||
Map<String, Item> tempCache = new HashMap<String, Item>();
|
||||
if (contextTypeList != null && contextTypeList.size() > 0) {
|
||||
ContextUtils.clearMissingContextCache();
|
||||
for (Object object : contextTypeList) {
|
||||
if (object instanceof ContextType) {
|
||||
ContextType jobContextType = (ContextType) object;
|
||||
|
||||
@@ -206,6 +206,7 @@ public class ContextLinkService {
|
||||
Map<String, Map<String, String>> changedContextParameterId) throws PersistenceException {
|
||||
List<Relation> relationList = RelationshipItemBuilder.getInstance()
|
||||
.getItemsHaveRelationWith(sourceId, RelationshipItemBuilder.LATEST_VERSION, false);
|
||||
ContextUtils.clearMissingContextCache();
|
||||
for (Relation relation : relationList) {
|
||||
String id = relation.getId();
|
||||
IFile linkFile = calContextLinkFile(ProjectManager.getInstance().getCurrentProject().getTechnicalLabel(), id);
|
||||
|
||||
@@ -728,8 +728,8 @@ public final class ProcessUtils {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static boolean isRoute(Property property) {
|
||||
|
||||
public static boolean isRoute(Property property) {
|
||||
return property!= null && (ERepositoryObjectType.getType(property).equals(ERepositoryObjectType.PROCESS_ROUTE) ||
|
||||
ERepositoryObjectType.getType(property).equals(ERepositoryObjectType.PROCESS_ROUTE_MICROSERVICE));
|
||||
}
|
||||
@@ -768,6 +768,39 @@ public final class ProcessUtils {
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
public static boolean isRouteWithRoutelets(Item item) {
|
||||
if (item!= null && item instanceof ProcessItem) {
|
||||
for (Object obj : ((ProcessItem) item).getProcess().getNode()) {
|
||||
if (obj instanceof NodeType) {
|
||||
if (isRouteletNode((NodeType) obj)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isRouteletNode(NodeType node) {
|
||||
String jobIds = getParameterValue(node.getElementParameter(), "PROCESS_TYPE:PROCESS_TYPE_PROCESS");
|
||||
String jobVersion = getParameterValue(node.getElementParameter(), "PROCESS_TYPE:PROCESS_TYPE_VERSION"); //$NON-NLS-1$
|
||||
ProcessItem processItem = ItemCacheManager.getProcessItem(jobIds, jobVersion);
|
||||
if (processItem != null) {
|
||||
return ERepositoryObjectType.getType(processItem.getProperty()).equals(
|
||||
ERepositoryObjectType.PROCESS_ROUTELET);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String getParameterValue(EList<ElementParameterType> listParamType, String paramName) {
|
||||
for (ElementParameterType pType : listParamType) {
|
||||
if (pType != null && paramName.equals(pType.getName())) {
|
||||
return pType.getValue();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static int getAssertAmount(IProcess process) {
|
||||
int count = 0;
|
||||
@@ -1058,6 +1091,28 @@ public final class ProcessUtils {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isChildRouteProcess(Item item) {
|
||||
|
||||
if (item!= null && item instanceof ProcessItem) {
|
||||
for (Object obj : ((ProcessItem) item).getProcess().getNode()) {
|
||||
if (obj instanceof NodeType) {
|
||||
if (((NodeType) obj).getComponentName().equals("tRouteInput")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
public static boolean isRoutelet(Property p) {
|
||||
if (p != null) {
|
||||
return ERepositoryObjectType.getType(p).equals(ERepositoryObjectType.PROCESS_ROUTELET);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String escapeJava(String input) {
|
||||
return StringEscapeUtils.escapeJava(input);
|
||||
|
||||
@@ -42,6 +42,8 @@ public class JobInfoProperties extends Properties {
|
||||
public static final String PROJECT_NAME = "project"; //$NON-NLS-1$
|
||||
|
||||
public static final String JOB_ID = "jobId"; //$NON-NLS-1$
|
||||
|
||||
public static final String JOB_PARENT_ID = "jobParentId"; //$NON-NLS-1$
|
||||
|
||||
public static final String JOB_NAME = "job"; //$NON-NLS-1$
|
||||
|
||||
@@ -92,6 +94,10 @@ public class JobInfoProperties extends Properties {
|
||||
setProperty(BRANCH, branchSelection);
|
||||
}
|
||||
|
||||
if (processItem.getProperty() != null && processItem.getProperty().getParentItem() != null) {
|
||||
setProperty(JOB_PARENT_ID, processItem.getProperty().getParentItem().getProperty().getId());
|
||||
}
|
||||
|
||||
setProperty(JOB_ID, jobInfo.getJobId());
|
||||
setProperty(JOB_NAME, jobInfo.getJobName());
|
||||
String jobType = processItem.getProcess().getJobType();
|
||||
|
||||
@@ -22,6 +22,8 @@ public interface IBuildParametes {
|
||||
static final String SERVICE = "Service"; //$NON-NLS-1$
|
||||
|
||||
static final String ITEM = "Item"; //$NON-NLS-1$
|
||||
|
||||
static final String PARENT_ITEM = "ParentItem"; //$NON-NLS-1$
|
||||
|
||||
static final String VERSION = "Version"; //$NON-NLS-1$
|
||||
|
||||
|
||||
@@ -26,5 +26,7 @@ public interface IUpdateService extends IService {
|
||||
public String getSharedStudioMissingPatchVersion();
|
||||
|
||||
public boolean updateArtifactsFileSha256Hex(IProgressMonitor monitor, String studioArtifactsFileShaCodeHex);
|
||||
|
||||
public void installComponents(IProgressMonitor monitor);
|
||||
|
||||
}
|
||||
|
||||
@@ -648,6 +648,7 @@ public class ContextNebulaGridComposite extends AbstractContextTabEditComposite
|
||||
helper.initHelper(contextManager);
|
||||
Map<String, Item> items = new HashMap<String, Item>();
|
||||
boolean needRefresh = false;
|
||||
ContextUtils.clearMissingContextCache();
|
||||
for (IContextParameter param : contextManager.getDefaultContext().getContextParameterList()) {
|
||||
if (!param.isBuiltIn()) {
|
||||
String source = param.getSource();
|
||||
|
||||
@@ -522,6 +522,7 @@ public class SelectRepositoryContextDialog extends SelectionDialog {
|
||||
// remove the params which is unchecked
|
||||
Set<String> jobletIds = new HashSet<String>();
|
||||
Set<String> chekedIds = new HashSet<String>();
|
||||
ContextUtils.clearMissingContextCache();
|
||||
for (IContextParameter param : existParas) {
|
||||
if (param.isBuiltIn()) {
|
||||
continue;
|
||||
|
||||
@@ -185,6 +185,7 @@ public class AddRepositoryContextGroupCommand extends Command {
|
||||
// remove the params which is unchecked
|
||||
Set<String> jobletIds = new HashSet<String>();
|
||||
Set<String> chekedIds = new HashSet<String>();
|
||||
ContextUtils.clearMissingContextCache();
|
||||
for (IContextParameter param : existParas) {
|
||||
if (param.isBuiltIn()) {
|
||||
continue;
|
||||
|
||||
@@ -92,6 +92,7 @@ public class ContextNatTableUtils {
|
||||
List<ContextTableTabParentModel> output = new ArrayList<ContextTableTabParentModel>();
|
||||
if (!contextDatas.isEmpty()) {
|
||||
int i = 0;
|
||||
ContextUtils.clearMissingContextCache();
|
||||
for (IContextParameter para : contextDatas) {
|
||||
String sourceId = para.getSource();
|
||||
if (IContextParameter.BUILT_IN.equals(sourceId)) {
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.eclipse.ui.IViewPart;
|
||||
import org.eclipse.ui.IWorkbenchPage;
|
||||
import org.eclipse.ui.IWorkbenchPart;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.talend.core.model.context.ContextUtils;
|
||||
import org.talend.core.ui.branding.IBrandingConfiguration;
|
||||
|
||||
/**
|
||||
@@ -51,6 +52,7 @@ public class Contexts {
|
||||
public void run() {
|
||||
if (cxtView != null) {
|
||||
updateTitle(cxtView);
|
||||
ContextUtils.clearMissingContextCache();
|
||||
cxtView.refresh(part);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,9 @@ Export-Package: org.talend.core,
|
||||
org.talend.core.services.resource,
|
||||
org.talend.core.views,
|
||||
org.talend.designer.runprocess
|
||||
Import-Package: org.apache.commons.collections4.map
|
||||
Import-Package: org.apache.commons.collections4.map,
|
||||
org.eclipse.m2e.core,
|
||||
org.eclipse.m2e.core.embedder
|
||||
Bundle-ClassPath: .,
|
||||
lib/log4j-api-2.17.1.jar,
|
||||
lib/log4j-core-2.17.1.jar
|
||||
|
||||
@@ -0,0 +1,255 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2023 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.core.model.utils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.net.URL;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.apache.log4j.spi.LoggerFactory;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.FileLocator;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.m2e.core.MavenPlugin;
|
||||
import org.eclipse.m2e.core.embedder.IMaven;
|
||||
import org.osgi.framework.FrameworkUtil;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.ILibraryManagerService;
|
||||
import org.talend.core.i18n.Messages;
|
||||
import org.talend.utils.io.FilesUtils;
|
||||
|
||||
abstract public class BaseComponentInstallerTask implements IComponentInstallerTask {
|
||||
|
||||
private static final String SYS_PROP_TCOMPV0 = "tcompv0.update";
|
||||
private static final String SYS_PROP_OVERWRITE = "m2.overwrite";
|
||||
private static final String SYS_PROP_OVERWRITE_DEFAULT = Boolean.FALSE.toString();
|
||||
|
||||
private static final String SYS_CUSTOM_MAVEN_REPO = "maven.local.repository";
|
||||
|
||||
private int order;
|
||||
|
||||
private int componentType = -1;
|
||||
|
||||
private Set<ComponentGAV> gavs = new HashSet<ComponentGAV>();
|
||||
|
||||
protected boolean overWriteM2() {
|
||||
/**
|
||||
* force to overwrite, since need to sync maven-metadata-local.xml
|
||||
*/
|
||||
String prop = System.getProperty(SYS_PROP_OVERWRITE, Boolean.TRUE.toString());
|
||||
return Boolean.valueOf(prop);
|
||||
}
|
||||
|
||||
protected boolean updateTcompv0() {
|
||||
String prop = System.getProperty(SYS_PROP_TCOMPV0, SYS_PROP_OVERWRITE_DEFAULT);
|
||||
return Boolean.valueOf(prop);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getComponentType() {
|
||||
return componentType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setComponentType(int componentType) {
|
||||
this.componentType = componentType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return this.order;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOrder(int order) {
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<ComponentGAV> getComponentGAV() {
|
||||
return gavs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addComponentGAV(ComponentGAV gav) {
|
||||
gavs.add(gav);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<ComponentGAV> getComponentGAV(int componentType) {
|
||||
return this.gavs.stream().filter(gav -> (gav.getComponentType() & componentType) > 0)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get implementation class of installer
|
||||
*
|
||||
* @return implementation class of installer
|
||||
*/
|
||||
abstract protected Class<? extends BaseComponentInstallerTask> getInstallerClass();
|
||||
|
||||
/**
|
||||
* Get jar file directory
|
||||
*
|
||||
* @return jar file directory
|
||||
*/
|
||||
protected File getJarFileDir() {
|
||||
URL jarFolder = FileLocator.find(FrameworkUtil.getBundle(getInstallerClass()), new Path("repository"), null);
|
||||
File jarFileDir = null;
|
||||
if (jarFolder != null) {
|
||||
try {
|
||||
jarFileDir = new File(FileLocator.toFileURL(jarFolder).getPath());
|
||||
|
||||
if (jarFileDir.isDirectory()) {
|
||||
return jarFileDir;
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
*Implementation of unzipping files into studio local m2 directory
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Override
|
||||
public boolean needInstall() {
|
||||
|
||||
if (this.updateTcompv0()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
boolean toInstall = false;
|
||||
Set<ComponentGAV> tcompv0Gavs = this.getComponentGAV(COMPONENT_TYPE_TCOMPV0);
|
||||
|
||||
ILibraryManagerService librairesManagerService = (ILibraryManagerService) GlobalServiceRegister.getDefault()
|
||||
.getService(ILibraryManagerService.class);
|
||||
if (librairesManagerService != null) {
|
||||
for (ComponentGAV gav : tcompv0Gavs) {
|
||||
File jarFile = librairesManagerService.resolveStatusLocally(gav.toMavenUri());
|
||||
if (jarFile == null) {
|
||||
toInstall = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (toInstall) {
|
||||
}
|
||||
return toInstall;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean install(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
|
||||
|
||||
if (monitor == null) {
|
||||
monitor = new NullProgressMonitor();
|
||||
}
|
||||
|
||||
if (!this.needInstall()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
File jarDir = getJarFileDir();
|
||||
|
||||
if (jarDir == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
File m2Dir = getM2RepositoryPath();
|
||||
if (m2Dir == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
File[] files = jarDir.listFiles();
|
||||
Set<File> zipFiles = Stream.of(files).filter(f -> f.getName().endsWith(".zip")).collect(Collectors.toSet());
|
||||
boolean installed = true;
|
||||
|
||||
monitor.beginTask(Messages.getString("BaseComponentInstallerTask.installComponent", getMonitorText()),
|
||||
zipFiles.size());
|
||||
|
||||
for (File zf : zipFiles) {
|
||||
try {
|
||||
FilesUtils.unzip(zf.getAbsolutePath(), m2Dir.getAbsolutePath(), this.overWriteM2());
|
||||
} catch (Exception e) {
|
||||
installed = false;
|
||||
}
|
||||
monitor.worked(1);
|
||||
}
|
||||
|
||||
return installed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get studio local maven repository path
|
||||
*
|
||||
* @return local maven repository path
|
||||
*/
|
||||
protected File getM2RepositoryPath() {
|
||||
|
||||
String mavenRepo = System.getProperty(SYS_CUSTOM_MAVEN_REPO);
|
||||
|
||||
File m2Repo = null;
|
||||
|
||||
if (StringUtils.isEmpty(mavenRepo)) {
|
||||
final IMaven maven = MavenPlugin.getMaven();
|
||||
try {
|
||||
maven.reloadSettings();
|
||||
} catch (CoreException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
String localRepository = maven.getLocalRepositoryPath();
|
||||
|
||||
if (!StringUtils.isEmpty(localRepository)) {
|
||||
m2Repo = new File(localRepository);
|
||||
}
|
||||
} else {
|
||||
m2Repo = new File(mavenRepo);
|
||||
}
|
||||
|
||||
if (m2Repo != null && !m2Repo.exists()) {
|
||||
m2Repo.mkdirs();
|
||||
}
|
||||
return m2Repo;
|
||||
}
|
||||
|
||||
protected String getMonitorText() {
|
||||
Set<ComponentGAV> tcompv0Gavs = this.getComponentGAV(COMPONENT_TYPE_TCOMPV0);
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
tcompv0Gavs.forEach(gav -> {
|
||||
if (sb.length() > 0) {
|
||||
sb.append(",");
|
||||
}
|
||||
sb.append(gav.getArtifactId());
|
||||
});
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2023 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.core.model.utils;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
|
||||
public class ComponentGAV {
|
||||
|
||||
private String groupId;
|
||||
|
||||
private String artifactId;
|
||||
|
||||
private String version;
|
||||
|
||||
private String classifier;
|
||||
|
||||
private String type;
|
||||
|
||||
private int componentType;
|
||||
|
||||
/**
|
||||
* @return the groupId
|
||||
*/
|
||||
public String getGroupId() {
|
||||
return groupId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param groupId the groupId to set
|
||||
*/
|
||||
public void setGroupId(String groupId) {
|
||||
this.groupId = groupId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the artifactId
|
||||
*/
|
||||
public String getArtifactId() {
|
||||
return artifactId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param artifactId the artifactId to set
|
||||
*/
|
||||
public void setArtifactId(String artifactId) {
|
||||
this.artifactId = artifactId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the version
|
||||
*/
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param version the version to set
|
||||
*/
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the classifier
|
||||
*/
|
||||
public String getClassifier() {
|
||||
return classifier;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param classifier the classifier to set
|
||||
*/
|
||||
public void setClassifier(String classifier) {
|
||||
this.classifier = classifier;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the type
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type the type to set
|
||||
*/
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the componentType
|
||||
*/
|
||||
public int getComponentType() {
|
||||
return componentType;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param componentType the componentType to set
|
||||
*/
|
||||
public void setComponentType(int componentType) {
|
||||
this.componentType = componentType;
|
||||
}
|
||||
|
||||
public String toMavenUri() {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("mvn:");
|
||||
sb.append(toStr("/"));
|
||||
|
||||
sb.append("/");
|
||||
if (!StringUtils.isEmpty(type)) {
|
||||
sb.append(type);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String toCoordinateStr() {
|
||||
return toStr(":");
|
||||
}
|
||||
|
||||
private String toStr(String sep) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
|
||||
if (!StringUtils.isEmpty(groupId)) {
|
||||
sb.append(this.groupId);
|
||||
}
|
||||
|
||||
if (!StringUtils.isEmpty(artifactId)) {
|
||||
if (sb.length() > 0) {
|
||||
sb.append(sep);
|
||||
}
|
||||
sb.append(this.artifactId);
|
||||
}
|
||||
|
||||
if (!StringUtils.isEmpty(version)) {
|
||||
sb.append(sep);
|
||||
sb.append(this.version);
|
||||
}
|
||||
if (!StringUtils.isEmpty(classifier)) {
|
||||
sb.append(sep);
|
||||
sb.append(this.classifier);
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (!(obj instanceof ComponentGAV)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ComponentGAV thatObj = (ComponentGAV) obj;
|
||||
|
||||
if (!StringUtils.equals(this.getGroupId(), thatObj.getGroupId())) {
|
||||
return false;
|
||||
}
|
||||
if (!StringUtils.equals(this.getArtifactId(), thatObj.getArtifactId())) {
|
||||
return false;
|
||||
}
|
||||
if (!StringUtils.equals(this.getVersion(), thatObj.getVersion())) {
|
||||
return false;
|
||||
}
|
||||
if (!StringUtils.equals(this.getType(), thatObj.getType())) {
|
||||
return false;
|
||||
}
|
||||
if (!StringUtils.equals(this.getClassifier(), thatObj.getClassifier())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return this.getComponentType() == thatObj.getComponentType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + (this.getGroupId() == null ? 0 : this.getGroupId().hashCode());
|
||||
result = prime * result + (this.getArtifactId() == null ? 0 : this.getArtifactId().hashCode());
|
||||
result = prime * result + (this.getVersion() == null ? 0 : this.getVersion().hashCode());
|
||||
result = prime * result + (this.getType() == null ? 0 : this.getType().hashCode());
|
||||
result = prime * result + (this.getClassifier() == null ? 0 : this.getClassifier().hashCode());
|
||||
result = prime * result + this.getComponentType();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "GAV [groupId=" + this.groupId + ", artifactId=" + this.artifactId + ", version=" + this.version + ", classifier=" + this.classifier + ", type=" + this.type + ", componentType="
|
||||
+ this.componentType + "]";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2023 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.core.model.utils;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
|
||||
|
||||
public interface IComponentInstallerTask {
|
||||
|
||||
int COMPONENT_TYPE_TCOMPV0 = 1;
|
||||
|
||||
int COMPONENT_TYPE_TCOMPV1 = 2;
|
||||
|
||||
int COMPONENT_TYPE_MAVEN_REPO = 4;
|
||||
|
||||
/**
|
||||
* Order of the task, smaller means higher priority
|
||||
*
|
||||
* @return Order of the task
|
||||
*/
|
||||
int getOrder();
|
||||
|
||||
/**
|
||||
* Set order of the task
|
||||
*
|
||||
* @param order
|
||||
*/
|
||||
void setOrder(int order);
|
||||
|
||||
/**
|
||||
* Get all component gavs
|
||||
*
|
||||
* @return Set<ComponentGAV>
|
||||
*/
|
||||
Set<ComponentGAV> getComponentGAV();
|
||||
|
||||
/**
|
||||
* @param componentType 1 - tcompv0, 2 - tcompv1
|
||||
* @return Set<ComponentGAV>
|
||||
*/
|
||||
Set<ComponentGAV> getComponentGAV(int componentType);
|
||||
|
||||
/**
|
||||
* Add component gav
|
||||
*
|
||||
* @param gav
|
||||
*/
|
||||
void addComponentGAV(ComponentGAV gav);
|
||||
|
||||
/**
|
||||
* Whether it is necessary to install the component
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
boolean needInstall();
|
||||
|
||||
/**
|
||||
* Install the component
|
||||
*
|
||||
* @param monitor
|
||||
* @throws InvocationTargetException
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
boolean install(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException;
|
||||
|
||||
/**
|
||||
* @return the componentType
|
||||
*/
|
||||
int getComponentType();
|
||||
|
||||
/**
|
||||
* @param componentType the componentType to set
|
||||
*/
|
||||
void setComponentType(int componentType);
|
||||
}
|
||||
@@ -1608,6 +1608,11 @@ public class ProcessorUtilities {
|
||||
}
|
||||
}
|
||||
|
||||
// if (isCIMode() && "Routelets".equals(node.getComponent().getOriginalFamilyName())) {
|
||||
if ("Routelets".equals(node.getComponent().getOriginalFamilyName())) {
|
||||
processItem.getProperty().setParentItem(ItemCacheManager.getProcessItem(currentProcess.getId(), currentProcess.getVersion()));
|
||||
}
|
||||
|
||||
int subJobOption = GENERATE_ALL_CHILDS;
|
||||
if (BitwiseOptionUtils.containOption(option, GENERATE_WITH_FIRST_CHILD)) {
|
||||
subJobOption = GENERATE_MAIN_ONLY;
|
||||
@@ -2547,7 +2552,7 @@ public class ProcessorUtilities {
|
||||
return jobInfos;
|
||||
}
|
||||
|
||||
private static boolean isRouteletNode(NodeType node) {
|
||||
public static boolean isRouteletNode(NodeType node) {
|
||||
String jobIds = getParameterValue(node.getElementParameter(), "PROCESS_TYPE:PROCESS_TYPE_PROCESS");
|
||||
String jobVersion = getParameterValue(node.getElementParameter(), "PROCESS_TYPE:PROCESS_TYPE_VERSION"); //$NON-NLS-1$
|
||||
ProcessItem processItem = ItemCacheManager.getProcessItem(jobIds, jobVersion);
|
||||
@@ -2945,4 +2950,12 @@ public class ProcessorUtilities {
|
||||
public static boolean isNeedExportItemsForDQ() {
|
||||
return needExportItemsForDQ;
|
||||
}
|
||||
|
||||
public static boolean isMicroservice(Item item) {
|
||||
if (item == null || item.getProperty() == null || item.getProperty().getAdditionalProperties() == null) {
|
||||
return false;
|
||||
}
|
||||
return "ROUTE_MICROSERVICE".equals(item.getProperty().getAdditionalProperties()
|
||||
.get(TalendProcessArgumentConstant.ARG_BUILD_TYPE));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,42 @@
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.20</version>
|
||||
<version>2.22.2</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.11</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.plexus</groupId>
|
||||
<artifactId>plexus-component-annotations</artifactId>
|
||||
<version>1.7.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.surefire</groupId>
|
||||
<artifactId>surefire-api</artifactId>
|
||||
<version>2.22.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.surefire</groupId>
|
||||
<artifactId>surefire-booter</artifactId>
|
||||
<version>2.22.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.surefire</groupId>
|
||||
<artifactId>surefire-junit4</artifactId>
|
||||
<version>2.22.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<artifactId>studio-tacokit-dependencies</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<properties>
|
||||
<tacokit.components.version>1.27.23</tacokit.components.version>
|
||||
<tacokit.components.version>1.27.26</tacokit.components.version>
|
||||
</properties>
|
||||
<repositories>
|
||||
<repository>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<properties>
|
||||
<tcomp.version>1.38.9</tcomp.version>
|
||||
<tcomp.version>1.38.11</tcomp.version>
|
||||
<slf4j.version>1.7.32</slf4j.version>
|
||||
<log4j2.version>2.17.1</log4j2.version>
|
||||
<reload4j.version>1.2.19</reload4j.version>
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.12.4</version>
|
||||
<version>2.22.2</version>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.plexus</groupId>
|
||||
@@ -190,6 +190,16 @@
|
||||
<version>3.0.24</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.13.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.11</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.shared</groupId>
|
||||
<artifactId>maven-shared-utils</artifactId>
|
||||
<version>3.3.3</version>
|
||||
|
||||
@@ -45,6 +45,7 @@ public enum ETalendMavenVariables {
|
||||
JobletName,
|
||||
|
||||
JobId,
|
||||
JobParentId,
|
||||
JobName,
|
||||
JobType,
|
||||
JobFinalName,
|
||||
|
||||
@@ -25,7 +25,6 @@ import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -35,7 +34,6 @@ import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
||||
import org.apache.maven.model.Activation;
|
||||
import org.apache.maven.model.Dependency;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.Plugin;
|
||||
import org.apache.maven.model.Profile;
|
||||
import org.eclipse.core.resources.IContainer;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
@@ -58,6 +56,7 @@ import org.eclipse.swt.widgets.Display;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.exception.PersistenceException;
|
||||
import org.talend.commons.utils.MojoType;
|
||||
import org.talend.commons.utils.VersionUtils;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.IESBService;
|
||||
import org.talend.core.ILibraryManagerService;
|
||||
@@ -67,6 +66,7 @@ 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.ProjectReference;
|
||||
@@ -99,6 +99,7 @@ import org.talend.designer.maven.utils.MavenProjectUtils;
|
||||
import org.talend.designer.maven.utils.PomIdsHelper;
|
||||
import org.talend.designer.maven.utils.PomUtil;
|
||||
import org.talend.designer.runprocess.IRunProcessService;
|
||||
import org.talend.designer.runprocess.ProcessorUtilities;
|
||||
import org.talend.repository.ProjectManager;
|
||||
import org.talend.repository.RepositoryWorkUnit;
|
||||
import org.talend.repository.model.RepositoryConstants;
|
||||
@@ -631,9 +632,37 @@ public class AggregatorPomsHelper {
|
||||
public String getJobProjectName(Property property) {
|
||||
return projectTechName + "_" + getJobProjectFolderName(property).toUpperCase(); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public static String getJobLabel(Property property) {
|
||||
|
||||
if (property == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if (property.getParentItem() != null) {
|
||||
Property parentProperty = property.getParentItem().getProperty();
|
||||
return parentProperty.getLabel() + "_" + parentProperty.getVersion().replace(".", "_") + "_" + property.getLabel();
|
||||
}
|
||||
|
||||
return property.getLabel();
|
||||
}
|
||||
|
||||
public static String getJobId(Property property) {
|
||||
|
||||
if (property == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if (property.getParentItem() != null) {
|
||||
Property parentProperty = property.getParentItem().getProperty();
|
||||
return property.getId() + "_" + parentProperty.getId() + "_" + parentProperty.getVersion().replace(".", "_");
|
||||
}
|
||||
|
||||
return property.getId();
|
||||
}
|
||||
|
||||
public static String getJobProjectFolderName(Property property) {
|
||||
return getJobProjectFolderName(property.getLabel(), property.getVersion());
|
||||
return getJobProjectFolderName(getJobLabel(property), property.getVersion());
|
||||
}
|
||||
|
||||
public static String getJobProjectFolderName(String label, String version) {
|
||||
@@ -642,7 +671,7 @@ public class AggregatorPomsHelper {
|
||||
|
||||
public static String getJobProjectId(Property property) {
|
||||
String _projectTechName = ProjectManager.getInstance().getProject(property).getTechnicalLabel();
|
||||
return getJobProjectId(_projectTechName, property.getId(), property.getVersion());
|
||||
return getJobProjectId(_projectTechName, getJobId(property), property.getVersion());
|
||||
}
|
||||
|
||||
public static String getJobProjectId(String projectTechName, String id, String version) {
|
||||
@@ -683,7 +712,7 @@ public class AggregatorPomsHelper {
|
||||
AggregatorPomsHelper helper = new AggregatorPomsHelper(projectTechName);
|
||||
IPath itemRelativePath = getItemRelativePath.apply(property);
|
||||
String version = realVersion == null ? property.getVersion() : realVersion;
|
||||
String jobFolderName = getJobProjectFolderName(property.getLabel(), version);
|
||||
String jobFolderName = getJobProjectFolderName(getJobLabel(property), version);
|
||||
ERepositoryObjectType type = ERepositoryObjectType.getItemType(property.getItem());
|
||||
IFolder jobFolder = null;
|
||||
if (PomIdsHelper.skipFolders()) {
|
||||
@@ -978,6 +1007,12 @@ public class AggregatorPomsHelper {
|
||||
}
|
||||
Item item = object.getProperty().getItem();
|
||||
if (ProjectManager.getInstance().isInCurrentMainProject(item)) {
|
||||
|
||||
// remove original child routelets projects as they will be created during parent Route generation
|
||||
if (ProcessUtils.isRoutelet(item.getProperty())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
monitor.subTask("Synchronize job pom: " + item.getProperty().getLabel() //$NON-NLS-1$
|
||||
+ "_" + item.getProperty().getVersion()); //$NON-NLS-1$
|
||||
if (runProcessService != null) {
|
||||
@@ -993,11 +1028,92 @@ public class AggregatorPomsHelper {
|
||||
modules.add(getModulePath(pomFile));
|
||||
}
|
||||
}
|
||||
}
|
||||
monitor.worked(1);
|
||||
if (monitor.isCanceled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
monitor.worked(1);
|
||||
if (monitor.isCanceled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Generate individual routelet projects/poms for each Route (CI mode only)
|
||||
|
||||
if (ProcessUtils.isRoute(item.getProperty()) && ProcessUtils.isRouteWithRoutelets(item)) {
|
||||
|
||||
Set<JobInfo> allJobInfos = ProcessorUtilities.getChildrenJobInfo(item, true, true);
|
||||
|
||||
for (JobInfo childJob : allJobInfos) {
|
||||
|
||||
if (childJob.getProcessItem() != null && childJob.getProcessItem().getProperty() != null ) {
|
||||
|
||||
if (!ProcessUtils.isRoutelet(childJob.getProcessItem().getProperty())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Property childJobProperty = childJob.getProcessItem().getProperty();
|
||||
String jobGroupID = (String) childJob.getProcessItem().getProperty().getAdditionalProperties().get(MavenConstants.NAME_GROUP_ID);
|
||||
String jobCustomVersion = (String) childJob.getProcessItem().getProperty().getAdditionalProperties().get(MavenConstants.NAME_USER_VERSION);
|
||||
boolean jobUseSnapshot = childJob.getProcessItem().getProperty().getAdditionalProperties().containsKey(MavenConstants.NAME_PUBLISH_AS_SNAPSHOT);
|
||||
|
||||
Property routeProperty = item.getProperty();
|
||||
String routeGroupID = PomIdsHelper.getJobGroupId(routeProperty);
|
||||
String routeVersion = VersionUtils.getPublishVersion(routeProperty.getVersion());
|
||||
String routeCustomVersion = (String) routeProperty.getAdditionalProperties().get(MavenConstants.NAME_USER_VERSION);
|
||||
boolean routeUseSnapshot = routeProperty.getAdditionalProperties().containsKey(MavenConstants.NAME_PUBLISH_AS_SNAPSHOT);
|
||||
|
||||
IFile routePomFile = getItemPomFolder(item.getProperty()).getFile(TalendMavenConstants.POM_FILE_NAME);
|
||||
|
||||
// Inherit child job parameters from parent route
|
||||
|
||||
childJobProperty.setParentItem(item);
|
||||
childJobProperty.getAdditionalProperties().put(MavenConstants.NAME_GROUP_ID, routeGroupID);
|
||||
|
||||
if (routeCustomVersion != null) {
|
||||
childJobProperty.getAdditionalProperties().put(MavenConstants.NAME_USER_VERSION, routeCustomVersion);
|
||||
} else {
|
||||
childJobProperty.getAdditionalProperties().put(MavenConstants.NAME_USER_VERSION, routeVersion);
|
||||
}
|
||||
|
||||
if (routeUseSnapshot) {
|
||||
childJobProperty.getAdditionalProperties().put(MavenConstants.NAME_PUBLISH_AS_SNAPSHOT, "true");
|
||||
} else {
|
||||
childJobProperty.getAdditionalProperties().remove(MavenConstants.NAME_PUBLISH_AS_SNAPSHOT);
|
||||
}
|
||||
|
||||
|
||||
runProcessService.generatePom(childJob.getProcessItem(), TalendProcessOptionConstants.GENERATE_POM_NO_FILTER);
|
||||
|
||||
IFile childPomFile = getItemPomFolder(childJobProperty).getFile(TalendMavenConstants.POM_FILE_NAME);
|
||||
if (childPomFile.getProject().getName().equalsIgnoreCase(routePomFile.getProject().getName())) {
|
||||
modules.add(getModulePath(childPomFile));
|
||||
}
|
||||
|
||||
// restore original Job parameters
|
||||
childJobProperty.setParentItem(null);
|
||||
|
||||
if ( jobGroupID!= null) {
|
||||
childJobProperty.getAdditionalProperties().put(MavenConstants.NAME_GROUP_ID, jobGroupID);
|
||||
}else {
|
||||
childJobProperty.getAdditionalProperties().remove(MavenConstants.NAME_GROUP_ID);
|
||||
}
|
||||
|
||||
if (jobUseSnapshot) {
|
||||
childJobProperty.getAdditionalProperties().put(MavenConstants.NAME_PUBLISH_AS_SNAPSHOT, "true");
|
||||
}else {
|
||||
childJobProperty.getAdditionalProperties().remove(MavenConstants.NAME_PUBLISH_AS_SNAPSHOT);
|
||||
}
|
||||
|
||||
if (jobCustomVersion!=null) {
|
||||
childJobProperty.getAdditionalProperties().put(MavenConstants.NAME_USER_VERSION, jobCustomVersion);
|
||||
} else {
|
||||
childJobProperty.getAdditionalProperties().remove(MavenConstants.NAME_USER_VERSION);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
monitor.worked(1);
|
||||
if (monitor.isCanceled()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
// sync project pom again with all modules.
|
||||
monitor.subTask("Synchronize project pom with modules"); //$NON-NLS-1$
|
||||
|
||||
@@ -149,10 +149,30 @@ public abstract class AbstractMavenProcessorPom extends CreateMavenBundleTemplat
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobGroupId, PomIdsHelper.getJobGroupId(property));
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobVersion, PomIdsHelper.getJobVersion(property));
|
||||
}
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobArtifactId, PomIdsHelper.getJobArtifactId(property));
|
||||
variablesValuesMap.put(ETalendMavenVariables.TalendJobVersion, property.getVersion());
|
||||
final String jobName = JavaResourcesHelper.escapeFileName(process.getName());
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobName, jobName);
|
||||
if(ProcessUtils.isRoutelet(property)) {
|
||||
if(property.getParentItem() != null) {
|
||||
String routeArtifactID = PomIdsHelper.getJobArtifactId(property.getParentItem().getProperty());
|
||||
String jobArtifactID = PomIdsHelper.getJobArtifactId(property);
|
||||
String routeVersion = property.getParentItem().getProperty().getVersion().replace(".", "_");
|
||||
|
||||
String jobName = (jobArtifactID.startsWith(routeArtifactID))? jobArtifactID :
|
||||
routeArtifactID + "_" + routeVersion + "_" + jobArtifactID;
|
||||
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobGroupId, PomIdsHelper.getJobGroupId(property.getParentItem().getProperty()));
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobArtifactId, jobName);
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobName, jobName);
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobVersion, PomIdsHelper.getJobVersion(property.getParentItem().getProperty()));
|
||||
} else {
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobArtifactId, PomIdsHelper.getJobArtifactId(property));
|
||||
final String jobName = JavaResourcesHelper.escapeFileName(process.getName());
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobName, jobName);
|
||||
}
|
||||
} else {
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobArtifactId, PomIdsHelper.getJobArtifactId(property));
|
||||
final String jobName = JavaResourcesHelper.escapeFileName(process.getName());
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobName, jobName);
|
||||
}
|
||||
|
||||
if (property != null) {
|
||||
Project currentProject = ProjectManager.getInstance().getProject(property);
|
||||
|
||||
@@ -267,6 +267,8 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
|
||||
jobInfoProp.getProperty(JobInfoProperties.CONTEXT_NAME, context.getName()));
|
||||
checkPomProperty(properties, "talend.job.id", ETalendMavenVariables.JobId,
|
||||
jobInfoProp.getProperty(JobInfoProperties.JOB_ID, process.getId()));
|
||||
checkPomProperty(properties, "talend.job.parent.id", ETalendMavenVariables.JobParentId,
|
||||
jobInfoProp.getProperty(JobInfoProperties.JOB_PARENT_ID, ""));
|
||||
checkPomProperty(properties, "talend.job.type", ETalendMavenVariables.JobType,
|
||||
jobInfoProp.getProperty(JobInfoProperties.JOB_TYPE));
|
||||
|
||||
|
||||
@@ -152,19 +152,19 @@
|
||||
context="plugin:org.talend.metadata.managment"
|
||||
language="java"
|
||||
message="Needed for create Microsoft SQL Server db connection"
|
||||
mvn_uri="mvn:net.minidev/json-smart/2.4.9"
|
||||
name="json-smart-2.4.9.jar"
|
||||
mvn_uri="mvn:net.minidev/json-smart/2.4.11"
|
||||
name="json-smart-2.4.11.jar"
|
||||
required="true"
|
||||
uripath="platform:/plugin/org.talend.libraries.tis.custom/lib/json-smart-2.4.9.jar">
|
||||
uripath="platform:/plugin/org.talend.libraries.tis.custom/lib/json-smart-2.4.11.jar">
|
||||
</libraryNeeded>
|
||||
<libraryNeeded
|
||||
context="plugin:org.talend.metadata.managment"
|
||||
language="java"
|
||||
message="Needed for create Microsoft SQL Server db connection"
|
||||
mvn_uri="mvn:net.minidev/accessors-smart/2.4.9"
|
||||
name="accessors-smart-2.4.9.jar"
|
||||
mvn_uri="mvn:net.minidev/accessors-smart/2.4.11"
|
||||
name="accessors-smart-2.4.11.jar"
|
||||
required="true"
|
||||
uripath="platform:/plugin/org.talend.libraries.tis.custom/lib/accessors-smart-2.4.9.jar">
|
||||
uripath="platform:/plugin/org.talend.libraries.tis.custom/lib/accessors-smart-2.4.11.jar">
|
||||
</libraryNeeded>
|
||||
<libraryNeeded
|
||||
context="plugin:org.talend.metadata.managment"
|
||||
|
||||
@@ -400,6 +400,36 @@ public interface PropertiesPackage extends EPackage {
|
||||
*/
|
||||
int ITEM = 6;
|
||||
|
||||
/**
|
||||
* The meta object id for the parent '{@link org.talend.core.model.properties.impl.ItemImpl <em>Item</em>}' class. <!--
|
||||
* begin-user-doc --> <!-- end-user-doc -->
|
||||
*
|
||||
* @see org.talend.core.model.properties.impl.ItemImpl
|
||||
* @see org.talend.core.model.properties.impl.PropertiesPackageImpl#getParentItem()
|
||||
* @generated
|
||||
*/
|
||||
int PARENT_ITEM = 109;
|
||||
|
||||
|
||||
/**
|
||||
* The meta object id for the '{@link org.talend.core.model.properties.impl.ItemImpl <em>Item</em>}' class. <!--
|
||||
* begin-user-doc --> <!-- end-user-doc -->
|
||||
*
|
||||
* @see org.talend.core.model.properties.impl.ItemImpl
|
||||
* @see org.talend.core.model.properties.impl.PropertiesPackageImpl#getParentItem()
|
||||
* @generated
|
||||
*/
|
||||
int PARENT_ITEM__PROPERTY = 110;
|
||||
|
||||
|
||||
/**
|
||||
* The feature id for the parent '<em><b>Item</b></em>' reference.
|
||||
* <!-- begin-user-doc --> <!-- end-user-doc -->
|
||||
* @generated
|
||||
* @ordered
|
||||
*/
|
||||
int PROPERTY__PARENT_ITEM = 111;
|
||||
|
||||
/**
|
||||
* The meta object id for the '{@link org.talend.core.model.properties.impl.BusinessProcessItemImpl <em>Business Process Item</em>}' class.
|
||||
* <!-- begin-user-doc --> <!-- end-user-doc -->
|
||||
|
||||
@@ -419,5 +419,33 @@ public interface Property extends EObject {
|
||||
* @generated
|
||||
*/
|
||||
void setItem(Item value);
|
||||
|
||||
/**
|
||||
* Returns the value of the parent '<em><b>Item</b></em>' reference. It is bidirectional and its opposite is '
|
||||
* {@link org.talend.core.model.properties.Item#getProperty <em>Property</em>}'. <!-- begin-user-doc -->
|
||||
* <p>
|
||||
* If the meaning of the parent '<em>Item</em>' reference isn't clear, there really should be more of a description here...
|
||||
* </p>
|
||||
* <!-- end-user-doc -->
|
||||
*
|
||||
* @return the value of the parent'<em>Item</em>' reference.
|
||||
* @see #setParentItem(Item)
|
||||
* @see org.talend.core.model.properties.PropertiesPackage#getProperty_Item()
|
||||
* @see org.talend.core.model.properties.Item#getProperty
|
||||
* @model opposite="property"
|
||||
* @generated
|
||||
*/
|
||||
Item getParentItem();
|
||||
|
||||
/**
|
||||
* Sets the value of the parent '{@link org.talend.core.model.properties.Property#getItem <em>Item</em>}' reference. <!--
|
||||
* begin-user-doc --> <!-- end-user-doc -->
|
||||
*
|
||||
* @param value the new value of the parent '<em>Item</em>' reference.
|
||||
* @see #getParentItem()
|
||||
* @generated
|
||||
*/
|
||||
void setParentItem(Item value);
|
||||
|
||||
|
||||
} // Property
|
||||
|
||||
@@ -227,6 +227,17 @@ public class PropertyImpl extends EObjectImpl implements Property {
|
||||
* @ordered
|
||||
*/
|
||||
protected Item item;
|
||||
|
||||
|
||||
/**
|
||||
* The cached value of the parent '{@link #getParentItem() <em>Item</em>}' reference.
|
||||
* <!-- begin-user-doc -->
|
||||
* <!-- end-user-doc -->
|
||||
* @see #getParentItem()
|
||||
* @generated
|
||||
* @ordered
|
||||
*/
|
||||
protected Item parentItem;
|
||||
|
||||
/**
|
||||
* The cached value of the '{@link #getAuthor() <em>Author</em>}' reference.
|
||||
@@ -542,6 +553,23 @@ public class PropertyImpl extends EObjectImpl implements Property {
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
/**
|
||||
* <!-- begin-user-doc -->
|
||||
* <!-- end-user-doc -->
|
||||
* @generated
|
||||
*/
|
||||
public Item getParentItem() {
|
||||
if (parentItem != null && parentItem.eIsProxy()) {
|
||||
InternalEObject oldItem = (InternalEObject)parentItem;
|
||||
parentItem = (Item)eResolveProxy(oldItem);
|
||||
if (parentItem != oldItem) {
|
||||
if (eNotificationRequired())
|
||||
eNotify(new ENotificationImpl(this, Notification.RESOLVE, PropertiesPackage.PROPERTY__PARENT_ITEM, oldItem, parentItem));
|
||||
}
|
||||
}
|
||||
return parentItem;
|
||||
}
|
||||
|
||||
/**
|
||||
* <!-- begin-user-doc -->
|
||||
@@ -551,6 +579,15 @@ public class PropertyImpl extends EObjectImpl implements Property {
|
||||
public Item basicGetItem() {
|
||||
return item;
|
||||
}
|
||||
|
||||
/**
|
||||
* <!-- begin-user-doc -->
|
||||
* <!-- end-user-doc -->
|
||||
* @generated
|
||||
*/
|
||||
public Item basicGetParentItem() {
|
||||
return parentItem;
|
||||
}
|
||||
|
||||
/**
|
||||
* <!-- begin-user-doc -->
|
||||
@@ -585,6 +622,13 @@ public class PropertyImpl extends EObjectImpl implements Property {
|
||||
else if (eNotificationRequired())
|
||||
eNotify(new ENotificationImpl(this, Notification.SET, PropertiesPackage.PROPERTY__ITEM, newItem, newItem));
|
||||
}
|
||||
|
||||
public void setParentItem(Item newItem) {
|
||||
Item oldItem = parentItem;
|
||||
parentItem = newItem;
|
||||
if (eNotificationRequired())
|
||||
eNotify(new ENotificationImpl(this, Notification.SET, PropertiesPackage.PROPERTY__PARENT_ITEM, oldItem, newItem));
|
||||
}
|
||||
|
||||
/**
|
||||
* <!-- begin-user-doc -->
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.talend.commons.runtime.utils.io.FileCopyUtils;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.model.process.JobInfo;
|
||||
import org.talend.core.model.process.ProcessUtils;
|
||||
import org.talend.core.model.properties.ProcessItem;
|
||||
import org.talend.core.runtime.process.ITalendProcessJavaProject;
|
||||
import org.talend.core.runtime.repository.build.IBuildResourcesProvider;
|
||||
@@ -70,6 +71,9 @@ public class SyncChildrenContextsResourcesProvider implements IBuildResourcesPro
|
||||
final IFolder mainResourcesFolder = processJavaProject.getExternalResourcesFolder();
|
||||
final File targetFolder = mainResourcesFolder.getLocation().toFile();
|
||||
dependenciesItems.stream().filter(jobInfo -> !jobInfo.isJoblet()).map(JobInfo::getProcessItem).forEach(item -> {
|
||||
if (ProcessUtils.isRoutelet(item.getProperty())) {
|
||||
item.getProperty().setParentItem(processItem);
|
||||
}
|
||||
ITalendProcessJavaProject childJavaProject = runProcessService.getTalendJobJavaProject(item.getProperty());
|
||||
if (childJavaProject != null) {
|
||||
final IFolder childResourcesFolder = childJavaProject.getExternalResourcesFolder();
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.talend.commons.runtime.utils.io.FileCopyUtils;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.model.process.JobInfo;
|
||||
import org.talend.core.model.process.ProcessUtils;
|
||||
import org.talend.core.model.properties.ProcessItem;
|
||||
import org.talend.core.runtime.process.ITalendProcessJavaProject;
|
||||
import org.talend.core.runtime.repository.build.IBuildResourcesProvider;
|
||||
@@ -67,6 +68,9 @@ public class SyncChildrenSourceCodeProvider implements IBuildResourcesProvider {
|
||||
final File targetFolder = mainSrcFolder.getLocation().toFile();
|
||||
|
||||
dependenciesItems.stream().filter(jobInfo -> !jobInfo.isJoblet()).map(JobInfo::getProcessItem).forEach(item -> {
|
||||
if (ProcessUtils.isRoutelet(item.getProperty())) {
|
||||
item.getProperty().setParentItem(processItem);
|
||||
}
|
||||
ITalendProcessJavaProject childJavaProject = runProcessService.getTalendJobJavaProject(item.getProperty());
|
||||
if (childJavaProject != null) {
|
||||
final IFolder childSrcFolder = childJavaProject.getSrcFolder();
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.talend.commons.runtime.utils.io.FileCopyUtils;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.model.process.JobInfo;
|
||||
import org.talend.core.model.process.ProcessUtils;
|
||||
import org.talend.core.model.properties.ProcessItem;
|
||||
import org.talend.core.runtime.process.ITalendProcessJavaProject;
|
||||
import org.talend.core.runtime.repository.build.IBuildResourcesProvider;
|
||||
@@ -65,6 +66,9 @@ public class SyncChildrenTestReportsProvider implements IBuildResourcesProvider
|
||||
if (jobInfo.isJoblet()) {
|
||||
continue;
|
||||
}
|
||||
if (ProcessUtils.isRoutelet(jobInfo.getProcessItem().getProperty())) {
|
||||
jobInfo.getProcessItem().getProperty().setParentItem(processItem);
|
||||
}
|
||||
ITalendProcessJavaProject childJavaProject = runProcessService
|
||||
.getTalendJobJavaProject(jobInfo.getProcessItem().getProperty());
|
||||
if (childJavaProject != null) {
|
||||
|
||||
@@ -5,4 +5,5 @@ bin.includes = META-INF/,\
|
||||
schema/,\
|
||||
plugin.xml,\
|
||||
OSGI-INF/,\
|
||||
repository/,\
|
||||
icons/
|
||||
|
||||
@@ -9,4 +9,119 @@
|
||||
</parent>
|
||||
<artifactId>org.talend.updates.runtime</artifactId>
|
||||
<packaging>eclipse-plugin</packaging>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.22.2</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.sonatype.plexus</groupId>
|
||||
<artifactId>plexus-cipher</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.surefire</groupId>
|
||||
<artifactId>surefire-junit4</artifactId>
|
||||
<version>2.22.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.11</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.plexus</groupId>
|
||||
<artifactId>plexus-component-annotations</artifactId>
|
||||
<version>1.7.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<version>2.8.2</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>default-deploy</id>
|
||||
<phase>deploy</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<configuration>
|
||||
<filesets>
|
||||
<fileset>
|
||||
<directory>${project.basedir}/repository</directory>
|
||||
<includes>
|
||||
<include>**/*</include>
|
||||
</includes>
|
||||
<followSymlinks>false</followSymlinks>
|
||||
</fileset>
|
||||
<fileset>
|
||||
<directory>${project.basedir}/tmp</directory>
|
||||
<includes>
|
||||
<include>**/*</include>
|
||||
</includes>
|
||||
<followSymlinks>false</followSymlinks>
|
||||
</fileset>
|
||||
</filesets>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-dependencies-jar</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>copy-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.basedir}/tmp</outputDirectory>
|
||||
<includeScope>runtime</includeScope>
|
||||
<useRepositoryLayout>true</useRepositoryLayout>
|
||||
<addParentPoms>true</addParentPoms>
|
||||
<copyPom>true</copyPom>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.8</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>zip-maven-repository</id>
|
||||
<phase>generate-sources</phase>
|
||||
<configuration>
|
||||
<tasks>
|
||||
<zip destfile="${project.basedir}/repository/maven_repository.zip" basedir="${project.basedir}/tmp/" />
|
||||
<delete dir="${project.basedir}/tmp/" />
|
||||
</tasks>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
||||
2
main/plugins/org.talend.updates.runtime/repository/.gitignore
vendored
Normal file
2
main/plugins/org.talend.updates.runtime/repository/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.zip
|
||||
*.properties
|
||||
@@ -0,0 +1,124 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2023 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.updates.runtime.maven;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.osgi.framework.Bundle;
|
||||
import org.osgi.framework.FrameworkUtil;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.ILibraryManagerService;
|
||||
import org.talend.core.model.utils.BaseComponentInstallerTask;
|
||||
import org.talend.core.model.utils.ComponentGAV;
|
||||
import org.talend.core.nexus.TalendMavenResolver;
|
||||
import org.talend.core.runtime.maven.MavenArtifact;
|
||||
import org.talend.designer.maven.model.TalendMavenConstants;
|
||||
import org.talend.designer.maven.utils.PomUtil;
|
||||
import org.talend.updates.runtime.UpdatesRuntimePlugin;
|
||||
import org.talend.utils.files.FileUtils;
|
||||
|
||||
|
||||
public class M2repoBaseInstaller extends BaseComponentInstallerTask {
|
||||
|
||||
private static final String PLUGIN_GROUP = "org.talend.studio";
|
||||
|
||||
private static final String SYS_PROP_M2 = "m2.update";
|
||||
|
||||
protected boolean updateM2() {
|
||||
String prop = System.getProperty(SYS_PROP_M2, "true");
|
||||
return Boolean.valueOf(prop);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean needInstall() {
|
||||
|
||||
if (this.updateM2()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
ComponentGAV gav = this.getPluginGAV();
|
||||
|
||||
ILibraryManagerService librairesManagerService = (ILibraryManagerService) GlobalServiceRegister.getDefault().getService(ILibraryManagerService.class);
|
||||
if (librairesManagerService != null) {
|
||||
File f = librairesManagerService.resolveStatusLocally(gav.toMavenUri());
|
||||
if (f == null) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean install(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
|
||||
boolean ret = super.install(monitor);
|
||||
|
||||
if (ret) {
|
||||
// install pom
|
||||
File tempFolder = FileUtils.createTmpFolder("generate", "pom");
|
||||
|
||||
ComponentGAV gav = this.getPluginGAV();
|
||||
|
||||
MavenArtifact art = new MavenArtifact();
|
||||
art.setGroupId(gav.getGroupId());
|
||||
art.setArtifactId(gav.getArtifactId());
|
||||
art.setVersion(gav.getVersion());
|
||||
art.setType(gav.getType());
|
||||
|
||||
try {
|
||||
String pomPath = PomUtil.generatePomInFolder(tempFolder, art);
|
||||
|
||||
TalendMavenResolver.upload(art.getGroupId(), art.getArtifactId(), art.getClassifier(), TalendMavenConstants.PACKAGING_POM, art.getVersion(), new File(pomPath));
|
||||
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getMonitorText() {
|
||||
ComponentGAV gav = this.getPluginGAV();
|
||||
return gav.getArtifactId();
|
||||
}
|
||||
|
||||
protected ComponentGAV getPluginGAV() {
|
||||
Bundle bundle = FrameworkUtil.getBundle(getInstallerClass());
|
||||
String[] bundleName = bundle.getSymbolicName().split("\\.");
|
||||
String artifactId = bundleName[bundleName.length - 1];
|
||||
if (bundleName.length > 1) {
|
||||
artifactId = bundleName[bundleName.length - 2] + "-" + bundleName[bundleName.length - 1];
|
||||
}
|
||||
|
||||
ComponentGAV gav = new ComponentGAV();
|
||||
gav.setGroupId(PLUGIN_GROUP);
|
||||
gav.setArtifactId(artifactId);
|
||||
gav.setVersion(bundle.getVersion().toString());
|
||||
gav.setType(TalendMavenConstants.PACKAGING_POM);
|
||||
return gav;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Class<? extends BaseComponentInstallerTask> getInstallerClass() {
|
||||
return M2repoBaseInstaller.class;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,17 +17,19 @@ import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.codehaus.plexus.util.FileUtils;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.utils.resource.FileExtensions;
|
||||
import org.talend.core.nexus.ArtifactRepositoryBean;
|
||||
import org.talend.core.runtime.util.SharedStudioUtils;
|
||||
import org.talend.core.service.IUpdateService;
|
||||
import org.talend.updates.runtime.engine.component.InstallComponentMessages;
|
||||
import org.talend.updates.runtime.engine.factory.ComponentsLocalNexusInstallFactory;
|
||||
import org.talend.updates.runtime.maven.M2repoBaseInstaller;
|
||||
import org.talend.updates.runtime.maven.MavenRepoSynchronizer;
|
||||
import org.talend.updates.runtime.model.ExtraFeature;
|
||||
import org.talend.updates.runtime.model.FeatureCategory;
|
||||
@@ -158,5 +160,17 @@ public class UpdateService implements IUpdateService {
|
||||
public boolean updateArtifactsFileSha256Hex(IProgressMonitor monitor, String studioArtifactsFileShaCodeHex) {
|
||||
return SharedStudioPatchInfoProvider.getInstance().updateArtifactsFileSha256Hex(studioArtifactsFileShaCodeHex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check and install components
|
||||
*/
|
||||
public void installComponents(IProgressMonitor monitor) {
|
||||
M2repoBaseInstaller installer = new M2repoBaseInstaller();
|
||||
try {
|
||||
installer.install(monitor);
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user