Compare commits

..

2 Commits

Author SHA1 Message Date
jzhao
a85f88b9ae fix(TPS-3577):release note 2019-11-28 15:54:47 +08:00
jzhao
72bc68a5a3 fix(TDI-40854): tGSConnection proxy workaround can't work from 7.0.1 (#2606) 2019-11-28 14:48:09 +08:00
18 changed files with 109 additions and 266 deletions

59
PATCH_RELEASE_NOTE.md Normal file
View File

@@ -0,0 +1,59 @@
---
version: 7.0.1
module: https://talend.poolparty.biz/coretaxonomy/42
product:
- https://talend.poolparty.biz/coretaxonomy/23
---
# TPS-3577
| Info | Value |
| ---------------- | ---------------- |
| Patch Name | Patch\_20191128\_TPS-3577\_v1-7.0.1 |
| Release Date | 2019-11-28 |
| Target Version | 20180411_1414-V7.0.1 |
| Product affected | Talend Studio |
## Introduction
This is a self-contained patch.
**NOTE**: For information on how to obtain this patch, reach out to your Support contact at Talend.
## Fixed issues
This patch contains the following fixes:
- TPS-3577 [7.0.1] Google Cloud Storage with Proxy (TDI-40854)
## Prerequisites
Consider the following requirements for your system:
- Talend Studio 7.0.1 must be installed.
## Installation
### Installing the patch using Software update
**NOTE**: If the customer has not yet installed any patch before with Nexus3, a TUP patch named Patch_20180510_TPS-2482_v1-7.0.1.zip must be deployed first in the appoarch "Installing the patch using Talend Studio".
1) Logon TAC and switch to Configuration->Software Update, then enter the correct values and save referring to the documentation: https://help.talend.com/reader/f7Em9WV_cPm2RRywucSN0Q/j9x5iXV~vyxMlUafnDejaQ
2) Switch to Software update page, where the new patch will be listed. The patch can be downloaded from here into the nexus repository.
3) On Studio Side: Logon Studio with remote mode, on the logon page the Update button is displayed: click this button to install the patch.
### Installing the patch using Talend Studio
1) Create a folder named "patches" under your studio installer directory and copy the patch .zip file to this folder.
2) Restart your studio: a window pops up, then click OK to install the patch, or restart the commandline and the patch will be installed automatically.
### Installing the patch using Commandline
Execute the following commands:
1. Talend-Studio-win-x86_64.exe -nosplash -application org.talend.commandline.CommandLine -consoleLog -data commandline-workspace startServer -p 8002 --talendDebug
2. initRemote {tac_url} -ul {TAC login username} -up {TAC login password}
3. checkAndUpdate -tu {TAC login username} -tup {TAC login password}

View File

