Compare commits

..

9 Commits

Author SHA1 Message Date
nrousseau
2b64f6abc9 merge r104000 from trunk to branch 5.3
TUP-842 : fix a possible NPE, appears when using the basic eclipse properties view, if there is no ESB in the product.


git-svn-id: http://talendforge.org/svn/tos/branches/branch-5_3@104001 f6f1c999-d317-4740-80b0-e6d1abc6f99e
2013-06-17 09:57:37 +00:00
nrousseau
13251c29c3 merge r103960 from trunk to branch 5.3
TDI-26387: when do detect modifications, force doing svn update.


git-svn-id: http://talendforge.org/svn/tos/branches/branch-5_3@103966 f6f1c999-d317-4740-80b0-e6d1abc6f99e
2013-06-13 11:49:50 +00:00
nrousseau
e41e2242f2 merge r103961 from trunk to branch 5.3
TDI-26380 : set the action enabled again after execute, no matter if have exception or not.


git-svn-id: http://talendforge.org/svn/tos/branches/branch-5_3@103963 f6f1c999-d317-4740-80b0-e6d1abc6f99e
2013-06-13 11:16:53 +00:00
rdubois
c8538a1fcc TDI-26279 fixed: Add a migration task in order to have the same behavior as before
git-svn-id: http://talendforge.org/svn/tos/branches/branch-5_3@103897 f6f1c999-d317-4740-80b0-e6d1abc6f99e
2013-06-10 14:12:30 +00:00
nrousseau
70b52f6f6b bug TDI-26324 fixed: avoid a graphic disposed (image of component diposed)
git-svn-id: http://talendforge.org/svn/tos/branches/branch-5_3@103893 f6f1c999-d317-4740-80b0-e6d1abc6f99e
2013-06-10 12:20:18 +00:00
rdubois
55315c8093 TDI-26297 fixed for other databases.
git-svn-id: http://talendforge.org/svn/tos/branches/branch-5_3@103890 f6f1c999-d317-4740-80b0-e6d1abc6f99e
2013-06-10 10:07:51 +00:00
rdubois
1ea0f9a08f Fix Bug TDI-25903: backport r103855 from trunk to branch-5_3
git-svn-id: http://talendforge.org/svn/tos/branches/branch-5_3@103860 f6f1c999-d317-4740-80b0-e6d1abc6f99e
2013-06-07 10:56:57 +00:00
rdubois
8180f55dd3 TDI-26297 fixed for tMysqlSCD and tMysqlSCDELT
git-svn-id: http://talendforge.org/svn/tos/branches/branch-5_3@103859 f6f1c999-d317-4740-80b0-e6d1abc6f99e
2013-06-07 10:52:39 +00:00
ilazebny
a366fc48b2 Update version to 5.3.1 in poms
git-svn-id: http://talendforge.org/svn/tos/branches/branch-5_3@103811 f6f1c999-d317-4740-80b0-e6d1abc6f99e
2013-06-05 11:38:16 +00:00
2991 changed files with 35719 additions and 91101 deletions

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -46,7 +46,6 @@ ComponentProjectPreferencePage.Warning=Warnung
AbstractXMLConfigPage.VERSIONTip=Ein Dezimalwert zur Angabe der Version Ihrer neuen Komponente.
WizardJetFilesChoosePage.Directory=Verzeichnis:
CreateComponentWizard.NewComponent=Neue Komponente
WizardComponentFolderPage.Name=Name
RemoveResourceAction.Remove=Entfernen
WizardJetFilesChoosePage.UseIconFrom=Verwende Icon von:
ImportComponentDialog.ImportFinished=Import der Komponente abgeschlossen

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -15,7 +15,6 @@ Require-Bundle: org.talend.model,
org.apache.log4j,
org.eclipse.jet.editor,
org.talend.core,
org.talend.core.ui,
org.talend.designer.components.localprovider,
org.eclipse.jdt.core,
org.eclipse.xsd,
@@ -29,4 +28,3 @@ Export-Package: org.talend.componentdesigner,
org.talend.componentdesigner.manager,
org.talend.componentdesigner.ui
Bundle-ClassPath: .
Bundle-Vendor: .Talend SA.

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -99,7 +99,7 @@
<contentExtension
pattern="org.talend.componentdesigner.resourceContent" />
<contentExtension
pattern="org.talend.componentdesigner.ui.navigator.resources.filters.*" />
pattern="org.eclipse.ui.navigator.resources.filters.*" />
</includes>
</viewerContentBinding>
<viewerActionBinding
@@ -267,7 +267,7 @@
</filterExpression>
</commonFilter> -->
<commonFilter
id="org.talend.componentdesigner.ui.navigator.resources.filters.nonComponentProject"
id="org.eclipse.ui.navigator.resources.filters.nonComponentProject"
name="nonComponentProject" description="not the component project"
activeByDefault="true">
<filterExpression>

View File

@@ -260,6 +260,7 @@ public final class ComponentProjectManager {
addLibClasspathEntries(ces, "org.talend.metadata.managment"); //$NON-NLS-1$
addLibClasspathEntries(ces, "org.talend.core"); //$NON-NLS-1$
addLibClasspathEntries(ces, "org.talend.designer.codegen"); //$NON-NLS-1$
addLibClasspathEntries(ces, "org.talend.commons"); //$NON-NLS-1$
return ces;
}

View File

