diff --git a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/hadoop/conf/EHadoopProperties.java b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/hadoop/conf/EHadoopProperties.java index 8064ac0b7a..0d764285fc 100644 --- a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/hadoop/conf/EHadoopProperties.java +++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/hadoop/conf/EHadoopProperties.java @@ -45,17 +45,22 @@ public enum EHadoopProperties { DATABASE, PORT, - + CLOUDERA_NAVIGATOR_USERNAME, - + CLOUDERA_NAVIGATOR_PASSWORD, - + CLOUDERA_NAVIGATOR_URL, - + CLOUDERA_NAVIGATOR_METADATA_URL, - + CLOUDERA_NAVIGATOR_CLIENT_URL, + MAPRTICKET_CLUSTER, + MAPRTICKET_DURATION, + MAPR_HOME_DIR, + HADOOP_LOGIN, + ; public String getName() { diff --git a/main/plugins/org.talend.core/src/main/java/org/talend/core/model/runprocess/LastGenerationInfo.java b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/runtime/process/LastGenerationInfo.java similarity index 99% rename from main/plugins/org.talend.core/src/main/java/org/talend/core/model/runprocess/LastGenerationInfo.java rename to main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/runtime/process/LastGenerationInfo.java index 3feb29dd96..49d6c67840 100644 --- a/main/plugins/org.talend.core/src/main/java/org/talend/core/model/runprocess/LastGenerationInfo.java +++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/runtime/process/LastGenerationInfo.java @@ -10,7 +10,7 @@ // 9 rue Pages 92150 Suresnes, France // // ============================================================================ -package org.talend.core.model.runprocess; +package org.talend.core.runtime.process; import java.util.HashMap; import java.util.HashSet; diff --git a/main/plugins/org.talend.core/src/main/java/org/talend/designer/runprocess/ProcessorUtilities.java b/main/plugins/org.talend.core/src/main/java/org/talend/designer/runprocess/ProcessorUtilities.java index 59a0fbe28e..d3bb39a26a 100644 --- a/main/plugins/org.talend.core/src/main/java/org/talend/designer/runprocess/ProcessorUtilities.java +++ b/main/plugins/org.talend.core/src/main/java/org/talend/designer/runprocess/ProcessorUtilities.java @@ -71,10 +71,10 @@ import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.core.model.repository.RepositoryManager; import org.talend.core.model.repository.job.JobResource; import org.talend.core.model.repository.job.JobResourceManager; -import org.talend.core.model.runprocess.LastGenerationInfo; import org.talend.core.model.utils.JavaResourcesHelper; import org.talend.core.model.utils.PerlResourcesHelper; import org.talend.core.runtime.process.ITalendProcessJavaProject; +import org.talend.core.runtime.process.LastGenerationInfo; import org.talend.core.runtime.process.TalendProcessArgumentConstant; import org.talend.core.runtime.process.TalendProcessOptionConstants; import org.talend.core.services.ISVNProviderService; @@ -905,9 +905,7 @@ public class ProcessorUtilities { // set the last jobinfos to be able to set check the errors in the problems view (errors of compilations // only) // here we recreate a new JobInfo, to be sure to don't have link in memory to Emf or IProcess - JobInfo generatedJobInfo = new JobInfo(jobInfo.getJobId(), jobInfo.getContextName(), jobInfo.getJobVersion()); - generatedJobInfo.setJobName(currentProcess.getName()); - generatedJobInfo.setTestContainer(jobInfo.isTestContainer()); + JobInfo generatedJobInfo = cloneJobInfo(jobInfo); String projectFolderName; if (LanguageManager.getCurrentLanguage() == ECodeLanguage.JAVA) { projectFolderName = JavaResourcesHelper.getProjectFolderName(selectedProcessItem); @@ -921,6 +919,22 @@ public class ProcessorUtilities { } } + /** + * DOC nrousseau Comment method "cloneJobInfo". + * @param jobInfo + * @return + */ + private static JobInfo cloneJobInfo(JobInfo jobInfo) { + if (jobInfo == null) { + return null; + } + JobInfo generatedJobInfo = new JobInfo(jobInfo.getJobId(), jobInfo.getContextName(), jobInfo.getJobVersion()); + generatedJobInfo.setJobName(jobInfo.getJobName()); + generatedJobInfo.setTestContainer(jobInfo.isTestContainer()); + generatedJobInfo.setFatherJobInfo(cloneJobInfo(jobInfo.getFatherJobInfo())); + return generatedJobInfo; + } + private static void generateNodeInfo(JobInfo jobInfo, String selectedContextName, boolean statistics, boolean properties, int option, IProgressMonitor progressMonitor, IProcess currentProcess) throws ProcessorException { if (BitwiseOptionUtils.containOption(option, GENERATE_TESTS) && jobInfo.getProcessItem() != null) { @@ -982,28 +996,30 @@ public class ProcessorUtilities { } subJobInfo.setJobVersion(processItem.getProperty().getVersion()); + subJobInfo.setJobName(processItem.getProperty().getLabel()); - if (!isNeedLoadmodules) { - LastGenerationInfo.getInstance().setModulesNeededWithSubjobPerJob(subJobInfo.getJobId(), - subJobInfo.getJobVersion(), Collections. emptySet()); - } - - if (jobInfo.isApplyContextToChildren()) { - subJobInfo.setApplyContextToChildren(jobInfo.isApplyContextToChildren()); - // see bug 0003862: Export job with the flag "Apply to children" if the child don't have - // the - // same context fails. - if (checkIfContextExisted(processItem, selectedContextName)) { - subJobInfo.setContextName(selectedContextName); - } else { - // use the default context of subjob - String defaultContext = processItem.getProcess().getDefaultContext(); - node.getElementParameter("PROCESS_TYPE_CONTEXT").setValue(defaultContext); //$NON-NLS-1$ - subJobInfo.setContextName(defaultContext); - } - } subJobInfo.setFatherJobInfo(jobInfo); if (!jobList.contains(subJobInfo)) { + if (!isNeedLoadmodules) { + LastGenerationInfo.getInstance().setModulesNeededWithSubjobPerJob(subJobInfo.getJobId(), + subJobInfo.getJobVersion(), Collections. emptySet()); + } + + if (jobInfo.isApplyContextToChildren()) { + subJobInfo.setApplyContextToChildren(jobInfo.isApplyContextToChildren()); + // see bug 0003862: Export job with the flag "Apply to children" if the child don't have + // the + // same context fails. + if (checkIfContextExisted(processItem, selectedContextName)) { + subJobInfo.setContextName(selectedContextName); + } else { + // use the default context of subjob + String defaultContext = processItem.getProcess().getDefaultContext(); + node.getElementParameter("PROCESS_TYPE_CONTEXT").setValue(defaultContext); //$NON-NLS-1$ + subJobInfo.setContextName(defaultContext); + } + } + int subJobOption = GENERATE_ALL_CHILDS; if (BitwiseOptionUtils.containOption(option, GENERATE_WITH_FIRST_CHILD)) { subJobOption = GENERATE_MAIN_ONLY; @@ -1019,37 +1035,37 @@ public class ProcessorUtilities { if (!BitwiseOptionUtils.containOption(option, GENERATE_WITH_FIRST_CHILD)) { currentProcess.setNeedRegenerateCode(true); } - } - LastGenerationInfo - .getInstance() - .getModulesNeededWithSubjobPerJob(jobInfo.getJobId(), jobInfo.getJobVersion()) - .addAll(LastGenerationInfo.getInstance().getModulesNeededWithSubjobPerJob( - subJobInfo.getJobId(), subJobInfo.getJobVersion())); - LastGenerationInfo - .getInstance() - .getPigudfNeededWithSubjobPerJob(jobInfo.getJobId(), jobInfo.getJobVersion()) - .addAll(LastGenerationInfo.getInstance().getPigudfNeededWithSubjobPerJob( - subJobInfo.getJobId(), subJobInfo.getJobVersion())); + LastGenerationInfo + .getInstance() + .getModulesNeededWithSubjobPerJob(jobInfo.getJobId(), jobInfo.getJobVersion()) + .addAll(LastGenerationInfo.getInstance().getModulesNeededWithSubjobPerJob( + subJobInfo.getJobId(), subJobInfo.getJobVersion())); + LastGenerationInfo + .getInstance() + .getPigudfNeededWithSubjobPerJob(jobInfo.getJobId(), jobInfo.getJobVersion()) + .addAll(LastGenerationInfo.getInstance().getPigudfNeededWithSubjobPerJob( + subJobInfo.getJobId(), subJobInfo.getJobVersion())); - LastGenerationInfo - .getInstance() - .getRoutinesNeededWithSubjobPerJob(jobInfo.getJobId(), jobInfo.getJobVersion()) - .addAll(LastGenerationInfo.getInstance().getRoutinesNeededWithSubjobPerJob( - subJobInfo.getJobId(), subJobInfo.getJobVersion())); + LastGenerationInfo + .getInstance() + .getRoutinesNeededWithSubjobPerJob(jobInfo.getJobId(), jobInfo.getJobVersion()) + .addAll(LastGenerationInfo.getInstance().getRoutinesNeededWithSubjobPerJob( + subJobInfo.getJobId(), subJobInfo.getJobVersion())); - if (!LastGenerationInfo.getInstance().isUseDynamic(jobInfo.getJobId(), jobInfo.getJobVersion())) { - LastGenerationInfo.getInstance().setUseDynamic( - jobInfo.getJobId(), - jobInfo.getJobVersion(), - LastGenerationInfo.getInstance().isUseDynamic(subJobInfo.getJobId(), - subJobInfo.getJobVersion())); - } - if (!LastGenerationInfo.getInstance().isUsePigUDFs(jobInfo.getJobId(), jobInfo.getJobVersion())) { - LastGenerationInfo.getInstance().setUsePigUDFs( - jobInfo.getJobId(), - jobInfo.getJobVersion(), - LastGenerationInfo.getInstance().isUsePigUDFs(subJobInfo.getJobId(), - subJobInfo.getJobVersion())); + if (!LastGenerationInfo.getInstance().isUseDynamic(jobInfo.getJobId(), jobInfo.getJobVersion())) { + LastGenerationInfo.getInstance().setUseDynamic( + jobInfo.getJobId(), + jobInfo.getJobVersion(), + LastGenerationInfo.getInstance().isUseDynamic(subJobInfo.getJobId(), + subJobInfo.getJobVersion())); + } + if (!LastGenerationInfo.getInstance().isUsePigUDFs(jobInfo.getJobId(), jobInfo.getJobVersion())) { + LastGenerationInfo.getInstance().setUsePigUDFs( + jobInfo.getJobId(), + jobInfo.getJobVersion(), + LastGenerationInfo.getInstance().isUsePigUDFs(subJobInfo.getJobId(), + subJobInfo.getJobVersion())); + } } } } diff --git a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/ProjectPomManager.java b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/ProjectPomManager.java index 50d5df8043..b256c7bed4 100644 --- a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/ProjectPomManager.java +++ b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/ProjectPomManager.java @@ -149,10 +149,14 @@ public class ProjectPomManager { } if (processor != null) { + String mainPom = PomUtil.getPomFileName(processor.getProperty().getLabel(), processor.getProperty().getVersion()); for (JobInfo childJob : processor.getBuildChildrenJobs()) { - modulesList.add(PomUtil.getPomFileName(childJob.getJobName(), childJob.getJobVersion())); + String childPom = PomUtil.getPomFileName(childJob.getJobName(), childJob.getJobVersion()); + if (!childPom.equals(mainPom)) { + modulesList.add(childPom); + } } - modulesList.add(PomUtil.getPomFileName(processor.getProperty().getLabel(), processor.getProperty().getVersion())); + modulesList.add(mainPom); } // check the modules List modules = projectModel.getModules(); @@ -211,7 +215,7 @@ public class ProjectPomManager { Iterator iterator = withoutChildrenJobDependencies.iterator(); while (iterator.hasNext()) { Dependency d = iterator.next(); - if (d.getGroupId().startsWith(jobGroupPrefix)||d.getGroupId().startsWith(testGroupPrefix)) { + if (d.getGroupId().startsWith(jobGroupPrefix) || d.getGroupId().startsWith(testGroupPrefix)) { // remove the children job's dependencies iterator.remove(); } diff --git a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/creator/AbstractMavenProcessorPom.java b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/creator/AbstractMavenProcessorPom.java index f9e6531672..95ffeeb5c2 100644 --- a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/creator/AbstractMavenProcessorPom.java +++ b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/creator/AbstractMavenProcessorPom.java @@ -29,6 +29,7 @@ import org.talend.core.model.properties.Project; import org.talend.core.model.properties.Property; import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.core.model.utils.JavaResourcesHelper; +import org.talend.core.runtime.process.LastGenerationInfo; import org.talend.core.runtime.projectsetting.IProjectSettingTemplateConstants; import org.talend.designer.maven.template.ETalendMavenVariables; import org.talend.designer.maven.tools.ProcessorDependenciesManager; @@ -117,11 +118,11 @@ public abstract class AbstractMavenProcessorPom extends CreateMavenBundleTemplat protected void addDependencies(Model model) { try { getProcessorDependenciesManager().updateDependencies(null, model); - + // add children jobs in dependencies final List dependencies = model.getDependencies(); String parentId = getJobProcessor().getProperty().getId(); - final Set clonedChildrenJobInfors = getJobProcessor().getBuildChildrenJobs(); + final Set clonedChildrenJobInfors = getJobProcessor().getBuildChildrenJobs(); for (JobInfo jobInfo : clonedChildrenJobInfors) { if (jobInfo.getFatherJobInfo() != null && jobInfo.getFatherJobInfo().getJobId().equals(parentId)) { if (!validChildrenJob(jobInfo)) { diff --git a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/creator/CreateMavenJobPom.java b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/creator/CreateMavenJobPom.java index f1d04d6779..3d275aef5b 100644 --- a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/creator/CreateMavenJobPom.java +++ b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/creator/CreateMavenJobPom.java @@ -60,6 +60,7 @@ import org.talend.core.model.repository.SVNConstant; import org.talend.core.model.utils.JavaResourcesHelper; import org.talend.core.runtime.CoreRuntimePlugin; import org.talend.core.runtime.process.JobInfoProperties; +import org.talend.core.runtime.process.LastGenerationInfo; import org.talend.core.runtime.process.TalendProcessArgumentConstant; import org.talend.core.runtime.projectsetting.IProjectSettingPreferenceConstants; import org.talend.core.runtime.projectsetting.IProjectSettingTemplateConstants; @@ -385,6 +386,22 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom { @Override protected boolean validChildrenJob(JobInfo jobInfo) { + JobInfo fatherJobInfo = null; + for (JobInfo lastGeneratedJobInfo : LastGenerationInfo.getInstance().getLastGeneratedjobs()) { + if (lastGeneratedJobInfo.getJobId().equals(getJobProcessor().getProperty().getId()) && lastGeneratedJobInfo.getJobVersion().equals(getJobProcessor().getProperty().getVersion())) { + fatherJobInfo = lastGeneratedJobInfo; + break; + } + } + if (fatherJobInfo != null) { + fatherJobInfo = fatherJobInfo.getFatherJobInfo(); + } + while (fatherJobInfo != null) { + if (fatherJobInfo.getJobId().equals(jobInfo.getJobId()) && fatherJobInfo.getJobVersion().equals(jobInfo.getJobVersion())) { + return false; + } + fatherJobInfo = fatherJobInfo.getFatherJobInfo(); + } // for job, ignore test container for children. return jobInfo != null && !jobInfo.isTestContainer(); } @@ -554,6 +571,9 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom { List childrenFolderResourcesIncludes = new ArrayList(); final Set clonedChildrenJobInfors = getJobProcessor().getBuildChildrenJobs(); + // main job built, should never be in the children list, even if recursive + clonedChildrenJobInfors.remove(LastGenerationInfo.getInstance().getLastMainJob()); + for (JobInfo child : clonedChildrenJobInfors) { if (child.getFatherJobInfo() != null) { diff --git a/main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-1.0.jar b/main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-1.1.jar similarity index 57% rename from main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-1.0.jar rename to main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-1.1.jar index 0cf90c1302..11c91c02a3 100644 Binary files a/main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-1.0.jar and b/main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-1.1.jar differ diff --git a/main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-shade-1.0.jar b/main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-shade-1.1.jar similarity index 56% rename from main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-shade-1.0.jar rename to main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-shade-1.1.jar index 91ec055016..e2504a9ea6 100644 Binary files a/main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-shade-1.0.jar and b/main/plugins/org.talend.libraries.apache.cassandra/lib/talend-cassandra-shade-1.1.jar differ diff --git a/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/DownloadModuleRunnable.java b/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/DownloadModuleRunnable.java index 7a177aa644..a2b7acdf35 100644 --- a/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/DownloadModuleRunnable.java +++ b/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/DownloadModuleRunnable.java @@ -12,7 +12,6 @@ // ============================================================================ package org.talend.librariesmanager.utils; -import java.net.SocketTimeoutException; import java.net.URL; import java.util.HashSet; import java.util.List; @@ -112,14 +111,10 @@ abstract public class DownloadModuleRunnable implements IRunnableWithProgress { // deploy to index as snapshot installedModules.add(module.getName()); - } catch (SocketTimeoutException e) { - downloadFailed.add(module.getName()); - connectionTimeOut = true; - MessageBoxExceptionHandler.process(e); - continue; } catch (Exception e) { downloadFailed.add(module.getName()); - MessageBoxExceptionHandler.process(e); + connectionTimeOut = true; + MessageBoxExceptionHandler.process(new Exception("Download " + module.getName() + " failed!")); continue; } accepted = false; diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java index 1cfdbd37c0..a24db51c45 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java @@ -399,12 +399,8 @@ public class LocalLibraryManager implements ILibraryManagerService { } } } - } catch (IOException e) { - CommonExceptionHandler.process(e); - } catch (RuntimeException e) { - CommonExceptionHandler.process(e); } catch (Exception e) { - CommonExceptionHandler.process(e); + CommonExceptionHandler.process(new Exception(getClass().getSimpleName() + " resolve " + mavenUri + " failed !")); } try { if (jarFile == null) { diff --git a/main/plugins/org.talend.repository.metadata/src/main/java/org/talend/repository/ui/wizards/metadata/connection/database/DatabaseForm.java b/main/plugins/org.talend.repository.metadata/src/main/java/org/talend/repository/ui/wizards/metadata/connection/database/DatabaseForm.java index 2f786bc45e..d16fbdd70c 100644 --- a/main/plugins/org.talend.repository.metadata/src/main/java/org/talend/repository/ui/wizards/metadata/connection/database/DatabaseForm.java +++ b/main/plugins/org.talend.repository.metadata/src/main/java/org/talend/repository/ui/wizards/metadata/connection/database/DatabaseForm.java @@ -1208,7 +1208,8 @@ public class DatabaseForm extends AbstractForm { maprTUsernameForHiveTxt = new LabelledText(authenticationUserPassComForHive, Messages.getString("DatabaseForm.hive.MaprTUsernameTxt.label"), 2); //$NON-NLS-1$ maprTPasswordForHiveTxt = new LabelledText(authenticationUserPassComForHive, - Messages.getString("DatabaseForm.hive.MaprTPasswordTxt.label"), 2, SWT.PASSWORD); //$NON-NLS-1$ + Messages.getString("DatabaseForm.hive.MaprTPasswordTxt.label"), 2, SWT.PASSWORD | SWT.BORDER | SWT.SINGLE); //$NON-NLS-1$ + maprTPasswordForHiveTxt.getTextControl().setEchoChar('*'); maprTClusterForHiveTxt = new LabelledText(authenticationMaprTComForHive, Messages.getString("DatabaseForm.hive.MaprTClusterTxt.label"), 2); //$NON-NLS-1$ @@ -1290,7 +1291,8 @@ public class DatabaseForm extends AbstractForm { maprTUsernameForHBaseTxt = new LabelledText(authenticationUserPassComForHBase, Messages.getString("DatabaseForm.hbaseMaprTUsernameTxt.label"), 2); //$NON-NLS-1$ maprTPasswordForHBaseTxt = new LabelledText(authenticationUserPassComForHBase, - Messages.getString("DatabaseForm.hbaseMaprTPasswordTxt.label"), 2, SWT.PASSWORD); //$NON-NLS-1$ + Messages.getString("DatabaseForm.hbaseMaprTPasswordTxt.label"), 2, SWT.PASSWORD | SWT.BORDER | SWT.SINGLE); //$NON-NLS-1$ + maprTPasswordForHBaseTxt.getTextControl().setEchoChar('*'); maprTClusterForHBaseTxt = new LabelledText(authenticationMaprTComForHBase, Messages.getString("DatabaseForm.hbaseMaprTClusterTxt.label"), 2); //$NON-NLS-1$ diff --git a/main/plugins/org.talend.repository.view/src/org/talend/repository/viewer/content/EmptyContentProvider.java b/main/plugins/org.talend.repository.view/src/org/talend/repository/viewer/content/EmptyContentProvider.java index 1442b494cb..f864d4a719 100644 --- a/main/plugins/org.talend.repository.view/src/org/talend/repository/viewer/content/EmptyContentProvider.java +++ b/main/plugins/org.talend.repository.view/src/org/talend/repository/viewer/content/EmptyContentProvider.java @@ -12,11 +12,21 @@ // ============================================================================ package org.talend.repository.viewer.content; +import java.util.Iterator; import java.util.Set; +import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.ui.IMemento; +import org.eclipse.ui.internal.navigator.ContributorTrackingSet; +import org.eclipse.ui.internal.navigator.NavigatorContentService; +import org.eclipse.ui.internal.navigator.extensions.NavigatorContentDescriptor; +import org.eclipse.ui.internal.navigator.extensions.NavigatorContentExtension; +import org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider; +import org.eclipse.ui.navigator.CommonViewer; import org.eclipse.ui.navigator.ICommonContentExtensionSite; +import org.eclipse.ui.navigator.INavigatorContentDescriptor; +import org.eclipse.ui.navigator.INavigatorContentService; import org.eclipse.ui.navigator.IPipelinedTreeContentProvider; import org.eclipse.ui.navigator.PipelinedShapeModification; import org.eclipse.ui.navigator.PipelinedViewerUpdate; @@ -46,15 +56,16 @@ import org.eclipse.ui.navigator.PipelinedViewerUpdate; * */ public class EmptyContentProvider implements IPipelinedTreeContentProvider { + private Viewer viewer; + @Override public void dispose() { - // left empty on purpose + this.viewer = null; } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - // left empty on purpose - + this.viewer = viewer; } @Override @@ -118,9 +129,56 @@ public class EmptyContentProvider implements IPipelinedTreeContentProvider { */ @Override public void getPipelinedChildren(Object aParent, Set theCurrentChildren) { + removeResourceVisitorForOverride(theCurrentChildren); theCurrentChildren.clear(); } + @SuppressWarnings({ "restriction", "rawtypes" }) + private void removeResourceVisitorForOverride(Set theCurrentChildren) { + if (this.viewer instanceof CommonViewer && theCurrentChildren instanceof ContributorTrackingSet) { + INavigatorContentService navigatorContentService = ((CommonViewer) this.viewer).getNavigatorContentService(); + if (navigatorContentService instanceof NavigatorContentService) { + ContributorTrackingSet contributorTrackingSet = (ContributorTrackingSet) theCurrentChildren; + + // have override + INavigatorContentDescriptor firstClassContributor = contributorTrackingSet.getFirstClassContributor(); + if (!firstClassContributor.hasOverridingExtensions()) { + return; + } + + // check override + boolean isOverride = false; + INavigatorContentDescriptor descriptor = contributorTrackingSet.getContributor(); + NavigatorContentDescriptor overridingDescriptor; + for (Iterator contentDescriptorsItr = firstClassContributor.getOverriddingExtensions().iterator(); contentDescriptorsItr + .hasNext();) { + overridingDescriptor = (NavigatorContentDescriptor) contentDescriptorsItr.next(); + if (overridingDescriptor.getId().equals(descriptor.getId())) { + isOverride = true; + } + } + if (!isOverride) { + return; + } + + // remove ResourceVisitor + NavigatorContentExtension firstClassExtension = ((NavigatorContentService) navigatorContentService) + .getExtension(firstClassContributor); + if (firstClassExtension != null) { + SafeDelegateTreeContentProvider internalGetContentProvider = firstClassExtension.internalGetContentProvider(); + if (internalGetContentProvider != null) { + ITreeContentProvider delegateContentProvider = internalGetContentProvider.getDelegateContentProvider(); + if (delegateContentProvider instanceof FolderListenerSingleTopContentProvider) { + // try to remove the ResourceVisitor of FolderListenerSingleTopContentProvider + delegateContentProvider.dispose(); + } + } + } + } + } + + } + /* * (non-Javadoc) * @@ -128,6 +186,7 @@ public class EmptyContentProvider implements IPipelinedTreeContentProvider { */ @Override public void getPipelinedElements(Object anInput, Set theCurrentElements) { + removeResourceVisitorForOverride(theCurrentElements); theCurrentElements.clear(); } diff --git a/main/plugins/org.talend.repository.view/src/org/talend/repository/viewer/content/FolderListenerSingleTopContentProvider.java b/main/plugins/org.talend.repository.view/src/org/talend/repository/viewer/content/FolderListenerSingleTopContentProvider.java index cd3bdca25c..a520f62d21 100644 --- a/main/plugins/org.talend.repository.view/src/org/talend/repository/viewer/content/FolderListenerSingleTopContentProvider.java +++ b/main/plugins/org.talend.repository.view/src/org/talend/repository/viewer/content/FolderListenerSingleTopContentProvider.java @@ -243,13 +243,13 @@ public abstract class FolderListenerSingleTopContentProvider extends SingleTopLe CommonNavigator commonNavigator = ((RepoViewCommonViewer) this.viewer).getCommonNavigator(); if (commonNavigator instanceof RepoViewCommonNavigator) { ((RepoViewCommonNavigator) commonNavigator).removeVisitor(this.visitor); + this.visitor = null; } } } // to help garbage collection topLevelNodeToPathMap.clear(); - topLevelNodeToPathMap = null; super.dispose(); } } diff --git a/main/plugins/org.talend.utils/src/main/java/org/talend/utils/format/StringFormatUtil.java b/main/plugins/org.talend.utils/src/main/java/org/talend/utils/format/StringFormatUtil.java index d6d6d64067..12926962b7 100644 --- a/main/plugins/org.talend.utils/src/main/java/org/talend/utils/format/StringFormatUtil.java +++ b/main/plugins/org.talend.utils/src/main/java/org/talend/utils/format/StringFormatUtil.java @@ -26,13 +26,12 @@ public final class StringFormatUtil { public static final int PERCENT = 0; - public static final int NUMBER = 1; + public static final int INT_NUMBER = 1; + + public static final int DOUBLE_NUMBER = 2; public static final int OTHER = 99999; - private StringFormatUtil() { - } - /** * Method "padString". * @@ -41,14 +40,14 @@ public final class StringFormatUtil { * @return the given string completed with white spaces up the the given size. */ public static String padString(String stringToPad, int size) { - return String.format("%" + size + "s", stringToPad); + return String.format("%" + size + "s", stringToPad); //$NON-NLS-1$ //$NON-NLS-2$ } /** * DOC Zqin Comment method "format". * * @param input the object that was formated. - * @param style the style of formated, it should be 0, 1, 99999. + * @param style the style of formated, it should be 0, 1,2,99999. * @return the formated object. */ public static Object format(Object input, int style) { @@ -64,29 +63,37 @@ public final class StringFormatUtil { BigDecimal max = new BigDecimal(9999 * 10E-5); boolean isUseScientific = false; switch (style) { - case 0: + case PERCENT: if (temp.compareTo(min) == -1 && temp.compareTo(zero) == 1) { isUseScientific = true; } else if (temp.compareTo(max) == 1 && temp.compareTo(new BigDecimal(1)) == -1) { input = max.toString(); } format = (DecimalFormat) DecimalFormat.getPercentInstance(Locale.ENGLISH); - format.applyPattern("0.00%"); + format.applyPattern("0.00%"); //$NON-NLS-1$ break; - case 1: + case INT_NUMBER: min = new BigDecimal(10E-3); if (temp.compareTo(min) == -1 && temp.compareTo(zero) == 1) { isUseScientific = true; } format = (DecimalFormat) DecimalFormat.getNumberInstance(Locale.ENGLISH); - format.applyPattern("0.00"); + format.applyPattern("0"); //$NON-NLS-1$ + break; + case DOUBLE_NUMBER: + min = new BigDecimal(10E-3); + if (temp.compareTo(min) == -1 && temp.compareTo(zero) == 1) { + isUseScientific = true; + } + format = (DecimalFormat) DecimalFormat.getNumberInstance(Locale.ENGLISH); + format.applyPattern("0.00"); //$NON-NLS-1$ break; default: format = (DecimalFormat) DecimalFormat.getInstance(Locale.getDefault()); return format.parse(input.toString()); } if (isUseScientific) { - format.applyPattern("0.###E0%"); + format.applyPattern("0.###E0%"); //$NON-NLS-1$ } return format.format(new Double(input.toString())); @@ -109,7 +116,7 @@ public final class StringFormatUtil { if (checkInput(input)) { Double db = new Double(input.toString()); DecimalFormat format = (DecimalFormat) DecimalFormat.getPercentInstance(Locale.ENGLISH); - format.applyPattern("0.00%"); + format.applyPattern("0.00%"); //$NON-NLS-1$ return format.format(db); } @@ -127,7 +134,7 @@ public final class StringFormatUtil { if (checkInput(input)) { Double db = new Double(input.toString()); DecimalFormat format = (DecimalFormat) DecimalFormat.getNumberInstance(Locale.ENGLISH); - format.applyPattern("0.00"); + format.applyPattern("0.00"); //$NON-NLS-1$ return Double.valueOf(format.format(db)); } @@ -145,7 +152,7 @@ public final class StringFormatUtil { if (checkInput(input)) { Double db = new Double(input.toString()); DecimalFormat format = (DecimalFormat) DecimalFormat.getNumberInstance(Locale.ENGLISH); - format.applyPattern("0.0000"); + format.applyPattern("0.0000"); //$NON-NLS-1$ return Double.valueOf(format.format(db)); } @@ -181,7 +188,7 @@ public final class StringFormatUtil { * @return true if the input is valid, else false; */ private static boolean checkInput(Object input) { - if (input == null || "".equals(input)) { + if (input == null || "".equals(input)) { //$NON-NLS-1$ return false; } else { Double db = new Double(input.toString()); @@ -196,7 +203,7 @@ public final class StringFormatUtil { public static Double formatPercentDecimalDouble(Object input) { if (checkInput(input)) { BigDecimal bd1 = new BigDecimal(input.toString()); - BigDecimal bd2 = new BigDecimal("100"); + BigDecimal bd2 = new BigDecimal("100"); //$NON-NLS-1$ return bd1.multiply(bd2).doubleValue(); } return null;