@@ -62,8 +62,6 @@ class IndexedRecordToRowStructGenerator {
%>
boolean <%=codeVarIsDynamicInitialized%> = false;
routines.system.Dynamic <%=codeVarDynamic%> = new routines.system.Dynamic();
//Workaround for TDI-44051, TcimpV0 do not need DbmsID
<%=codeVarDynamic%>.setDbmsId("<%=cid%>");
<%
}
@@ -117,11 +115,10 @@ class IndexedRecordToRowStructGenerator {
for (org.apache.avro.Schema.Field dynamicField_<%=cid%> : dynSchema_<%=cid%>.getFields()){
routines.system.DynamicMetadata dynamicMetadata_<%=cid%> = new routines.system.DynamicMetadata();
org.apache.avro.Schema dynamicFieldSchema_<%=cid%> = dynamicField_<%=cid%>.schema();
String dbName = dynamicField_<%=cid%>.getProp("talend.field.dbColumnName");
// set name
dynamicMetadata_<%=cid%>.setName(dynamicField_<%=cid%>.name());
// set db name
dynamicMetadata_<%=cid%>.setDbName(dbName==null?dynamicField_<%=cid%>.name():dbName);
dynamicMetadata_<%=cid%>.setDbName(dynamicField_<%=cid%>.name());
// set nullable
if (org.talend.daikon.avro.AvroUtils.isNullable(dynamicFieldSchema_<%=cid%>)) {
dynamicMetadata_<%=cid%>.setNullable(true);

View File

@@ -92,7 +92,7 @@ public class JavaRoutineSynchronizer extends AbstractRoutineSynchronizer {
private void syncRoutineItems(Collection<RoutineItem> routineObjects, boolean forceUpdate) throws SystemException {
for (RoutineItem routineItem : routineObjects) {
syncRoutine(routineItem, true, forceUpdate);
syncRoutine(routineItem, true, true, forceUpdate);
}
syncSystemRoutine(ProjectManager.getInstance().getCurrentProject());
}

View File

@@ -17,7 +17,7 @@ final String GoogleTracker = org.talend.core.utils.TrackerUtil.getGoogleTracker(
<%@ include file="@{org.talend.designer.components.localprovider}/components/templates/password.javajet"%>
org.jets3t.service.Jets3tProperties jets3tProperties = new org.jets3t.service.Jets3tProperties();
org.jets3t.service.Jets3tProperties jets3tProperties = org.jets3t.service.Jets3tProperties.getInstance(org.jets3t.service.Constants.JETS3T_PROPERTIES_FILENAME);
jets3tProperties.setProperty("httpclient.useragent", "<%=AWSTracker%>");
org.jets3t.service.security.GSCredentials credentials_<%=cid%> = new org.jets3t.service.security.GSCredentials(<%=accessKey%>,decryptedPassword_<%=cid%>);
org.jets3t.service.impl.rest.httpclient.GoogleStorageService service_<%=cid%> = new org.jets3t.service.impl.rest.httpclient.GoogleStorageService(credentials_<%=cid%>," <%=GoogleTracker%>", null, jets3tProperties);

View File

@@ -99,7 +99,6 @@ import org.talend.designer.core.ui.views.jobsettings.JobSettings;
import org.talend.designer.core.ui.views.problems.Problems;
import org.talend.designer.core.ui.views.properties.ComponentSettings;
import org.talend.designer.core.ui.views.properties.ComponentSettingsView;
import org.talend.designer.core.utils.BigDataJobUtil;
import org.talend.designer.core.utils.JavaProcessUtil;
import org.talend.designer.core.utils.UnifiedComponentUtil;
import org.talend.designer.runprocess.ProcessorException;
@@ -870,9 +869,4 @@ public class DesignerCoreService implements IDesignerCoreService {
}
return false;
}
@Override
public boolean isNeedContextInJar(IProcess process) {
return new BigDataJobUtil(process).needsToHaveContextInsideJar();
}
}

View File

@@ -29,7 +29,6 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.ArrayUtils;
@@ -1802,36 +1801,23 @@ public class Process extends Element implements IProcess2, IGEFProcess, ILastVer
routinesDependencies = new ArrayList<RoutinesParameterType>();
}
try {
Project targetProject = new Project(ProjectManager.getInstance().getProject(getProperty()));
IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
Set<IRepositoryViewObject> routines = new HashSet<>();
routines.addAll(factory.getAll(targetProject, ERepositoryObjectType.ROUTINES));
List<Project> referenceProjects = ProjectManager.getInstance().getAllReferencedProjects(targetProject, false);
referenceProjects.stream().forEach(p -> {
try {
routines.addAll(factory.getAll(p, ERepositoryObjectType.ROUTINES).stream()
.filter(o -> !((RoutineItem) o.getProperty().getItem()).isBuiltIn()).collect(Collectors.toList()));
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
});
Set<String> allRoutinesSet = routines.stream().map(o -> o.getProperty().getLabel()).collect(Collectors.toSet());
Iterator<RoutinesParameterType> iterator = routinesDependencies.iterator();
while (iterator.hasNext()) {
RoutinesParameterType routine = iterator.next();
if (!allRoutinesSet.contains(routine.getName())) {
iterator.remove();
}
}
List<String> possibleRoutines = new ArrayList<String>();
List<String> routinesToAdd = new ArrayList<String>();
String additionalString = LanguageManager.getCurrentLanguage() == ECodeLanguage.JAVA ? "." : "";
List<String> routinesAlreadySetup = new ArrayList<String>();
for (RoutinesParameterType routine : routinesDependencies) {
routinesAlreadySetup.add(routine.getName());
}
for (Project project : referenceProjects) {
IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
List<IRepositoryViewObject> routines = factory.getAll(ProjectManager.getInstance().getCurrentProject(),
ERepositoryObjectType.ROUTINES);
routines.addAll(factory.getAll(ProjectManager.getInstance().getCurrentProject(), ERepositoryObjectType.PIG_UDF));
for (Project project : ProjectManager.getInstance().getAllReferencedProjects()) {
List<IRepositoryViewObject> refRoutines = factory.getAll(project, ERepositoryObjectType.ROUTINES);
refRoutines.addAll(factory.getAll(project, ERepositoryObjectType.PIG_UDF));
for (IRepositoryViewObject object : refRoutines) {
if (!((RoutineItem) object.getProperty().getItem()).isBuiltIn()) {
if (!possibleRoutines.contains(object.getLabel()) && !routinesAlreadySetup.contains(object.getLabel())) {
@@ -1856,8 +1842,9 @@ public class Process extends Element implements IProcess2, IGEFProcess, ILastVer
possibleRoutines.add(object.getLabel());
}
}
for (Project project : referenceProjects) {
for (Project project : ProjectManager.getInstance().getAllReferencedProjects()) {
List<IRepositoryViewObject> refRoutines = factory.getAll(project, ERepositoryObjectType.ROUTINES);
refRoutines.addAll(factory.getAll(project, ERepositoryObjectType.PIG_UDF));
for (IRepositoryViewObject object : refRoutines) {
if (!((RoutineItem) object.getProperty().getItem()).isBuiltIn()) {
if (!possibleRoutines.contains(object.getLabel()) && !routinesAlreadySetup.contains(object.getLabel())) {

View File

@@ -151,12 +151,7 @@ public class BigDataJobUtil {
for (IElementParameter pt : parameters) {
if (pt.getName().equals("DISTRIBUTION")) { //$NON-NLS-1$
String value = String.valueOf(pt.getValue());
if ("MICROSOFT_HD_INSIGHT".equals(value) //$NON-NLS-1$
|| "GOOGLE_CLOUD_DATAPROC".equals(value) //$NON-NLS-1$
|| "CLOUDERA_ALTUS".equals(value) || "DATABRICKS".equals(value) || "QUBOLE".equals(value)) { //$NON-NLS-1$
return true;
}
return true;
}
}
if (isSparkWithYarnClusterMode()) {

View File

@@ -38,14 +38,6 @@
<include>**</include>
</includes>
</fileSet>
<fileSet> <!-- add metadata -->
<directory>${basedir}/src/main/resources</directory>
<outputDirectory>${file.separator}</outputDirectory>
<includes>
<include>metadata/**</include>
</includes>
</fileSet>
<fileSet> <!-- add xmlMappings -->
<directory>${current.bundle.resources.dir}/xmlMappings</directory>
<outputDirectory>xmlMappings</outputDirectory>

View File

@@ -673,11 +673,6 @@ public class DefaultRunProcessService implements IRunProcessService {
return TalendJavaProjectManager.getTalendJobJavaProject(property);
}
@Override
public IFolder getCodeSrcFolder(ERepositoryObjectType type, String projectTechName) {
return new AggregatorPomsHelper(projectTechName).getCodeSrcFolder(type);
}
@Override
public ITalendProcessJavaProject getTempJavaProject() {
return TalendJavaProjectManager.getTempJavaProject();
@@ -766,8 +761,6 @@ public class DefaultRunProcessService implements IRunProcessService {
if (ProcessUtils.isRequiredBeans(null, refProject)) {
installRefCodeProject(ERepositoryObjectType.valueOf("BEANS"), refHelper, monitor); //$NON-NLS-1$
}
deleteRefProjects(refProject, refHelper);
}
private void installRefCodeProject(ERepositoryObjectType codeType, AggregatorPomsHelper refHelper, IProgressMonitor monitor)
@@ -783,28 +776,6 @@ public class DefaultRunProcessService implements IRunProcessService {
argumentsMap.put(TalendProcessArgumentConstant.ARG_GOAL, TalendMavenConstants.GOAL_INSTALL);
argumentsMap.put(TalendProcessArgumentConstant.ARG_PROGRAM_ARGUMENTS, TalendMavenConstants.ARG_MAIN_SKIP);
codeProject.buildModules(monitor, null, argumentsMap);
}
}
private void deleteRefProjects(Project refProject, AggregatorPomsHelper refHelper) throws Exception {
IProgressMonitor monitor = new NullProgressMonitor();
deleteRefProject(ERepositoryObjectType.ROUTINES, refHelper, monitor);
deleteRefProject(ERepositoryObjectType.PIG_UDF, refHelper, monitor);
deleteRefProject(ERepositoryObjectType.valueOf("BEANS"), refHelper, monitor); //$NON-NLS-1$
}
private void deleteRefProject(ERepositoryObjectType codeType, AggregatorPomsHelper refHelper, IProgressMonitor monitor)
throws Exception, CoreException {
if (!refHelper.getProjectRootPom().exists()) {
return;
}
String projectTechName = refHelper.getProjectTechName();
ITalendProcessJavaProject codeProject = TalendJavaProjectManager.getExistingTalendCodeProject(codeType, projectTechName);
if (codeProject != null) {
codeProject.getProject().delete(false, true, monitor);
TalendJavaProjectManager.removeFromCodeJavaProjects(codeType, projectTechName);
}

View File

@@ -427,11 +427,6 @@ public class RunProcessService implements IRunProcessService {
return delegateService.getTalendJobJavaProject(property);
}
@Override
public IFolder getCodeSrcFolder(ERepositoryObjectType type, String projectTechName) {
return delegateService.getCodeSrcFolder(type, projectTechName);
}
@Override
public ITalendProcessJavaProject getTempJavaProject() {
return delegateService.getTempJavaProject();

View File

@@ -150,7 +150,6 @@ import org.talend.designer.runprocess.i18n.Messages;
import org.talend.designer.runprocess.prefs.RunProcessPrefsConstants;
import org.talend.designer.runprocess.utils.JobVMArgumentsUtil;
import org.talend.repository.ProjectManager;
import org.talend.repository.utils.EmfModelUtils;
import org.talend.repository.utils.EsbConfigUtils;
import org.talend.utils.io.FilesUtils;
@@ -354,40 +353,16 @@ public class JavaProcessor extends AbstractJavaProcessor implements IJavaBreakpo
outputFolder = tProcessJavaProject.getTestOutputFolder();
} else {
srcFolder = tProcessJavaProject.getSrcFolder();
boolean needContextInJar = false;
boolean needsToHaveContextInsideJar = true;
if (process != null) {
needContextInJar = new BigDataJobUtil(process).needsToHaveContextInsideJar();
if (ProcessorUtilities.getMainJobInfo() != null) {
if (ProcessorUtilities.getMainJobInfo().getProcess() != null) {
if (ProcessorUtilities.isEsbJob(ProcessorUtilities.getMainJobInfo().getProcess(), true)
|| "CAMEL".equals(ProcessorUtilities.getMainJobInfo().getProcess().getComponentsType())) {
if (property.getItem() instanceof ProcessItem) {
if (!needContextInJar) {
if (null != EmfModelUtils.getComponentByName((ProcessItem) property.getItem(), "tRunJob",
"cTalendJob")) {
needContextInJar = false;
} else {
if (ProcessorUtilities.isEsbJob(process, true)) {
needContextInJar = false;
} else {
needContextInJar = true;
}
}
}
} else if (property.getItem().eClass().getClassifierID() == 4) {
// CamelPropertiesPackage Line 516 int ROUTELET_PROCESS_ITEM = 4;
needContextInJar = true;
}
}
}
}
if (property != null && property.getItem() instanceof ProcessItem) {
needsToHaveContextInsideJar = !new BigDataJobUtil(process).needsToHaveContextInsideJar();
}
if (needContextInJar) {
resourcesFolder = tProcessJavaProject.getResourcesFolder();
} else {
if (ProcessorUtilities.isExportConfig() && property != null && needsToHaveContextInsideJar) {
resourcesFolder = tProcessJavaProject.getExternalResourcesFolder();
} else {
resourcesFolder = tProcessJavaProject.getResourcesFolder();
}
outputFolder = tProcessJavaProject.getOutputFolder();
}

View File

@@ -29,8 +29,6 @@ import org.eclipse.core.runtime.Path;
import org.eclipse.ltk.core.refactoring.resource.MoveResourceChange;
import org.eclipse.ltk.core.refactoring.resource.RenameResourceChange;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.utils.workbench.resources.ResourceUtils;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.Property;
@@ -145,7 +143,7 @@ public class ProcessChangeListener implements PropertyChangeListener {
IFolder targetFolder = processTypeFolder.getFolder(targetPath);
try {
if (!targetFolder.exists()) {
ResourceUtils.createFolder(targetFolder);
targetFolder.create(true, true, null);
}
List<IRepositoryViewObject> allVersions = ProxyRepositoryFactory.getInstance().getAllVersion(obj.getId());
for (IRepositoryViewObject objs : allVersions) {
@@ -273,20 +271,13 @@ public class ProcessChangeListener implements PropertyChangeListener {
if (getAllProcessTypes().contains(processType)) {
IFolder processTypeFolder = getAggregatorPomsHelper().getProcessFolder(processType);
IFolder sourceFolder = processTypeFolder.getFolder(sourcePath);
if (!sourceFolder.exists()) {
return;
}
try {
sourceFolder.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
removeFromParentSourceFolder(sourceFolder);
IFolder targetFolder = processTypeFolder.getFolder(targetPath);
if (!targetFolder.exists()) {
ResourceUtils.createFolder(targetFolder);
}
MoveResourceChange change = new MoveResourceChange(sourceFolder, targetFolder);
change.perform(new NullProgressMonitor());
updatePomsInNewFolder(targetFolder.getFolder(sourceFolder.getName()));
} catch (OperationCanceledException | CoreException | PersistenceException e) {
} catch (OperationCanceledException | CoreException e) {
ExceptionHandler.process(e);
}
}

View File

@@ -3052,15 +3052,6 @@
name="FileInputPositionalByteLengthMigrationTask"
version="7.0.1">
</projecttask>
<projecttask
beforeLogon="false"
breaks="7.0.1"
class="org.talend.repository.model.migration.spark.UseSqlDateTypeInDataframesTask"
description="Keep Date type for component impacted by change from Date to Timestamp"
id="org.talend.repository.model.migration.spark.UseSqlDateTypeInDataframesTask"
name="UseSqlDateTypeInDataframesTask"
version="7.0.2">
</projecttask>
</extension>
<extension

View File

@@ -1,6 +1,6 @@
// ============================================================================
//
// Copyright (C) 2006-2018 Talend Inc. - www.talend.com
// Copyright (C) 2006-2017 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt

View File

@@ -1,94 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2018 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.repository.model.migration.spark;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import org.talend.core.model.components.ComponentUtilities;
import org.talend.core.model.components.ModifyComponentsAction;
import org.talend.core.model.components.conversions.IComponentConversion;
import org.talend.core.model.components.filters.NameComponentFilter;
import org.talend.core.model.migration.AbstractJobMigrationTask;
import org.talend.core.model.properties.Item;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.designer.core.model.utils.emf.talendfile.NodeType;
import org.talend.designer.core.model.utils.emf.talendfile.ProcessType;
/**
*
* @author kcoepeau
*
* Keep Date type for component impacted by change from Date to Timestamp
*
*/
public class UseSqlDateTypeInDataframesTask extends AbstractJobMigrationTask {
@Override
public List<ERepositoryObjectType> getTypes() {
List<ERepositoryObjectType> toReturn = new ArrayList<ERepositoryObjectType>();
toReturn.add(ERepositoryObjectType.PROCESS_SPARK);
toReturn.add(ERepositoryObjectType.PROCESS_SPARKSTREAMING);
return toReturn;
}
@Override
public ExecutionResult execute(Item item) {
ProcessType processType = getProcessType(item);
if (processType == null) {
return ExecutionResult.NOTHING_TO_DO;
}
List<String> impactedComponents =
Arrays.asList("tFileOutputParquet", "tHiveOutput", "tRedshiftOutput", "tSqlRow", "tMatchPairing",
"tMatchPredict");
IComponentConversion addUseTimestampForDateType = new AddUseTimestampForDateType();
try {
for (String componentName : impactedComponents) {
ModifyComponentsAction.searchAndModify(item, processType, new NameComponentFilter(componentName),
Arrays.<IComponentConversion> asList(addUseTimestampForDateType));
}
return ExecutionResult.SUCCESS_NO_ALERT;
} catch (Exception e) {
return ExecutionResult.FAILURE;
}
}
private class AddUseTimestampForDateType implements IComponentConversion {
private String field = "CHECK"; //$NON-NLS-1$
private String name = "DATE_TO_TIMESTAMP_DF_TYPE_SUBSTITUTION"; //$NON-NLS-1$
public void transform(NodeType node) {
if (ComponentUtilities.getNodeProperty(node, name) == null) {
ComponentUtilities.addNodeProperty(node, name, field);
ComponentUtilities.setNodeValue(node, name, "true");
}
}
}
@Override
public Date getOrder() {
GregorianCalendar gc = new GregorianCalendar(2018, 8, 10, 18, 0, 0);
return gc.getTime();
}
}

View File

@@ -84,8 +84,7 @@ public class LibraryField extends TableField {
final TableItem item = contextTable.getSelection()[0];
if (item.getBounds(1).contains(event.x, event.y)) {
IMPORTType it = (IMPORTType) getList().get(contextTable.getSelectionIndex());
if ("BeanItem".equals(it.eContainer().eClass().getName())
|| "RoutineItem".equals(it.eContainer().eClass().getName())) {
if ("BeanItem".equals(it.eContainer().eClass().getName())) {
it.setREQUIRED(!it.isREQUIRED());
setInput(getList());
}

View File

@@ -43,11 +43,9 @@ import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.repository.job.JobResource;
import org.talend.core.model.repository.job.JobResourceManager;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.runtime.process.ITalendProcessJavaProject;
import org.talend.core.ui.CoreUIPlugin;
import org.talend.core.ui.export.ArchiveFileExportOperationFullPath;
import org.talend.core.ui.services.IDesignerCoreUIService;
import org.talend.designer.runprocess.IRunProcessService;
import org.talend.designer.runprocess.ItemCacheManager;
import org.talend.designer.runprocess.ProcessorException;
import org.talend.designer.runprocess.ProcessorUtilities;
@@ -62,14 +60,12 @@ import org.talend.repository.ui.wizards.exportjob.scriptsmanager.JobScriptsManag
import org.talend.repository.ui.wizards.exportjob.util.ExportJobUtil;
/**
*
*
* class global comment. Detailled comment
*/
public class JobExportAction implements IRunnableWithProgress {
private static final String LIB = "lib";
private List<? extends IRepositoryNode> nodes;
private List<? extends IRepositoryNode> nodes;
private String jobVersion;
@@ -208,7 +204,6 @@ public class JobExportAction implements IRunnableWithProgress {
manager.setTopFolder(resourcesToExport);
}
cleanLibFolderBeforeExport();
doArchiveExport(monitor, resourcesToExport);
clean();
@@ -233,7 +228,7 @@ public class JobExportAction implements IRunnableWithProgress {
/**
* DOC ggu Comment method "doArchiveExport".
*
*
* @param monitor
* @param resourcesToExport
*/
@@ -249,7 +244,7 @@ public class JobExportAction implements IRunnableWithProgress {
/**
* DOC ggu Comment method "generatedCodes".
*
*
* @param version
* @param monitor
* @param processes
@@ -288,7 +283,7 @@ public class JobExportAction implements IRunnableWithProgress {
/**
* DOC zli Comment method "getTempDestinationValue".
*
*
* @return
*/
protected String getTempDestinationValue() {
@@ -320,9 +315,9 @@ public class JobExportAction implements IRunnableWithProgress {
}
/**
*
*
* DOC aiming Comment method "reBuildJobZipFile".
*
*
* @param processes
*/
protected void reBuildJobZipFile(List<ExportFileResource> processes) {
@@ -370,7 +365,7 @@ public class JobExportAction implements IRunnableWithProgress {
/**
* Added by Marvin Wang on Feb.1, 2012 for estimating if the file can be created. In win7 or other systems, have not
* the permission to create a file directly under system disk(like C:\).
*
*
* @param disZipFileStr
* @return
*/
@@ -424,22 +419,4 @@ public class JobExportAction implements IRunnableWithProgress {
return nodes.size() > 1;
}
public void cleanLibFolderBeforeExport() {
IRunProcessService runProcessService = CorePlugin.getDefault().getRunProcessService();
ITalendProcessJavaProject talendProcessJavaProject = runProcessService
.getTalendJobJavaProject(nodes.get(0).getObject().getProperty());
if (talendProcessJavaProject != null) {
File libFolder = new File(talendProcessJavaProject.getBundleResourcesFolder().getLocation().toOSString()
+ File.separator
+ LIB);
if (libFolder.exists()) {
for (File file : libFolder.listFiles())
if (!file.isDirectory() && file.getName().endsWith(".jar"))
file.delete();
}
}
}
}

View File

@@ -12,8 +12,11 @@
// ============================================================================
package org.talend.repository.ui.wizards.exportjob.handler;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.BooleanUtils;
@@ -29,9 +32,11 @@ import org.talend.commons.utils.workbench.resources.ResourceUtils;
import org.talend.core.CorePlugin;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.ITDQSurvivorshipService;
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.Project;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.runtime.process.IBuildJobHandler;
import org.talend.core.runtime.process.ITalendProcessJavaProject;
import org.talend.core.runtime.process.LastGenerationInfo;
@@ -42,7 +47,6 @@ import org.talend.core.runtime.repository.build.IBuildResourcesProvider;
import org.talend.core.runtime.util.ParametersUtil;
import org.talend.designer.core.model.utils.emf.talendfile.NodeType;
import org.talend.designer.maven.model.TalendMavenConstants;
import org.talend.designer.runprocess.IProcessor;
import org.talend.designer.runprocess.IRunProcessService;
import org.talend.designer.runprocess.ProcessorUtilities;
import org.talend.repository.ProjectManager;
@@ -331,9 +335,19 @@ public abstract class AbstractBuildJobHandler implements IBuildJobHandler, IBuil
parameters.put(VERSION, version);
parameters.put(OBJ_PROCESS_JAVA_PROJECT, talendProcessJavaProject);
//
List<Item> dependenciesItems = new ArrayList<Item>();
Collection<IRepositoryViewObject> allProcessDependencies = ProcessUtils.getAllProcessDependencies(Arrays
.asList(processItem));
if (!allProcessDependencies.isEmpty()) {
for (IRepositoryViewObject repositoryObject : allProcessDependencies) {
dependenciesItems.add(repositoryObject.getProperty().getItem());
}
parameters.put(OBJ_ITEM_DEPENDENCIES, dependenciesItems);
}
// generate sources
IProcessor processor = generateJobFiles(monitor);
parameters.put(OBJ_ITEM_DEPENDENCIES, processor.getBuildChildrenJobs());
generateJobFiles(monitor);
// export items
if (ParametersUtil.hasBoolFlag(parameters, OPTION_ITEMS)) {