@@ -34,11 +34,6 @@ import org.talend.componentdesigner.i18n.internal.Messages;
import org.talend.componentdesigner.util.XSDValidator;
import org.talend.componentdesigner.util.file.FileCopy;
import org.talend.core.CorePlugin;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.components.IComponentsFactory;
import org.talend.core.service.IComponentsLocalProviderService;
import org.talend.repository.model.ComponentsFactoryProvider;
/**
* DOC slanglois class global comment. Detailled comment
@@ -54,7 +49,6 @@ public class PushToPaletteActionProvider extends CommonActionProvider {
*
* @see org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator.ICommonActionExtensionSite)
*/
@Override
public void init(ICommonActionExtensionSite anExtensionSite) {
if (anExtensionSite.getViewSite() instanceof ICommonViewerWorkbenchSite) {
@@ -65,7 +59,6 @@ public class PushToPaletteActionProvider extends CommonActionProvider {
/**
* Adds a submenu to the given menu with the name "New Component".
*/
@Override
public void fillContextMenu(IMenuManager menu) {
menu.insertBefore("group.edit", copyProjectAction); //$NON-NLS-1$
// Object obj = ((TreeSelection) this.getContext().getSelection()).getFirstElement();// need to get all
@@ -93,16 +86,9 @@ public class PushToPaletteActionProvider extends CommonActionProvider {
/*
* (non-Javadoc) Method declared on IAction.
*/
@Override
public void run() {
String path = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IComponentsLocalProviderService.class)) {
IComponentsLocalProviderService service = (IComponentsLocalProviderService) GlobalServiceRegister.getDefault()
.getService(IComponentsLocalProviderService.class);
if (service != null) {
path = service.getPreferenceStore().getString("USER_COMPONENTS_FOLDER"); //$NON-NLS-1$
}
}
String path = CorePlugin.getDefault().getComponentsLocalProviderService().getPreferenceStore().getString(
"USER_COMPONENTS_FOLDER"); //$NON-NLS-1$
if (path == null || path.length() == 0) {
new MessageDialog(
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
@@ -144,15 +130,6 @@ public class PushToPaletteActionProvider extends CommonActionProvider {
}
}
// add for bug TDI-26719, clear image cash from EmfComponent
IComponentsFactory components = ComponentsFactoryProvider.getInstance();
List<IComponent> comList = components.getCustomComponents();
for (IComponent com : comList) {
if (com.getImageRegistry() != null) {
com.getImageRegistry().clear();
}
}
MessageDialog warningMessageDialog = new MessageDialog(
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
Messages.getString("PushToPaletteActionProvider.Information"), null, Messages.getString("PushToPaletteActionProvider.InformationMSG"), MessageDialog.INFORMATION, //$NON-NLS-1$ //$NON-NLS-2$
@@ -170,8 +147,7 @@ public class PushToPaletteActionProvider extends CommonActionProvider {
MessageDialog warningMessageDialog = new MessageDialog(
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
Messages.getString("PushToPaletteActionProvider.PushToPaletteActionProvider.result"), null, waringInfo, //$NON-NLS-1$
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), Messages.getString("PushToPaletteActionProvider.PushToPaletteActionProvider.result"), null, waringInfo, //$NON-NLS-1$
MessageDialog.WARNING, new String[] { Messages.getString("PushToPaletteActionProvider.OK3") }, 0); //$NON-NLS-1$
warningMessageDialog.open();
@@ -186,7 +162,6 @@ public class PushToPaletteActionProvider extends CommonActionProvider {
// get the correct XML file for components
File[] list = componentFolder.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// _java.xml
String javaXmlName = dir.getName() + "_java.xml"; //$NON-NLS-1$

View File

@@ -12,15 +12,11 @@
// ============================================================================
package org.talend.componentdesigner.ui.preferencepage;
import java.io.File;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
@@ -31,8 +27,8 @@ import org.talend.componentdesigner.i18n.internal.Messages;
/**
* This class represents a preference page that is contributed to the Preferences dialog. By subclassing
* <samp>FieldEditorPreferencePage</samp>, we can use the field support built into JFace that allows us to create a page
* that is small and knows how to save, restore and apply itself.
* <samp>FieldEditorPreferencePage</samp>, we can use the field support built into JFace that allows us to create a
* page that is small and knows how to save, restore and apply itself.
* <p>
* This page is used to modify preferences only. They are stored in the preference store that belongs to the main
* plug-in class. That way, preferences can be accessed directly via the preference store.
@@ -69,39 +65,23 @@ public class ComponentProjectPreferencePage extends FieldEditorPreferencePage im
GridData gd = new GridData();
gd.horizontalSpan = 3;
l.setLayoutData(gd);
filePathTemp = new DirectoryFieldEditor(PluginConstant.PROJECT_URL,
Messages.getString("ComponentProjectPreferencePage.ComponentProject"), //$NON-NLS-1$
filePathTemp = new DirectoryFieldEditor(PluginConstant.PROJECT_URL, Messages
.getString("ComponentProjectPreferencePage.ComponentProject"), //$NON-NLS-1$
getFieldEditorParent());
addField(filePathTemp);
// addModifyListener for the filePath text
filePathTemp.getTextControl(getFieldEditorParent()).addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
String newPath = filePathTemp.getTextControl(getFieldEditorParent()).getText();
File file = new File(newPath);
if (!file.exists() && !"".equals(newPath)) {
filePathTemp.showErrorMessage();
setValid(false);
} else {
setValid(true);
}
}
});
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.preference.FieldEditorPreferencePage#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
*/
public void propertyChange(PropertyChangeEvent event) {
super.propertyChange(event);
MessageDialog warningMessageDialog = new MessageDialog(getFieldEditorParent().getShell(),
Messages.getString("ComponentProjectPreferencePage.Warning"), null, //$NON-NLS-1$
MessageDialog warningMessageDialog = new MessageDialog(getFieldEditorParent().getShell(), Messages
.getString("ComponentProjectPreferencePage.Warning"), null, //$NON-NLS-1$
Messages.getString("ComponentProjectPreferencePage.WarningMSG"), MessageDialog.WARNING, //$NON-NLS-1$
new String[] { Messages.getString("ComponentProjectPreferencePage.ButtonLabel0") }, 0); //$NON-NLS-1$
warningMessageDialog.open();

View File

@@ -242,6 +242,7 @@
<import plugin="com.ibm.icu" version="4.2.1.v20100412" match="equivalent"/>
<import plugin="org.eclipse.wst.common.core" version="1.1.201" match="compatible"/>
<import plugin="org.eclipse.osgi.util" version="3.1.300" match="compatible"/>
<import plugin="org.talend.libraries.jdom"/>
<import plugin="org.talend.common.ui.runtime"/>
<import plugin="org.talend.libraries.jdbc.mysql"/>
<import plugin="org.talend.libraries.jdbc.jtds"/>
@@ -1388,6 +1389,12 @@
version="0.0.0"
unpack="false"/>
<plugin
id="org.talend.libraries.jdom"
download-size="0"
install-size="0"
version="0.0.0"/>
<plugin
id="org.talend.libraries.jexcel"
download-size="0"
@@ -1413,11 +1420,4 @@
version="0.0.0"
unpack="false"/>
<plugin
id="org.talend.osgi.lib.loader"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
</feature>

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Abstract Map Plug-in
Bundle-SymbolicName: org.talend.designer.abstractmap;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Version: 2.2.0.qualifier
Bundle-Activator: org.talend.designer.abstractmap.MapPlugin
Require-Bundle: org.eclipse.core.runtime,
org.talend.core,

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -79,7 +79,7 @@ public abstract class AbstractMapComponent extends MapperExternalNode {
protected boolean hasDataIntoExpression(Pattern pattern, PatternMatcher matcher, String expression) {
if (expression != null) {
if (matcher.matches(expression, pattern)) {
if (matcher.contains(expression, pattern)) {
return true;
}
}

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -14,5 +14,4 @@ AlfrescoOutputModelManager.prefixConflict=Kann das Modell nicht hinzuf
AlfrescoOutputModelManager.notYetAdded=Dieses Modell wurde noch nicht hinzugefügt.
AlfrescoModelDialog.type=Typ
AlfrescoModelDialog.addModelFailed=Modell hinzufügen fehlgeschlagen
AlfrescoModelDialog.modelTable.name=Name
AlfrescoModelDialog.remove=Entfernen

View File

@@ -1,12 +1,11 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Alfresco Output Component Plug-in
Bundle-Name: Alfresco Output external component
Bundle-SymbolicName: org.talend.designer.alfrescooutput;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Version: 2.2.0.qualifier
Bundle-Vendor: .Talend SA.
Require-Bundle: org.eclipse.core.runtime,
org.talend.core,
org.talend.core.ui,
org.talend.commons.ui,
org.talend.libraries.dom4j-jaxen,
org.talend.designer.codegen,

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -16,7 +16,6 @@ BusinessModelingAssistantProvider.AvaiableDomainModelElements=Verf
BusinessPaletteFactory.BidirectionalRelationShip=Bidirektionale Beziehung
BusinessPaletteFactory.CreateDirectionalRelationShip=Direktionale Beziehung hinzufügen
BusinessPaletteFactory.CreateBidirectionalRelationShip=Bidirektionale Beziehung hinzufügen
AssignmentPropertySection.Name=Name
CreateAssignmentCommand.CannotAssign=Zuordnung nicht möglich.
BusinessNewDiagramFileWizard.DiagramRootElement=Diagramm root-Element
BusinessNewDiagramFileWizard.NoDiagramRootElementSelectedError=Kein Diagram-Root Element ausgewählt

View File

@@ -45,7 +45,7 @@ BusinessPaletteFactory.InputComment=Cr
BusinessPaletteFactory.Data=Données
BusinessPaletteFactory.Ellipse=Ellipse
BusinessPaletteFactory.Input=Lecture
BusinessPaletteFactory.List=liste
BusinessPaletteFactory.List=Liste
BusinessPaletteFactory.Relationshop=Relation
BusinessAbstractParser.ValueOfBooleanIsExpected=Une valeur de type Boolean est attendue
BusinessPaletteFactory.decision=Décision

View File

@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.talend.designer.business.diagram; singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Version: 2.2.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.talend.designer.business.model.business.diagram.part.BusinessDiagramEditorPlugin
Bundle-Vendor: %providerName
@@ -19,7 +19,6 @@ Require-Bundle: org.eclipse.ui.ide,
org.eclipse.gmf.runtime.diagram.ui.properties,
org.apache.commons.collections,
org.talend.core,
org.talend.core.ui,
org.talend.core.repository,
org.talend.repository,
org.talend.model,
@@ -32,6 +31,5 @@ Require-Bundle: org.eclipse.ui.ide,
org.apache.batik.ext.awt,
org.talend.metadata.managment,
com.ibm.icu,
org.talend.libraries.apache,
org.talend.repository.items.importexport
org.talend.libraries.apache
Eclipse-LazyStart: true

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -1,3 +1,3 @@
pluginName=Business Diagram Plug-in
pluginName=Business Plugin
providerName=.Talend SA.
repository.businessProcess=Business Models

View File

@@ -590,20 +590,5 @@
type="BUSINESS_PROCESS">
</repositoryNode>
</extension>
<extension
point="org.talend.repository.items.importexport.handler">
<importItemsProvider
id="org.talend.designer.business.diagram.importProvider"
name="Business Diagram importer"
priority="NORMAL">
<importItemsHandler
class="org.talend.designer.business.diagram.views.handler.BusinessDiagramImportHandler">
<parameter
name="type"
value="BUSINESS_PROCESS">
</parameter>
</importItemsHandler>
</importItemsProvider>
</extension>
</plugin>

View File

@@ -1,43 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2013 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.designer.business.diagram.views.handler;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.talend.commons.emf.TalendXMIResource;
import org.talend.repository.items.importexport.handlers.imports.ImportRepTypeHandler;
/**
* DOC ggu class global comment. Detailled comment
*/
public class BusinessDiagramImportHandler extends ImportRepTypeHandler {
/**
* DOC ggu BusinessDiagramImportHandler constructor comment.
*/
public BusinessDiagramImportHandler() {
super();
}
/*
* (non-Javadoc)
*
* @see
* org.talend.repository.items.importexport.handlers.imports.ImportRepTypeHandler#createItemResource(org.eclipse
* .emf.common.util.URI)
*/
@Override
protected Resource createItemResource(URI pathUri) {
return new TalendXMIResource(pathUri);
}
}

View File

@@ -82,7 +82,6 @@ import org.talend.designer.core.ui.views.jobsettings.JobSettingsView;
import org.talend.designer.core.ui.views.jobsettings.tabs.AbstractTabComposite;
import org.talend.designer.core.utils.EmfPropertyHelper;
import org.talend.designer.core.utils.KeyHelper;
import org.talend.repository.ProjectManager;
import org.talend.repository.model.IRepositoryNode;
import org.talend.repository.model.IRepositoryNode.ENodeType;
import org.talend.repository.model.IRepositoryNode.EProperties;
@@ -412,12 +411,11 @@ public class BusinessAssignmentComposite extends AbstractTabComposite {
}
}
}
if (ProjectManager.getInstance().isInCurrentMainProject(repositoryNode)) {
CorePlugin.getDefault().getDiagramModelService()
.addDeleteAssignmentAction(mgr, tableViewer.getSelection());
}
}
CorePlugin.getDefault().getDiagramModelService().addDeleteAssignmentAction(mgr, tableViewer.getSelection());
}
}
});
Menu menu = menuMgr.createContextMenu(tableViewer.getControl());

View File

@@ -49,6 +49,7 @@ import org.talend.core.model.properties.ItemState;
import org.talend.core.model.properties.Property;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.repository.RepositoryManager;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.ui.ILastVersionChecker;
import org.talend.designer.business.diagram.custom.actions.DiagramResourceManager;
@@ -208,6 +209,7 @@ public class BusinessDiagramEditor extends FileDiagramEditor implements IGotoMar
}
propertyIsDirty = false;
firePropertyChange(IEditorPart.PROP_DIRTY);
RepositoryManager.refreshSavedNode(repositoryEditorInput.getRepositoryNode());
}
}

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -21,8 +21,6 @@ CodeGeneratorEmittersPoolFactory.componentCompiled=Komponenten kompiliert in {0}
CodeGeneratorEmittersPoolFactory.failCompail=Kompilierung der Komponenten fehlgeschlafen : \r\n
CodeGeneratorEmittersPoolFactory.initialException=Ausnahme bei der Initialisierung
CodeGeneratorEmittersPoolFactory.jetEmitterInitialException=Fehler bei der JetEmitter Initialisierung
CodeGeneratorService.invalidLanguage1=Ungültiger Sprachtyp
CodeGeneratorService.invalidLanguage2=Ungültiger Sprachtyp
CodeGenInit.createProject=Erstelle {0} Projekt
CodeGenInit.deleteProject=Lösche {0} Projekt
CodeGenInit.initTemplate=Initialisiere Templates

View File

@@ -132,4 +132,3 @@ FAMILY.Vertica=Vertica
FAMILY.VtigerCRM=VtigerCRM
FAMILY.XML=XML
CodeGeneratorEmittersPoolFactory.updatePaletteForEditors=Update the palette for editors
ComponentsPreferencePage.componentAssist=Enable Component Creation Assistant

View File

@@ -43,7 +43,7 @@ CodeGeneratorEmittersPoolFactory.dialogContent=La g
CodeGeneratorEmittersPoolFactory.operationCanceled=Opération annulée
ComponentsFactory.afterSystemComponent=après le(s) composant(s) système
ComponentsFactory.componentNotFound=Impossible de trouver le dossier du composant :
ComponentsFactory.load.components=Chargement des composants...
ComponentsFactory.load.components=Charger des composants...
ComponentsFactory.parentNotRecompiled=Attention\: les parents de *.inc.javajet ne sont pas recompilés.
ComponentsLocalProviderService.componentLoadError=Erreur de chargement du composant
ComponentsLocalProviderService.talendExchangeError=Erreur de Talend Exchange
@@ -60,7 +60,6 @@ ComponenttRunJobPreferencePage.showCorrespondingJob=Afficher le Job correspondan
XsdValidationCacheManager.unableLoadxsd=impossible de charger le fichier de cache de validation xsd
XsdValidationCacheManager.unableSavexsd=impossible d'enregistrer le fichier de cache de validation xsd
prefs.configuration.LINK_STYLE.AUTO=Auto
prefs.configuration.LINK_STYLE.BEZIER_CURVE=Courbes
prefs.configuration.LINK_STYLE.LINE=Lignes (rapide)
FAMILY.AS400=AS400
FAMILY.Access=Access
@@ -112,7 +111,7 @@ FAMILY.OLAP_Cube=Cube OLAP
FAMILY.Oracle=Oracle
FAMILY.Orchestration=Orchestration
FAMILY.Output=Ecriture
FAMILY.ParAccel=Paraccel
FAMILY.ParAccel=ParAccel
FAMILY.PostgreSQL=PostgreSQL
FAMILY.PostgresPlus=PostgresPlus
FAMILY.Processing=Transformation

View File

@@ -65,24 +65,24 @@ prefs.configuration.LINK_STYLE.LINE=\u76F4\u7DDA(\u6700\u901F)
FAMILY.AS400=AS400
FAMILY.Access=Access
FAMILY.Alfresco=Alfresco
FAMILY.Business=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3
FAMILY.Business_Intelligence=\u30D3\u30B8\u30CD\u30B9\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30B9
FAMILY.Business=Business
FAMILY.Business_Intelligence=Business Intelligence
FAMILY.CentricCRM=CentricCRM
FAMILY.Charts=Charts
FAMILY.Connections=\u63A5\u7D9A
FAMILY.Custom_Code=\u30AB\u30B9\u30BF\u30E0\u30B3\u30FC\u30C9
FAMILY.Connections=Connections
FAMILY.Custom_Code=Custom Code
FAMILY.DB2=DB2
FAMILY.DB_Generic=\u6C4E\u7528ODBC
FAMILY.DB_JDBC=\u6C4E\u7528JDBC
FAMILY.DB_Generic=DB Generic
FAMILY.DB_JDBC=DB JDBC
FAMILY.DB_SCD=DB SCD
FAMILY.Data_Quality=\u30C7\u30FC\u30BF\u30AF\u30AA\u30EA\u30C6\u30A3
FAMILY.Databases=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9
FAMILY.Data_Quality=Data Quality
FAMILY.Databases=Databases
FAMILY.ELT=ELT
FAMILY.ESB=ESB
FAMILY.EXASolution=EXASolution
FAMILY.eXist=eXist
FAMILY.FTP=FTP
FAMILY.Fields=\u9805\u76EE\u5024\u5909\u63DB
FAMILY.Fields=Fields
FAMILY.File=\u30D5\u30A1\u30A4\u30EB
FAMILY.FireBird=Firebird
FAMILY.Greenplum=Greenplum
@@ -91,31 +91,30 @@ FAMILY.Healthcare=Healthcare
FAMILY.Hive=Hive
FAMILY.Informix=Informix
FAMILY.Ingres=Ingres
FAMILY.Input=\u30D5\u30A1\u30A4\u30EB\u5165\u529B
FAMILY.Input=Input
FAMILY.Interbase=Interbase
FAMILY.Internet=Internet
FAMILY.Jasper=Jasper
FAMILY.JavaDB=JavaDB
FAMILY.JDBC=\u6C4E\u7528JDBC
FAMILY.JDBC=JDBC
FAMILY.LDAP=LDAP
FAMILY.Logs_Errors=\u30ED\u30B0\uFF06\u30A8\u30E9\u30FC\u30CF\u30F3\u30C9\u30EA\u30F3\u30B0
FAMILY.Logs_Errors=Logs & Errors
FAMILY.MS_SQL_Server=MS SQL Server
FAMILY.MSSql=MSSql
FAMILY.Management=\u30D5\u30A1\u30A4\u30EB\u64CD\u4F5C
FAMILY.Management=Management
FAMILY.MaxDB=MaxDB
FAMILY.Microsoft_AX=Microsoft AX
FAMILY.Microsoft_CRM=Microsoft CRM
FAMILY.Misc=\u305D\u306E\u4ED6
FAMILY.Misc=Misc
FAMILY.MySQL=MySQL
FAMILY.Netezza=Netezza
FAMILY.OLAP_Cube=OLAP\u30AD\u30E5\u30FC\u30D6
FAMILY.OLAP_Cube=OLAP Cube
FAMILY.Oracle=Oracle
FAMILY.Orchestration=\u30D7\u30ED\u30BB\u30B9\u5236\u5FA1
FAMILY.Output=\u30D5\u30A1\u30A4\u30EB\u51FA\u529B
FAMILY.Orchestration=Orchestration
FAMILY.ParAccel=ParAccel
FAMILY.PostgreSQL=PostgreSQL
FAMILY.PostgresPlus=PostgresPlus
FAMILY.Processing=\u5909\u63DB\u51E6\u7406
FAMILY.Processing=Processing
FAMILY.SAP=SAP
FAMILY.Sas=Sas
FAMILY.SCD=SCD

View File

@@ -3,6 +3,6 @@ Bundle-ManifestVersion: 2
Bundle-Name: Test
Bundle-SymbolicName: org.talend.designer.codegen.test
Bundle-Version: 1.0.0.qualifier
Fragment-Host: org.talend.designer.codegen
Fragment-Host: org.talend.designer.codegen;bundle-version="2.2.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.junit4

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -1,21 +1,19 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: CodeGen Plug-in
Bundle-Name: Codegen Plug-in
Bundle-SymbolicName: org.talend.designer.codegen;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Version: 2.2.0.qualifier
Bundle-Localization: plugin
Require-Bundle: org.talend.core.repository,
org.eclipse.emf.codegen,
org.eclipse.jdt.core,
org.talend.repository,
org.talend.commons.ui,
org.eclipse.emf.ecore.xmi,
org.talend.model,
org.talend.metadata.managment,
org.talend.designer.core,
org.apache.xerces,
org.talend.core,
org.talend.core.ui,
org.eclipse.ui.workbench,
org.apache.log4j
Eclipse-LazyStart: true

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -2,7 +2,6 @@
<?eclipse version="3.2"?>
<plugin>
<extension-point id="additional_jetfile" name="Additional Jet File to generate" schema="schema/additional_jetfile.exsd"/>
<extension-point id="componentFilter" name="Component filter" schema="schema/componentFilter.exsd"/>
<extension
point="org.eclipse.ui.commands">
<command
@@ -51,13 +50,13 @@
<page
category="org.talend.core.prefs"
class="org.talend.designer.codegen.components.ui.ComponentsPreferencePage"
id="org.talend.designer.codegen.components.preference"
id="org.talend.designer.codegen.components.localprovider.page1"
name="%components">
</page>
<page
category="org.talend.designer.codegen.components.preference"
class="org.talend.designer.components.preference.ComponentsFormatPreferencePage"
id="org.talend.designer.codegen.components.preference.format"
category="org.talend.designer.codegen.components.localprovider.page1"
class="org.talend.designer.components.preference.labelformat.ComponentsFormatPreferencePage"
id="org.talend.designer.codegen.components.localprovider.page1"
name="%format">
</page>
</extension>

View File

@@ -72,47 +72,25 @@
camelContext.setRegistry(contextRegister);
<%
boolean isStudioEEVersion = org.talend.core.PluginChecker.isTIS();
List<? extends INode> cxfNodes = process.getNodesOfType("cCXF");
if( null != cxfNodes && cxfNodes.size() >0 ){
boolean hasCXFConsumer = false;
boolean hasCXFSAMLProvider = false;
for(INode n: cxfNodes){
int incomingConnections = n.getIncomingConnections().size();
if(incomingConnections > 0){
hasCXFConsumer = true;
}else{
String dataformat = ElementParameterParser.getValue(n, "__DATAFORMAT__");
String useServiceRegistry = ElementParameterParser.getValue(n, "__ENABLE_REGISTRY__");
if(!isStudioEEVersion || "RAW".equals(dataformat) || "CXF_MESSAGE".equals(dataformat)){
useServiceRegistry = "false";
}
String useSecurity = ElementParameterParser.getValue(n, "__ENABLE_SECURITY__");
if("true".equals(useServiceRegistry) || "RAW".equals(dataformat) || "CXF_MESSAGE".equals(dataformat)){
useSecurity = "false";
}
if("true".equals(useServiceRegistry) || ("true".equals(useSecurity) && "SAML".equals(ElementParameterParser.getValue(n, "__SECURITY_TYPE__")))){
hasCXFSAMLProvider = true;
}
if(hasCXFConsumer && hasCXFSAMLProvider){
break;
}
break;
}
}
if(hasCXFConsumer){
%>
contextRegister.register("CXF_PAYLOAD_HEADER_FILTER", consumerSoapHeaderFilter);
contextRegister.register("CXF_PAYLOAD_HEADER_FILTER", new CxfConsumerSoapHeaderFilter());
<%
}
if(hasCXFSAMLProvider){
%>
contextRegister.register("DEFAULT_CXF_BINDING", new CXFProviderBinding());
<% }
}
%>
<%
//then process cBeanRegister components
List<? extends INode> beanRegisterNodes = process.getNodesOfType("cBeanRegister");
if(beanRegisterNodes != null && beanRegisterNodes.size()>0){

View File

@@ -49,7 +49,7 @@
return String.valueOf(obj);
}
}
<%
List<? extends INode> cMailNodes = process.getNodesOfType("cMail");
if(cMailNodes.size() > 0){
@@ -101,29 +101,19 @@
boolean hasCXFComponent = false;
boolean hasCXFSamlTokenProvider = false;
boolean hasCXFSamlTokenConsumer = false;
boolean hasCXFSamlTokenAuthorizationConsumer = false;
boolean hasCXFUsernameTokenProvider = false;
boolean hasCXFUsernameTokenConsumer = false;
boolean hasCXFHTTPAuthConsumer = false;
boolean hasCXFHTTPAuthProvider = false;
boolean hasCXFComponentConsumer = false;
boolean hasCXFRegistryProvider = false;
boolean hasCXFRegistryConsumer = false;
boolean hasCXFCorrelationConsumer = false;
boolean hasCXFSAMLPropagateConsumer = false;
boolean isStudioEEVersion = org.talend.core.PluginChecker.isTIS();
boolean hasCXFComponentConsumerWithCXFMESSAGE = false;
List<? extends INode> cxfNodes = process.getNodesOfType("cCXF");
if( null != cxfNodes && cxfNodes.size() >0 ){
hasCXFComponent = true;
for(INode n: cxfNodes){
String useRegistry = "false";
if(isStudioEEVersion){
useRegistry = ElementParameterParser.getValue(n, "__ENABLE_REGISTRY__");
}
String useSecurity = ElementParameterParser.getValue(n, "__ENABLE_SECURITY__");
String formatType = ElementParameterParser.getValue(n, "__DATAFORMAT__");
if("RAW".equals(formatType) || "CXF_MESSAGE".equals(formatType)){
useRegistry = "false";
useSecurity = "false";
}
String securityType = ElementParameterParser.getValue(n, "__SECURITY_TYPE__");
@@ -131,44 +121,15 @@
if(!hasCXFComponentConsumer && incomingConnections>0){
hasCXFComponentConsumer = true;
}
String useCorrelation = ElementParameterParser.getValue(n, "__ENABLE_CORRELATION__");
if("RAW".equals(formatType)){
useCorrelation = "false";
}
if("false".equals(useCorrelation)){
useCorrelation = useRegistry;
}
if("true".equals(useCorrelation) && incomingConnections>0 ){
hasCXFCorrelationConsumer = true;
}
if("true".equals(useRegistry)){
useSecurity = "false";
if(incomingConnections == 0){
hasCXFRegistryProvider = true;
}else{
hasCXFRegistryConsumer = true;
if(!hasCXFSAMLPropagateConsumer && Boolean.parseBoolean(ElementParameterParser.getValue(n, "__USE_PROPAGATE_CREDENTIAL__"))){
hasCXFSAMLPropagateConsumer = true;
}
}
if(!hasCXFComponentConsumerWithCXFMESSAGE && incomingConnections>0 && "CXF_MESSAGE".equals(formatType)){
hasCXFComponentConsumerWithCXFMESSAGE = true;
}
if("true".equals(useSecurity)){
if("SAML".equals(securityType) && (!hasCXFSamlTokenProvider || !hasCXFSamlTokenConsumer || !hasCXFSAMLPropagateConsumer)){
if("SAML".equals(securityType) && (!hasCXFSamlTokenProvider || !hasCXFSamlTokenConsumer)){
if(incomingConnections == 0){
hasCXFSamlTokenProvider = true;
}else{
hasCXFSamlTokenConsumer = true;
if(!hasCXFSamlTokenAuthorizationConsumer && isStudioEEVersion){
if("true".equals(ElementParameterParser.getValue(n, "__USE_AUTHORIZATION__"))){
hasCXFSamlTokenAuthorizationConsumer = true;
}
}
if(!hasCXFSAMLPropagateConsumer){
String samlSecurityType = ElementParameterParser.getValue(n, "__SAML_SECURITY_TYPES__");
if("PROPAGATE_UP".equals(samlSecurityType) || "PROPAGATE_AP".equals(samlSecurityType)){
hasCXFSAMLPropagateConsumer = true;
}
}
}
}else if("USER".equals(securityType) && (!hasCXFUsernameTokenProvider || !hasCXFUsernameTokenConsumer)){
if(incomingConnections == 0){
@@ -187,74 +148,17 @@
}
}
if(hasCXFSAMLPropagateConsumer){
%>
class CXFConsumerBinding extends org.apache.camel.component.cxf.DefaultCxfBinding {
private org.apache.camel.component.cxf.CxfEndpoint endpoint;
public CXFConsumerBinding(org.apache.camel.component.cxf.CxfEndpoint endpoint){
this.endpoint = endpoint;
setHeaderFilterStrategy(consumerSoapHeaderFilter);
}
@Override
protected void propagateHeadersFromCamelToCxf(org.apache.camel.Exchange camelExchange,
Map<String, Object> camelHeaders, org.apache.cxf.message.Exchange cxfExchange,
Map<String, Object> cxfContext) {
super.propagateHeadersFromCamelToCxf(camelExchange, camelHeaders, cxfExchange, cxfContext);
Object samlToken = camelHeaders.get("samlToken");
if(samlToken == null){
return;
}
Map<String, Object> properties = endpoint.getProperties();
if(properties == null){
return;
}
Object object = properties.get(org.apache.cxf.ws.security.SecurityConstants.STS_CLIENT);
if(object == null || !(object instanceof org.apache.cxf.ws.security.trust.STSClient)){
return;
}
org.apache.cxf.ws.security.trust.STSClient stsClient = (org.apache.cxf.ws.security.trust.STSClient) object;
stsClient.setOnBehalfOf(samlToken);
}
}
<% }
if(hasCXFRegistryProvider || hasCXFSamlTokenProvider){
%>
class CXFProviderBinding extends org.apache.camel.component.cxf.DefaultCxfBinding{
@Override
protected void propagateHeadersFromCxfToCamel( org.apache.cxf.message.Message cxfMessage,
org.apache.camel.Message camelMessage, org.apache.camel.Exchange camelExchange) {
super.propagateHeadersFromCxfToCamel(cxfMessage, camelMessage, camelExchange);
camelExchange.getIn().removeHeader("samlToken");
org.apache.cxf.security.SecurityContext securityContext = cxfMessage.get(org.apache.cxf.security.SecurityContext.class);
if(securityContext != null && securityContext instanceof org.apache.cxf.interceptor.security.SAMLSecurityContext){
org.apache.cxf.interceptor.security.SAMLSecurityContext ssc = (org.apache.cxf.interceptor.security.SAMLSecurityContext) securityContext;
org.w3c.dom.Element assertionElement = ssc.getAssertionElement();
if(assertionElement != null){
camelExchange.getIn().setHeader("samlToken", assertionElement);
}
}
}
}
<%
}
if(hasCXFComponent){
%>
private org.apache.camel.component.cxf.CxfEndpoint getCxfEndpoint(String uri, boolean isProvider, boolean useAuthorization, boolean usePropagateSamlAP, String... token){
private org.apache.camel.component.cxf.CxfEndpoint getCxfEndpoint(String uri, boolean isProvider, String... token){
org.apache.camel.component.cxf.CxfEndpoint cxfEndpoint = (org.apache.camel.component.cxf.CxfEndpoint)endpoint(uri);
<%if(hasCXFUsernameTokenProvider || hasCXFSamlTokenProvider || hasCXFSamlTokenConsumer || hasCXFHTTPAuthProvider || hasCXFRegistryProvider || hasCXFRegistryConsumer){%>
if( null != bundleContext ){
<%if(hasCXFUsernameTokenProvider || hasCXFSamlTokenProvider || hasCXFSamlTokenConsumer || hasCXFRegistryProvider || hasCXFRegistryConsumer){%>
org.apache.cxf.Bus bus = cxfEndpoint.getBus();
org.apache.cxf.Bus bus = cxfEndpoint.getBus();
org.apache.cxf.configuration.ConfiguredBeanLocator cbl = bus==null?null:bus.getExtension(org.apache.cxf.configuration.ConfiguredBeanLocator.class);
if(cbl != null){
bus.setExtension(new org.apache.cxf.bus.osgi.OSGiBeanLocator(cbl, bundleContext), org.apache.cxf.configuration.ConfiguredBeanLocator.class);
}
<%
}
if(hasCXFUsernameTokenProvider){
%>
if(isProvider&&token!=null&&"UsernameToken".equals(token[0])){
@@ -275,18 +179,11 @@
%>
if(token!=null&&"SAMLToken".equals(token[0])){
addSAMLToken(cxfEndpoint, bus, isProvider, useAuthorization, usePropagateSamlAP, token);
}
<% }
if(hasCXFRegistryProvider || hasCXFRegistryConsumer){
%>
if(token!=null&&"Registry".equals(token[0])){
addRegistry(cxfEndpoint, bus, isProvider, usePropagateSamlAP, token);
addSAMLToken(cxfEndpoint, bus, isProvider, token);
}
<%}%>
}
<%
}
if(hasCXFUsernameTokenConsumer){
%>
if(!isProvider&&token!=null&&token.length>=3&&"UsernameToken".equals(token[0])){
@@ -397,7 +294,7 @@ if(hasCXFUsernameTokenConsumer){
<%
}
}
if(hasCXFSamlTokenConsumer || hasCXFRegistryConsumer){
if(hasCXFSamlTokenConsumer){
%>
private Map<String, String> clientProperties;
@@ -443,18 +340,12 @@ class WSPasswordCallbackHandler implements javax.security.auth.callback.Callback
if(hasCXFComponentConsumer){
%>
org.apache.camel.component.cxf.common.header.CxfHeaderFilterStrategy consumerSoapHeaderFilter = new org.apache.camel.component.cxf.common.header.CxfHeaderFilterStrategy(){
class CxfConsumerSoapHeaderFilter extends org.apache.camel.component.cxf.common.header.CxfHeaderFilterStrategy{
public boolean applyFilterToCamelHeaders(String headerName,
Object headerValue, org.apache.camel.Exchange exchange) {
//filter propagated cxf header
if(org.apache.cxf.headers.Header.HEADER_LIST.equals(headerName)){
return true;
}
//remove correlationID header, if it's null or empty
if("CorrelationID".equals(headerName)
&& (headerValue == null || "".equals(headerValue.toString()))){
return true;
}
return super.applyFilterToCamelHeaders(headerName, headerValue, exchange);
}
@@ -465,139 +356,21 @@ org.apache.camel.component.cxf.common.header.CxfHeaderFilterStrategy consumerSoa
}
return super.applyFilterToExternalHeaders(headerName, headerValue, exchange);
}
};
<%
}
if(hasCXFRegistryProvider || hasCXFRegistryConsumer){
%>
private void addRegistry(org.apache.camel.component.cxf.CxfEndpoint cxfEndpoint, org.apache.cxf.Bus bus,
boolean isProvider, boolean usePropagateSamlAP, final String... token) {
<%if(hasCXFRegistryConsumer){
%>
if(!isProvider){
if(usePropagateSamlAP && (token[4] == null)){
usePropagateSamlAP = false ;
}
org.apache.cxf.ws.security.trust.STSClient stsClient = new org.apache.cxf.ws.security.trust.STSClient(
bus);
stsClient.setServiceQName(new javax.xml.namespace.QName(
stsProperties.get("sts.namespace"), stsProperties
.get("sts.service.name")));
Map<String, Object> stsProps = new HashMap<String, Object>();
for (Map.Entry<String, String> entry : stsProperties.entrySet()) {
if (org.apache.cxf.ws.security.SecurityConstants.ALL_PROPERTIES
.contains(entry.getKey())) {
stsProps.put(entry.getKey(), entry.getValue());
}
}
if(usePropagateSamlAP) {
stsClient.setWsdlLocation(stsProperties.get("sts.x509.wsdl.location"));
stsClient.setEndpointQName(new javax.xml.namespace.QName(
stsProperties.get("sts.namespace"), stsProperties
.get("sts.x509.endpoint.name")));
stsProps.put(org.apache.cxf.ws.security.SecurityConstants.STS_TOKEN_USERNAME,
token[4]);
}else {
stsClient.setWsdlLocation(stsProperties.get("sts.wsdl.location"));
stsClient.setEndpointQName(new javax.xml.namespace.QName(
stsProperties.get("sts.namespace"), stsProperties
.get("sts.endpoint.name")));
stsProps.put(org.apache.cxf.ws.security.SecurityConstants.USERNAME,
token[1]);
stsProps.put(org.apache.cxf.ws.security.SecurityConstants.PASSWORD,
token[2]);
}
stsClient.setProperties(stsProps);
if (token[3]/*Role*/ != null && !("".equals(token[3]))) {
ClaimValueCallbackHandler roleCallbackHandler = new ClaimValueCallbackHandler();
roleCallbackHandler.setClaimValue(token[3]);
stsClient.setClaimsCallbackHandler(roleCallbackHandler);
}
Map<String, Object> clientProps = new HashMap<String, Object>();
clientProps.put(org.apache.cxf.ws.security.SecurityConstants.USERNAME,
token[1]);
clientProps.put(org.apache.cxf.ws.security.SecurityConstants.PASSWORD,
token[2]);
clientProps.put(
org.apache.cxf.ws.security.SecurityConstants.STS_CLIENT,
stsClient);
for (Map.Entry<String, String> entry : clientProperties.entrySet()) {
if (org.apache.cxf.ws.security.SecurityConstants.ALL_PROPERTIES
.contains(entry.getKey())) {
clientProps.put(entry.getKey(), entry.getValue());
}
}
if(usePropagateSamlAP) {
clientProps.put(org.apache.cxf.ws.security.SecurityConstants.SIGNATURE_USERNAME, token[4]);
clientProps
.put(org.apache.cxf.ws.security.SecurityConstants.CALLBACK_HANDLER,
new WSPasswordCallbackHandler(token[4], token[2]));
}else {
clientProps
.put(org.apache.cxf.ws.security.SecurityConstants.CALLBACK_HANDLER,
new WSPasswordCallbackHandler(
clientProperties
.get(org.apache.cxf.ws.security.SecurityConstants.SIGNATURE_USERNAME),
clientProperties
.get("ws-security.signature.password")));
}
clientProps.put("soap.no.validate.parts", Boolean.TRUE);
clientProps.put("use.service.registry", "true");
// set the cxfEndpoint Properties
cxfEndpoint.setProperties(clientProps);
}
<%
}
if(hasCXFRegistryProvider){
%>
if (isProvider) {
String userName = (String) securityProps.get("ws-security.signature.username");
String password = (String) securityProps.get("ws-security.signature.password");
String properties = (String) securityProps.get("ws-security.signature.properties");
String pdpAddress = (String) securityProps.get("tesb.pdp.address");
org.apache.ws.security.validate.JAASUsernameTokenValidator jaasUTValidator=
new org.apache.ws.security.validate.JAASUsernameTokenValidator();
jaasUTValidator.setContextName("karaf");
// set endpoint properties
org.apache.cxf.interceptor.security.NamePasswordCallbackHandler callbackHandler = new org.apache.cxf.interceptor.security.NamePasswordCallbackHandler(
userName, password, "setPassword");
Map<String, Object> endpointProps = new HashMap<String, Object>();
endpointProps.put("ws-security.signature.username", userName);
endpointProps.put("ws-security.signature.properties", properties);
endpointProps.put("ws-security.callback-handler", callbackHandler);
endpointProps.put("ws-security.ut.validator", jaasUTValidator);
endpointProps.put("tesb.pdp.address", pdpAddress);
endpointProps.put("use.service.registry", "true");
cxfEndpoint.setProperties(endpointProps);
}
<%}%>
}
<%
}
if(hasCXFSamlTokenProvider || hasCXFRegistryProvider){
if(hasCXFSamlTokenProvider){
%>
private Map<String, String> securityProps;
private Map<String, String> samlProps;
public void setSecurityProps(Map<String, String> securityProps){
this.securityProps = securityProps;
public void setSamlProps(Map<String, String> samlProps){
this.samlProps = samlProps;
}
<%
}
if(hasCXFSamlTokenProvider || hasCXFSamlTokenConsumer
||hasCXFRegistryProvider || hasCXFRegistryConsumer){
if(hasCXFSamlTokenProvider || hasCXFSamlTokenConsumer){
%>
@@ -629,79 +402,27 @@ public void registerPolicies(org.apache.cxf.Bus bus) {
org.apache.neethi.PolicyRegistry policyRegistry =
bus.getExtension(org.apache.cxf.ws.policy.PolicyEngine.class).getRegistry();
policyRegistry.register("org.talend.esb.job.token.policy",
loadPolicy(policies.get("policy.username"), bus));
loadPolicy(policies.get("policy.token"), bus));
policyRegistry.register("org.talend.esb.job.saml.policy",
loadPolicy(policies.get("policy.saml"), bus));
policyRegistry.register("org.talend.esb.job.saml.authz.policy",
loadPolicy(policies.get("policy.saml.authz"), bus));
}
}
<%if(hasCXFSamlTokenAuthorizationConsumer || hasCXFRegistryConsumer){%>
class ClaimValueCallbackHandler implements javax.security.auth.callback.CallbackHandler {
private String claimValue;
public void handle(javax.security.auth.callback.Callback[] callbacks)
throws java.io.IOException, javax.security.auth.callback.UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof org.apache.cxf.ws.security.trust.claims.ClaimsCallback) {
org.apache.cxf.ws.security.trust.claims.ClaimsCallback callback = (org.apache.cxf.ws.security.trust.claims.ClaimsCallback) callbacks[i];
callback.setClaims(createClaims());
} else {
throw new javax.security.auth.callback.UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
}
}
}
/**
* Create a Claims Element for a "role"
*/
private org.w3c.dom.Element createClaims() {
org.w3c.dom.Document doc = org.apache.cxf.helpers.DOMUtils.createDocument();
org.w3c.dom.Element claimsElement =
doc.createElementNS("http://docs.oasis-open.org/ws-sx/ws-trust/200512", "Claims");
claimsElement.setAttributeNS(null, "Dialect", "http://schemas.xmlsoap.org/ws/2005/05/identity");
org.w3c.dom.Element claimValueElement =
doc.createElementNS("http://schemas.xmlsoap.org/ws/2005/05/identity", "ClaimValue");
claimValueElement.setAttributeNS(null, "Uri", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role");
org.w3c.dom.Element value = doc.createElementNS("http://schemas.xmlsoap.org/ws/2005/05/identity", "Value");
value.setTextContent(claimValue);
claimValueElement.appendChild(value);
claimsElement.appendChild(claimValueElement);
return claimsElement;
}
public String getClaimValue() {
return claimValue;
}
public void setClaimValue(String claimValue) {
this.claimValue = claimValue;
}
}
<%}
if(hasCXFSamlTokenConsumer || hasCXFSamlTokenProvider){
%>
private void addSAMLToken(org.apache.camel.component.cxf.CxfEndpoint cxfEndpoint, org.apache.cxf.Bus bus,
boolean isProvider, boolean useAuthorization, boolean usePropagateSamlAP, String... token) {
boolean isProvider, String... token) {
<%
if(hasCXFSamlTokenConsumer){
%>
if (!isProvider) {
org.apache.cxf.ws.security.trust.STSClient stsClient = new org.apache.cxf.ws.security.trust.STSClient(
bus);
stsClient.setWsdlLocation(stsProperties.get("sts.wsdl.location"));
stsClient.setServiceQName(new javax.xml.namespace.QName(
stsProperties.get("sts.namespace"), stsProperties
.get("sts.service.name")));
.get("sts.service.name")));
stsClient.setEndpointQName(new javax.xml.namespace.QName(
stsProperties.get("sts.namespace"), stsProperties
.get("sts.endpoint.name")));
Map<String, Object> stsProps = new HashMap<String, Object>();
@@ -712,31 +433,12 @@ if(hasCXFSamlTokenConsumer){
}
}
if(usePropagateSamlAP) {
stsClient.setWsdlLocation(stsProperties.get("sts.x509.wsdl.location"));
stsClient.setEndpointQName(new javax.xml.namespace.QName(
stsProperties.get("sts.namespace"), stsProperties
.get("sts.x509.endpoint.name")));
stsProps.put(org.apache.cxf.ws.security.SecurityConstants.STS_TOKEN_USERNAME,
token[4]);
}else {
stsClient.setWsdlLocation(stsProperties.get("sts.wsdl.location"));
stsClient.setEndpointQName(new javax.xml.namespace.QName(
stsProperties.get("sts.namespace"), stsProperties
.get("sts.endpoint.name")));
stsProps.put(org.apache.cxf.ws.security.SecurityConstants.USERNAME,
token[1]);
stsProps.put(org.apache.cxf.ws.security.SecurityConstants.PASSWORD,
token[2]);
}
stsProps.put(org.apache.cxf.ws.security.SecurityConstants.USERNAME,
token[1]);
stsProps.put(org.apache.cxf.ws.security.SecurityConstants.PASSWORD,
token[2]);
stsClient.setProperties(stsProps);
<%if(hasCXFSamlTokenAuthorizationConsumer){%>
if (token[3] != null && !("".equals(token[3]))) {
ClaimValueCallbackHandler roleCallbackHandler = new ClaimValueCallbackHandler();
roleCallbackHandler.setClaimValue(token[3]);
stsClient.setClaimsCallbackHandler(roleCallbackHandler);
}
<%}%>
Map<String, Object> clientProps = new HashMap<String, Object>();
clientProps.put(
org.apache.cxf.ws.security.SecurityConstants.STS_CLIENT,
@@ -748,30 +450,19 @@ if(hasCXFSamlTokenConsumer){
clientProps.put(entry.getKey(), entry.getValue());
}
}
if(usePropagateSamlAP) {
clientProps.put(org.apache.cxf.ws.security.SecurityConstants.SIGNATURE_USERNAME, token[4]);
clientProps
.put(org.apache.cxf.ws.security.SecurityConstants.CALLBACK_HANDLER,
new WSPasswordCallbackHandler(token[4], token[2]));
}else {
clientProps
.put(org.apache.cxf.ws.security.SecurityConstants.CALLBACK_HANDLER,
new WSPasswordCallbackHandler(
clientProperties
.get(org.apache.cxf.ws.security.SecurityConstants.SIGNATURE_USERNAME),
clientProperties
.get("ws-security.signature.password")));
}
clientProps
.put(org.apache.cxf.ws.security.SecurityConstants.CALLBACK_HANDLER,
new WSPasswordCallbackHandler(
clientProperties
.get(org.apache.cxf.ws.security.SecurityConstants.SIGNATURE_USERNAME),
clientProperties
.get("ws-security.signature.password")));
// set the cxfEndpoint Properties
cxfEndpoint.setProperties(clientProps);
// add policy
org.apache.neethi.PolicyReference policyReference = new org.apache.neethi.PolicyReference();
if(useAuthorization){
policyReference.setURI("org.talend.esb.job.saml.authz.policy");
}else{
policyReference.setURI("org.talend.esb.job.saml.policy");
}
policyReference.setURI("org.talend.esb.job.saml.policy");
org.apache.neethi.Policy policy = new org.apache.neethi.Policy();
policy.addPolicyComponent(policyReference);
@@ -787,19 +478,17 @@ if(hasCXFSamlTokenProvider){
%>
if (isProvider) {
// get saml properties
String userName = (String) securityProps
String userName = (String) samlProps
.get("ws-security.signature.username");
String password = (String) securityProps
String password = (String) samlProps
.get("ws-security.signature.password");
String properties = (String) securityProps
String properties = (String) samlProps
.get("ws-security.signature.properties");
// add in intercept
Map<String, Object> props = new HashMap<String, Object>();
props.put(
org.apache.ws.security.handler.WSHandlerConstants.ACTION,
org.apache.ws.security.handler.WSHandlerConstants.ENCRYPT+" "
+org.apache.ws.security.handler.WSHandlerConstants.SAML_TOKEN_SIGNED+" "
+org.apache.ws.security.handler.WSHandlerConstants.SIGNATURE);
org.apache.ws.security.handler.WSHandlerConstants.SAML_TOKEN_SIGNED);
props.put(
org.apache.ws.security.handler.WSHandlerConstants.SIG_PROP_FILE,
properties);
@@ -817,20 +506,10 @@ if (isProvider) {
properties);
endpointProps.put("ws-security.callback-handler",
callbackHandler);
endpointProps.put("use.service.registry",
"false");
if(useAuthorization){
endpointProps.put("tesb.pdp.address", (String)securityProps
.get("tesb.pdp.address"));
}
cxfEndpoint.setProperties(endpointProps);
// add policy
org.apache.neethi.PolicyReference policyReference = new org.apache.neethi.PolicyReference();
if(!useAuthorization){
policyReference.setURI("org.talend.esb.job.saml.policy");
}else{
policyReference.setURI("org.talend.esb.job.saml.authz.policy");
}
policyReference.setURI("org.talend.esb.job.saml.policy");
org.apache.neethi.Policy policy = new org.apache.neethi.Policy();
policy.addPolicyComponent(policyReference);
@@ -841,13 +520,67 @@ if (isProvider) {
registerPolicies(bus);
}
<%
}//end if(hasCXFSamlTokenProvider){
}
%>
}<%
}//end if(hasCXFSamlTokenConsumer || hasCXFSamlTokenProvider){
}//end if(hasCXFSamlTokenProvider || hasCXFSamlTokenConsumer
//||hasCXFRegistryProvider || hasCXFRegistryConsumer){
}
<%
}
if(hasCXFComponentConsumerWithCXFMESSAGE){
%>
/*
* on CXF_MESSAGE case (call a service)
* if the response is fault, then will run into problem
*/
private void addCXFMESSAGEFaultInterceptor(org.apache.camel.component.cxf.CxfEndpoint cxfEndpoint){
cxfEndpoint.getBus().getInFaultInterceptors().add(new org.apache.cxf.interceptor.DocLiteralInInterceptor() {
@Override
public void handleMessage(org.apache.cxf.message.Message message) {
// if has List content, then return
if(message.getContent(java.util.List.class) != null){
return;
}
if (isFaultMessage(message)) {
org.apache.cxf.message.Message inFaultMessage = message
.getExchange().getInFaultMessage();
org.apache.cxf.message.MessageContentsList parameters = new org.apache.cxf.message.MessageContentsList();
if (inFaultMessage != null) {
org.apache.cxf.staxutils.W3CDOMStreamWriter content = inFaultMessage
.get(org.apache.cxf.staxutils.W3CDOMStreamWriter.class);
parameters.add(content);
}
message.setContent(java.util.List.class, parameters);
}
}
private boolean isFaultMessage(org.apache.cxf.message.Message msg) {
if (msg == null
|| !(msg instanceof org.apache.cxf.binding.soap.SoapMessage)) {
return false;
}
org.apache.cxf.binding.soap.SoapMessage message = (org.apache.cxf.binding.soap.SoapMessage) msg;
//if it's not a CXF_MESSAGE, then return false
Object dataFormat = message.getContextualProperty(org.apache.camel.component.cxf.common.message.CxfConstants.DATA_FORMAT_PROPERTY);
if(org.apache.camel.component.cxf.DataFormat.CXF_MESSAGE != dataFormat){
return false;
}
javax.xml.stream.XMLStreamReader xmlReader = message
.getContent(javax.xml.stream.XMLStreamReader.class);
if (xmlReader == null) {
return false;
}
if (message.getVersion().getFault()
.equals(xmlReader.getName())
&& isRequestor(message)) {
return true;
}
return false;
}
});
}
<%}%>
/**
* please initial uri map
*/
@@ -872,103 +605,48 @@ if (isProvider) {
String endpointVar = "endpoint_" + node.getUniqueName();
String uriRef = "uriMap.get(\"" + cid + "\")";
String formatType = ElementParameterParser.getValue(node, "__DATAFORMAT__");
boolean useRegistry = false;
boolean useSecurity = false;
if(!"RAW".equals(formatType) && !"CXF_MESSAGE".equals(formatType)){
if(isStudioEEVersion){
useRegistry = "true".equals(ElementParameterParser.getValue(node, "__ENABLE_REGISTRY__"));
}
if(!useRegistry){
useSecurity = "true".equals(ElementParameterParser.getValue(node, "__ENABLE_SECURITY__"));
}
String useSecurity = ElementParameterParser.getValue(node, "__ENABLE_SECURITY__");
if("RAW".equals(formatType) || "CXF_MESSAGE".equals(formatType)){
useSecurity = "false";
}
String role = ElementParameterParser.getValue(node, "__ROLE_NAME__");
String securityType = ElementParameterParser.getValue(node, "__SECURITY_TYPE__");
String username = ElementParameterParser.getValue(node, "__USERNAME__");
String password = ElementParameterParser.getValue(node, "__PASSWORD__");
String roleName = "\"\"";
String alias = ElementParameterParser.getValue(node, "__ALIASNAME__").trim();
boolean isProvider = node.getIncomingConnections().size()>0?false:true;
boolean isUseAuthorization = false;
String securityToken = "(String[])null";
boolean isUsePropagateSamlUP = false;
boolean isUsePropagateSamlAP = false;
if(useRegistry){
securityToken = "\"Registry\"";
String usePropagate = ElementParameterParser.getValue(node, "__USE_PROPAGATE_CREDENTIAL__");
if("true".equals(usePropagate)){
if(alias == null || alias.matches("\"?\\s*\"?")) {
//no alias.
isUsePropagateSamlUP = true;
}else {
isUsePropagateSamlUP = false;
}
isUsePropagateSamlAP = !isUsePropagateSamlUP;
}
}else if(useSecurity){
if("true".equals(useSecurity)){
if("USER".equals(securityType)){
securityToken = "\"UsernameToken\"";
}else if("SAML".equals(securityType)){
securityToken = "\"SAMLToken\"";
String samlSecurityType = ElementParameterParser.getValue(node, "__SAML_SECURITY_TYPES__");
if("PROPAGATE_UP".equals(samlSecurityType)) {
isUsePropagateSamlUP = true;
}else if ("PROPAGATE_AP".equals(samlSecurityType)) {
isUsePropagateSamlAP = true;
username = "null";
}
if(isStudioEEVersion){
isUseAuthorization = "true".equals(ElementParameterParser.getValue(node, "__USE_AUTHORIZATION__"));
}
}else if("BASIC".equals(securityType)){
securityToken = "org.apache.cxf.transport.http.auth.HttpAuthHeader.AUTH_TYPE_BASIC";
}else if("DIGEST".equals(securityType)){
securityToken = "org.apache.cxf.transport.http.auth.HttpAuthHeader.AUTH_TYPE_DIGEST";
}
}else{
isProvider = false;
}
if(!isProvider && (useRegistry || isUseAuthorization)) {
roleName = ElementParameterParser.getValue(node, "__ROLE_NAME__");
if(null == roleName || "".equals(roleName)){
roleName = "\"\"";
}
}
%>
// CXF endpoint for <%=cid%>
org.apache.camel.component.cxf.CxfEndpoint <%=endpointVar%> = getCxfEndpoint(<%=uriRef%>, <%=isProvider%>, <%=isUseAuthorization%>, <%=isUsePropagateSamlAP%>, <%=securityToken%>
org.apache.camel.component.cxf.CxfEndpoint <%=endpointVar%> = getCxfEndpoint(<%=uriRef%>, <%=isProvider%>, <%=securityToken%>
<%
if((useSecurity || useRegistry) && !isProvider){
if("true".equals(useSecurity) && !isProvider){
%>
,<%=username%>,<%=password%>, <%=roleName%>, <%=alias%>
,<%=username%>,<%=password%>
<%
}
%>
);
<%
if((isUsePropagateSamlUP || isUsePropagateSamlAP) && !isProvider){
if("CXF_MESSAGE".equals(formatType) && node.getIncomingConnections().size() > 0){
%>
<%=endpointVar%>.setCxfBinding(new CXFConsumerBinding(<%=endpointVar%>));
<%
}
addCXFMESSAGEFaultInterceptor(<%=endpointVar%>);
<% }
String useSL = ElementParameterParser.getValue(node, "__ENABLE_SL__");
String useSAM = ElementParameterParser.getValue(node, "__ENABLE_SAM__");
String useCorrelation = ElementParameterParser.getValue(node, "__ENABLE_CORRELATION__");
if("RAW".equals(formatType)){
useCorrelation = "false";
}
String correlationValue = ElementParameterParser.getValue(node, "__CORRELATION_VALUE__");
if(correlationValue != null && "".equals(correlationValue.trim())){
correlationValue = null;
}
if ("true".equals(useCorrelation) && !useRegistry) {
%>
<%=endpointVar%>.getFeatures().add(new org.talend.esb.policy.correlation.feature.CorrelationIDFeature());
<% }
if ("true".equals(useSL) && (isProvider || !useRegistry)) {
if ("true".equals(useSL)) {
List<Map<String, String>> customProperties = (List<Map<String,String>>) ElementParameterParser.getObjectValue(node, "__SL_META_DATA__");
%>
// Add Service Locator Service to <%=endpointVar%>
@@ -1003,13 +681,11 @@ if (isProvider) {
<%
}
//http://jira.talendforge.org/browse/TESB-3850
// !"true".equals(useRegistry) - https://jira.talendforge.org/browse/TESB-10725
if ("true".equals(useSAM) && !"RAW".equals(formatType) && !useRegistry) {
if ("true".equals(useSAM) && !"RAW".equals(formatType)) {
%>
// Add Service Activity Monitor Service to <%=endpointVar%>
if (eventFeature != null) {
((org.apache.camel.component.cxf.CxfEndpoint)<%=endpointVar%>).getFeatures().add(new FeatureWrapper(eventFeature));
((org.apache.camel.component.cxf.CxfEndpoint)<%=endpointVar%>).getFeatures().add(eventFeature);
}
<%
}

View File

@@ -8,7 +8,6 @@
org.talend.core.model.process.EConnectionType
org.talend.core.model.process.ElementParameterParser
org.talend.designer.codegen.config.CodeGeneratorArgument
org.talend.core.model.utils.NodeUtil
org.talend.core.model.process.IConnectionCategory
java.util.List
java.util.Set
@@ -135,13 +134,6 @@ start_Hash.put("<%=node.getUniqueName() %>", System.currentTimeMillis());
}
}
%>
<%
if(node.isVirtualGenerateNode()){
%>
currentVirtualComponent = "<%=NodeUtil.getVirtualUniqueName(node)%>";
<%
}
%>
currentComponent="<%=node.getUniqueName() %>";
<%

View File

@@ -33,7 +33,6 @@
List<IContextParameter> params = new ArrayList<IContextParameter>();
params=process.getContextManager().getDefaultContext().getContextParameterList();
String jobFolderName = JavaResourcesHelper.getJobFolderName(process.getName(), process.getVersion());
boolean isLog4jEnabled = ("true").equals(ElementParameterParser.getValue(process, "__LOG4J_ACTIVATE__"));
boolean exist_tParallelize = false;
List<? extends INode> tParallelizeList = process.getNodesOfType("tParallelize");
@@ -91,7 +90,6 @@
public String fatherNode = null;
public long startTime = 0;
public boolean isChildJob = false;
public String log4jLevel = null;
private boolean execStat = true;
@@ -106,9 +104,9 @@
<% if (hasSAM4RS) { %>
// ESB Service Activity Monitor Feature
private org.apache.cxf.feature.Feature eventFeature;
private org.apache.cxf.feature.AbstractFeature eventFeature;
public void setEventFeature(org.apache.cxf.feature.Feature eventFeature) {
public void setEventFeature(org.apache.cxf.feature.AbstractFeature eventFeature) {
this.eventFeature = eventFeature;
}
<% } %>
@@ -144,12 +142,6 @@
final <%=process.getName() %> <%=process.getName() %>Class = new <%=process.getName() %>();
int exitCode = <%=process.getName() %>Class.runJobInTOS(args);
<%if(isLog4jEnabled){%>
if(exitCode==0){
log.info("TalendJob: '<%=codeGenArgument.getJobName()%>' - Done.");
}
<%}%>
System.exit(exitCode);
}
@@ -177,7 +169,7 @@
public int runJobInTOS(String[] args) {
// reset status
status = "";
String lastStr = "";
for (String arg : args) {
if (arg.equalsIgnoreCase("--context_param")) {
@@ -190,28 +182,6 @@
}
}
<%if(isLog4jEnabled){%>
if(log4jLevel!=null){
if("trace".equalsIgnoreCase(log4jLevel)){
log.setLevel(org.apache.log4j.Level.TRACE);
}else if("debug".equalsIgnoreCase(log4jLevel)){
log.setLevel(org.apache.log4j.Level.DEBUG);
}else if("info".equalsIgnoreCase(log4jLevel)){
log.setLevel(org.apache.log4j.Level.INFO);
}else if("warn".equalsIgnoreCase(log4jLevel)){
log.setLevel(org.apache.log4j.Level.WARN);
}else if("error".equalsIgnoreCase(log4jLevel)){
log.setLevel(org.apache.log4j.Level.ERROR);
}else if("fatal".equalsIgnoreCase(log4jLevel)){
log.setLevel(org.apache.log4j.Level.FATAL);
}else if ("off".equalsIgnoreCase(log4jLevel)){
log.setLevel(org.apache.log4j.Level.OFF);
}
org.apache.log4j.Logger.getRootLogger().setLevel(log.getLevel());
}
log.info("TalendJob: '<%=codeGenArgument.getJobName()%>' - Start.");
<%}%>
if(clientHost == null) {
clientHost = defaultClientHost;
}
@@ -740,9 +710,7 @@ if (execStat) {
context_param.put(keyValue.substring(0, index), keyValue.substring(index + 1) );
}
}
}else if (arg.startsWith("--log4jLevel=")) {
log4jLevel = arg.substring(13);
}
}
}

View File

@@ -80,27 +80,18 @@ if(librariesSb.length()>0){
}
<%
}
if(stats) { %>
// add statistics which shows on the connection
final routines.system.CamelStat runStat = new routines.system.CamelStat(getCamelContexts().get(0));
<%
for (INode node : processNodes) {
if (node.isActivate()) {
for(int i=0; i<node.getIncomingConnections().size(); i++) {
%>
runStat.addConnectionMapping("<%=node.getUniqueName()%>", "<%=node.getIncomingConnections().get(i).getUniqueName()%>");
<%
}
}
}
%>
runStat.initStatisticsInterceptor();
<% } //if stats %>
//start camel context
getCamelContexts().get(0).start();
<% if(stats) { %>
// add statistics which shows on the connection
routines.system.CamelStat runStat = new routines.system.CamelStat(getCamelContexts().get(0));
runStat.setParams();
runStat.openSocket(true);
runStat.setAllPID(pid, pid, pid, jobName);
runStat.startThreadStat(clientHost, portStats);
@@ -417,68 +408,62 @@ for (IContextParameter ctxParam : params) {
}
}
class <%=process.getName()%>_Registry extends SimpleRegistry {
class <%=process.getName()%>_Registry implements Registry {
private Map<String, Object> map = new HashMap<String, Object>();
private Registry wrapped = null;
public <%=process.getName()%>_Registry() {
this(new SimpleRegistry());
this(null);
}
public <%=process.getName()%>_Registry(Registry wrapped) {
this.wrapped = wrapped;
}
@Override
public Object lookupByName(String name) {
public Object lookup(String name) {
Object obj = null;
if (wrapped != null) {
obj = wrapped.lookupByName(name);
obj = wrapped.lookup(name);
}
if (obj == null) {
obj = super.lookupByName(name);
obj = map.get(name);
}
return obj;
}
@Override
public <T> T lookupByNameAndType(String name, Class<T> type) {
public <T> T lookup(String name, Class<T> type) {
T t = null;
if (wrapped != null) {
t = wrapped.lookupByNameAndType(name, type);
t = wrapped.lookup(name, type);
}
if (t == null) {
t = super.lookupByNameAndType(name, type);
t = (T) map.get(name);
}
return t;
}
@Override
public <T> Map<String, T> findByTypeWithName(Class<T> type) {
public <T> Map<String, T> lookupByType(Class<T> type) {
Map<String, T> result = null;
if (wrapped != null) {
result = wrapped.findByTypeWithName(type);
result = wrapped.lookupByType(type);
}
if (result == null) {
result = super.findByTypeWithName(type);
result = new HashMap<String, T>();
}
if (result.isEmpty()) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (type.isInstance(entry.getValue())) {
result.put(entry.getKey(), type.cast(entry.getValue()));
}
}
}
return result;
}
@Override
public <T> Set<T> findByType(Class<T> type){
Set<T> result = null;
if (wrapped != null) {
result = wrapped.findByType(type);
}
if (result == null) {
result = super.findByType(type);
}
return result;
}
public void register(String name, Object instance) {
put(name, instance);
map.put(name, instance);
}
}

View File

@@ -118,8 +118,6 @@ boolean actAsConsumer = !process.getNodesOfType("tESBConsumer").isEmpty();
boolean talendEsbJob = actAsProvider || actAsConsumer || !process.getNodesOfType("tRouteInput").isEmpty();
boolean talendEsbJobFactory = actAsProvider || !process.getNodesOfType("tRouteInput").isEmpty();
boolean isLog4jEnabled = ("true").equals(ElementParameterParser.getValue(process, "__LOG4J_ACTIVATE__"));
if (talendMdmJob) {
talendJobInterfaces += ", TalendMDMJob"; // Talend MDM job
}
@@ -131,10 +129,6 @@ if (talendEsbJobFactory) {
}
%>
public class <%=process.getName()%> implements <%=talendJobInterfaces%> {
<%if(isLog4jEnabled){%>
static {System.setProperty("TalendJob.log", "<%=process.getName() %>.log");}
private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(<%=process.getName() %>.class);
<%}%>
<% if (talendEsbJob) { %>
private ESBEndpointRegistry registry = null;
@@ -266,38 +260,23 @@ public <%=JavaTypesManager.getTypeToGenerate(ctxParam.getType(),true)%> get<%=Ch
private final String projectName = "<%=codeGenArgument.getCurrentProjectName() %>";
public Integer errorCode = null;
private String currentComponent = "";
<%
//tParallelize will wrap globalMap with synchronizedMap
if(!isRunInMultiThread){
%>
private final java.util.Map<String, Object> globalMap = new java.util.HashMap<String, Object>();
<%
}else{
%>
private final java.util.Map<String, Object> globalMap = java.util.Collections.synchronizedMap(new java.util.HashMap<String, Object>());
<%
}
boolean exist_tParallelize = false;
List<? extends INode> tParallelizeList = process.getNodesOfType("tParallelize");
if(tParallelizeList != null && tParallelizeList.size() > 0){
exist_tParallelize = true;
}
if(!isRunInMultiThread && !exist_tParallelize){
%>
private final java.util.Map<String, Long> start_Hash = new java.util.HashMap<String, Long>();
private final java.util.Map<String, Long> end_Hash = new java.util.HashMap<String, Long>();
private final java.util.Map<String, Boolean> ok_Hash = new java.util.HashMap<String, Boolean>();
public final java.util.List<String[]> globalBuffer = new java.util.ArrayList<String[]>();
<%
}else{
%>
private final java.util.Map<String, Long> start_Hash = java.util.Collections.synchronizedMap(new java.util.HashMap<String, Long>());
private final java.util.Map<String, Long> end_Hash = java.util.Collections.synchronizedMap(new java.util.HashMap<String, Long>());
private final java.util.Map<String, Boolean> ok_Hash = java.util.Collections.synchronizedMap(new java.util.HashMap<String, Boolean>());
public final java.util.List<String[]> globalBuffer = java.util.Collections.synchronizedList(new java.util.ArrayList<String[]>());
<%
}
%>
<%
if(!isRunInMultiThread ){
%>
private final java.util.Map<String, Long> start_Hash = new java.util.HashMap<String, Long>();
private final java.util.Map<String, Long> end_Hash = new java.util.HashMap<String, Long>();
private final java.util.Map<String, Boolean> ok_Hash = new java.util.HashMap<String, Boolean>();
private final java.util.Map<String, Object> globalMap = new java.util.HashMap<String, Object>();
public final java.util.List<String[]> globalBuffer = new java.util.ArrayList<String[]>();
<%
} else {
%>
private final java.util.Map<String, Long> start_Hash = java.util.Collections.synchronizedMap(new java.util.HashMap<String, Long>());
private final java.util.Map<String, Long> end_Hash = java.util.Collections.synchronizedMap(new java.util.HashMap<String, Long>());
private final java.util.Map<String, Boolean> ok_Hash = java.util.Collections.synchronizedMap(new java.util.HashMap<String, Boolean>());
private final java.util.Map<String, Object> globalMap = java.util.Collections.synchronizedMap(new java.util.HashMap<String, Object>());
public final java.util.List<String[]> globalBuffer = java.util.Collections.synchronizedList(new java.util.ArrayList<String[]>());
<% } %>
<%
if (stats) {
@@ -380,11 +359,6 @@ private class TalendException extends java.lang.Exception {
private java.util.Map<String, Object> globalMap = null;
private java.lang.Exception e = null;
private String currentComponent = null;
private String virtualComponentName = null;
public void setVirtualComponentName (String virtualComponentName){
this.virtualComponentName = virtualComponentName;
}
private TalendException(java.lang.Exception e, String errorComponent, final java.util.Map<String, Object> globalMap) {
this.currentComponent= errorComponent;
@@ -403,9 +377,6 @@ private class TalendException extends java.lang.Exception {
@Override
public void printStackTrace() {
if (!(e instanceof TalendException || e instanceof TDieException)) {
if(virtualComponentName!=null && currentComponent.indexOf(virtualComponentName+"_")==0){
globalMap.put(virtualComponentName+"_ERROR_MESSAGE",e.getMessage());
}
globalMap.put(currentComponent+"_ERROR_MESSAGE",e.getMessage());
System.err.println("Exception in component " + currentComponent);
}
@@ -543,11 +514,7 @@ private class TalendException extends java.lang.Exception {
// 1) add the message to the stack
%>
if(!(exception instanceof TDieException)){
<%if("true".equals(ElementParameterParser.getValue(assertCatcher, "__GET_ORIGINAL_EXCEPTION__"))){%>
<%=assertCatcher.getUniqueName()%>.addMessage(pid, projectName, jobName, "java", null, "Failed", "Job execution error", exception);
<%}else{%>
<%=assertCatcher.getUniqueName()%>.addMessage(pid, projectName, jobName, "java", null, "Failed", "Job execution error", exception.getMessage());
<%}%>
<%=assertCatcher.getUniqueName()%>.addMessage(pid, projectName, jobName, "java", null, "Failed", "Job execution error", exception.getMessage());
<%=assertCatcher.getDesignSubjobStartNode().getUniqueName() %>Process(globalMap);
}
<%

View File

@@ -34,8 +34,6 @@
IProcess process = (IProcess) v.get(0);
String version = (String) v.get(1);
boolean isStudioEEVersion = org.talend.core.PluginChecker.isTIS();
List<? extends INode> processNodes = (List<? extends INode>) process.getGeneratingNodes();
List<? extends INode> graphicalNodes = (List<? extends INode>) process.getGraphicalNodes();
boolean stats = codeGenArgument.isStatistics();
@@ -87,8 +85,6 @@ package <%= packageName %>;
importsSet.add("import java.util.Properties");
importsSet.add("import org.apache.camel.management.JmxNotificationEventNotifier");
importsSet.add("import org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext");
importsSet.add("import org.apache.camel.impl.SimpleRegistry");
importsSet.add("import java.util.Set");
String headerImports = ElementParameterParser.getValue(process, "__HEADER_IMPORT__");
if(headerImports!=null && !"".equals(headerImports.trim())){
@@ -166,49 +162,16 @@ package <%= packageName %>;
%>
<%
for (INode node : graphicalNodes) {
String useRegistry = "false";
String dataFormat = ElementParameterParser.getValue(node, "__DATAFORMAT__");
if(isStudioEEVersion && !"RAW".equals(dataFormat) && !"CXF_MESSAGE".equals(dataFormat)){
useRegistry = ElementParameterParser.getValue(node, "__ENABLE_REGISTRY__");
}
if("cCXF".equals(node.getComponent().getName())
&& "true".equals(ElementParameterParser.getValue(node, "__ENABLE_SAM__"))
&& !"RAW".equals(ElementParameterParser.getValue(node, "__DATAFORMAT__"))&& !"true".equals(useRegistry) ) { %>
&& !"RAW".equals(ElementParameterParser.getValue(node, "__DATAFORMAT__"))) { %>
//ESB Service Activity Monitor Feature
private org.apache.cxf.feature.Feature eventFeature;
private org.apache.cxf.feature.AbstractFeature eventFeature;
public void setEventFeature(org.apache.cxf.feature.Feature eventFeature) {
public void setEventFeature(org.apache.cxf.feature.AbstractFeature eventFeature) {
this.eventFeature = eventFeature;
}
// https://issues.apache.org/jira/browse/CAMEL-6783
static class FeatureWrapper extends org.apache.cxf.feature.AbstractFeature {
private final org.apache.cxf.feature.Feature f;
public FeatureWrapper(org.apache.cxf.feature.Feature f) {
this.f = f;
}
public void initialize(org.apache.cxf.endpoint.Server server, org.apache.cxf.Bus bus) {
f.initialize(server, bus);
}
public void initialize(org.apache.cxf.endpoint.Client client, org.apache.cxf.Bus bus) {
f.initialize(client, bus);
}
public void initialize(org.apache.cxf.interceptor.InterceptorProvider interceptorProvider, org.apache.cxf.Bus bus) {
f.initialize(interceptorProvider, bus);
}
public void initialize(org.apache.cxf.Bus bus) {
f.initialize(bus);
}
}
<% break;
}
}
@@ -315,35 +278,6 @@ for (INode node : graphicalNodes) {
uri = uri + sb.toString();
}
}
}else if("cDirectVM".equals(componentName)){
boolean inputName= getBoolValue(node, "____INPUT_ENDPOINT_NAME____");
boolean isProducer = node.getIncomingConnections().size()>0;
INode consumerNode = node;
if(isProducer && !inputName){
String desNodeName= (String)getValue(node, "____ROUTE_COMPONENT_TYPE_ID____");
if(desNodeName!=null){
List<? extends INode> allNodes = node.getProcess().getGraphicalNodes();
for(INode aNode : allNodes){
if(aNode.getUniqueName().equals(desNodeName)){
consumerNode=aNode;
break;
}
}
}
}
String endpointName=getValue(consumerNode, "__ENDPOINT_NAME__");
uri="\"direct-vm:\"+" + endpointName;
if(isProducer){
boolean isBlock= getBoolValue(node, "____BLOCK____");
if(isBlock){
uri += "+\"?block=true&timeout="+getValue(consumerNode, "__TIMEOUT__")+"\"";
}
}
}else if("cTimer".equals(componentName)){
uri = "\"timer:\"+\""+node.getUniqueName()+"\"";
StringBuilder sb = new StringBuilder();
@@ -363,7 +297,7 @@ for (INode node : graphicalNodes) {
}
}
String delay = ElementParameterParser.getValue(node, "__DELAY__");
if(delay!=null && !delay.trim().equals("")){
if(delay!=null && !delay.trim().equals("") && !"1000".equals(delay)){
if(sb.length()==0){
sb.append("+\"?delay=\"+");
sb.append(delay);
@@ -508,26 +442,16 @@ for (INode node : graphicalNodes) {
} else if ("cCXF".equals(componentName)) {
String url = ElementParameterParser.getValue(node, "__ADDRESS__").trim();
String dataformat = ElementParameterParser.getValue(node, "__DATAFORMAT__");
String useServiceRegistry = ElementParameterParser.getValue(node, "__ENABLE_REGISTRY__");
if(!isStudioEEVersion || "RAW".equals(dataformat) || "CXF_MESSAGE".equals(dataformat)){
useServiceRegistry = "false";
}
String useSecurity = ElementParameterParser.getValue(node, "__ENABLE_SECURITY__");
if("true".equals(useServiceRegistry) || "RAW".equals(dataformat) || "CXF_MESSAGE".equals(dataformat)){
useSecurity = "false";
}
List<? extends IConnection> conns = node.getIncomingConnections();
if ("true".equals(ElementParameterParser.getValue(node, "__ENABLE_SL__"))
&& "false".equals(useServiceRegistry)) {
if ("true".equals(ElementParameterParser.getValue(node, "__ENABLE_SL__"))) {
if (!conns.isEmpty()) {
// consumer role
url = "((null == bundleContext) ? " + url + " : \"locator://locator/\")";
INode source = conns.get(0).getSource();
if (!("cErrorHandler".equals(source.getComponent().getName())
&& source.getIncomingConnections().isEmpty())) {
// consumer role
url = "((null == bundleContext) ? " + url + " : \"locator://locator/\")";
}
}
}
@@ -555,7 +479,7 @@ for (INode node : graphicalNodes) {
}
String dataformat = ElementParameterParser.getValue(node, "__DATAFORMAT__");
sb.append("+\"&dataFormat=" + dataformat + "\"");
String specifyService = ElementParameterParser.getValue(node, "__SPECIFY_SERVICE__");
@@ -573,8 +497,6 @@ for (INode node : graphicalNodes) {
if(!conns.isEmpty()){
sb.append("+\"&headerFilterStrategy=#CXF_PAYLOAD_HEADER_FILTER\"");
}else if("true".equals(useServiceRegistry) || ("true".equals(useSecurity) && "SAML".equals(ElementParameterParser.getValue(node, "__SECURITY_TYPE__")))) {
sb.append("+\"&cxfBinding=#DEFAULT_CXF_BINDING\"");
}
uri = sb.toString();

View File

@@ -69,15 +69,7 @@ if(execStat){
talendThreadPool.setErrorThread(this);
talendThreadPool.stopAllWorkers();
TalendException te = new TalendException(e, currentComponent, globalMap);
<%
if(NodeUtil.hasVirtualComponent(subTree.getNodes())){
%>
te.setVirtualComponentName(currentVirtualComponent);
<%
}
%>
te.printStackTrace();
new TalendException(e, currentComponent, globalMap).printStackTrace();
}
this.isRunning = false;

View File

@@ -183,13 +183,6 @@ for (IConnection iterateConn : iterateConnSet) { //1
this.isRunning = true;
String currentComponent = "";
<%
if(NodeUtil.hasVirtualComponent(subTree.getNodes())){
%>
String currentVirtualComponent = null;
<%
}
%>
try {
<%
if(stat){

View File

@@ -10,8 +10,6 @@
org.talend.core.model.process.ElementParameterParser
java.util.List
java.util.Iterator
org.talend.core.model.process.IProcess
org.talend.core.model.utils.NodeUtil
"
class="SubProcessFooter"
%>
@@ -19,8 +17,7 @@
CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument;
boolean stat = codeGenArgument.isStatistics();
NodesSubTree subTree = (NodesSubTree) codeGenArgument.getArgument();
IProcess process = subTree.getRootNode().getProcess();
boolean isLog4jEnabled = ("true").equals(ElementParameterParser.getValue(process, "__LOG4J_ACTIVATE__"));
for (INode node : subTree.getNodes()) {
List<IMetadataTable> metadatas = node.getMetadataList();
List< ? extends IConnection> conns = node.getOutgoingConnections();
@@ -123,42 +120,6 @@
%>
}//end the resume
<%
if (subTree.getRootNode().getProcess().getNodesOfType("tFlowMeterCatcher").size() > 0
&& subTree.getRootNode().getProcess().getNodesOfType("tFlowMeter").size() >0 ) {
List<INode> metterCatchers = (List<INode>)subTree.getRootNode().getProcess().getNodesOfType("tFlowMeterCatcher");
List<INode> metters = (List<INode>)subTree.getRootNode().getProcess().getNodesOfType("tFlowMeter");
List<INode> nodes = (List<INode>)subTree.getNodes();
boolean hasMetterProcess = false;
for(INode tmp : nodes)
{
for(INode metter : metters)
{
if(tmp.getUniqueName().equals(metter.getUniqueName()))
{
hasMetterProcess = true;
break;
}
}
if(hasMetterProcess)
{
break;
}
}
if(hasMetterProcess)
{
for (INode metterCatcher : metterCatchers) {
%>
<%=metterCatcher.getDesignSubjobStartNode().getUniqueName() %>Process(globalMap);
<%
}
}
}
%>
<%
//this part for "Resume Management"
{
@@ -206,23 +167,46 @@
}
%>
<%
if (subTree.getRootNode().getProcess().getNodesOfType("tFlowMeterCatcher").size() > 0
&& subTree.getRootNode().getProcess().getNodesOfType("tFlowMeter").size() >0 ) {
List<INode> metterCatchers = (List<INode>)subTree.getRootNode().getProcess().getNodesOfType("tFlowMeterCatcher");
List<INode> metters = (List<INode>)subTree.getRootNode().getProcess().getNodesOfType("tFlowMeter");
List<INode> nodes = (List<INode>)subTree.getNodes();
boolean hasMetterProcess = false;
for(INode tmp : nodes)
{
for(INode metter : metters)
{
if(tmp.getUniqueName().equals(metter.getUniqueName()))
{
hasMetterProcess = true;
break;
}
}
if(hasMetterProcess)
{
break;
}
}
if(hasMetterProcess)
{
for (INode metterCatcher : metterCatchers) {
%>
<%=metterCatcher.getDesignSubjobStartNode().getUniqueName() %>Process(globalMap);
<%
}
}
}
%>
} catch(java.lang.Exception e) {
<%if(isLog4jEnabled){%>
log.error(currentComponent + " " + e.getMessage());
<%}%>
TalendException te = new TalendException(e, currentComponent, globalMap);
<%
if(NodeUtil.hasVirtualComponent(subTree.getNodes())){
%>
te.setVirtualComponentName(currentVirtualComponent);
<%
}
%>
throw te;
throw new TalendException(e, currentComponent, globalMap);
} catch(java.lang.Error error) {

View File

@@ -58,15 +58,10 @@
hSet.add(conn.getName() + templateOrigin);
IMetadataTable metadata = conn.getMetadataTable();
boolean changeHashAndEqualsForBigDecimal = false;
Set<String> hashableColumnsNames = new HashSet<String>();
INode targetNode = conn.getTarget();
if(targetNode instanceof IHashableInputConnections) {
if(targetNode.getUniqueName().startsWith("tMap")) {
changeHashAndEqualsForBigDecimal = "true".equals(ElementParameterParser.getValue(targetNode, "__CHANGE_HASH_AND_EQUALS_FOR_BIGDECIMAL__"));
}
IHashableInputConnections target = (IHashableInputConnections)targetNode;
Set<String> hashableColumnsNames = new HashSet<String>();
if(conn.getTarget() instanceof IHashableInputConnections) {
IHashableInputConnections target = (IHashableInputConnections) conn.getTarget();
IHashConfiguration hashConfiguration = target.getHashConfiguration(conn.getName());
if(hashConfiguration != null) {
for(IHashableColumn hashableColumn : hashConfiguration.getHashableColumns()) {
@@ -200,10 +195,6 @@ public static class <%=conn.getName() %>Struct<%=templateOrigin %> implements ro
result = prime * result + java.util.Arrays.hashCode(this.<%=column.getLabel() %>);
<%
} else if((javaType == JavaTypesManager.BIGDECIMAL) && changeHashAndEqualsForBigDecimal) {
%>
result = prime * result + ((this.<%=column.getLabel() %> == null) ? 0 : new Double(this.<%=column.getLabel() %>.doubleValue()).hashCode());
<%
} else {
%>
result = prime * result + ((this.<%=column.getLabel() %> == null) ? 0 : this.<%=column.getLabel() %>.hashCode());
@@ -249,11 +240,7 @@ public static class <%=conn.getName() %>Struct<%=templateOrigin %> implements ro
if (this.<%=column.getLabel() %> == null) {
if (other.<%=column.getLabel() %> != null)
return false;
<%if((javaType == JavaTypesManager.BIGDECIMAL) && changeHashAndEqualsForBigDecimal) {%>
} else if ((other.<%=column.getLabel() %> == null) || (this.<%=column.getLabel() %>.compareTo(other.<%=column.getLabel() %>)!=0))
<%} else {%>
} else if (!this.<%=column.getLabel() %>.equals(other.<%=column.getLabel() %>))
<%}%>
} else if (!this.<%=column.getLabel() %>.equals(other.<%=column.getLabel() %>))
return false;
<%
}
@@ -1020,11 +1007,6 @@ public void <%=subTree.getName() %>Process(final java.util.Map<String, Object> g
<%
}else{//isParallelize
if(NodeUtil.hasVirtualComponent(subTree.getNodes())){
%>
String currentVirtualComponent = null;
<%
}
%>
String iterateId = "";

View File

@@ -1,102 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.talend.designer.codegen" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appInfo>
<meta.schema plugin="org.talend.designer.codegen" id="componentFilter" name="Component filter"/>
</appInfo>
<documentation>
[Enter description of this extension point.]
</documentation>
</annotation>
<element name="extension">
<annotation>
<appInfo>
<meta.element />
</appInfo>
</annotation>
<complexType>
<sequence minOccurs="1" maxOccurs="unbounded">
<element ref="Filter"/>
</sequence>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
</documentation>
<appInfo>
<meta.attribute translatable="true"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="Filter">
<complexType>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
</documentation>
<appInfo>
<meta.attribute kind="java" basedOn=":org.talend.designer.codegen.components.model.IComponentFactoryFilter"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appInfo>
<meta.section type="since"/>
</appInfo>
<documentation>
[Enter the first release in which this extension point appears.]
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="examples"/>
</appInfo>
<documentation>
[Enter extension point usage example here.]
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="apiinfo"/>
</appInfo>
<documentation>
[Enter API information here.]
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="implementation"/>
</appInfo>
<documentation>
[Enter information about supplied implementation of this extension point.]
</documentation>
</annotation>
</schema>

View File

@@ -50,7 +50,6 @@ ComponentsFactory.parentNotRecompiled=Warning\: parents of *.inc.javajet are not
ComponentsLocalProviderService.componentLoadError=Component load error
ComponentsLocalProviderService.talendExchangeError=Talend Exchange Error
ComponentsPreferencePage.ButtonLabel0=Ok
ComponentsPreferencePage.componentAssist=Enable Component Creation Assistant
ComponentsPreferencePage.configuration.LINK_STYLE=Default mapping links display as :
ComponentsPreferencePage.rowLimit=Row limit
ComponentsPreferencePage.WarningMsg=Need to restart Talend Open Studio to load extral components !

View File

@@ -45,7 +45,6 @@ import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.repository.model.RepositoryFactoryProvider;
import org.talend.core.repository.utils.ProjectHelper;
import org.talend.designer.codegen.i18n.Messages;
import org.talend.repository.model.RepositoryConstants;
/***/
public class CodeGenInit implements IApplication {
@@ -158,8 +157,7 @@ public class CodeGenInit implements IApplication {
Context ctx = CorePlugin.getContext();
ctx.putProperty(Context.REPOSITORY_CONTEXT_KEY, repositoryContext);
repositoryFactory.setRepositoryFactoryFromProvider(RepositoryFactoryProvider
.getRepositoriyById(RepositoryConstants.REPOSITORY_LOCAL_ID));
repositoryFactory.setRepositoryFactoryFromProvider(RepositoryFactoryProvider.getRepositoriyById("local")); //$NON-NLS-1$
repositoryFactory.initialize();
}

View File

@@ -14,7 +14,6 @@ package org.talend.designer.codegen;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
@@ -99,65 +98,12 @@ public class CodeGenerator implements ICodeGenerator {
private String exportAsOSGI = "false";
private static final long INIT_TIMEOUT = 15 * 60 * 1000; // 15s
private static final long INIT_TIMEOUT = 15000; // 15s
private static final long INIT_PAUSE = 1000; // 1s
private static final boolean DEBUG = false;
private class OnRowsEndCode {
private int count = 0; // count onRowsEnd components generates how many times
private List<StringBuffer> bufferList = new ArrayList<StringBuffer>();
private Map<String, Boolean> markedMap = new HashMap<String, Boolean>();
public OnRowsEndCode() {
count = 0;
}
public int getCount() {
return count;
}
public void increase() {
count++;
}
public void decrease() {
count--;
}
public void clear() {
count = 0;
bufferList.clear();
markedMap.clear();
}
public void add(StringBuffer buf) {
if (buf != null) {
bufferList.add(buf);
}
}
public List<StringBuffer> getBuffers() {
return this.bufferList;
}
public Boolean mark(String key) {
return this.markedMap.put(key, true);
}
public Boolean getMarked(String key) {
return this.markedMap.get(key);
}
}
// this one is used to store all the generated code of the subjobs which start with the IN of the virtual component
// with OnRowsEnd. It is used to fix TDI-26484
private OnRowsEndCode onRowsEndCode = new OnRowsEndCode();
/**
* Constructor : use the process and laguage to initialize internal components.
*
@@ -259,14 +205,12 @@ public class CodeGenerator implements ICodeGenerator {
* @return the generated code
* @throws CodeGeneratorException if an error occurs during Code Generation
*/
@Override
@SuppressWarnings("unchecked")
public String generateProcessCode() throws CodeGeneratorException {
// Parse Process, generate Code for Individual Components
// generate Assembly Code for individual Components
StringBuffer componentsCode = new StringBuffer();
// used to collect all the generated code of onRowsEnd components
long startTimer = System.currentTimeMillis();
long endTimer = startTimer;
try {
@@ -329,12 +273,14 @@ public class CodeGenerator implements ICodeGenerator {
// Fix bug TESB-2951 Generated Codes error when Route
// starts with cFile/cFTP/cActiveMQ/cFTP/cJMS
// LiXiaopeng 2011-09-05
INode subProcessStartNode = subTree.getRootNode().getSubProcessStartNode(true);
String startNodeName = subProcessStartNode.getComponent().getName();
IElementParameter family = subProcessStartNode.getElementParameter("FAMILY");
if (subProcessStartNode.isStart() && null != family && "Messaging".equals(family.getValue())) {
INode subProcessStartNode = subTree.getRootNode()
.getSubProcessStartNode(true);
String startNodeName = subProcessStartNode
.getComponent().getName();
IElementParameter family = subProcessStartNode.getElementParameter("FAMILY");
if(subProcessStartNode.isStart() && null != family && "Messaging".equals(family.getValue())){
nodeSubTreeList.add(subTree);
} else if ("cConfig".equals(startNodeName)) {
} else if ("cConfig".equals(startNodeName)) {
// Customized remove the cConfig routeId codes.
// TESB-2825 LiXP 20110823
// Do nothing.
@@ -409,11 +355,10 @@ public class CodeGenerator implements ICodeGenerator {
Vector footerArgument = new Vector(2);
footerArgument.add(process);
footerArgument.add(processTree.getRootNodes());
if (isCamel) {
if (isCamel)
componentsCode.append(generateTypedComponentCode(EInternalTemplate.FOOTER_ROUTE, footerArgument));
} else {
else
componentsCode.append(generateTypedComponentCode(EInternalTemplate.FOOTER, footerArgument));
}
componentsCode.append(generateTypedComponentCode(EInternalTemplate.PROCESSINFO, componentsCode.length()));
// ####
return componentsCode.toString();
@@ -459,7 +404,6 @@ public class CodeGenerator implements ICodeGenerator {
* @return the generated code
* @throws CodeGeneratorException if an error occurs during Code Generation
*/
@Override
public String generateContextCode(IContext designerContext) throws CodeGeneratorException {
if (process != null) {
if (designerContext == null) {
@@ -500,22 +444,20 @@ public class CodeGenerator implements ICodeGenerator {
}
return ""; //$NON-NLS-1$
}
/*
* ADDED for TESB-7887 By GangLiu(non-Javadoc)
*
* @see org.talend.designer.codegen.ICodeGenerator#generateSpringContent()
*/
@Override
public String generateSpringContent() throws CodeGeneratorException {
if (process == null || !(process instanceof IProcess2)) {
return null;
}
IProcess2 process2 = (IProcess2) process;
if (!process2.needsSpring() || process2.getSpringContent() == null) {
return null;
}
return process2.getSpringContent();
if (process == null || !( process instanceof IProcess2) ){
return null;
}
IProcess2 process2 = (IProcess2) process;
if(!process2.needsSpring() || process2.getSpringContent() == null){
return null;
}
return process2.getSpringContent();
}
/**
@@ -658,10 +600,9 @@ public class CodeGenerator implements ICodeGenerator {
private StringBuffer generateComponentsCode(NodesSubTree subProcess, INode node, ECodePart part, String incomingName,
ETypeGen typeGen) throws CodeGeneratorException {
StringBuffer codeComponent = new StringBuffer();
Boolean isMarked = subProcess.isMarkedNode(node, part);
boolean isIterate = isSpecifyInputNode(node, incomingName, EConnectionType.ITERATE);
boolean isOnRowsEnd = isSpecifyInputNode(node, incomingName, EConnectionType.ON_ROWS_END);
if ((isMarked != null) && (!isMarked)) {
switch (part) {
case BEGIN:
@@ -698,83 +639,47 @@ public class CodeGenerator implements ICodeGenerator {
}
codeComponent.append(generateComponentCode(subProcess, node, ECodePart.MAIN, incomingName, typeGen));
if (ETypeGen.CAMEL == typeGen) {
if (node.getIncomingConnections().size() < 1 && node.isStart()) {
// http://jira.talendforge.org/browse/TESB-4086 XiaopengLi
String label = null;
IElementParameter parameter = node.getElementParameter("LABEL");
if (parameter != null && !"__UNIQUE_NAME__".equals(parameter.getValue())) {
label = (String) parameter.getValue();
}
if (node.getIncomingConnections().size() < 1 && node.isStart()){
// http://jira.talendforge.org/browse/TESB-4086 XiaopengLi
String label = null;
IElementParameter parameter = node
.getElementParameter("LABEL");
if (parameter != null
&& !"__UNIQUE_NAME__".equals(parameter
.getValue())) {
label = (String) parameter.getValue();
}
/*
* Fix https://jira.talendforge.org/browse/TESB-6685 label + uniqueName to make it unique
*/
if (label == null) {
label = node.getUniqueName();
} else {
label += "_" + node.getUniqueName();
}
if (!"cErrorHandler".equals(node.getComponent().getName())) {
codeComponent.append(".routeId(\"" + label + "\")");
}
} else {
codeComponent.append(".id(\"" + node.getUniqueName() + "\")");
}
/*
* Fix https://jira.talendforge.org/browse/TESB-6685
* label + uniqueName to make it unique
*/
if (label == null) {
label = node.getUniqueName();
}else{
label += "_"+node.getUniqueName();
}
if(!"cErrorHandler".equals(node.getComponent().getName())){
codeComponent.append(".routeId(\"" + label + "\")");
}
}else{
codeComponent.append(".id(\"" + node.getUniqueName() + "\")");
}
}
// This code is used to generate the Virtual_IN--->Out part in previous
boolean isNextOnRowsEnd = false;
IConnection conn = null;
if (node.getOutgoingConnections(EConnectionType.ON_ROWS_END).size() == 1) {
conn = node.getOutgoingConnections(EConnectionType.ON_ROWS_END).get(0);
isNextOnRowsEnd = isSpecifyInputNode(conn.getTarget(), conn.getName(), EConnectionType.ON_ROWS_END);
}
if (isNextOnRowsEnd && conn != null && (onRowsEndCode.getMarked(conn.getTarget().getUniqueName()) == null)) {
StringBuffer buffer = new StringBuffer();
onRowsEndCode.add(buffer);
onRowsEndCode.mark(conn.getTarget().getUniqueName());
onRowsEndCode.increase();
buffer.append(generatesTreeCode(subProcess, conn.getTarget(), ECodePart.BEGIN, typeGen));
buffer.append(generateComponentCode(subProcess, conn.getTarget(), ECodePart.BEGIN, incomingName, typeGen));
buffer.append(generateComponentCode(subProcess, conn.getTarget(), ECodePart.MAIN, incomingName, typeGen));
buffer.append(generatesTreeCode(subProcess, conn.getTarget(), ECodePart.MAIN, typeGen));
buffer.append(generateComponentCode(subProcess, conn.getTarget(), ECodePart.END, incomingName, typeGen));
buffer.append(generatesTreeCode(subProcess, conn.getTarget(), ECodePart.END, typeGen));
}
codeComponent.append(generatesTreeCode(subProcess, node, ECodePart.MAIN, typeGen));
}
break;
case END:
boolean isOnRowsEnd = isSpecifyInputNode(node, incomingName, EConnectionType.ON_ROWS_END);
if (isOnRowsEnd) {
// append the onRowsEnd code to the end part of the first virtual_Out
onRowsEndCode.decrease();
if (onRowsEndCode.getCount() == 0) {
for (int i = 0; i < onRowsEndCode.getBuffers().size(); i++) {
codeComponent.append(onRowsEndCode.getBuffers().get(i));
}
onRowsEndCode.clear();
}
codeComponent.append(generatesTreeCode(subProcess, node, ECodePart.BEGIN, typeGen));
codeComponent.append(generateComponentCode(subProcess, node, ECodePart.BEGIN, incomingName, typeGen));
// onRowsEndCode.clear();
codeComponent.append(generateComponentCode(subProcess, node, ECodePart.MAIN, incomingName, typeGen));
codeComponent.append(generatesTreeCode(subProcess, node, ECodePart.MAIN, typeGen));
// codeComponent.append(generatesTreeCode(subProcess, node, ECodePart.BEGIN, typeGen));
// codeComponent.append(generateComponentCode(subProcess, node, ECodePart.BEGIN, incomingName,
// typeGen));
//
// codeComponent.append(generateComponentCode(subProcess, node, ECodePart.MAIN, incomingName,
// typeGen));
// codeComponent.append(generatesTreeCode(subProcess, node, ECodePart.MAIN, typeGen));
//
// codeComponent.append(generateComponentCode(subProcess, node, ECodePart.END, incomingName,
// typeGen));
// codeComponent.append(generatesTreeCode(subProcess, node, ECodePart.END, typeGen));
codeComponent.append(generateComponentCode(subProcess, node, ECodePart.END, incomingName, typeGen));
codeComponent.append(generatesTreeCode(subProcess, node, ECodePart.END, typeGen));
} else {
// if (!isIterate) {
@@ -959,9 +864,8 @@ public class CodeGenerator implements ICodeGenerator {
StringBuffer content = new StringBuffer();
try {
if (typeGen == ETypeGen.ETL) {
if (typeGen == ETypeGen.ETL)
content.append(generateTypedComponentCode(EInternalTemplate.PART_HEADER, node, part, incomingName, subProcess));
}
IComponentFileNaming componentFileNaming = ComponentsFactoryProvider.getFileNamingInstance();
String templateURI = node.getComponent().getPathSource() + TemplateUtil.DIR_SEP + node.getComponent().getName()
@@ -971,9 +875,8 @@ public class CodeGenerator implements ICodeGenerator {
jetBean.setTemplateRelativeUri(templateURI);
JetProxy proxy = new JetProxy(jetBean);
content.append(proxy.generate());
if (typeGen == ETypeGen.ETL) {
if (typeGen == ETypeGen.ETL)
content.append(generateTypedComponentCode(EInternalTemplate.PART_FOOTER, node, part, incomingName, subProcess));
}
} catch (JETException jetException) {
log.error(jetException.getMessage(), jetException);
@@ -994,7 +897,6 @@ public class CodeGenerator implements ICodeGenerator {
* @return the generated code
* @throws CodeGeneratorException if an error occurs during Code Generation
*/
@Override
public String generateComponentCode(INode node, ECodePart part) throws CodeGeneratorException {
CodeGeneratorArgument argument = new CodeGeneratorArgument();
argument.setNode(node);
@@ -1078,7 +980,6 @@ public class CodeGenerator implements ICodeGenerator {
* @see org.talend.designer.codegen.ICodeGenerator#generateComponentCodeWithRows (java.lang.String,
* java.lang.Object)
*/
@Override
public String generateComponentCodeWithRows(String nodeName, IAloneProcessNodeConfigurer nodeConfigurer) {
StringBuffer componentsCode = new StringBuffer();
@@ -1192,7 +1093,6 @@ public class CodeGenerator implements ICodeGenerator {
return null;
}
@Override
public void setContextName(String contextName) {
this.contextName = contextName;
}

View File

@@ -13,21 +13,17 @@
package org.talend.designer.codegen;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.ui.PlatformUI;
import org.talend.commons.ui.runtime.CommonUIPlugin;
import org.talend.core.CorePlugin;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.ILibraryManagerService;
import org.talend.core.language.ECodeLanguage;
import org.talend.core.language.LanguageManager;
import org.talend.core.model.components.ComponentCompilations;
import org.talend.core.model.process.Element;
import org.talend.core.model.process.IProcess;
import org.talend.designer.codegen.i18n.Messages;
import org.talend.designer.codegen.model.CodeGeneratorEmittersPoolFactory;
import org.talend.designer.core.ICamelDesignerCoreService;
import org.talend.designer.core.IDesignerCoreService;
import org.talend.designer.core.ui.views.properties.IComponentSettingsView;
import org.talend.repository.model.ComponentsFactoryProvider;
/**
@@ -141,38 +137,18 @@ public class CodeGeneratorService implements ICodeGeneratorService {
*/
@Override
public Job refreshTemplates() {
Element oldComponent = null;
IComponentSettingsView viewer = null;
if (!CommonUIPlugin.isFullyHeadless()) {
// TDI-25866:In case select a component and sctrl+shift+f3,need clean its componentSetting view
viewer = (IComponentSettingsView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.findView(IComponentSettingsView.ID);
if (viewer != null) {
oldComponent = viewer.getElement();
viewer.cleanDisplay();
}
}
ComponentCompilations.deleteMarkers();
ComponentsFactoryProvider.getInstance().resetCache();
// this will force to refresh all components libs when install run ctrl+f3
ILibraryManagerService librairesManagerService = (ILibraryManagerService) GlobalServiceRegister.getDefault().getService(
ILibraryManagerService.class);
librairesManagerService.clearCache();
CorePlugin.getDefault().getLibrariesService().syncLibraries();
ComponentCompilations.deleteMarkers();
ComponentsFactoryProvider.getInstance().resetCache();
Job job = CodeGeneratorEmittersPoolFactory.initialize();
// achen modify to record ctrl+shift+f3 is pressed to fix bug 0006107
CorePlugin.getDefault().getLibrariesService().syncLibraries();
IDesignerCoreService designerCoreService = (IDesignerCoreService) GlobalServiceRegister.getDefault().getService(
IDesignerCoreService.class);
designerCoreService.getLastGeneratedJobsDateMap().clear();
if (oldComponent != null) {
viewer.setElement(oldComponent);
}
return job;
}
@Override
public boolean isInitializingJet() {
return !CodeGeneratorEmittersPoolFactory.isInitialized() && CodeGeneratorEmittersPoolFactory.isInitializeStart();
}
}

View File

@@ -23,11 +23,11 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.talend.commons.exception.BusinessException;
import org.talend.core.language.ECodeLanguage;
import org.talend.core.service.IComponentsLocalProviderService;
import org.talend.designer.codegen.components.model.ComponentFileChecker;
import org.talend.designer.codegen.components.ui.ComponenttRunJobPreferencePage;
import org.talend.designer.codegen.components.ui.IComponentPreferenceConstant;
import org.talend.designer.codegen.i18n.Messages;
import org.talend.designer.components.IComponentsLocalProviderService;
/**
* DOC Administrator class global comment. Detailled comment <br/>

View File

@@ -13,6 +13,15 @@
package org.talend.designer.codegen;
import org.eclipse.jface.action.Action;
import org.eclipse.ui.PlatformUI;
import org.talend.core.CorePlugin;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.model.components.ComponentCompilations;
import org.talend.core.model.process.Element;
import org.talend.designer.codegen.model.CodeGeneratorEmittersPoolFactory;
import org.talend.designer.core.IDesignerCoreService;
import org.talend.designer.core.ui.views.properties.IComponentSettingsView;
import org.talend.repository.model.ComponentsFactoryProvider;
/**
* DOC mhirt class global comment. Detailled comment <br/>
@@ -34,8 +43,28 @@ public class RefreshTemplatesAction extends Action {
*/
@Override
public void run() {
CodeGeneratorService service = new CodeGeneratorService();
service.refreshTemplates();
// TDI-25866:In case select a component and sctrl+shift+f3,need clean its componentSetting view
IComponentSettingsView viewer = (IComponentSettingsView) PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().findView(IComponentSettingsView.ID);
Element oldComponent = null;
if (viewer != null) {
oldComponent = viewer.getElement();
viewer.cleanDisplay();
}
ComponentCompilations.deleteMarkers();
ComponentsFactoryProvider.getInstance().resetCache();
CorePlugin.getDefault().getLibrariesService().syncLibraries();
CodeGeneratorEmittersPoolFactory.initialize();
// achen modify to record ctrl+shift+f3 is pressed to fix bug 0006107
IDesignerCoreService designerCoreService = (IDesignerCoreService) GlobalServiceRegister.getDefault().getService(
IDesignerCoreService.class);
designerCoreService.getLastGeneratedJobsDateMap().clear();
if (oldComponent != null) {
viewer.setElement(oldComponent);
}
}
}

View File

@@ -1,73 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2010 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.designer.codegen.additionaljet;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.designer.codegen.components.model.IComponentFactoryFilter;
import org.talend.designer.codegen.i18n.Messages;
/**
* DOC zwzhao class global comment. Detailled comment
*/
public class ComponentsFactoryProviderManager {
private static Logger log = Logger.getLogger(ComponentsFactoryProviderManager.class);
private static final ComponentsFactoryProviderManager INSTANCE = new ComponentsFactoryProviderManager();
private Collection<IComponentFactoryFilter> filters;
private ComponentsFactoryProviderManager() {
}
public static ComponentsFactoryProviderManager getInstance() {
return INSTANCE;
}
public Collection<IComponentFactoryFilter> getProviders() {
if (filters == null) {
loadFromExtension();
}
return filters;
}
private void loadFromExtension() {
filters = new ArrayList<IComponentFactoryFilter>();
IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
IExtensionPoint extensionPoint = extensionRegistry.getExtensionPoint("org.talend.designer.codegen.componentFilter"); //$NON-NLS-1$
IExtension[] extensions = extensionPoint.getExtensions();
for (IExtension extension : extensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
try {
IComponentFactoryFilter filter = (IComponentFactoryFilter) configurationElement
.createExecutableExtension("class"); //$NON-NLS-1$
filters.add(filter);
} catch (CoreException e) {
ExceptionHandler.process(e);
}
}
}
}
}

View File

@@ -64,7 +64,6 @@ import org.talend.core.model.component_cache.ComponentsCache;
import org.talend.core.model.component_cache.util.ComponentCacheResourceFactoryImpl;
import org.talend.core.model.components.AbstractComponentsProvider;
import org.talend.core.model.components.ComponentCategory;
import org.talend.core.model.components.ComponentManager;
import org.talend.core.model.components.ComponentUtilities;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.components.IComponentsFactory;
@@ -74,13 +73,13 @@ import org.talend.core.ui.branding.IBrandingService;
import org.talend.core.ui.images.CoreImageProvider;
import org.talend.core.utils.TalendCacheUtils;
import org.talend.designer.codegen.CodeGeneratorActivator;
import org.talend.designer.codegen.additionaljet.ComponentsFactoryProviderManager;
import org.talend.designer.codegen.i18n.Messages;
import org.talend.designer.core.ITisLocalProviderService;
import org.talend.designer.core.ITisLocalProviderService.ResClassLoader;
import org.talend.designer.core.model.components.ComponentBundleToPath;
import org.talend.designer.core.model.components.ComponentFilesNaming;
import org.talend.designer.core.model.components.EmfComponent;
import org.talend.designer.core.model.components.manager.ComponentManager;
import org.talend.designer.core.model.process.AbstractProcessProvider;
import org.talend.repository.model.ComponentsFactoryProvider;
@@ -348,7 +347,7 @@ public class ComponentsFactory implements IComponentsFactory {
IBrandingService service = (IBrandingService) GlobalServiceRegister.getDefault().getService(IBrandingService.class);
// String[] availableComponents = service.getBrandingConfiguration().getAvailableComponents();
String[] availableComponents = service.getBrandingConfiguration().getAvailableComponents();
FileFilter skeletonFilter = new FileFilter() {
@@ -471,7 +470,7 @@ public class ComponentsFactory implements IComponentsFactory {
// if the component is already existing in cache and if it's the same, it won't reload all (cf
// flag: foundComponentIsSame)
EmfComponent currentComp = new EmfComponent(pathName, bundleName, xmlMainFile.getParentFile().getName(),
pathSource, cache, foundComponentIsSame, provider);
pathSource, cache, foundComponentIsSame);
if (!foundComponentIsSame) {
// force to call some functions to update the cache. (to improve)
currentComp.isVisibleInComponentDefinition();
@@ -494,21 +493,10 @@ public class ComponentsFactory implements IComponentsFactory {
ComponentManager.setModified(true); // this will force to save the cache later.
}
boolean hiddenComponent = false;
Collection<IComponentFactoryFilter> filters = ComponentsFactoryProviderManager.getInstance()
.getProviders();
for (IComponentFactoryFilter filter : filters) {
if (!filter.isAvailable(currentComp.getName())) {
hiddenComponent = true;
break;
}
}
// if the component is not needed in the current branding,
// and that this one IS NOT a specific component for code generation
// just don't load it
if (hiddenComponent
if (availableComponents != null && !ArrayUtils.contains(availableComponents, currentComp.getName())
&& !(currentComp.getOriginalFamilyName().contains("Technical") || currentComp.isTechnical())) {
continue;
}
@@ -518,7 +506,7 @@ public class ComponentsFactory implements IComponentsFactory {
// if the component is not needed in the current branding,
// and that this one IS a specific component for code generation,
// hide it
if (hiddenComponent
if (availableComponents != null && !ArrayUtils.contains(availableComponents, currentComp.getName())
&& (currentComp.getOriginalFamilyName().contains("Technical") || currentComp.isTechnical())) {
currentComp.setVisible(false);
currentComp.setTechnical(true);
@@ -532,10 +520,8 @@ public class ComponentsFactory implements IComponentsFactory {
if (componentList.contains(currentComp)) {
log.warn("Component " + currentComp.getName() + " already exists. Cannot load user version."); //$NON-NLS-1$ //$NON-NLS-2$
} else {
// currentComp.setResourceBundle(getComponentResourceBundle(currentComp, source.toString(),
// null,
// provider));
currentComp.setProvider(provider);
currentComp.setResourceBundle(getComponentResourceBundle(currentComp, source.toString(), null,
provider));
componentList.add(currentComp);
if (isCustom) {
customComponentList.add(currentComp);

View File

@@ -1,22 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2010 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.designer.codegen.components.model;
/**
* DOC zwzhao class global comment. Detailled comment
*/
public interface IComponentFactoryFilter {
public boolean isAvailable(String componentName);
}

View File

@@ -43,13 +43,10 @@ import org.talend.commons.ui.utils.workbench.preferences.ComboFieldEditor;
import org.talend.core.CorePlugin;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.PluginChecker;
import org.talend.core.model.components.ComponentPaletteUtilities;
import org.talend.core.model.components.ComponentUtilities;
import org.talend.designer.codegen.CodeGeneratorActivator;
import org.talend.designer.codegen.ICodeGeneratorService;
import org.talend.designer.codegen.i18n.Messages;
import org.talend.designer.core.DesignerPlugin;
import org.talend.designer.core.assist.TalendEditorComponentCreationUtil;
import org.talend.designer.core.ui.preferences.TalendDesignerPrefConstants;
/**
* This class represents a preference page that is contributed to the Preferences dialog. By subclassing
@@ -65,8 +62,6 @@ public class ComponentsPreferencePage extends FieldEditorPreferencePage implemen
private CheckBoxFieldEditor doNotShowJobletAfterDoubleClickCheckBoxField;
private CheckBoxFieldEditor enableComponentAssistCheckBoxField;
private DirectoryFieldEditor filePathTemp;
private final String dataViewer = "Data Viewer"; //$NON-NLS-1$
@@ -77,8 +72,6 @@ public class ComponentsPreferencePage extends FieldEditorPreferencePage implemen
private final String joblet = "Joblet"; //$NON-NLS-1$
private final String assist = "Component Assist"; //$NON-NLS-1$
private static String oldPath = null;
/**
@@ -197,16 +190,6 @@ public class ComponentsPreferencePage extends FieldEditorPreferencePage implemen
return group;
}
protected Composite createForComponentAssist(Composite parent) {
Group group = createGroup(parent);
group.setText(assist);
Composite composite = createComposite(group);
addFontAndColorFieldsForAssist(composite);
GridLayout layout = createLayout();
composite.setLayout(layout);
return group;
}
protected Group createGroup(Composite parent) {
Group group = new Group(parent, SWT.NONE);
GridData layoutData = new GridData(GridData.FILL_HORIZONTAL);
@@ -239,7 +222,6 @@ public class ComponentsPreferencePage extends FieldEditorPreferencePage implemen
protected void addFontAndColorFieldsForDataViewer(Composite composite) {
IntegerFieldEditor rowLimit = new IntegerFieldEditor(IComponentPreferenceConstant.LIMIT,
Messages.getString("ComponentsPreferencePage.rowLimit"), composite);//$NON-NLS-1$
rowLimit.setValidRange(1, 1000);
addField(rowLimit);
Text textControl = rowLimit.getTextControl(composite);
GridData layoutData = new GridData();
@@ -263,12 +245,6 @@ public class ComponentsPreferencePage extends FieldEditorPreferencePage implemen
addField(doNotShowJobletAfterDoubleClickCheckBoxField);
}
protected void addFontAndColorFieldsForAssist(Composite composite) {
enableComponentAssistCheckBoxField = new CheckBoxFieldEditor(TalendDesignerPrefConstants.COMPONENT_ASSIST,
Messages.getString("ComponentsPreferencePage.componentAssist"), composite); //$NON-NLS-1$
addField(enableComponentAssistCheckBoxField);
}
@Override
public void createFieldEditors() {
final Composite parent = getFieldEditorParent();
@@ -285,7 +261,7 @@ public class ComponentsPreferencePage extends FieldEditorPreferencePage implemen
public void modifyText(ModifyEvent e) {
String newPath = filePathTemp.getTextControl(parent).getText();
File file = new File(newPath);
if (!file.exists() && !"".equals(newPath)) { //$NON-NLS-1$
if (!file.exists()) {
// getPreferenceStore().setValue(IComponentPreferenceConstant.USER_COMPONENTS_FOLDER, "");
filePathTemp.showErrorMessage();
setValid(false);
@@ -304,7 +280,6 @@ public class ComponentsPreferencePage extends FieldEditorPreferencePage implemen
if (PluginChecker.isJobLetPluginLoaded()) {
createForJoblet(parent);
}
createForComponentAssist(parent);
parent.pack();
}
@@ -319,35 +294,6 @@ public class ComponentsPreferencePage extends FieldEditorPreferencePage implemen
@Override
public void init(IWorkbench workbench) {
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#initialize()
*/
@Override
protected void initialize() {
super.initialize();
// Because should save the value of TalendDesignerPrefConstants.COMPONENT_ASSIST in
// DesignerPlugin.getDefault().getPreferenceStore()
enableComponentAssistCheckBoxField.setPreferenceStore(DesignerPlugin.getDefault().getPreferenceStore());
enableComponentAssistCheckBoxField.load();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#performDefaults()
*/
@Override
protected void performDefaults() {
super.performDefaults();
// Because should save the value of TalendDesignerPrefConstants.COMPONENT_ASSIST in
// DesignerPlugin.getDefault().getPreferenceStore(), also PreferenceInitializer
enableComponentAssistCheckBoxField.setPreferenceStore(DesignerPlugin.getDefault().getPreferenceStore());
enableComponentAssistCheckBoxField.loadDefault();
}
@Override
@@ -355,22 +301,19 @@ public class ComponentsPreferencePage extends FieldEditorPreferencePage implemen
boolean flag = super.performOk();
String newPath = CodeGeneratorActivator.getDefault().getPreferenceStore()
.getString(IComponentPreferenceConstant.USER_COMPONENTS_FOLDER);
if ("".equals(oldPath)) { //$NON-NLS-1$
if ("".equals(oldPath)) {
oldPath = null;
}
if ("".equals(newPath)) { //$NON-NLS-1$
if ("".equals(newPath)) {
newPath = null;
}
DesignerPlugin.getDefault().getPreferenceStore()
.setValue(TalendDesignerPrefConstants.COMPONENT_ASSIST, enableComponentAssistCheckBoxField.getBooleanValue());
TalendEditorComponentCreationUtil.updateAssistListener();
if (this.oldPath != newPath) {
final IRunnableWithProgress runnable = new IRunnableWithProgress() {
@Override
public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
monitor.beginTask("Loading user component ......", 100); //$NON-NLS-1$
monitor.beginTask("Loading user component ......", 100);
Display display = Display.getCurrent();
if (display == null) {
display = Display.getDefault();
@@ -393,7 +336,7 @@ public class ComponentsPreferencePage extends FieldEditorPreferencePage implemen
@Override
public void done(org.eclipse.core.runtime.jobs.IJobChangeEvent event) {
ComponentPaletteUtilities.updatePalette();
ComponentUtilities.updatePalette();
monitor.worked(100);
monitor.done();
};

View File

@@ -52,7 +52,6 @@ public enum EInternalTemplate {
MR_COMPONENT_MRCONFIG_HEADER("mr_component_mrconfig_header", "0.0.1"), //$NON-NLS-1$ //$NON-NLS-2$
MR_COMPONENT_MRCONFIG_FOOTER("mr_component_mrconfig_footer", "0.0.1"), //$NON-NLS-1$ //$NON-NLS-2$
MR_SUBPROCESS_HEADER("mr_subprocess_header", "0.0.1"), //$NON-NLS-1$ //$NON-NLS-2$
MR_SUBPROCESS_RUN("mr_subprocess_run", "0.0.1"), //$NON-NLS-1$ //$NON-NLS-2$
MR_SUBPROCESS_FOOTER("mr_subprocess_footer", "0.0.1"), //$NON-NLS-1$ //$NON-NLS-2$
HEADER_ADDITIONAL("header_additional", "0.0.1"); //$NON-NLS-1$ //$NON-NLS-2$

View File

@@ -1,159 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2013 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.designer.codegen.config;
import java.util.ArrayList;
import java.util.List;
import org.talend.core.model.process.IConnection;
import org.talend.core.model.process.IConnectionCategory;
import org.talend.core.model.process.INode;
/**
* Use for wrap a {@link INode} to provide faster and convenient methods to get
* connections, such as {@link #inputConn}, {@link #connResponse},
* {@link #connFault}, {@link #dataOutputs}.
*
* @author GaoZone
* @update 2013-9-12 [TESB-11028]
*/
public class NodeConnectionsHelper {
/** The node. */
private final INode node;
/** The input conn. */
private IConnection inputConn;
/** The conn response. */
private IConnection connResponse;
/** The conn fault. */
private IConnection connFault;
/** The data outputs. */
private List<IConnection> dataOutputs;
/**
* Gets the input conn.
*
* @return the input conn
*/
public IConnection getInputConn() {
return inputConn;
}
/**
* Gets the output conn response.
*
* @return the output conn response
*/
public IConnection getOutputConnResponse() {
return connResponse;
}
/**
* Gets the output conn fault.
*
* @return the output conn fault
*/
public IConnection getOutputConnFault() {
return connFault;
}
/**
* Gets the data outputs.
*
* @return the data outputs
*/
public List<IConnection> getDataOutputs() {
return dataOutputs;
}
/**
* Instantiates a new node connections helper.
*
* @param node
* the node
*/
public NodeConnectionsHelper(INode node) {
this(node, false);
}
/**
* Instantiates a new node connections helper.
*
* @param node
* the node
* @param stopInitialWhenNoInput
* the stop initial when no input
*/
public NodeConnectionsHelper(INode node, boolean stopInitialWhenNoInput) {
this.node = node;
initConnections(stopInitialWhenNoInput);
}
/**
* Inits the connections.
*
* @param stopInitialWhenNoInput
* the stop initial when no input
*/
private void initConnections(boolean stopInitialWhenNoInput) {
initInputConnection();
if (!(stopInitialWhenNoInput && inputConn == null)) {
initOutputConnections();
}
}
/**
* Inits the {@link #inputConn} connection.
*/
private void initInputConnection() {
List<? extends IConnection> incomingConnections = node.getIncomingConnections();
if (incomingConnections != null) {
for (IConnection conn : incomingConnections) {
if (conn.getLineStyle().hasConnectionCategory(IConnectionCategory.DATA)) {
inputConn = conn;
break;
}
}
}
}
/**
* Inits the {@link #dataOutputs}, {@link #connResponse}, {@link #connFault}
* connections.
*/
private void initOutputConnections() {
List<? extends IConnection> conns = node.getOutgoingSortedConnections();
dataOutputs = new ArrayList<IConnection>();
if (conns != null) {
for (IConnection conn : conns) {
if (conn.getLineStyle().hasConnectionCategory(IConnectionCategory.DATA)) {
dataOutputs.add(conn);
}
}
}
List<? extends IConnection> connsResponse = node.getOutgoingConnections("RESPONSE");
List<? extends IConnection> connsFault = node.getOutgoingConnections("FAULT");
if (connsResponse.size() == 1) {
connResponse = connsResponse.get(0);
}
if (connsFault.size() == 1) {
connFault = connsFault.get(0);
}
}
}

View File

@@ -1,232 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2013 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.designer.codegen.config;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.talend.core.model.process.ElementParameterParser;
import org.talend.core.model.process.IElementParameter;
import org.talend.core.model.process.INode;
/**
* Use for wrap a {@link INode} to provide faster and convenient methods to get
* parameters.
*
* @author GaoZone
* @update 2013-9-12 [TESB-11028]
*/
public class NodeParamsHelper {
/** The node use to wrap. */
private final INode node;
/** The parameter map use to cache params by name. */
private final HashMap<String, IElementParameter> parameterMap;
/**
* Use for method return property(K-V) entries in list/map.
*/
private class PropEntry implements Map.Entry<String, String> {
/** The key. */
private final String key;
/** The value. */
private final String value;
/**
* Instantiates a new prop entry.
*
* @param key
* the key
* @param value
* the value
*/
public PropEntry(String key, String value) {
this.key = key;
this.value = value;
}
@Override
public String getKey() {
return key;
}
@Override
public String getValue() {
return value;
}
@Override
public String setValue(String value) {
throw new UnsupportedOperationException();
}
}
/**
* Instantiates a new node params helper.
*
* @param node
* the node
*/
public NodeParamsHelper(INode node) {
this.node = node;
// cache ParameterMap
parameterMap = new HashMap<String, IElementParameter>();
for (IElementParameter parameter : node.getElementParametersWithChildrens()) {
parameterMap.put(parameter.getVariableName(), parameter);
}
}
/**
* Gets the parameter from cached name map.
*
* @param key
* the key
* @return the parameter
*/
private IElementParameter getParameter(String key) {
return parameterMap.get(key);
}
/**
* Gets the boolean parameter by {@code key}. If no {@code key} provided
*
* @param key
* the key
* @return the boolean parameter
*/
public boolean getBoolParam(String key) {
return "true".equals(getStringParam(key));
}
/**
* Gets the string parameter by {@code key}.
*
* @param key
* the key
* @return the parameter value in String
*/
public String getStringParam(String key) {
// return ElementParameterParser.getValue(node, key);
try {
IElementParameter param = getParameter(key);
return getDisplayValue(param);
} catch (Throwable e) {
// ignore and return "";
e.printStackTrace();
return "";
}
}
/**
* Gets string parameter by {@code key}. Especially, if the parameter's
* controller is not visible, then also return {@code ""}.
*
* @param key
* the key
* @return the parameter value
*/
public String getVisibleStringParam(String key) {
String value = getStringParam(key);
if (!("").equals(value)) {
IElementParameter param = getParameter(key);
if (param.isShow(node.getElementParametersWithChildrens())) {
return value;
}
}
return "";
}
/**
* Gets the object param. </br>//TODO Not used name map yet, and be improve
* by expose methods from {@link ElementParameterParser}
*
* @param <T>
* the generic type
* @param key
* the key
* @return the object param
*/
@SuppressWarnings("unchecked")
public <T> T getObjectParam(String key) {
return (T) ElementParameterParser.getObjectValue(node, key);
}
/**
* Gets boolean parameter by {@code key}. Especially, if the parameter's
* controller is not visible, then also return {@code false}.
*
* @param key
* the key
* @return the parameter value
*/
public boolean getVisibleBoolParam(final String key) {
if (key == null) {
return false;
}
if (getBoolParam(key)) {
// value is true, then check visible
// no need null check, has true value must not null.
IElementParameter param = getParameter(key);
return param.isShow(node.getElementParametersWithChildrens());
}
return false;
}
/**
* Gets the properties pram.
*
* @param key
* the key
* @return the properties pram
*/
public List<Entry<String, String>> getPropertiesPram(String key) {
try {
List<Map<String, String>> paramValue = getObjectParam(key);
List<Entry<String, String>> properties = new ArrayList<Entry<String, String>>(paramValue.size());
for (Map<String, String> map : paramValue) {
properties.add(new PropEntry(map.get("PROP_NAME"), map.get("PROP_VALUE")));
}
return properties;
} catch (Throwable e) {
// ignore and return empty list.
e.printStackTrace();
return Collections.emptyList();
}
}
/**
* Gets the display value.
*
* @param param
* the param
* @return the display value
* {@code ElementParameterParser.getDisplayValue(final IElementParameter param)}
*/
private static String getDisplayValue(final IElementParameter param) {
if (param == null) {
return "";
}
return ElementParameterParser.getStringElementParameterValue(param);
}
}

View File

@@ -47,7 +47,7 @@ public class NodesTree {
buildSubTrees(true);
}
}
public NodesTree(IProcess process, List<? extends INode> treeNodes, boolean init, ETypeGen typeGen) {
this.nodes = treeNodes;
buildRootNodes(process);
@@ -111,8 +111,7 @@ public class NodesTree {
for (INode node : nodes) {
String componentName = node.getComponent().getName();
if ((node.isStart()) && (node.isActivate()) && (node.isSubtreeStart() || node.isELTComponent())
&& (!componentName.equals("tPrejob"))//$NON-NLS-1$
if ((node.isStart()) && (node.isActivate()) && (!componentName.equals("tPrejob")) //$NON-NLS-1$
&& (!componentName.equals("tPostjob"))) { //$NON-NLS-1$
rootNodes.add(node);
}

View File

@@ -16,34 +16,32 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.StringTokenizer;
import org.apache.commons.lang.ArrayUtils;
import org.apache.log4j.Logger;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.emf.codegen.CodeGenPlugin;
import org.eclipse.emf.codegen.jet.JETCompiler;
@@ -52,20 +50,14 @@ import org.eclipse.emf.codegen.jet.JETException;
import org.eclipse.emf.common.EMFPlugin;
import org.eclipse.emf.common.util.BasicMonitor;
import org.eclipse.emf.common.util.Monitor;
import org.eclipse.jdt.core.IClasspathAttribute;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaModel;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.compiler.CompilationProgress;
import org.eclipse.jdt.core.compiler.batch.BatchCompiler;
import org.osgi.framework.Bundle;
import org.talend.commons.debug.TalendDebugHandler;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.utils.generation.JavaUtils;
import org.talend.designer.codegen.i18n.Messages;
import org.talend.designer.core.model.components.ComponentBundleToPath;
/**
* DOC mhirt class global comment. Detailled comment <br/>
@@ -170,6 +162,8 @@ public class TalendJetEmitter extends JETEmitter {
IProject project;
IJavaProject javaProject;
public TalendEclipseHelper(IProgressMonitor progressMonitor, TalendJetEmitter jetEmitter, boolean rebuild)
throws JETException {
progressMonitor.beginTask("", 10); //$NON-NLS-1$
@@ -197,6 +191,26 @@ public class TalendJetEmitter extends JETEmitter {
project.open(new SubProgressMonitor(progressMonitor, 5));
project.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(progressMonitor, 1));
}
IProjectDescription description = project.getDescription();
// only in case it's one old workspace and got no nature defined.
if (!ArrayUtils.contains(description.getNatureIds(), JavaCore.NATURE_ID)) {
description.setNatureIds(new String[] { JavaCore.NATURE_ID });
project.setDescription(description, new SubProgressMonitor(progressMonitor, 1));
}
javaProject = JavaCore.create(project);
progressMonitor.subTask(CodeGenPlugin.getPlugin().getString("_UI_JETInitializingProject_message", //$NON-NLS-1$
new Object[] { project.getName() }));
IClasspathEntry classpathEntry = JavaCore.newSourceEntry(new Path("/" + project.getName() + "/src")); //$NON-NLS-1$ //$NON-NLS-2$
IClasspathEntry jreClasspathEntry = JavaCore
.newContainerEntry(new Path("org.eclipse.jdt.launching.JRE_CONTAINER")); //$NON-NLS-1$
Set<IClasspathEntry> classpath = new HashSet<IClasspathEntry>();
classpath.add(classpathEntry);
classpath.add(jreClasspathEntry);
classpath.addAll(jetEmitter.getClasspathEntries());
IFolder sourceFolder = project.getFolder(new Path("src")); //$NON-NLS-1$
if (!sourceFolder.exists()) {
@@ -207,6 +221,14 @@ public class TalendJetEmitter extends JETEmitter {
runtimeFolder.create(false, true, new SubProgressMonitor(progressMonitor, 1));
}
if (isClasspathDifferent(javaProject, classpath)) {
IClasspathEntry[] classpathEntryArray = classpath.toArray(new IClasspathEntry[classpath.size()]);
javaProject.setRawClasspath(classpathEntryArray, new SubProgressMonitor(progressMonitor, 1));
javaProject.setOutputLocation(new Path("/" + project.getName() + "/runtime"), new SubProgressMonitor( //$NON-NLS-1$ //$NON-NLS-2$
progressMonitor, 1));
javaProject.getProject().build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new NullProgressMonitor());
}
progressMonitor.done();
} catch (CoreException exception) {
throw new JETException(exception);
@@ -297,8 +319,7 @@ public class TalendJetEmitter extends JETEmitter {
}
}
boolean needRebuild = true;
String targetFileName = jetCompiler.getSkeleton().getClassName() + ".java"; //$NON-NLS-1$
IFile targetFile = sourceContainer.getFile(new Path(targetFileName));
IFile targetFile = sourceContainer.getFile(new Path(jetCompiler.getSkeleton().getClassName() + ".java")); //$NON-NLS-1$
if (!targetFile.exists()) {
subProgressMonitor.subTask(CodeGenPlugin.getPlugin().getString("_UI_JETCreating_message", //$NON-NLS-1$
new Object[] { targetFile.getFullPath() }));
@@ -339,17 +360,26 @@ public class TalendJetEmitter extends JETEmitter {
if (needRebuild || jetEmitter.method == null) {
subProgressMonitor.subTask(CodeGenPlugin.getPlugin().getString("_UI_JETBuilding_message", //$NON-NLS-1$
new Object[] { project.getName() }));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
compileSingleClass(project, targetFile, baos);
String output = baos.toString();
// project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new
// SubProgressMonitor(subProgressMonitor, 1));
project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new SubProgressMonitor(subProgressMonitor, 1));
IMarker[] markers = targetFile.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE);
boolean errors = false;
if (!output.isEmpty()) {
errors = true;
log.error(output);
setClassAvailable(false);
for (int i = 0; i < markers.length; ++i) {
IMarker marker = markers[i];
if (marker.getAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO) == IMarker.SEVERITY_ERROR) {
errors = true;
subProgressMonitor.subTask(marker.getAttribute(IMarker.MESSAGE) + " : " //$NON-NLS-1$
+ (CodeGenPlugin.getPlugin().getString("jet.mark.file.line", new Object[] { //$NON-NLS-1$
targetFile.getLocation(), marker.getAttribute(IMarker.LINE_NUMBER) })));
log.error(jetEmitter.templateURI.substring(jetEmitter.templateURI.lastIndexOf("/") + 1) //$NON-NLS-1$
+ Messages.getString(
"TalendJetEmitter.compileFail", //$NON-NLS-1$
marker.getAttribute(IMarker.MESSAGE),
(CodeGenPlugin.getPlugin().getString("jet.mark.file.line", new Object[] { //$NON-NLS-1$
targetFile.getLocation(), marker.getAttribute(IMarker.LINE_NUMBER) }))));
classAvailable = false;
}
}
if (!errors) {
@@ -358,7 +388,8 @@ public class TalendJetEmitter extends JETEmitter {
// Construct a proper URL for relative lookup.
//
URL url = new File(project.getLocation() + "/" + "runtime" + "/") //$NON-NLS-1$ //$NON-NLS-2$
URL url = new File(project.getLocation()
+ "/" + javaProject.getOutputLocation().removeFirstSegments(1) + "/") //$NON-NLS-1$ //$NON-NLS-2$
.toURL();
URLClassLoader theClassLoader = new URLClassLoader(new URL[] { url }, jetEmitter.classLoader);
Class theClass = theClassLoader.loadClass((packageName.length() == 0 ? "" : packageName + ".") //$NON-NLS-1$ //$NON-NLS-2$
@@ -400,163 +431,6 @@ public class TalendJetEmitter extends JETEmitter {
}
}
private void compileSingleClass(IProject project, IFile javaFile, OutputStream errorMsgStream) {
compileSingleClass(project, javaFile, null, errorMsgStream, null);
}
/**
* DOC ycbai Comment method "compileSingleClass".
* <p>
* Compile one class directly.
*
* @param project
* @param javaFile
* @param standardMsgStream
* @param errorMsgStream
* @param progress
*/
private void compileSingleClass(IProject project, IFile javaFile, OutputStream standardMsgStream,
OutputStream errorMsgStream, CompilationProgress progress) {
OutputStream msgStream = standardMsgStream;
OutputStream errorStream = errorMsgStream;
if (msgStream == null) {
msgStream = System.out;
}
if (errorStream == null) {
errorStream = System.err;
}
BatchCompiler.compile(getBatchCompilerCmd(project, javaFile), new PrintWriter(msgStream), new PrintWriter(errorStream),
progress);
}
/**
* DOC ycbai Comment method "getBatchCompilerCmd".
*
* @param project
* @param javaFile
* @return
*/
private String[] getBatchCompilerCmd(IProject project, IFile javaFile) {
List<String> cmdList = new ArrayList<String>();
cmdList.add(javaFile.getLocation().toPortableString());
String classpathStr = getClasspathStr();
if (!classpathStr.isEmpty()) {
cmdList.add("-classpath"); //$NON-NLS-1$
cmdList.add(classpathStr);
}
//cmdList.add("-time"); //$NON-NLS-1$
cmdList.add("-g:none"); //$NON-NLS-1$
cmdList.add("-warn:none"); //$NON-NLS-1$
cmdList.add("-1.5"); //$NON-NLS-1$
cmdList.add("-d"); //$NON-NLS-1$
cmdList.add(getClassOutputPath(project, javaFile));
return cmdList.toArray(new String[0]);
}
/**
* DOC ycbai Comment method "getClassOutputPath".
* <p>
* Get class output folder of project.
*
* @param project
* @param javaFile
* @return
*/
private String getClassOutputPath(IProject project, IFile javaFile) {
IFolder runtimeFolder = project.getFolder("runtime"); //$NON-NLS-1$
return runtimeFolder.getLocation().toPortableString();
}
/**
* DOC ycbai Comment method "getClasspathStr".
* <p>
* Get character string of classpath with separator.
*
* @return
*/
private String getClasspathStr() {
StringBuffer cps = new StringBuffer();
String classPathSeparator = JavaUtils.JAVA_CLASSPATH_SEPARATOR;
List<IClasspathEntry> cpes = getClasspathEntries();
for (IClasspathEntry cpe : cpes) {
String classpath = getClasspathFromEntry(cpe);
cps.append(classpath).append(classPathSeparator);
}
if (cps.length() > 0) {
cps.deleteCharAt(cps.length() - 1);
}
return cps.toString();
}
/**
* DOC ycbai Comment method "getClasspathFromEntry".
* <p>
* Get the absolute classpath.
*
* @param entry
* @return
*/
private String getClasspathFromEntry(IClasspathEntry entry) {
if (entry == null) {
return null;
}
IClasspathAttribute[] extraAttributes = entry.getExtraAttributes();
if (extraAttributes.length > 0) {
for (IClasspathAttribute ca : extraAttributes) {
if ("plugin_id".equals(ca.getName())) { //$NON-NLS-1$
String pluginId = ca.getValue();
if (pluginId != null) {
File plugin = new File(ComponentBundleToPath.getPathFromBundle(pluginId));
String pluginPath = plugin.getAbsolutePath();
if (Platform.inDevelopmentMode() && plugin.isDirectory()) {
String output;
try {
output = getIdeOutputSubDir(Platform.getBundle(pluginId));
if (output != null) {
pluginPath = pluginPath + File.separator + output;
}
} catch (IOException e) {
// for dev only so just keep a print stacktrace
e.printStackTrace();
}
}
return pluginPath;
}
}
}
}
return null;
}
/**
* DOC ycbai Comment method "getIdeOutputSubDir".
* <p>
* Get class folder path of bundle. Just use for development environment.
*
* @param bundle
* @return
* @throws IOException
*/
private String getIdeOutputSubDir(Bundle bundle) throws IOException {
String outputSubDir = null;
// get output folder path in case we are running from the IDE
URL buildPropUrl = bundle.getEntry("/build.properties"); //$NON-NLS-1$
if (buildPropUrl != null) {
Properties buildProp = new Properties();
InputStream buildPropStream = buildPropUrl.openStream();
try {
buildProp.load(buildPropStream);
outputSubDir = buildProp.getProperty("output..", null); //$NON-NLS-1$
} finally {
buildPropStream.close();
}
}
return outputSubDir;
}
/*
* (non-Javadoc)
*
@@ -643,10 +517,6 @@ public class TalendJetEmitter extends JETEmitter {
return this.classAvailable;
}
public void setClassAvailable(boolean classAvailable) {
this.classAvailable = classAvailable;
}
/*
* (non-Javadoc)
*

View File

@@ -22,10 +22,13 @@ import java.util.HashMap;
import java.util.List;
import java.util.Set;
import org.apache.commons.lang.ArrayUtils;
import org.apache.log4j.Logger;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -33,37 +36,37 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.emf.codegen.CodeGenPlugin;
import org.eclipse.emf.codegen.jet.JETEmitter;
import org.eclipse.emf.codegen.jet.JETException;
import org.eclipse.emf.common.CommonPlugin;
import org.eclipse.emf.common.util.URI;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.talend.commons.CommonsPlugin;
import org.talend.commons.exception.BusinessException;
import org.talend.commons.model.components.IComponentConstants;
import org.talend.commons.ui.runtime.CommonUIPlugin;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.commons.utils.StringUtils;
import org.talend.commons.utils.io.IOUtils;
import org.talend.commons.utils.time.TimeMeasure;
import org.talend.core.CorePlugin;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.IService;
import org.talend.core.PluginChecker;
import org.talend.core.language.ECodeLanguage;
import org.talend.core.language.LanguageManager;
import org.talend.core.model.components.ComponentCompilations;
import org.talend.core.model.components.ComponentUtilities;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.components.IComponentFileNaming;
import org.talend.core.model.components.IComponentsFactory;
import org.talend.core.model.temp.ECodePart;
import org.talend.core.ui.branding.IBrandingService;
import org.talend.core.utils.AccessingEmfJob;
import org.talend.designer.codegen.CodeGeneratorActivator;
import org.talend.designer.codegen.ICodeGeneratorService;
import org.talend.designer.codegen.config.CodeGeneratorProgressMonitor;
import org.talend.designer.codegen.config.EInternalTemplate;
import org.talend.designer.codegen.config.JetBean;
import org.talend.designer.codegen.config.LightJetBean;
@@ -133,18 +136,23 @@ public final class CodeGeneratorEmittersPoolFactory {
jetFilesCompileFail.clear();
IProgressMonitor monitorWrap = null;
monitorWrap = new NullProgressMonitor();
boolean headless = CommonUIPlugin.isFullyHeadless();
if (!headless) {
monitorWrap = new CodeGeneratorProgressMonitor(delegateMonitor);
} else {
monitorWrap = new NullProgressMonitor();
}
ECodeLanguage codeLanguage = LanguageManager.getCurrentLanguage();
initializeJetEmittersProject(monitorWrap);
TimeMeasure.step("initialize Jet Emitters", "initialize JET Project"); //$NON-NLS-1$ //$NON-NLS-2$
CodeGeneratorInternalTemplatesFactory templatesFactory = CodeGeneratorInternalTemplatesFactoryProvider
.getInstance();
templatesFactory.setCurrentLanguage(codeLanguage);
templatesFactory.init();
IComponentsFactory componentsFactory = ComponentsFactoryProvider.getInstance();
componentsFactory.getComponents();
long startTime = System.currentTimeMillis();
@@ -155,7 +163,6 @@ public final class CodeGeneratorEmittersPoolFactory {
List<TemplateUtil> templates = templatesFactory.getTemplates();
Set<IComponent> components = componentsFactory.getComponents();
TimeMeasure.step("initialize Jet Emitters", "getComponents"); //$NON-NLS-1$ //$NON-NLS-2$
monitorWrap.beginTask(Messages.getString("CodeGeneratorEmittersPoolFactory.initMessage"), //$NON-NLS-1$
(2 * templates.size() + 5 * components.size()));
@@ -170,7 +177,6 @@ public final class CodeGeneratorEmittersPoolFactory {
monitorBuffer = 0;
}
}
TimeMeasure.step("initialize Jet Emitters", "initialize jet beans from templates"); //$NON-NLS-1$ //$NON-NLS-2$
if (components != null) {
ECodePart codePart = ECodePart.MAIN;
@@ -185,12 +191,10 @@ public final class CodeGeneratorEmittersPoolFactory {
}
}
}
TimeMeasure.step("initialize Jet Emitters", "initialize jet beans from components"); //$NON-NLS-1$ //$NON-NLS-2$
monitorWrap.worked(monitorBuffer);
initializeEmittersPool(jetBeans, codeLanguage, monitorWrap);
monitorWrap.done();
TimeMeasure.step("initialize Jet Emitters", "initialize and generate each jet emitters"); //$NON-NLS-1$ //$NON-NLS-2$
if (!CommonUIPlugin.isFullyHeadless()) {
Job job = new Job(Messages.getString("CodeGeneratorEmittersPoolFactory.updatePaletteForEditors")) { //$NON-NLS-1$
@@ -198,7 +202,7 @@ public final class CodeGeneratorEmittersPoolFactory {
@Override
protected IStatus run(IProgressMonitor monitor) {
CorePlugin.getDefault().getDesignerCoreService()
.synchronizeDesignerUI(new PropertyChangeEvent(this, IComponentConstants.NORMAL, null, null));
.synchronizeDesignerUI(new PropertyChangeEvent(this, ComponentUtilities.NORMAL, null, null));
return Status.OK_STATUS;
}
@@ -223,17 +227,15 @@ public final class CodeGeneratorEmittersPoolFactory {
TimeMeasure.measureActive = false;
return new Status(IStatus.ERROR, CodeGeneratorActivator.PLUGIN_ID,
Messages.getString("CodeGeneratorEmittersPoolFactory.initialException"), e); //$NON-NLS-1$
} finally {
try {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IProject project = workspace.getRoot().getProject(JET_PROJECT);
project.build(IncrementalProjectBuilder.AUTO_BUILD, null);
} catch (CoreException e) {
ExceptionHandler.process(e);
}
}
// finally {
// try {
// IWorkspace workspace = ResourcesPlugin.getWorkspace();
// IProject project = workspace.getRoot().getProject(JET_PROJECT);
// project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, null);
// TimeMeasure.step("initialize Jet Emitters", "build project .JETEmitters"); //$NON-NLS-1$ //$NON-NLS-2$
// } catch (CoreException e) {
// ExceptionHandler.process(e);
// }
// }
TimeMeasure.end("initialize Jet Emitters"); //$NON-NLS-1$
TimeMeasure.display = false;
TimeMeasure.displaySteps = false;
@@ -288,15 +290,21 @@ public final class CodeGeneratorEmittersPoolFactory {
project.open(new SubProgressMonitor(progressMonitor, 5));
project.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(progressMonitor, 1));
}
IProjectDescription description = project.getDescription();
// only in case it's one old workspace and got no nature defined.
if (!ArrayUtils.contains(description.getNatureIds(), JavaCore.NATURE_ID)) {
description.setNatureIds(new String[] { JavaCore.NATURE_ID });
project.setDescription(description, new SubProgressMonitor(progressMonitor, 1));
}
}
};
public static Job initialize() {
Job job = new Job(Messages.getString("CodeGeneratorEmittersPoolFactory.initMessage")) { //$NON-NLS-1$
Job job = new AccessingEmfJob(Messages.getString("CodeGeneratorEmittersPoolFactory.initMessage")) { //$NON-NLS-1$
@Override
protected IStatus run(IProgressMonitor monitor) {
protected IStatus doRun(IProgressMonitor monitor) {
synchronized (delegateMonitor) {
if (jobRunnable == null) {
jobRunnable = new JobRunnable(Messages.getString("CodeGeneratorEmittersPoolFactory.codeThread")); //$NON-NLS-1$
@@ -324,8 +332,8 @@ public final class CodeGeneratorEmittersPoolFactory {
}
};
job.setUser(false);
job.setPriority(Job.LONG);
job.setUser(true);
job.setPriority(Job.INTERACTIVE);
job.schedule();
job.wakeUp(); // start as soon as possible
@@ -419,9 +427,6 @@ public final class CodeGeneratorEmittersPoolFactory {
if (component.getAvailableCodeParts().contains(ECodePart.MRCODE)) {
initComponent(codeLanguage, jetBeans, ECodePart.MRCODE, component);
}
if (component.getAvailableCodeParts().contains(ECodePart.MRJOBFOOTER)) {
initComponent(codeLanguage, jetBeans, ECodePart.MRJOBFOOTER, component);
}
if (component.getAvailableCodeParts().contains(ECodePart.MRCONFIG)) {
initComponent(codeLanguage, jetBeans, ECodePart.MRCONFIG, component);
}
@@ -660,12 +665,7 @@ public final class CodeGeneratorEmittersPoolFactory {
*/
public static JETEmitter getJETEmitter(JetBean jetBean) {
if (emitterPool == null || (!isInitialized() && !isInitializeStart())) {
try {
new CodeGeneratorManager().initTemplate();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
initialize();
}
// only for components, not for /resources jet file, if it compile error, it will get the
@@ -775,37 +775,4 @@ public final class CodeGeneratorEmittersPoolFactory {
public static boolean isInitializeStart() {
return initializeStart;
}
static class CodeGeneratorManager {
private IStatus status;
public IStatus initTemplate() throws InterruptedException {
final Job initializeTemplatesJob = initialize();
Job.getJobManager().addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
if (event.getJob().equals(initializeTemplatesJob)) {
setStatus(event.getResult());
}
}
});
while (status == null) {
Thread.sleep(10);
}
return status;
}
private void setStatus(IStatus result) {
this.status = result;
}
private ICodeGeneratorService getCodeGenerationService() {
IService service = GlobalServiceRegister.getDefault().getService(ICodeGeneratorService.class);
return (ICodeGeneratorService) service;
}
}
}

View File

@@ -17,6 +17,7 @@ import java.io.File;
import org.apache.log4j.Logger;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
@@ -24,6 +25,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.emf.codegen.CodeGenPlugin;
import org.eclipse.jdt.core.JavaCore;
import org.talend.core.language.ECodeLanguage;
/**
@@ -75,7 +77,11 @@ public final class EmfEmittersPersistenceFactory {
project.create(new SubProgressMonitor(progressMonitor, 1));
progressMonitor.subTask(CodeGenPlugin.getPlugin().getString("_UI_JETCreatingProject_message", //$NON-NLS-1$
new Object[] { project.getName() }));
IProjectDescription description = workspace.newProjectDescription(project.getName());
description.setNatureIds(new String[] { JavaCore.NATURE_ID });
description.setLocation(null);
project.open(new SubProgressMonitor(progressMonitor, 1));
project.setDescription(description, new SubProgressMonitor(progressMonitor, 1));
}
} catch (CoreException e) {
log.error(e.getMessage(), e);

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -1,3 +1,3 @@
Exchange=Exchange
Exchange=Training
DownloadComponenentsAction.Label=\u4E0B\u8F7D\u9009\u62E9\u7684\u7EC4\u4EF6
RefreshComponenentsAction.Label=\u5237\u65B0\u7EC4\u4EF6\u6E05\u5355

View File

@@ -1,7 +1,4 @@
AvailableExtensionsComposite.FilterTitle=Filter
AvailableExtensionsComposite.ViewDetail.installOperateStatus=Installieren
AvailableExtensionsComposite.ViewDetail.WriteReview=Bericht schreiben
AvailableExtensionsComposite.ViewDetail.InsertionReviewFailureTip=Sie sollten es prüfen.
DownloadedExtensionsComposite.installedOperateStatus=Installiert
DownloadedExtensionsComposite.updateOperateStatus=Update
MyExtensionsComposite.UpdateOperateStatus=Update
@@ -9,10 +6,12 @@ MyExtensionsComposite.ModifyOperateStatus=Modifiziere
MyExtensionsComposite.DeleteOperateStatus=Löschen
MyExtensionsComposite.Form.Description=Beschreibung
MyExtensionsComposite.Form.Upload.Browse=Durchsuchen...
DeleteExtensionJob.DeleteFailure=Löschung fehlgeschlagen
DeleteExtensionJob.DeleteFailureTip=Sie sollten es prüfen.
DownloadComponenentsAction.DownloadTaskName=Lade Datei von URL:
ImportExchangeDialog.WARNING=Warnung
ImportExchangeDialog.AUTHOR_NAME=Name des Autors
ImportExchangeDialog.LATEST_REVISION=Aktuellste Revision
ImportExchangeDialog.JOB_BUTTON=Job-Design
ImportExchangeDialog.ROUTINES_BUTTON=Routinen
ImportExchangeDialog.ROUTINES_PROGRESSBAR=Lade einige Routinen...
ImportExchangeDialog.TEMPLATES_BUTTON=SQL Templates
ImportExchangeDialog.OPERATION_CANCELLED=Operation wurde abgebrochen

View File

@@ -19,5 +19,12 @@ ImportExchangeDialog.EXTENSION_NAME=\u038C\u03BD\u03BF\u03BC\u03B1 \u0395\u03C0\
ImportExchangeDialog.AUTHOR_NAME=\u038C\u03BD\u03BF\u03BC\u03B1 \u03A3\u03C5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AD\u03B1
ImportExchangeDialog.LATEST_REVISION=\u03A4\u03B5\u03BB\u03B5\u03C5\u03C4\u03B1\u03AF\u03B1 \u0391\u03BD\u03B1\u03B8\u03B5\u03CE\u03C1\u03B7\u03C3\u03B7
ImportExchangeDialog.EXTENSION_DESCRIPTION=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u0395\u03C0\u03AD\u03BA\u03C4\u03B1\u03C3\u03B7\u03C2
ImportExchangeDialog.JOB_BUTTON=\u03A3\u03C7\u03AD\u03B4\u03B9\u03B1 \u0395\u03C1\u03B3\u03B1\u03C3\u03B9\u03CE\u03BD
ImportExchangeDialog.DOWNLOAD_JOB=\u039B\u03AE\u03C8\u03B7 \u039A\u03AC\u03C0\u03BF\u03B9\u03C9\u03BD \u03A3\u03C7\u03B5\u03B4\u03AF\u03C9\u03BD \u0395\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1\u03C2...
ImportExchangeDialog.ROUTINES_BUTTON=\u03A1\u03BF\u03C5\u03C4\u03AF\u03BD\u03B5\u03C2
ImportExchangeDialog.ROUTINES_PROGRESSBAR=\u039B\u03AE\u03C8\u03B7 \u039A\u03AC\u03C0\u03BF\u03B9\u03C9\u03BD \u03A1\u03BF\u03C5\u03C4\u03B9\u03BD\u03CE\u03BD...
ImportExchangeDialog.TEMPLATES_BUTTON=\u03A0\u03C1\u03CC\u03C4\u03C5\u03C0\u03B1 SQL
ImportExchangeDialog.TEMPLATES_PROGRESSBAR=\u039B\u03AE\u03C8\u03B7 \u039A\u03AC\u03C0\u03BF\u03B9\u03C9\u03BD \u03A0\u03C1\u03BF\u03C4\u03CD\u03C0\u03C9\u03BD SQL...
ImportExchangeDialog.REFRESH_BUTTON=\u0391\u03BD\u03B1\u03BD\u03AD\u03C9\u03C3\u03B7
ImportExchangeDialog.NOT_SELECT_BUTTON=\u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE \u03BA\u03AC\u03BD\u03C4\u03B5 \u03BC\u03B9\u03B1 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03C0\u03C1\u03CE\u03C4\u03B1
ImportExchangeDialog.OPERATION_CANCELLED=\u0397 \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B1\u03BA\u03C5\u03C1\u03CE\u03B8\u03B7\u03BA\u03B5

View File

@@ -89,8 +89,15 @@ ImportExchangeDialog.EXTENSION_NAME=Extension Name
ImportExchangeDialog.AUTHOR_NAME=Author Name
ImportExchangeDialog.LATEST_REVISION=Latest Revision
ImportExchangeDialog.EXTENSION_DESCRIPTION=Extension Description
ImportExchangeDialog.download.components=Download Components Please Wait\!
ImportExchangeDialog.JOB_BUTTON=Job Designs
ImportExchangeDialog.DOWNLOAD_JOB=Download Some Job Designs...
ImportExchangeDialog.ROUTINES_BUTTON=Routines
ImportExchangeDialog.ROUTINES_PROGRESSBAR=Download Some Routines...
ImportExchangeDialog.TEMPLATES_BUTTON=SQL Templates
ImportExchangeDialog.TEMPLATES_PROGRESSBAR=Download Some SQL Templates...
ImportExchangeDialog.REFRESH_BUTTON=Refresh
ImportExchangeDialog.REFRESHING_PROGRESSBAR=Refreshing\! Please Wait.....
ImportExchangeDialog.NOT_SELECT_BUTTON=Please select a choice first
ImportExchangeDialog.OPERATION_CANCELLED=Operation was cancelled
Exchange.logon.error=Exchange user have not been registered, please register using the preferences .
ImportExchangeDialog.download.extensions=Download extensions\! Please Wait\!

View File

@@ -3,19 +3,17 @@ AvailableExtensionsComposite.ExtensionName=Nom de l'extension
AvailableExtensionsComposite.Version=Version
AvailableExtensionsComposite.Rating=Note
AvailableExtensionsComposite.Author=Auteur
AvailableExtensionsComposite.FilterTitle=Filtre
AvailableExtensionsComposite.ViewDetail.installOperateStatus=Installer
AvailableExtensionsComposite.ViewDetail.WriteReview=Donnez votre avis
AvailableExtensionsComposite.ViewDetail.InsertionReviewFailureTip=Veuillez vérifier.
DownloadedExtensionsComposite.DownloadedVersion=Version téléchargée
DownloadedExtensionsComposite.DownloadDate=Date de téléchargement
DownloadedExtensionsComposite.installedOperateStatus=Installé
DownloadedExtensionsComposite.updateOperateStatus=UPDATE
DownloadedExtensionsComposite.updateOperateStatus=Mettre à jour
MyExtensionsComposite.Version=Version
MyExtensionsComposite.UploadDate=Date du chargement
MyExtensionsComposite.AddNewExtensionTitle=Ajouter une nouvelle extension
MyExtensionsComposite.UpLoadNewVersionOperateStatus=Charger une nouvelle version
MyExtensionsComposite.UpdateOperateStatus=UPDATE
MyExtensionsComposite.ModifyOperateStatus=Modifier
MyExtensionsComposite.DeleteOperateStatus=DELETE
MyExtensionsComposite.Form.Return=Retourner
@@ -71,7 +69,14 @@ ImportExchangeDialog.EXTENSION_NAME=Nom de l'extension
ImportExchangeDialog.AUTHOR_NAME=Nom de l'auteur
ImportExchangeDialog.LATEST_REVISION=Dernière révision
ImportExchangeDialog.EXTENSION_DESCRIPTION=Description de l'extension
ImportExchangeDialog.download.components=Téléchargement de composants, veuillez patienter.
ImportExchangeDialog.JOB_BUTTON=Job Designs
ImportExchangeDialog.DOWNLOAD_JOB=Télécharger des Jobs Designs...
ImportExchangeDialog.ROUTINES_BUTTON=Routines
ImportExchangeDialog.ROUTINES_PROGRESSBAR=Télécharger des Routines...
ImportExchangeDialog.TEMPLATES_PROGRESSBAR=Télécharger des modèles SQL...
ImportExchangeDialog.REFRESH_BUTTON=Rafraîchir
ImportExchangeDialog.REFRESHING_PROGRESSBAR=Rafraîchissement, veuillez patienter..
ImportExchangeDialog.NOT_SELECT_BUTTON=Merci de d'abord sélectionner un choix
ImportExchangeDialog.OPERATION_CANCELLED=L'opération a été annulée
Exchange.logon.error=L'utilisateur de l'Exchange n'est pas enregistré. Enregistrez-vous via les Préférences.

View File

@@ -14,4 +14,7 @@ ImportExchangeDialog.dialogTitle=Seleziona oggetto da Talend Exchange
ImportExchangeDialog.WARNING=Avvertimento
ImportExchangeDialog.LATEST_REVISION=Ultima Revisione
ImportExchangeDialog.EXTENSION_DESCRIPTION=Descrizione estensione
ImportExchangeDialog.JOB_BUTTON=Progetti job
ImportExchangeDialog.DOWNLOAD_JOB=Scarica alcuni Job Designs...
ImportExchangeDialog.ROUTINES_BUTTON=Routine
ImportExchangeDialog.REFRESH_BUTTON=Aggiorna

View File

@@ -88,7 +88,14 @@ ImportExchangeDialog.EXTENSION_NAME=Extension\u540D
ImportExchangeDialog.AUTHOR_NAME=\u4f5c\u6210\u8005\u540d
ImportExchangeDialog.LATEST_REVISION=\u6700\u65B0\u30EA\u30D3\u30B8\u30E7\u30F3
ImportExchangeDialog.EXTENSION_DESCRIPTION=Extension\u8AAC\u660E
ImportExchangeDialog.download.components=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D\u3067\u3059\u3001\u66AB\u304F\u304A\u5F85\u3061\u4E0B\u3055\u3044\u3002
ImportExchangeDialog.JOB_BUTTON=\u30B8\u30E7\u30D6
ImportExchangeDialog.DOWNLOAD_JOB=\u30B8\u30E7\u30D6\u30C7\u30B6\u30A4\u30F3\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u307E\u3059\u2026
ImportExchangeDialog.ROUTINES_BUTTON=\u30EB\u30FC\u30C1\u30F3
ImportExchangeDialog.ROUTINES_PROGRESSBAR=\u30EB\u30FC\u30C1\u30F3\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9...
ImportExchangeDialog.TEMPLATES_BUTTON=SQL\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8
ImportExchangeDialog.TEMPLATES_PROGRESSBAR=SQL\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9...
ImportExchangeDialog.REFRESH_BUTTON=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5
ImportExchangeDialog.NOT_SELECT_BUTTON=\u5148\u306B\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002
ImportExchangeDialog.OPERATION_CANCELLED=\u64CD\u4F5C\u3092\u30AD\u30E3\u30F3\u30BB\u30EB
Exchange.logon.error=Exchange\u30E6\u30FC\u30B6\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u521D\u671F\u8A2D\u5B9A\u3092\u4F7F\u7528\u3057\u3066\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\u3002
ImportExchangeDialog.download.extensions=\u62E1\u5F35\u6A5F\u80FD\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D\u3067\u3059\u3001\u66AB\u304F\u304A\u5F85\u3061\u4E0B\u3055\u3044\u3002

View File

@@ -1,3 +1,4 @@
DownloadedExtensionsComposite.updateOperateStatus=UPDATE
MyExtensionsComposite.UpdateOperateStatus=UPDATE
ImportExchangeDialog.TEMPLATES_BUTTON=SQL \u0161abloni
ImportExchangeDialog.REFRESH_BUTTON=Osve\u017Eavanje

View File

@@ -1,4 +1,4 @@
ExchangeView.Exchange=Exchange
ExchangeView.Exchange=Training
AvailableExtensionsComposite.ExtensionName=\u6269\u5C55\u540D
AvailableExtensionsComposite.Version=\u7248\u672C
AvailableExtensionsComposite.Author=\u4F5C\u8005
@@ -14,11 +14,14 @@ MyExtensionsComposite.Form.Compatibility.Version=\u7248\u672C
MyExtensionsComposite.Form.Description=\u5FC5\u8981\u7684
MyExtensionsComposite.Form.Upload=\u4E0A\u4F20
MyExtensionsComposite.Form.Upload.Browse=\u6D4F\u89C8...
DownloadComponenentsAction.installExchange=\u5B89\u88C5\u6765\u81EA Exchange \u4EA4\u6D41\u4E2D\u5FC3\u7684\u7EC4\u4EF6
DownloadComponenentsAction.DownloadTaskName=\u4ECEURL\u4E0B\u8F7D\u6587\u4EF6
ImportExchangeDialog.dialogTitle=\u4ECETalend Exchange\u9009\u62E9\u4E00\u4E2A\u9879\u76EE
ImportExchangeDialog.WARNING=\u8B66\u544A
ImportExchangeDialog.EXTENSION_NAME=\u6269\u5C55\u540D
ImportExchangeDialog.LATEST_REVISION=\u6700\u65B0\u7248\u672C
ImportExchangeDialog.JOB_BUTTON=\u4F5C\u4E1A\u8BBE\u8BA1
ImportExchangeDialog.DOWNLOAD_JOB=\u4E0B\u8F7D\u4F5C\u4E1A\u8BBE\u8BA1
ImportExchangeDialog.ROUTINES_BUTTON=\u5E38\u89C4
ImportExchangeDialog.TEMPLATES_PROGRESSBAR=\u4E0B\u8F7DSQL\u6A21\u677F......
ImportExchangeDialog.REFRESH_BUTTON=\u5237\u65B0
ImportExchangeDialog.OPERATION_CANCELLED=\u64CD\u4F5C\u5DF2\u53D6\u6D88

View File

@@ -1,11 +1,11 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Exchange Plug-in
Bundle-Name: Exchange plugin
Bundle-SymbolicName: org.talend.designer.components.exchange;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: org.talend.designer.components.exchange.ExchangePlugin
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui,
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.apache.log4j,
org.apache.commons.collections,
org.apache.commons.logging,
@@ -13,9 +13,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.apache.commons.io,
org.apache.commons.lang,
org.apache.commons.httpclient,
org.talend.commons.ui,
org.talend.core,
org.talend.core.ui,
org.talend.utils,
org.talend.librariesmanager,
org.talend.libraries.javacsv;resolution:=optional,

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -84,38 +84,25 @@
<!-- validate the createNewExtension text start-->
var labelValidate = document.getElementById("extension_label").value;
var lastVersionAvailableValidate = document.getElementById("lastVersionAvailable").value;
var filename = document.getElementById("filename").value;
var isSkipPage = true;
if(labelValidate==0){
alert("Extension Title is empty");
isSkipPage = false;
alert("Extension Title is empty");
}else if(labelValidate=="null"){
alert("Extension Title can not be null");
isSkipPage = false;
}else if(lastVersionAvailableValidate==0){
alert("Initial Version is empty");
isSkipPage = false;
}else if(lastVersionAvailableValidate=="null"){
alert("Initial Version can not be null");
isSkipPage = false;
}else if(filename==0){
alert("Please input a vaild File path");
isSkipPage = false;
}
<!-- validate the createNewExtension text end-->
if (isSkipPage == true) {
var listVersionCompatibles = "listVersionCompatibles:" + "'" + checkedType + "'";
var filter = "filter:" + "'" + filtervalue + "'";
var filename = "filename:" + "'" + document.getElementById("filename").value + "'";
filename = filename.replaceAll2Excep("\\", "/");
var jsonObj = "{" + label + "," + lastVersionAvailable + "," + description + "," + listVersionCompatibles + "," + filter + "," + filename + "}"
var url = prefix + "&amp;extensionValues=" + jsonObj;
document.getElementById('commit').href = url;
window.location.href = document.getElementById('commit').href;
}
var listVersionCompatibles = "listVersionCompatibles:" + "'" + checkedType + "'";
var filter = "filter:" + "'" + filtervalue + "'";
var filename = "filename:" + "'" + document.getElementById("filename").value + "'";
filename = filename.replaceAll2Excep("\\", "/");
var jsonObj = "{" + label + "," + lastVersionAvailable + "," + description + "," + listVersionCompatibles + "," + filter + "," + filename + "}"
var url = prefix + "&amp;extensionValues=" + jsonObj;
document.getElementById('commit').href = url;
}
function updateReWriteUrl() {
@@ -146,27 +133,21 @@
<!-- validate the updateExtension text start-->
var lastVersionAvailable_updateValidate = document.getElementById("lastVersionAvailable_update").value;
var isSkipPage = true;
if(lastVersionAvailable_updateValidate==0){
alert("New Version is empty");
var isSkipPage = false;
}else if(lastVersionAvailable_updateValidate=="null"){
alert("New Version can not be null");
var isSkipPage = false;
}
<!-- validate the updateExtension text end-->
if (isSkipPage == true) {
var listVersionCompatibles = "listVersionCompatibles:" + "'" + checkedType + "'";
var filter = "filter:" + "'" + filtervalue + "'";
var filename = "filename:" + "'" + document.getElementById("filename_update").value + "'";
filename = filename.replaceAll2Excep("\\", "/");
var jsonObj = "{" + lastVersionAvailable + "," + listVersionCompatibles + "," + filter + "," + filename + "}"
var listVersionCompatibles = "listVersionCompatibles:" + "'" + checkedType + "'";
var filter = "filter:" + "'" + filtervalue + "'";
var filename = "filename:" + "'" + document.getElementById("filename_update").value + "'";
filename = filename.replaceAll2Excep("\\", "/");
var jsonObj = "{" + lastVersionAvailable + "," + listVersionCompatibles + "," + filter + "," + filename + "}"
var url = prefix + "&amp;extensionValues=" + jsonObj;
document.getElementById('commit_update').href = url;
window.location.href = document.getElementById('commit_update').href;
}
var url = prefix + "&amp;extensionValues=" + jsonObj;
document.getElementById('commit_update').href = url;
}
@@ -479,7 +460,7 @@
<td ></td>
<td>
<a class="xh" href="" id="commit" style="margin-left:5px;">
<button onclick="createNewExtensionWriteUrl()" style="width: 176px">
<button onclick="window.location.href=document.getElementById('commit').href" onmouseover="createNewExtensionWriteUrl()" style="width: 176px">
Add Extension
</button>
</a>
@@ -538,7 +519,7 @@
<td ></td>
<td>
<a class="xh" href="" id="commit_update" style="margin-left:5px;">
<button onclick="updateReWriteUrl()" style="width: 176px">
<button onclick="window.location.href=document.getElementById('commit_update').href" onmouseover="updateReWriteUrl()" style="width: 176px">
Upload Extension
</button>
</a>

View File

@@ -105,7 +105,19 @@ ImportExchangeDialog.EXTENSION_NAME=Extension Name
ImportExchangeDialog.AUTHOR_NAME=Author Name
ImportExchangeDialog.LATEST_REVISION=Latest Revision
ImportExchangeDialog.EXTENSION_DESCRIPTION=Extension Description
ImportExchangeDialog.download.extensions=Download extensions\! Please Wait\!
ImportExchangeDialog.download.components=Download Components Please Wait\!
ImportExchangeDialog.JOB_BUTTON=Job Designs
ImportExchangeDialog.DOWNLOAD_JOB=Download Some Job Designs...
ImportExchangeDialog.ROUTINES_BUTTON=Routines
ImportExchangeDialog.ROUTINES_PROGRESSBAR=Download Some Routines...
ImportExchangeDialog.TEMPLATES_BUTTON=SQL Templates
ImportExchangeDialog.TEMPLATES_PROGRESSBAR=Download Some SQL Templates...
ImportExchangeDialog.REFRESH_BUTTON=Refresh
ImportExchangeDialog.REFRESHING_PROGRESSBAR=Refreshing\! Please Wait.....
ImportExchangeDialog.NOT_SELECT_BUTTON=Please select a choice first
ImportExchangeDialog.OPERATION_CANCELLED=Operation was cancelled

View File

@@ -21,9 +21,8 @@ import java.util.zip.ZipFile;
import org.apache.commons.io.FileUtils;
import org.talend.commons.utils.io.FilesUtils;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.CorePlugin;
import org.talend.core.language.LanguageManager;
import org.talend.core.service.IComponentsLocalProviderService;
/**
*
@@ -67,15 +66,8 @@ public class ComponentInstaller {
rootFolder.mkdir();
// move some common use codes for unzipping file to FilesUtils
FilesUtils.unzip(zipFile, targetFolder);
boolean valid = false;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IComponentsLocalProviderService.class)) {
IComponentsLocalProviderService service = (IComponentsLocalProviderService) GlobalServiceRegister.getDefault()
.getService(IComponentsLocalProviderService.class);
if (service != null) {
valid = service.validateComponent(rootFolder.getAbsolutePath(), LanguageManager.getCurrentLanguage());
}
}
boolean valid = CorePlugin.getDefault().getComponentsLocalProviderService()
.validateComponent(rootFolder.getAbsolutePath(), LanguageManager.getCurrentLanguage());
if (!valid) {
if (rootFolder.exists() && rootFolder.isDirectory()) {
for (File f : rootFolder.listFiles()) {

View File

@@ -46,8 +46,7 @@ import org.talend.core.download.DownloadHelper;
import org.talend.core.download.DownloadListener;
import org.talend.core.language.ECodeLanguage;
import org.talend.core.language.LanguageManager;
import org.talend.core.model.components.ComponentManager;
import org.talend.core.model.components.ComponentPaletteUtilities;
import org.talend.core.model.components.ComponentUtilities;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.components.IComponentsFactory;
import org.talend.designer.codegen.ICodeGeneratorService;
@@ -61,6 +60,7 @@ import org.talend.designer.components.exchange.ui.views.ExchangeManager;
import org.talend.designer.components.exchange.util.ExchangeUtils;
import org.talend.designer.components.exchange.util.ExchangeWebService;
import org.talend.designer.components.exchange.util.WebserviceStatus;
import org.talend.designer.core.model.components.manager.ComponentManager;
import org.talend.designer.core.ui.AbstractMultiPageTalendEditor;
import org.talend.designer.core.ui.editor.AbstractTalendEditor;
import org.talend.repository.model.ComponentsFactoryProvider;
@@ -75,7 +75,6 @@ public class DownloadComponenentsAction extends Action implements IIntroAction {
private List<ComponentExtension> fDownloadedComponents;
@Override
public void run() {
try {
Job job = new DownloadJob(ExchangeManager.getInstance().getSelectedExtension());
@@ -88,7 +87,6 @@ public class DownloadComponenentsAction extends Action implements IIntroAction {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
updateUI(event);
}
@@ -124,7 +122,7 @@ public class DownloadComponenentsAction extends Action implements IIntroAction {
@Override
public void done(IJobChangeEvent event) {
ComponentPaletteUtilities.setSkipUpdatePalette(false);
ComponentUtilities.setSkipUpdatePalette(false);
}
});
RefreshComponenentsAction action = new RefreshComponenentsAction();
@@ -136,7 +134,6 @@ public class DownloadComponenentsAction extends Action implements IIntroAction {
FileFilter propertiesFilter = new FileFilter() {
// gcui:search xml file.
@Override
public boolean accept(File file) {
if (LanguageManager.getCurrentLanguage() == ECodeLanguage.JAVA) {
return file.getName().endsWith("_java.xml"); //$NON-NLS-1$
@@ -208,7 +205,7 @@ public class DownloadComponenentsAction extends Action implements IIntroAction {
AbstractMultiPageTalendEditor editor = (AbstractMultiPageTalendEditor) part;
AbstractTalendEditor talendEditor = editor.getTalendEditor();
try {
ComponentPaletteUtilities.setSkipUpdatePalette(true);
ComponentUtilities.setSkipUpdatePalette(true);
talendEditor.selectPaletteEntry(componentName);
} catch (Exception e) {
ExceptionHandler.process(e);
@@ -306,7 +303,6 @@ public class DownloadComponenentsAction extends Action implements IIntroAction {
} else {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
}
});
@@ -340,11 +336,9 @@ public class DownloadComponenentsAction extends Action implements IIntroAction {
return false;
}
@Override
public void downloadComplete() {
}
@Override
public void downloadProgress(DownloadHelper downloader, int bytesRead) {
if (fMonitor.isCanceled()) {
// cancel download
@@ -356,7 +350,6 @@ public class DownloadComponenentsAction extends Action implements IIntroAction {
fMonitor.worked(bytesRead);
}
@Override
public void downloadStart(int totalSize) {
fProgressLabel = "/" + toKbFormat(totalSize); //$NON-NLS-1$
fBytesDownloaded = 0;
@@ -368,7 +361,6 @@ public class DownloadComponenentsAction extends Action implements IIntroAction {
}
}
@Override
public void run(IIntroSite site, Properties params) {
run();
}

View File

@@ -21,8 +21,8 @@ import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.core.model.general.IExchangeService;
import org.talend.core.model.general.Project;
import org.talend.core.service.IExchangeService;
import org.talend.designer.components.exchange.i18n.Messages;
import org.talend.designer.components.exchange.ui.views.ExchangeEditorInput;
import org.talend.designer.components.exchange.util.ExchangeWebService;

View File

@@ -17,7 +17,6 @@ import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.core.runtime.IPath;
@@ -55,7 +54,6 @@ import org.talend.core.download.DownloadHelper;
import org.talend.designer.components.exchange.ExchangePlugin;
import org.talend.designer.components.exchange.i18n.Messages;
import org.talend.designer.components.exchange.jobs.ComponentSearcher;
import org.talend.designer.components.exchange.model.Category;
import org.talend.designer.components.exchange.model.ComponentExtension;
import org.talend.designer.components.exchange.model.VersionRevision;
import org.talend.designer.components.exchange.util.ExchangeUtils;
@@ -68,45 +66,54 @@ import org.talend.designer.components.exchange.util.ExchangeWebService;
*/
public class ImportExchangeDialog extends Dialog {
private static String category;
private ImportExchangeProperty downloadproperty;
private Button jobButton;
private Button templatesButton;
private Button routinesButton;
private Button refresh;
private static String type;
private static String version;
public Combo categoryCombo;
private URL url;
private String selectFile;
private String progressBarMessage;
private File tempFile;
public Combo versionCombo;
public static final String TOS_VERSION_FILTER = "TOS_VERSION_FILTER"; //$NON-NLS-1$
private List<Category> fCategorys = new ArrayList<Category>();
private List<VersionRevision> fVersionRevisions = new ArrayList<VersionRevision>();
private List<ComponentExtension> compatible;
public ScrolledComposite scrolledCompositeFileViewer;
private ImportExchangeProperty downloadproperty;
private String selectFile;
private String progressBarMessage;
private URL url;
private File tempFile;
public Table table;
public String getSelectFile() {
return selectFile;
}
public void setSelectFile(String selectFile) {
this.selectFile = selectFile;
}
protected ImportExchangeDialog(Shell shell) {
super(shell);
this.setShellStyle(this.getShellStyle() | SWT.MIN | SWT.MAX | SWT.RESIZE);
// init
Display.getDefault().syncExec(new Runnable() {
public void run() {
fCategorys.clear();
fCategorys = ExchangeWebService.searchCategoryExtensionJSONArray(ExchangeUtils.TYPEEXTENSION);
fVersionRevisions.clear();
fVersionRevisions = ExchangeWebService.searchVersionRevisionJSONArray(ExchangeUtils.TYPEEXTENSION);
}
@@ -125,18 +132,25 @@ public class ImportExchangeDialog extends Dialog {
layout.marginWidth = 0;
exchangeDialogCom.setLayout(layout);
GridData gridData = new GridData(GridData.FILL_BOTH);
exchangeDialogCom.setLayoutData(gridData);
new ImportCompatibleEcoComponentsComposite(exchangeDialogCom, exchangeDialogCom.getShell(), false);
ImportCompatibleEcoComponentsComposite eco = new ImportCompatibleEcoComponentsComposite(exchangeDialogCom,
exchangeDialogCom.getShell(), false);
return parent;
}
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.FINISH_LABEL, true);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
}
@Override
protected void okPressed() {
IPath tempPath = new Path(System.getProperty("user.dir")).append("temp"); //$NON-NLS-1$ //$NON-NLS-2$
File pathFile = tempPath.toFile();
if (downloadproperty.getFileName() == null || downloadproperty.getFileName() == null) {
@@ -146,10 +160,12 @@ public class ImportExchangeDialog extends Dialog {
box.open();
return;
}
tempFile = new File(pathFile, downloadproperty.getFileName());
try {
url = new URL(downloadproperty.getDownloadUrl());
} catch (MalformedURLException e1) {
// e1.printStackTrace();
ExceptionHandler.process(e1);
}
if (!pathFile.exists()) {
@@ -184,6 +200,7 @@ public class ImportExchangeDialog extends Dialog {
}
selectFile = tempFile.toString();
super.okPressed();
}
@@ -193,7 +210,9 @@ public class ImportExchangeDialog extends Dialog {
*/
class ImportCompatibleEcoComponentsComposite extends Composite {
private static final int HEIGHT = 350;
private static final int HEIGHT = 300;
private static final int WIDTH = 500;
public ImportCompatibleEcoComponentsComposite(Composite parent, Shell shell, boolean init) {
super(parent, SWT.NONE);
@@ -201,13 +220,16 @@ public class ImportExchangeDialog extends Dialog {
}
public void createControls(Composite parent) {
setLayout(new GridLayout());
setLayout(clearGridLayoutSpace(new GridLayout(1, false)));
setLayoutData(new GridData(GridData.FILL_BOTH));
creatOptions(parent);
Composite tableComposite = new Composite(parent, SWT.NONE);
tableComposite.setLayout(new GridLayout());
GridData layoutData = new GridData(GridData.FILL_BOTH);
// layoutData.widthHint = WIDTH;
// layoutData.minimumWidth = WIDTH;
layoutData.heightHint = HEIGHT;
layoutData.minimumHeight = HEIGHT;
tableComposite.setLayoutData(layoutData);
@@ -276,19 +298,98 @@ public class ImportExchangeDialog extends Dialog {
layout.marginWidth = 5;
group.setLayout(layout);
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// Category
creatCategory(group);
category = categoryCombo.getText();
// Tos Version
String currentVersion = ExchangePlugin.getDefault().getPreferenceStore().getString("TOS_IMPORT_VERSION_FILTER");//$NON-NLS-1$
currentVersion = ExchangeUtils.getMainVersion(currentVersion);
final String temVersion = currentVersion;
jobButton = new Button(group, SWT.RADIO);
jobButton.setText(Messages.getString("ImportExchangeDialog.JOB_BUTTON")); //$NON-NLS-1$
jobButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (jobButton.getSelection() == true) {
type = "7"; //$NON-NLS-1$
if (version == null) {
if (versionCombo.getText() != null) {
version = versionCombo.getText();
} else {
version = temVersion;
}
}
progressBarMessage = Messages.getString("ImportExchangeDialog.DOWNLOAD_JOB"); //$NON-NLS-1$
findChoiceExchange();
}
}
});
templatesButton = new Button(group, SWT.RADIO);
templatesButton.setText(Messages.getString("ImportExchangeDialog.TEMPLATES_BUTTON")); //$NON-NLS-1$
templatesButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (templatesButton.getSelection() == true) {
type = "8"; //$NON-NLS-1$
if (version == null) {
if (versionCombo.getText() != null) {
version = versionCombo.getText();
} else {
version = temVersion;
}
}
progressBarMessage = Messages.getString("ImportExchangeDialog.TEMPLATES_PROGRESSBAR"); //$NON-NLS-1$
findChoiceExchange();
}
}
});
routinesButton = new Button(group, SWT.RADIO);
routinesButton.setText(Messages.getString("ImportExchangeDialog.ROUTINES_BUTTON")); //$NON-NLS-1$
routinesButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (routinesButton.getSelection() == true) {
type = "9"; //$NON-NLS-1$
if (version == null) {
if (versionCombo.getText() != null) {
version = versionCombo.getText();
} else {
version = temVersion;
}
}
progressBarMessage = Messages.getString("ImportExchangeDialog.ROUTINES_PROGRESSBAR"); //$NON-NLS-1$
findChoiceExchange();
}
}
});
creatTosVersionFilter(group, true);
version = versionCombo.getText();
// Refresh
Button refresh = new Button(group, SWT.PUSH);
refresh = new Button(group, SWT.PUSH);
refresh.setImage(ImageProvider.getImage(EImage.REFRESH_ICON));
refresh.setToolTipText(Messages.getString("ImportExchangeDialog.REFRESH_BUTTON"));//$NON-NLS-1$
//refresh.setText(Messages.getString("ImportExchangeDialog.REFRESH_BUTTON")); //$NON-NLS-1$
refresh.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (version == null || type == null) {
MessageBox box = new MessageBox(Display.getCurrent().getActiveShell(), SWT.ICON_WARNING | SWT.OK);
box.setText(Messages.getString("ImportExchangeDialog.WARNING")); //$NON-NLS-1$
box.setMessage(Messages.getString("ImportExchangeDialog.NOT_SELECT_BUTTON")); //$NON-NLS-1$
box.open();
return;
}
if (type != null && !jobButton.getSelection() && !templatesButton.getSelection()
&& !routinesButton.getSelection()) {
if (type == "7") { //$NON-NLS-1$
jobButton.setSelection(true);
} else if (type == "8") { //$NON-NLS-1$
templatesButton.setSelection(true);
} else if (type == "9") { //$NON-NLS-1$
routinesButton.setSelection(true);
}
}
progressBarMessage = Messages.getString("ImportExchangeDialog.REFRESHING_PROGRESSBAR"); //$NON-NLS-1$
findChoiceExchange();
}
@@ -297,46 +398,12 @@ public class ImportExchangeDialog extends Dialog {
}
public void creatCategory(Composite parent) {
Composite categoryComposite = new Composite(parent, SWT.NONE);
categoryComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
categoryComposite.setLayout(new GridLayout(2, false));
Label categoryLabel = new Label(categoryComposite, SWT.NONE);
categoryLabel.setText("Category");
GridData gridData = new GridData(SWT.Resize);
gridData.widthHint = 160;
categoryCombo = new Combo(categoryComposite, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.RESIZE);
categoryCombo.setLayoutData(gridData);
initCategoryCombo();
categoryCombo.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
public void widgetSelected(SelectionEvent e) {
progressBarMessage = Messages.getString("ImportExchangeDialog.download.extensions"); //$NON-NLS-1$
findChoiceExchange();
}
});
}
public void initCategoryCombo() {
if (categoryCombo.getItemCount() > 0) {
return;
}
Iterator<Category> cListIterator = fCategorys.iterator();
while (cListIterator.hasNext()) {
Category category = cListIterator.next();
// now hide the Category : Component ,Hadoop Configuration
if ("Component".equals(category.getCategoryName()) || "Hadoop Configuration".equals(category.getCategoryName())) {
cListIterator.remove();
continue;
}
categoryCombo.add(category.getCategoryName());
}
categoryCombo.select(0);
categoryCombo.pack();
public GridLayout clearGridLayoutSpace(GridLayout layout) {
layout.horizontalSpacing = 0;
layout.verticalSpacing = 0;
layout.marginWidth = 0;
layout.marginHeight = 0;
return layout;
}
public void creatTosVersionFilter(Composite parent, boolean isInitTosVersion) {
@@ -361,13 +428,7 @@ public class ImportExchangeDialog extends Dialog {
}
public void widgetSelected(SelectionEvent e) {
Combo comboControl = (Combo) e.getSource();
String value = comboControl.getText();
IPreferenceStore preferenceStore = ExchangePlugin.getDefault().getPreferenceStore();
preferenceStore.setValue("TOS_IMPORT_VERSION_FILTER", value);
version = value;
progressBarMessage = Messages.getString("ImportExchangeDialog.download.extensions"); //$NON-NLS-1$
findChoiceExchange();
onVersionFilterChanged(e);
}
});
}
@@ -378,6 +439,7 @@ public class ImportExchangeDialog extends Dialog {
}
String currentVersion = ExchangePlugin.getDefault().getPreferenceStore().getString(TOS_VERSION_FILTER);
currentVersion = ExchangeUtils.getMainVersion(currentVersion);
if (fVersionRevisions != null) {
String versions[] = ExchangeUtils.getVersionList(fVersionRevisions);
int stringIndex = 0;
@@ -390,6 +452,35 @@ public class ImportExchangeDialog extends Dialog {
versionCombo.select(stringIndex);
versionCombo.pack();
}
}
public void onVersionFilterChanged(SelectionEvent e) {
if (type == null) {
MessageBox box = new MessageBox(Display.getCurrent().getActiveShell(), SWT.ICON_WARNING | SWT.OK);
box.setText(Messages.getString("ImportExchangeDialog.WARNING")); //$NON-NLS-1$
box.setMessage("Please choose Job/Templates/Routines first!"); //$NON-NLS-1$
version = versionCombo.getText();
box.open();
return;
}
Combo comboControl = (Combo) e.getSource();
String value = comboControl.getText();
IPreferenceStore preferenceStore = ExchangePlugin.getDefault().getPreferenceStore();
preferenceStore.setValue("TOS_IMPORT_VERSION_FILTER", value);//$NON-NLS-1$
version = value;
if (type != null && !jobButton.getSelection() && !templatesButton.getSelection() && !routinesButton.getSelection()) {
if (type == "7") { //$NON-NLS-1$
jobButton.setSelection(true);
} else if (type == "8") { //$NON-NLS-1$
templatesButton.setSelection(true);
} else if (type == "9") { //$NON-NLS-1$
routinesButton.setSelection(true);
}
}
progressBarMessage = Messages.getString("ImportExchangeDialog.download.components"); //$NON-NLS-1$
findChoiceExchange();
}
/**
@@ -406,9 +497,11 @@ public class ImportExchangeDialog extends Dialog {
Display.getDefault().syncExec(new Runnable() {
public void run() {
if (version.equals("") || version == null) {
version = "4.2.1";
}
compatible = ComponentSearcher.getImportComponentExtensions(version, ExchangeUtils.getCurrentLanguage(),
categoryCombo.getSelectionIndex() >= 0 ? fCategorys.get(categoryCombo.getSelectionIndex())
.getCategoryId() : "");
type);
updateTable(compatible);
}
});
@@ -442,15 +535,20 @@ public class ImportExchangeDialog extends Dialog {
return;
}
table.setRedraw(false);
for (final ComponentExtension object : extensions) {
final TableItem tableItem = new TableItem(table, SWT.NONE);
tableItem.setData(object);
//
tableItem.setText(0, object.getLabel());
tableItem.setText(1, object.getAuthor());
tableItem.setText(2, object.getVersionExtension());
tableItem.setText(3, object.getDescription());
}
table.setRedraw(true);
}
private void removeItemElements(List<ComponentExtension> objects) {
@@ -469,11 +567,4 @@ public class ImportExchangeDialog extends Dialog {
item.dispose();
}
public String getSelectFile() {
return selectFile;
}
public void setSelectFile(String selectFile) {
this.selectFile = selectFile;
}
}

View File

@@ -51,7 +51,7 @@ import org.talend.commons.utils.StringUtils;
import org.talend.commons.utils.VersionUtils;
import org.talend.core.language.ECodeLanguage;
import org.talend.core.language.LanguageManager;
import org.talend.core.model.components.ComponentPaletteUtilities;
import org.talend.core.model.components.ComponentUtilities;
import org.talend.core.model.components.IComponentsFactory;
import org.talend.core.model.general.Project;
import org.talend.designer.components.exchange.ExchangePlugin;
@@ -202,7 +202,7 @@ public class ExchangeUtils {
* @return
*/
public static File getComponentFolder(String componentfolder) {
URL url = FileLocator.find(ExchangePlugin.getDefault().getBundle(), new Path(componentfolder), null);
URL url = FileLocator.find(ExchangePlugin.getDefault().getBundle(), new Path(componentfolder), null); //$NON-NLS-1$
try {
URL fileUrl = FileLocator.toFileURL(url);
return new File(fileUrl.getPath());
@@ -233,7 +233,7 @@ public class ExchangeUtils {
// update the palette view, the position of the new component is
// determined by the FAMILY value in the
// component's property file
ComponentPaletteUtilities.updatePalette();
ComponentUtilities.updatePalette();
}
public static void deleteComponent(ComponentExtension component) {
@@ -358,7 +358,6 @@ public class ExchangeUtils {
List<String> versions = new ArrayList<String>(versionMap.keySet());
Collections.sort(versions, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
Version ver1 = new Version(o1);
Version ver2 = new Version(o2);
@@ -375,7 +374,7 @@ public class ExchangeUtils {
public static List<RevisionInfo> getRevisionList(String version, int language, String type) throws Exception {
StringBuffer url = new StringBuffer();
url.append(REVISION_LIST_URL).append("?categories=").append(type).append("&version="); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
url.append(REVISION_LIST_URL).append("?categories=").append(5).append(",").append(type).append("&version="); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
String[] branch = getBranch(version);
url.append(StringUtils.join(branch, ",")); //$NON-NLS-1$
String jsonContent = sendGetRequest(url.toString());

View File

@@ -1,9 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Components Libs Plug-in
Bundle-Name: Libs Plug-in
Bundle-SymbolicName: org.talend.designer.components.libs
Bundle-Version: 1.0.0.qualifier
Bundle-Version: 1.0.0
Require-Bundle: org.eclipse.core.runtime
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-Vendor: .Talend SA.

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -1,88 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="org.talend.designer.components.libs" default="process" basedir=".">
<property name="component.plugin.home" value="../../../org.talend.designer.components.bigdata/components" />
<!-- #################################################### -->
<!-- modification 1: config -->
<property name="jar.name" value="GoogleStorageUtils.jar" />
<property name="component.name" value="tGSPut" />
<property name="author.name" value="jzhao" />
<!-- modification 2: compile classpath -->
<path id="compile.classpath">
<pathelement location="${component.plugin.home}/tBigQueryBulkExec/jets3t-0.9.0.jar" />
</path>
<!-- #################################################### -->
<!-- sourcecode and final jar path -->
<property name="source.home" value="." />
<property name="jar.home" value="${component.plugin.home}/${component.name}/${jar.name}" />
<!-- temp dir for clasee files -->
<property name="build.dir" value="../../build" />
<!-- compile option -->
<property name="compile.debug" value="true" />
<property name="compile.deprecation" value="false" />
<property name="compile.optimize" value="true" />
<target name="process" description="prepare a temp dir">
<antcall target="prepare" />
<antcall target="compile" />
<antcall target="clean" />
</target>
<target name="prepare" description="prepare a temp dir">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
<mkdir dir="${build.dir}/classes" />
</target>
<target name="compile" description="Compile Java sources">
<!-- compile -->
<javac srcdir="${source.home}" destdir="${build.dir}/classes" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}">
<classpath refid="compile.classpath" />
</javac>
<!-- include source code -->
<copy todir="${build.dir}/classes">
<fileset dir="${source.home}">
<exclude name="build.xml" />
</fileset>
</copy>
<!-- make jar -->
<tstamp>
<format property="date" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>
<jar destfile="${build.dir}/${jar.name}" basedir="${build.dir}/classes">
<manifest>
<!-- who -->
<attribute name="Built-By" value="${author.name}" />
<!-- when -->
<attribute name="Built-Date" value="${date}"/>
<!-- JDK version -->
<attribute name="Created-By" value="${java.version} (${java.vendor})" />
<!-- Information about the program itself -->
<attribute name="Implementation-Vendor" value="Talend SA" />
<attribute name="Implementation-Title" value="${jar.name}" />
<attribute name="Implementation-Version" value="1.0" />
</manifest>
</jar>
<!-- move jar -->
<move file="${build.dir}/${jar.name}" tofile="${jar.home}" />
</target>
<target name="clean" description="clean the temp dir">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
</target>
</project>

View File

@@ -1,127 +0,0 @@
package org.talend.gs.util;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import org.jets3t.service.model.GSObject;
import org.jets3t.service.utils.Mimetypes;
public class GSObjectUtil {
public List<GSObject> genGSObjectList(List<GSObject> objects, File file,
String keyParent, boolean isGenFileObject, boolean isGenFolderObject)
throws NoSuchAlgorithmException, IOException {
if (file.isDirectory()) {
if (keyParent != null && !"".equals(keyParent)) {
if (keyParent.trim().lastIndexOf("/") != keyParent.trim()
.length() - 1) {
keyParent = keyParent + "/";
}
if(isGenFolderObject){
objects.add(new GSObject(keyParent));
}
}
File[] files = file.listFiles();
for (File f : files) {
if (f.isDirectory()) {
objects = genGSObjectList(objects, f,
keyParent + f.getName() + "/", isGenFileObject,
isGenFolderObject);
} else {
objects = genGSObjectList(objects, f,
keyParent + f.getName(), isGenFileObject,
isGenFolderObject);
}
}
} else {
if (isGenFileObject) {
GSObject obj = new GSObject(file);
obj.setKey(keyParent);
objects.add(obj);
}
}
return objects;
}
public java.util.Map<String,String> genFileFilterList(java.util.List<java.util.Map<String,String>> list,String localdir,String remotedir){
if (remotedir != null && !"".equals(remotedir)) {
if (remotedir.trim().lastIndexOf("/") != remotedir.trim()
.length() - 1) {
remotedir = remotedir + "/";
}
}
java.util.Map<String,String> fileMap=new HashMap<String,String>();
for (java.util.Map<String, String> map : list) {
java.util.Set<String> keySet = map.keySet();
for (String key : keySet){
String tempdir = localdir;
String filemask = key;
String dir = null;
String mask = filemask.replaceAll("\\\\", "/") ;
int i = mask.lastIndexOf('/');
if (i!=-1){
dir = mask.substring(0, i);
mask = mask.substring(i+1);
}
if (dir!=null && !"".equals(dir)) tempdir = tempdir + "/" + dir;
mask = mask.replaceAll("\\.", "\\\\.").replaceAll("\\*", ".*");
final String finalMask = mask;
java.io.File[] listings = null;
java.io.File file = new java.io.File(tempdir);
if (file.isDirectory()) {
listings = file.listFiles(new java.io.FileFilter() {
public boolean accept(java.io.File pathname) {
boolean result = false;
if (pathname != null && pathname.isFile()) {
result = java.util.regex.Pattern.compile(finalMask).matcher(pathname.getName()).find();
}
return result;
}
});
}
if(listings == null || listings.length <= 0){
System.err.println("No match file("+key+") exist!");
}else{
String localFilePath = "";
String newObjectKey = "";
for (int m = 0; m < listings.length; m++){
if (listings[m].getName().matches(mask)){
localFilePath = listings[m].getAbsolutePath();
if(map.get(key)!=null && map.get(key).length()>0){
newObjectKey = remotedir+map.get(key);
}else{
newObjectKey = remotedir+listings[m].getName();
}
fileMap.put(localFilePath, newObjectKey);
}
}
}
}
}
return fileMap;
}
public List<GSObject> genObjectByFileMap(java.util.Map<String,String> fileMap) throws Exception, IOException{
Set<String> localFiles=fileMap.keySet();
List<GSObject> objects=new ArrayList<GSObject>();
for(String localFilePath:localFiles){
GSObject object=new GSObject(new File(localFilePath));
object.setKey(fileMap.get(localFilePath));
objects.add(object);
}
return objects;
}
public void initMimeTypes() throws IOException {
InputStream mimetypesFile = this.getClass().getResourceAsStream(
"/resource/mime.types");
Mimetypes.getInstance().loadAndReplaceMimetypes(mimetypesFile);
}
}

View File

@@ -71,15 +71,15 @@ public class SAXLooper {
}
private void judgeIsSimple() {
isSimpleParse = isSimplePath(loopPath);
for(String path : nodePaths) {
if(!isSimpleParse) {
if (this.loopPath.indexOf("..") >= 0 || this.loopPath.indexOf("*") >= 0) {
this.isSimpleParse = false;
}
for (int i = 0; i < nodePaths.length; i++) {
if (nodePaths[i].indexOf("..") >= 0 || nodePaths[i].indexOf("*") >= 0) {
this.isSimpleParse = false;
break;
}
isSimpleParse = isSimplePath(path);
}
if (this.isSimpleParse) {
looper = new SimpleSAXLooper(loopPath, nodePaths, asXMLs);
} else {

View File

@@ -135,10 +135,7 @@ public class SimpleSAXLooper implements ISAXLooper,Callable {
String resultCol = node.loopPath;
String[] splits = column.split("/");
for (String tmp : splits) {
if (tmp.equals("..")) {
resultCol = resultCol.substring(0, resultCol.lastIndexOf("/"));
node.setAttrOutOfLoop(true);
} else if (tmp.equals(".")) {
if (tmp.equals(".")) {
node.isDot = true;
} else {
resultCol += "/" + tmp;

View File

@@ -142,17 +142,22 @@ public class FileCopy {
if (position + MAP_SIZE >= size) {
buf = in.map(FileChannel.MapMode.READ_ONLY, position, size - position);
out.write(buf);
//For But TDI-26493, here must clean first, or it can't delete
clean(buf);
if (delSrc) {
// here must clean first, or it can't delete
clean(buf);
}
break;
} else {
buf = in.map(FileChannel.MapMode.READ_ONLY, position, MAP_SIZE);
out.write(buf);
// here must clean first, or it can't delete
clean(buf);
if (delSrc) {
// here must clean first, or it can't delete
clean(buf);
}
position += MAP_SIZE;
}
}
in.close();
out.close();

View File

@@ -7,9 +7,9 @@ public class BulkloadClient {
private String url;
private String username;
private String username;
private String password;
private String password;
private String universe;
@@ -19,23 +19,21 @@ public class BulkloadClient {
private String dataModel;
private String transactionId;
private BulkloadOptions options = new BulkloadOptions();
private static final AtomicInteger startedBulkloadCount = new AtomicInteger(0);
public BulkloadClient(String url, String username, String password, String universe, String cluster, String concept, String dataModel) {
this.url = url;
this.username = username;
this.password = password;
this.universe = universe;
this.cluster = cluster;
this.concept = concept;
this.dataModel = dataModel;
}
public BulkloadClient(String url, String username, String password, String universe, String cluster, String concept, String dataModel) {
this.url=url;
this.username=username;
this.password=password;
this.universe=universe;
this.cluster=cluster;
this.concept=concept;
this.dataModel = dataModel;
}
public void startThreadCount() {
public void startThreadCount(){
// Kept for compatibility with tMDMBulkload.
}
@@ -51,98 +49,89 @@ public class BulkloadClient {
}
}
public String getUrl() {
return url;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUniverse() {
return universe;
}
public String getUniverse() {
return universe;
}
public void setUniverse(String universe) {
this.universe = universe;
}
public void setUniverse(String universe) {
this.universe = universe;
}
public String getCluster() {
return cluster;
}
public String getCluster() {
return cluster;
}
public void setCluster(String cluster) {
this.cluster = cluster;
}
public void setCluster(String cluster) {
this.cluster = cluster;
}
public String getConcept() {
return concept;
}
public String getConcept() {
return concept;
}
public void setConcept(String concept) {
this.concept = concept;
}
public void setConcept(String concept) {
this.concept = concept;
}
public String getDatamodel() {
return dataModel;
}
public String getDatamodel() {
return dataModel;
}
public void setDatamodel(String dataModel) {
this.dataModel = dataModel;
}
public void setDatamodel(String dataModel) {
this.dataModel = dataModel;
}
public BulkloadOptions getOptions() {
return options;
}
public BulkloadOptions getOptions() {
return options;
}
public void setOptions(BulkloadOptions options) {
this.options = options;
}
public String getTransactionId() {
return transactionId;
}
public void setTransactionId(String transactionId) {
this.transactionId = transactionId;
}
public void setOptions(BulkloadOptions options) {
this.options = options;
}
/**
* load from a huge xml string
*
* @param xmlString A full xml document.
* load from a huge xml string
* @param xmlString A full xml document.
* @throws Exception Thrown in case of bulk load error.
*/
public void load(String xmlString) throws Exception {
load(new ByteArrayInputStream(xmlString.getBytes("UTF-8")));
}
*/
public void load(String xmlString) throws Exception {
load(new ByteArrayInputStream(xmlString.getBytes("UTF-8")));
}
/**
* <p>
* Loads XML documents in MDM using an InputStream. All documents should follow each other.
* For instance this InputStream can be used with this method.
* </p>
* <p/>
*
* <code>
* InputStream is = new ByteArrayInputStream("<doc></doc><doc></doc><doc></doc>".getBytes());
* </code>
* <p/>
*
* <p>
* This method blocks until all documents in <code>xmlDocuments</code> are read. For non blocking use cases
* see {@link #load()}.
@@ -161,7 +150,6 @@ public class BulkloadClient {
xmlDocuments,
username,
password,
transactionId,
universe);
}
@@ -170,18 +158,18 @@ public class BulkloadClient {
* Loads XML documents in MDM using an InputStream created for the load. This method creates a {@link Thread} that
* wait for {@link InputStreamMerger#push(java.io.InputStream)} to get called.
* </p>
* <p/>
*
* <code>
* BulkloadClient client = ...<br/>
* InputStreamMerger is = client.load();<br/>
* for(...) {<br/>
* is.push(new ByteArrayInputStream("...".getBytes());<br/>
* is.push(new ByteArrayInputStream("...".getBytes());<br/>
* }
* </code>
*
* @return A {@link InputStreamMerger} that allow asynchronous push to bulkload client.
* @throws Exception Thrown in case of communication error
* @see InputStreamMerger
* @return A {@link InputStreamMerger} that allow asynchronous push to bulkload client.
*/
public InputStreamMerger load() throws Exception {
return BulkloadClientUtil.bulkload(url,
@@ -192,7 +180,6 @@ public class BulkloadClient {
options.isSmartpk(),
username,
password,
transactionId,
universe,
startedBulkloadCount);
}

View File

@@ -20,17 +20,8 @@ import org.apache.commons.httpclient.params.HttpClientParams;
*/
public class BulkloadClientUtil {
public static void bulkload(String url,
String cluster,
String concept,
String datamodel,
boolean validate,
boolean smartpk,
InputStream itemdata,
String username,
String password,
String transactionId,
String universe) throws Exception {
public static void bulkload(String url, String cluster, String concept, String datamodel, boolean validate, boolean smartpk, InputStream itemdata,
String username, String password, String universe) throws Exception {
HostConfiguration config = new HostConfiguration();
URI uri = new URI(url, false, "UTF-8"); //$NON-NLS-1$
config.setHost(uri);
@@ -56,9 +47,6 @@ public class BulkloadClientUtil {
try {
// Configuration
putMethod.setRequestHeader("Content-Type", "text/xml; charset=utf8"); //$NON-NLS-1$ //$NON-NLS-2$
if (transactionId != null) {
putMethod.setRequestHeader("transaction-id", transactionId); //$NON-NLS-1$
}
putMethod.setQueryString(parameters);
putMethod.setContentChunked(true);
// Set the content of the PUT request
@@ -78,31 +66,10 @@ public class BulkloadClientUtil {
}
}
public static InputStreamMerger bulkload(String url,
String cluster,
String concept,
String dataModel,
boolean validate,
boolean smartPK,
String username,
String password,
String transactionId,
String universe,
AtomicInteger startedBulkloadCount) {
public static InputStreamMerger bulkload(String url, String cluster, String concept, String dataModel, boolean validate, boolean smartPK, String username, String password, String universe, AtomicInteger startedBulkloadCount) {
InputStreamMerger merger = new InputStreamMerger();
Runnable loadRunnable = new AsyncLoadRunnable(url,
cluster,
concept,
dataModel,
validate,
smartPK,
merger,
username,
password,
transactionId,
universe,
startedBulkloadCount);
Runnable loadRunnable = new AsyncLoadRunnable(url, cluster, concept, dataModel, validate, smartPK, merger, username, password, universe, startedBulkloadCount);
Thread loadThread = new Thread(loadRunnable);
loadThread.start();
@@ -129,24 +96,11 @@ public class BulkloadClientUtil {
private final String password;
private final String transactionId;
private final String universe;
private final AtomicInteger startedBulkloadCount;
public AsyncLoadRunnable(String url,
String cluster,
String concept,
String dataModel,
boolean validate,
boolean smartPK,
InputStreamMerger inputStream,
String userName,
String password,
String transactionId,
String universe,
AtomicInteger startedBulkloadCount) {
public AsyncLoadRunnable(String url, String cluster, String concept, String dataModel, boolean validate, boolean smartPK, InputStreamMerger inputStream, String userName, String password, String universe, AtomicInteger startedBulkloadCount) {
this.url = url;
this.cluster = cluster;
this.concept = concept;
@@ -156,7 +110,6 @@ public class BulkloadClientUtil {
this.inputStream = inputStream;
this.userName = userName;
this.password = password;
this.transactionId = transactionId;
this.universe = universe;
this.startedBulkloadCount = startedBulkloadCount;
}
@@ -164,17 +117,7 @@ public class BulkloadClientUtil {
public void run() {
try {
startedBulkloadCount.incrementAndGet();
bulkload(url,
cluster,
concept,
dataModel,
validate,
smartPK,
inputStream,
userName,
password,
transactionId,
universe);
bulkload(url, cluster, concept, dataModel, validate, smartPK, inputStream, userName, password, universe);
} catch (Throwable e) {
inputStream.reportFailure(e);
} finally {

View File

@@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="org.talend.designer.components.libs" default="process" basedir=".">
<property name="component.plugin.home" value="../../../org.talend.designer.components.localprovider/components" />
<!-- #################################################### -->
<!-- modification 1: config -->
<property name="jar.name" value="mdm_transaction.jar" />
<property name="component.name" value="tMDMConnection" />
<property name="author.name" value="wliu" />
<!-- modification 2: compile classpath -->
<path id="compile.classpath">
<pathelement location="${component.plugin.home}/tMDMBulkLoad/commons-codec.jar" />
<pathelement location="${component.plugin.home}/tMDMBulkLoad/commons-httpclient.jar" />
<pathelement location="${component.plugin.home}/tMDMBulkLoad/commons-logging.jar" />
</path>
<!-- #################################################### -->
<!-- sourcecode and final jar path -->
<property name="source.home" value="." />
<property name="jar.home" value="${component.plugin.home}/${component.name}/${jar.name}" />
<!-- temp dir for clasee files -->
<property name="build.dir" value="../../build" />
<!-- compile option -->
<property name="compile.debug" value="true" />
<property name="compile.deprecation" value="false" />
<property name="compile.optimize" value="true" />
<target name="process" description="prepare a temp dir">
<antcall target="prepare" />
<antcall target="compile" />
<antcall target="clean" />
</target>
<target name="prepare" description="prepare a temp dir">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
<mkdir dir="${build.dir}/classes" />
</target>
<target name="compile" description="Compile Java sources">
<!-- compile -->
<javac srcdir="${source.home}" destdir="${build.dir}/classes" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}">
<classpath refid="compile.classpath" />
</javac>
<!-- include source code -->
<copy todir="${build.dir}/classes">
<fileset dir="${source.home}">
<exclude name="build.xml" />
</fileset>
</copy>
<!-- make jar -->
<tstamp>
<format property="date" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>
<jar destfile="${build.dir}/${jar.name}" basedir="${build.dir}/classes">
<manifest>
<!-- who -->
<attribute name="Built-By" value="${author.name}" />
<!-- when -->
<attribute name="Built-Date" value="${date}"/>
<!-- JDK version -->
<attribute name="Created-By" value="${java.version} (${java.vendor})" />
<!-- Information about the program itself -->
<attribute name="Implementation-Vendor" value="Talend SA" />
<attribute name="Implementation-Title" value="${jar.name}" />
<attribute name="Implementation-Version" value="1.0" />
</manifest>
</jar>
<!-- move jar -->
<move file="${build.dir}/${jar.name}" tofile="${jar.home}" />
</target>
<target name="clean" description="clean the temp dir">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
</target>
</project>

View File

@@ -1,88 +0,0 @@
package com.talend.mdm.transaction.client;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.DeleteMethod;
import org.apache.commons.httpclient.methods.PostMethod;
public class MDMTransaction {
private String url;
private String id;
private String username;
private String password;
public boolean commit() throws IOException {
HttpClient client = new HttpClient();
client.getState().setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(username, password));
HttpMethod method = new PostMethod(url + "/" + id);
method.setDoAuthentication(true);
try {
client.executeMethod(method);
} catch (HttpException e) {
throw e;
} catch (IOException e) {
throw e;
} finally {
method.releaseConnection();
}
int statuscode = method.getStatusCode();
if (statuscode >= 400) {
return false;
}
return true;
}
public boolean rollback() throws IOException {
HttpClient client = new HttpClient();
client.getState().setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(username, password));
HttpMethod method = new DeleteMethod(url + "/" + id);
method.setDoAuthentication(true);
try {
client.executeMethod(method);
} catch (HttpException e) {
throw e;
} catch (IOException e) {
throw e;
} finally {
method.releaseConnection();
}
int statuscode = method.getStatusCode();
if (statuscode >= 400) {
return false;
}
return true;
}
public void setUrl(String url) {
this.url = url;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
}

View File

@@ -1,78 +0,0 @@
package com.talend.mdm.transaction.client;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.PutMethod;
public class MDMTransactionClient {
public static MDMTransaction newTransaction(String url, String username, String password) throws IOException {
HttpClient client = new HttpClient();
client.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
PutMethod put = new PutMethod(url);
put.setDoAuthentication(true);
String tid = "";
try {
client.executeMethod(put);
tid = put.getResponseBodyAsString();
} catch (HttpException e) {
throw e;
} catch (IOException e) {
throw e;
} finally {
put.releaseConnection();
}
MDMTransaction result = new MDMTransaction();
result.setUrl(url);
result.setId(tid);
result.setUsername(username);
result.setPassword(password);
return result;
}
public static String getMDMTransactionURL(String url) {
if(url == null || "".equals(url)) {
return "";
}
int count = 3;
int i=0;
for(;i<url.length();i++) {
char c = url.charAt(i);
if('/' == c) {
count--;
}
if(count == 0) {
break;
}
}
String result = url.substring(0, i);
result += "/datamanager/services/transactions";
return result;
}
public static void main(String[] args) throws IOException {
MDMTransaction mt = MDMTransactionClient.newTransaction("http://localhost:8080/datamanager/services/transactions", "administrator", "administrator");
boolean commitresult = mt.commit();
MDMTransaction mt1 = MDMTransactionClient.newTransaction("http://localhost:8080/datamanager/services/transactions", "administrator", "administrator");
boolean rollbackcommit = mt1.rollback();
System.out.println(commitresult);
System.out.println(rollbackcommit);
String url = "http://localhost:8080/talend/TalendPort";
String mdmurl = MDMTransactionClient.getMDMTransactionURL(url);
System.out.println(mdmurl);
}
}

Some files were not shown because too many files have changed in this diff Show More