Compare commits
80 Commits
patch/7.3.
...
bhe/feat/T
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2730760634 | ||
|
|
dffa6d97c9 | ||
|
|
eee0169c90 | ||
|
|
124ec1357d | ||
|
|
3e2f12848c | ||
|
|
22e607210d | ||
|
|
5780ce2693 | ||
|
|
04c0e2f42c | ||
|
|
3b6ffd8f49 | ||
|
|
61d8e73084 | ||
|
|
fffdd9a78e | ||
|
|
9186869001 | ||
|
|
c3f8ae1d53 | ||
|
|
294e8a23f5 | ||
|
|
637a2423a0 | ||
|
|
6ad0a9ac92 | ||
|
|
161e5d97a7 | ||
|
|
e6a9513d45 | ||
|
|
74174c14c6 | ||
|
|
2ec51860a5 | ||
|
|
bc3e338910 | ||
|
|
a823899d39 | ||
|
|
436af2427e | ||
|
|
d7252412ed | ||
|
|
af38e2a0b6 | ||
|
|
c3d3fcf665 | ||
|
|
987c6667ac | ||
|
|
f0401b97d1 | ||
|
|
26992f7cf9 | ||
|
|
169ab1c4cc | ||
|
|
f04049abc0 | ||
|
|
7e6f2dee19 | ||
|
|
2dd7ce6fac | ||
|
|
be373dd141 | ||
|
|
43876863e6 | ||
|
|
4ac2a830a9 | ||
|
|
3d6d3e77e3 | ||
|
|
71b4ccc531 | ||
|
|
48289a3c72 | ||
|
|
9a219873f1 | ||
|
|
d013d08bdc | ||
|
|
761dcc7902 | ||
|
|
0a85c8056c | ||
|
|
3df4cf1348 | ||
|
|
c7965cf552 | ||
|
|
61b55c0d2a | ||
|
|
be41bcbef3 | ||
|
|
2827919dae | ||
|
|
33848db788 | ||
|
|
ac359e295a | ||
|
|
6965eb79fa | ||
|
|
80f02ef1e7 | ||
|
|
7c50efdf21 | ||
|
|
7f40393753 | ||
|
|
356dba9940 | ||
|
|
83f7a577d9 | ||
|
|
e87f557a49 | ||
|
|
a51b3316d3 | ||
|
|
46a22c4ad0 | ||
|
|
f8cc600d06 | ||
|
|
3146ed307f | ||
|
|
f4f91a5323 | ||
|
|
2aee38595f | ||
|
|
dde32c8b49 | ||
|
|
563b69231f | ||
|
|
1ea6227f59 | ||
|
|
148e9e9253 | ||
|
|
1e6a43650f | ||
|
|
67616537b2 | ||
|
|
1df4e819e0 | ||
|
|
b3d6c45f2d | ||
|
|
f1341cd69f | ||
|
|
a64bcecb0c | ||
|
|
5707d4db94 | ||
|
|
5e20a78752 | ||
|
|
85e44cd5c6 | ||
|
|
8582c20f1a | ||
|
|
6216fd76ea | ||
|
|
71d339fc0a | ||
|
|
d286276e6d |
BIN
main/plugins/org.talend.common.ui.runtime/icons1/share.png
Normal file
BIN
main/plugins/org.talend.common.ui.runtime/icons1/share.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -166,6 +166,7 @@ public enum ECoreImage implements IImage {
|
||||
RECYCLE_BIN_OVERLAY("/icons1/recycle_bin_overlay.gif"), //$NON-NLS-1$
|
||||
DELETED_OVERLAY("/icons1/deleted_overlay.gif"), //$NON-NLS-1$
|
||||
IMPORT_JAR("/icons1/importjar.gif"), //$NON-NLS-1$
|
||||
SHARE_LIBS("/icons1/share.png"), //$NON-NLS-1$
|
||||
REFERENCED_ICON("/icons1/referenced.png"), //$NON-NLS-1$
|
||||
|
||||
CDC_ADDED_OVERLAY("/icons1/cdc_added_overlay.png"), //$NON-NLS-1$
|
||||
|
||||
@@ -16,6 +16,8 @@ import org.eclipse.core.internal.runtime.InternalPlatform;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* DOC root class global comment. Detailled comment <br/>
|
||||
@@ -52,5 +54,9 @@ public class WindowSystem {
|
||||
public static boolean isOSX() {
|
||||
return Platform.WS_CARBON.equals(ws) || Platform.WS_COCOA.equals(ws);
|
||||
}
|
||||
|
||||
public static boolean isBigSurOrLater () {
|
||||
return isOSX() && ("10.16".compareTo(System.getProperty("os.version","0")) <= 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ public class SAPHanaDataBaseMetadata extends FakeDatabaseMetaData {
|
||||
}
|
||||
|
||||
// For Calculation View
|
||||
if (ArrayUtils.contains(neededTypes, NEEDED_TYPES[3])) {
|
||||
if (ArrayUtils.contains(neededTypes, NEEDED_TYPES[3]) && "_SYS_BIC".equalsIgnoreCase(schemaPattern)) { //$NON-NLS-1$
|
||||
// check if the type is contained is in the types needed.
|
||||
String sqlcv = "SELECT OBJECT_NAME,PACKAGE_ID FROM _SYS_REPO.ACTIVE_OBJECT WHERE OBJECT_SUFFIX = 'calculationview'"; //$NON-NLS-1$
|
||||
if (tableNamePattern != null && !tableNamePattern.equals("%")) { //$NON-NLS-1$
|
||||
@@ -171,7 +171,7 @@ public class SAPHanaDataBaseMetadata extends FakeDatabaseMetaData {
|
||||
packageId = packageId.trim();
|
||||
}
|
||||
String name = packageId + "/" + objectName; //$NON-NLS-1$
|
||||
String[] r = new String[] { "", "_SYS_BIC", name, NEEDED_TYPES[3], "", packageId }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
String[] r = new String[] { "", schemaPattern, name, NEEDED_TYPES[3], "", packageId }; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
listcv.add(r);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
@@ -355,4 +355,16 @@ public class SAPHanaDataBaseMetadata extends FakeDatabaseMetaData {
|
||||
tableResultSet.setData(list);
|
||||
return tableResultSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDatabaseProductName() throws SQLException {
|
||||
return this.connection.getMetaData().getDatabaseProductName();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDatabaseProductVersion() throws SQLException {
|
||||
return this.connection.getMetaData().getDatabaseProductVersion();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ package org.talend.commons.utils.network;
|
||||
import java.lang.reflect.Field;
|
||||
import java.net.Authenticator;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.Inet6Address;
|
||||
import java.net.InetAddress;
|
||||
import java.net.NetworkInterface;
|
||||
import java.net.PasswordAuthentication;
|
||||
@@ -22,7 +23,11 @@ import java.net.SocketException;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
@@ -232,6 +237,54 @@ public class NetworkUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static List<String> getLocalLoopbackAddresses(boolean wrapIpV6) {
|
||||
Set<String> addresses = new LinkedHashSet<>();
|
||||
try {
|
||||
addresses.add(getIp(InetAddress.getLoopbackAddress(), wrapIpV6));
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
|
||||
try {
|
||||
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
|
||||
while (networkInterfaces.hasMoreElements()) {
|
||||
NetworkInterface networkInterface = networkInterfaces.nextElement();
|
||||
Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
|
||||
while (inetAddresses.hasMoreElements()) {
|
||||
InetAddress inetAddress = inetAddresses.nextElement();
|
||||
if (inetAddress != null && inetAddress.isLoopbackAddress()) {
|
||||
addresses.add(getIp(inetAddress, wrapIpV6));
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
|
||||
if (addresses.isEmpty()) {
|
||||
addresses.add("127.0.0.1");
|
||||
String ipv6Loopback = "::1";
|
||||
if (wrapIpV6) {
|
||||
ipv6Loopback = "[" + ipv6Loopback + "]";
|
||||
}
|
||||
addresses.add(ipv6Loopback);
|
||||
}
|
||||
|
||||
return new ArrayList<>(addresses);
|
||||
}
|
||||
|
||||
private static String getIp(InetAddress inetAddress, boolean wrapIpV6) {
|
||||
if (wrapIpV6 && Inet6Address.class.isInstance(inetAddress)) {
|
||||
String addr = inetAddress.getHostAddress();
|
||||
if (!addr.startsWith("[") || !addr.endsWith("]")) {
|
||||
addr = "[" + addr + "]";
|
||||
}
|
||||
return addr;
|
||||
} else {
|
||||
return inetAddress.getHostAddress();
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isSelfAddress(String addr) {
|
||||
if (addr == null || addr.isEmpty()) {
|
||||
return false; // ?
|
||||
|
||||
@@ -25,6 +25,7 @@ import java.net.URISyntaxException;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
@@ -38,6 +39,8 @@ import java.util.Set;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Priority;
|
||||
import org.eclipse.core.internal.net.ProxyManager;
|
||||
import org.eclipse.core.internal.net.ProxyType;
|
||||
import org.eclipse.core.net.proxy.IProxyChangeEvent;
|
||||
import org.eclipse.core.net.proxy.IProxyService;
|
||||
import org.talend.commons.CommonsPlugin;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
@@ -77,6 +80,14 @@ public class TalendProxySelector extends ProxySelector {
|
||||
|
||||
private static final String PROP_DISABLE_DEFAULT_SELECTOR_PROVIDER = "talend.studio.proxy.disableDefaultSelectorProvider";
|
||||
|
||||
private static final String PROP_PROXY_EXCLUDE_LOOPBACK_ADDRESS_AUTOMATICALLY = "talend.studio.proxy.excludeLoopbackAutomatically";
|
||||
|
||||
private static final String PROP_PROXY_EXCLUDE_LOOPBACK_ADDRESS_AUTOMATICALLY_DEFAULT = "true";
|
||||
|
||||
private static final String PROP_PROXY_HTTP_NON_PROXYHOSTS = "http.nonProxyHosts";
|
||||
|
||||
private static final String PROP_PROXY_HTTPS_NON_PROXYHOSTS = "https.nonProxyHosts";
|
||||
|
||||
/**
|
||||
* Example: update.talend.com,socket:http,https:http;nexus.talend.com,socket,http;,socket:http
|
||||
*/
|
||||
@@ -104,6 +115,8 @@ public class TalendProxySelector extends ProxySelector {
|
||||
|
||||
private EProxySelector eProxySelector;
|
||||
|
||||
private IProxyService proxyManager;
|
||||
|
||||
final private Map<Object, Collection<IProxySelectorProvider>> selectorProviders;
|
||||
|
||||
private Map<String, Map<String, String>> hostMap;
|
||||
@@ -114,6 +127,10 @@ public class TalendProxySelector extends ProxySelector {
|
||||
|
||||
private static Object instanceLock = new Object();
|
||||
|
||||
private List<String> localLoopbackAddresses;
|
||||
|
||||
private Object localLoopbackAddressesLock = new Object();
|
||||
|
||||
private boolean printProxyLog = false;
|
||||
|
||||
private boolean allowProxyRedirect = false;
|
||||
@@ -126,6 +143,8 @@ public class TalendProxySelector extends ProxySelector {
|
||||
|
||||
private boolean updateSystemPropertiesForJre = true;
|
||||
|
||||
private boolean excludeLoopbackAddressAutomatically = false;
|
||||
|
||||
private TalendProxySelector(final ProxySelector eclipseDefaultSelector) {
|
||||
this.eclipseDefaultSelector = eclipseDefaultSelector;
|
||||
this.jreDefaultSelector = new DefaultProxySelector();
|
||||
@@ -139,6 +158,8 @@ public class TalendProxySelector extends ProxySelector {
|
||||
executeConnectionFailed = Boolean.valueOf(System.getProperty(PROP_EXECUTE_CONNECTION_FAILED, Boolean.TRUE.toString()));
|
||||
updateSystemPropertiesForJre = Boolean
|
||||
.valueOf(System.getProperty(PROP_UPDATE_SYSTEM_PROPERTIES_FOR_JRE, Boolean.TRUE.toString()));
|
||||
excludeLoopbackAddressAutomatically = Boolean.valueOf(System.getProperty(
|
||||
PROP_PROXY_EXCLUDE_LOOPBACK_ADDRESS_AUTOMATICALLY, PROP_PROXY_EXCLUDE_LOOPBACK_ADDRESS_AUTOMATICALLY_DEFAULT));
|
||||
|
||||
switch (System.getProperty(PROP_PROXY_SELECTOR, PROP_PROXY_SELECTOR_DEFAULT).toLowerCase()) {
|
||||
case PROP_PROXY_SELECTOR_JRE:
|
||||
@@ -148,11 +169,83 @@ public class TalendProxySelector extends ProxySelector {
|
||||
this.eProxySelector = EProxySelector.eclipse_default;
|
||||
break;
|
||||
}
|
||||
proxyManager = ProxyManager.getProxyManager();
|
||||
checkProxyManager(IProxyChangeEvent.PROXY_DATA_CHANGED);
|
||||
proxyManager.addProxyChangeListener(event -> checkProxyManager(event.getChangeType()));
|
||||
|
||||
initHostMap();
|
||||
initRedirectList();
|
||||
}
|
||||
|
||||
private void checkProxyManager(int changeEvent) {
|
||||
try {
|
||||
if (IProxyChangeEvent.PROXY_DATA_CHANGED == changeEvent
|
||||
|| IProxyChangeEvent.NONPROXIED_HOSTS_CHANGED == changeEvent) {
|
||||
if (this.excludeLoopbackAddressAutomatically && proxyManager.isProxiesEnabled()) {
|
||||
List<String> addresses = getLocalLoopbackAddresses();
|
||||
if (addresses != null && !addresses.isEmpty()) {
|
||||
if (org.eclipse.core.internal.net.ProxySelector
|
||||
.canSetBypassHosts(org.eclipse.core.internal.net.ProxySelector.getDefaultProvider())) {
|
||||
List<String> configuredProxies = Arrays.asList(proxyManager.getNonProxiedHosts());
|
||||
if (!configuredProxies.containsAll(addresses)) {
|
||||
Set<String> nonProxyHosts = new HashSet<>(addresses);
|
||||
nonProxyHosts.addAll(configuredProxies);
|
||||
ExceptionHandler.log(
|
||||
this.getClass().getName() + ":" + "-D" + PROP_PROXY_EXCLUDE_LOOPBACK_ADDRESS_AUTOMATICALLY
|
||||
+ "=true, adding missing loopback addresses into eclipse nonProxyHosts: "
|
||||
+ nonProxyHosts);
|
||||
proxyManager.setNonProxiedHosts(nonProxyHosts.toArray(new String[0]));
|
||||
}
|
||||
} else {
|
||||
updateNonProxyHosts(addresses, PROP_PROXY_HTTP_NON_PROXYHOSTS);
|
||||
updateNonProxyHosts(addresses, PROP_PROXY_HTTPS_NON_PROXYHOSTS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateNonProxyHosts(List<String> localLoopbackAddresses, final String nonProxyProperty) {
|
||||
if (localLoopbackAddresses != null && !localLoopbackAddresses.isEmpty()) {
|
||||
Set<String> nonProxyHosts = new HashSet<>(localLoopbackAddresses);
|
||||
String property = System.getProperty(nonProxyProperty);
|
||||
boolean update = true;
|
||||
if (StringUtils.isNotBlank(property)) {
|
||||
List<String> configuredProxies = Arrays.asList(ProxyType.convertPropertyStringToHosts(property));
|
||||
if (configuredProxies.containsAll(localLoopbackAddresses)) {
|
||||
update = false;
|
||||
} else {
|
||||
nonProxyHosts.addAll(configuredProxies);
|
||||
}
|
||||
}
|
||||
if (update) {
|
||||
ExceptionHandler.log(this.getClass().getName() + ":" + "-D" + PROP_PROXY_EXCLUDE_LOOPBACK_ADDRESS_AUTOMATICALLY
|
||||
+ "=true, adding missing loopback addresses into " + nonProxyProperty + ": " + nonProxyHosts);
|
||||
System.setProperty(nonProxyProperty,
|
||||
ProxyType.convertHostsToPropertyString(nonProxyHosts.toArray(new String[0])));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<String> getLocalLoopbackAddresses() {
|
||||
if (this.localLoopbackAddresses == null) {
|
||||
synchronized (localLoopbackAddressesLock) {
|
||||
if (this.localLoopbackAddresses == null) {
|
||||
List<String> addresses = NetworkUtil.getLocalLoopbackAddresses(false);
|
||||
final String localhost = "localhost";
|
||||
if (!addresses.contains(localhost)) {
|
||||
addresses.add(localhost);
|
||||
}
|
||||
this.localLoopbackAddresses = addresses;
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.localLoopbackAddresses;
|
||||
}
|
||||
|
||||
private void initHostMap() {
|
||||
try {
|
||||
hostMap = new HashMap<>();
|
||||
@@ -282,7 +375,27 @@ public class TalendProxySelector extends ProxySelector {
|
||||
ExceptionHandler.log("TalendProxySelector.select " + uri);
|
||||
}
|
||||
if (uri == null) {
|
||||
return Collections.EMPTY_LIST;
|
||||
List<Proxy> result = new ArrayList<>();
|
||||
result.add(Proxy.NO_PROXY);
|
||||
return result;
|
||||
}
|
||||
try {
|
||||
if (this.excludeLoopbackAddressAutomatically) {
|
||||
List<String> addresses = getLocalLoopbackAddresses();
|
||||
if (addresses != null) {
|
||||
String host = uri.getHost();
|
||||
if (addresses.contains(host)) {
|
||||
if (printProxyLog) {
|
||||
ExceptionHandler.log(uri + " is excluded from proxy");
|
||||
}
|
||||
List<Proxy> result = new ArrayList<>();
|
||||
result.add(Proxy.NO_PROXY);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
URI validatedUri = validateUri(uri);
|
||||
Set<Proxy> results = new LinkedHashSet<>();
|
||||
@@ -332,6 +445,9 @@ public class TalendProxySelector extends ProxySelector {
|
||||
ExceptionHandler.log("Selected proxys for " + uri + ", " + proxys);
|
||||
ExceptionHandler.process(new Exception("Proxy call stacks"), Priority.INFO);
|
||||
}
|
||||
if (results.isEmpty()) {
|
||||
results.add(Proxy.NO_PROXY);
|
||||
}
|
||||
return new LinkedList<Proxy>(results);
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ public class TimeMeasurePerformance extends TimeMeasure{
|
||||
|
||||
private static int indent = 0;
|
||||
|
||||
public static void begin(String idTimer) {
|
||||
public static void begin(String idTimer, String description) {
|
||||
startTime = System.nanoTime();
|
||||
|
||||
init();
|
||||
@@ -38,7 +38,12 @@ public class TimeMeasurePerformance extends TimeMeasure{
|
||||
indent++;
|
||||
TimeStack times = new TimeStack();
|
||||
timers.put(idTimer, times);
|
||||
log(indent(indent) + "Start '" + idTimer + "' ..."); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|
||||
String message = "Start '" + idTimer + "' ...";
|
||||
if (description != null) {
|
||||
message = "Start '" + idTimer + "', " + description + " ...";
|
||||
}
|
||||
log(indent(indent) + message); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -240,7 +240,11 @@ public class BackgroundRefresher implements IBackgroundRefresher {
|
||||
|
||||
gc.dispose();
|
||||
|
||||
drawableComposite.getBgDrawableComposite().setBackgroundImage(newImage);
|
||||
if (WindowSystem.isBigSurOrLater()) {
|
||||
drawableComposite.refreshBgDrawableCompsite(newImage);
|
||||
} else {
|
||||
drawableComposite.getBgDrawableComposite().setBackgroundImage(newImage);
|
||||
}
|
||||
|
||||
clearImage(oldImage);
|
||||
oldImage = newImage;
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
package org.talend.commons.ui.swt.drawing.background;
|
||||
|
||||
import org.eclipse.swt.graphics.GC;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
|
||||
@@ -28,6 +29,8 @@ public interface IBgDrawableComposite {
|
||||
|
||||
public Composite getBgDrawableComposite();
|
||||
|
||||
public void refreshBgDrawableCompsite(Image image);
|
||||
|
||||
public void setOffset(Point offsetPoint);
|
||||
|
||||
public Point getOffset();
|
||||
|
||||
@@ -12,7 +12,12 @@
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.linking;
|
||||
|
||||
import org.eclipse.swt.events.DisposeEvent;
|
||||
import org.eclipse.swt.events.DisposeListener;
|
||||
import org.eclipse.swt.events.PaintEvent;
|
||||
import org.eclipse.swt.events.PaintListener;
|
||||
import org.eclipse.swt.graphics.GC;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.talend.commons.ui.swt.drawing.background.IBgDrawableComposite;
|
||||
@@ -28,6 +33,8 @@ public abstract class BgDrawableComposite implements IBgDrawableComposite {
|
||||
private Composite commonParent;
|
||||
|
||||
private Point offsetPoint = new Point(0, 0);
|
||||
|
||||
private Image backgroundImage;
|
||||
|
||||
/**
|
||||
* DOC amaumont DrawableBackground constructor comment.
|
||||
@@ -36,9 +43,36 @@ public abstract class BgDrawableComposite implements IBgDrawableComposite {
|
||||
*/
|
||||
public BgDrawableComposite(Composite commonParent) {
|
||||
this.commonParent = commonParent;
|
||||
this.commonParent.addPaintListener(new PaintListener() {
|
||||
|
||||
@Override
|
||||
public void paintControl(PaintEvent arg0) {
|
||||
if (backgroundImage != null) {
|
||||
arg0.gc.drawImage(backgroundImage, 0, 0);
|
||||
}
|
||||
}
|
||||
});
|
||||
this.commonParent.addDisposeListener(new DisposeListener() {
|
||||
|
||||
@Override
|
||||
public void widgetDisposed(DisposeEvent arg0) {
|
||||
if (backgroundImage != null && !backgroundImage.isDisposed()) {
|
||||
backgroundImage.dispose();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
@Override
|
||||
public void refreshBgDrawableCompsite(Image image) {
|
||||
if (backgroundImage != null) {
|
||||
backgroundImage.dispose();
|
||||
}
|
||||
backgroundImage = image;
|
||||
this.commonParent.redraw();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.drawing.background.IDrawableComposite#drawBackground(org.eclipse.swt.graphics.GC)
|
||||
|
||||
@@ -135,6 +135,7 @@ import org.talend.core.runtime.repository.item.ItemProductKeys;
|
||||
import org.talend.core.runtime.services.IGenericWizardService;
|
||||
import org.talend.core.runtime.services.IMavenUIService;
|
||||
import org.talend.core.runtime.util.ItemDateParser;
|
||||
import org.talend.core.runtime.util.SharedStudioUtils;
|
||||
import org.talend.core.service.ICoreUIService;
|
||||
import org.talend.core.service.IUpdateService;
|
||||
import org.talend.cwm.helper.SubItemHelper;
|
||||
@@ -1799,9 +1800,12 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
|
||||
* @throws PersistenceException
|
||||
*/
|
||||
private void emptyTempFolder(Project project) throws PersistenceException {
|
||||
String str = (System.getProperty("eclipse.home.location") + "temp").substring(5);
|
||||
FilesUtils.deleteFolder(new File(str), false);
|
||||
|
||||
try {
|
||||
String str = SharedStudioUtils.getTempFolderPath().toPortableString();
|
||||
FilesUtils.deleteFolder(new File(str), false);
|
||||
}catch (Exception ex) {
|
||||
ExceptionHandler.process(ex);
|
||||
}
|
||||
long start = System.currentTimeMillis();
|
||||
IProject fsProject = ResourceUtils.getProject(project);
|
||||
IFolder folder = ResourceUtils.getFolder(fsProject, RepositoryConstants.TEMP_DIRECTORY, false);
|
||||
@@ -2090,7 +2094,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
|
||||
*/
|
||||
public void logOnProject(Project project, IProgressMonitor monitor) throws LoginException, PersistenceException {
|
||||
try {
|
||||
TimeMeasurePerformance.begin("logOnProject"); //$NON-NLS-1$
|
||||
TimeMeasurePerformance.begin("logOnProject", "logon project name '" + project.getLabel()+"'"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
try {
|
||||
/**
|
||||
* init/check proxy selector, in case default proxy selector is not registed yet
|
||||
@@ -2141,12 +2145,18 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
|
||||
|
||||
ProjectDataJsonProvider.checkAndRectifyRelationShipSetting(project.getEmfProject());
|
||||
|
||||
// load additional jdbc
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(IGenericWizardService.class)) {
|
||||
IGenericWizardService service = GlobalServiceRegister.getDefault().getService(IGenericWizardService.class);
|
||||
if (service != null) {
|
||||
service.loadAdditionalJDBC();
|
||||
try {
|
||||
// load additional jdbc
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(IGenericWizardService.class)) {
|
||||
IGenericWizardService service = GlobalServiceRegister.getDefault()
|
||||
.getService(IGenericWizardService.class);
|
||||
if (service != null) {
|
||||
service.loadAdditionalJDBC();
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// in case, to avoid block logon
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
|
||||
// init dynamic distirbution after `beforeLogon`, before loading libraries.
|
||||
@@ -2195,6 +2205,14 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
|
||||
TimeMeasurePerformance.step("logOnProject", "Sync components libraries"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
try {
|
||||
// for new added mapping file, sync to project mapping folder
|
||||
MetadataTalendType.syncNewMappingFileToProject();
|
||||
} catch (SystemException e) {
|
||||
// ignore
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
|
||||
currentMonitor = subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE);
|
||||
currentMonitor.beginTask("Execute before logon migrations tasks", 1); //$NON-NLS-1$
|
||||
ProjectManager.getInstance().getMigrationRecords().clear();
|
||||
@@ -2296,8 +2314,6 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
|
||||
// set the project mappings url
|
||||
System.setProperty("talend.mappings.url", url.toString()); // $NON-NLS-1$
|
||||
}
|
||||
// for new added mapping file, sync to project mapping folder
|
||||
MetadataTalendType.syncNewMappingFileToProject();
|
||||
} catch (SystemException e) {
|
||||
// ignore
|
||||
ExceptionHandler.process(e);
|
||||
|
||||
@@ -122,7 +122,8 @@ Require-Bundle: org.eclipse.jdt.core,
|
||||
org.talend.components.api,
|
||||
org.apache.servicemix.bundles.avro,
|
||||
jackson-core-asl,
|
||||
org.talend.libraries.jackson
|
||||
org.talend.libraries.jackson,
|
||||
org.talend.libraries.apache.common
|
||||
Bundle-Activator: org.talend.core.runtime.CoreRuntimePlugin
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-ClassPath: .,
|
||||
|
||||
@@ -0,0 +1,288 @@
|
||||
<?xml version="1.0"?>
|
||||
<mapping>
|
||||
<dbms product="SINGLESTORE" id="singlestore_id" label="Mapping SingleStore"
|
||||
default="true">
|
||||
<dbTypes>
|
||||
<dbType type="BOOL" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="BOOLEAN" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="BIGINT" ignorePre="true"/>
|
||||
<dbType type="BIGINT UNSIGNED" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="BINARY" ignorePre="true"/>
|
||||
<dbType type="BIT" ignorePre="true" />
|
||||
<dbType type="BLOB" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="CHAR" defaultLength="200" ignorePre="true"/>
|
||||
<dbType type="DATE" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="DATETIME" ignoreLen="true" ignorePre="false" />
|
||||
<dbType type="DECIMAL" defaultLength="20" defaultPrecision="10" preBeforelen="false"/>
|
||||
<dbType type="DOUBLE" defaultLength="20" defaultPrecision="10"/>
|
||||
<dbType type="DOUBLE UNSIGNED" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="ENUM" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="FLOAT" defaultPrecision="2"/>
|
||||
<dbType type="FLOAT UNSIGNED" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="GEOGRAPHY" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="GEOGRAPHYPOINT" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="INT" ignorePre="true" />
|
||||
<dbType type="INT UNSIGNED" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="INTEGER" ignorePre="true" />
|
||||
<dbType type="INTEGER UNSIGNED" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="LONGTEXT" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="LONGBLOB" ignoreLen="true" ignorePre="true"/>
|
||||
<dbType type="MEDIUMBLOB" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="MEDIUMINT" ignorePre="true" />
|
||||
<dbType type="MEDIUMINT UNSIGNED" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="MEDIUMTEXT" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="SMALLINT" ignorePre="true" />
|
||||
<dbType type="SMALLINT UNSIGNED" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="SET" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="TEXT" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="TIME" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="TIMESTAMP" ignoreLen="true" ignorePre="false" />
|
||||
<dbType type="TINYBLOB" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="TINYINT" ignorePre="true" />
|
||||
<dbType type="TINYINT UNSIGNED" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="TINYTEXT" ignoreLen="true" ignorePre="true" />
|
||||
<dbType type="VARBINARY" ignorePre="true" />
|
||||
<dbType type="VARCHAR" default="true" defaultLength="100" ignorePre="true"/>
|
||||
<dbType type="YEAR" ignorePre="true"/>
|
||||
<dbType type="JSON" ignoreLen="true" ignorePre="true"/>
|
||||
</dbTypes>
|
||||
|
||||
<language name="java">
|
||||
<talendToDbTypes><!-- Adviced mappings -->
|
||||
<talendType type="id_List"/>
|
||||
<talendType type="id_Boolean">
|
||||
<dbType type="BOOL" default="true" />
|
||||
</talendType>
|
||||
<talendType type="id_Byte">
|
||||
<dbType type="TINYINT" default="true" />
|
||||
<dbType type="BIGINT" />
|
||||
<dbType type="INT" />
|
||||
<dbType type="MEDIUMINT" />
|
||||
<dbType type="SMALLINT" />
|
||||
</talendType>
|
||||
<talendType type="id_byte[]">
|
||||
<dbType type="VARBINARY" default="true" />
|
||||
<dbType type="BINARY" />
|
||||
<dbType type="BIT" />
|
||||
<dbType type="BLOB" />
|
||||
<dbType type="LONGBLOB" />
|
||||
<dbType type="MEDIUMBLOB" />
|
||||
<dbType type="TINYBLOB" />
|
||||
</talendType>
|
||||
<talendType type="id_Character">
|
||||
<dbType type="CHAR" default="true" />
|
||||
<dbType type="VARCHAR"/>
|
||||
</talendType>
|
||||
<talendType type="id_Date">
|
||||
<dbType type="DATE" />
|
||||
<dbType type="DATETIME" default="true" />
|
||||
<dbType type="TIME" />
|
||||
<dbType type="YEAR" />
|
||||
<dbType type="TIMESTAMP" />
|
||||
</talendType>
|
||||
<talendType type="id_BigDecimal">
|
||||
<dbType type="DECIMAL" default="true" />
|
||||
<dbType type="FLOAT"/>
|
||||
<dbType type="DOUBLE" />
|
||||
</talendType>
|
||||
<talendType type="id_Double">
|
||||
<dbType type="DOUBLE" default="true" />
|
||||
<dbType type="FLOAT"/>
|
||||
<dbType type="DECIMAL" />
|
||||
</talendType>
|
||||
<talendType type="id_Float">
|
||||
<dbType type="FLOAT" default="true" />
|
||||
<dbType type="DOUBLE"/>
|
||||
<dbType type="DECIMAL" />
|
||||
</talendType>
|
||||
<talendType type="id_Integer">
|
||||
<dbType type="INT" default="true" />
|
||||
<dbType type="BIGINT" />
|
||||
</talendType>
|
||||
<talendType type="id_Long">
|
||||
<dbType type="BIGINT" default="true" />
|
||||
</talendType>
|
||||
<talendType type="id_Object">
|
||||
<dbType type="BLOB" default="true"/>
|
||||
<dbType type="ENUM" />
|
||||
<dbType type="GEOGRAPHY" />
|
||||
<dbType type="GEOGRAPHYPOINT" />
|
||||
<dbType type="MEDIUMINT" />
|
||||
<dbType type="LONGBLOB" />
|
||||
<dbType type="MEDIUMBLOB" />
|
||||
<dbType type="SET" />
|
||||
<dbType type="TINYBLOB" />
|
||||
</talendType>
|
||||
<talendType type="id_Short">
|
||||
<dbType type="SMALLINT" default="true" />
|
||||
<dbType type="INT" />
|
||||
<dbType type="BIGINT"/>
|
||||
<dbType type="MEDIUMINT" />
|
||||
</talendType>
|
||||
<talendType type="id_String">
|
||||
<dbType type="VARCHAR" default="true" />
|
||||
<dbType type="LONGTEXT"/>
|
||||
<dbType type="MEDIUMTEXT" />
|
||||
<dbType type="TEXT" />
|
||||
<dbType type="TINYTEXT" />
|
||||
<dbType type="CHAR" />
|
||||
<dbType type="JSON" />
|
||||
</talendType>
|
||||
</talendToDbTypes>
|
||||
<dbToTalendTypes>
|
||||
<dbType type="BOOL">
|
||||
<talendType type="id_Boolean" default="true" />
|
||||
</dbType>
|
||||
<dbType type="BOOLEAN">
|
||||
<talendType type="id_Boolean" default="true" />
|
||||
</dbType>
|
||||
<dbType type="BIGINT">
|
||||
<talendType type="id_Long" default="true" />
|
||||
</dbType>
|
||||
<dbType type="BINARY">
|
||||
<talendType type="id_byte[]" />
|
||||
<talendType type="id_Boolean" default="true" />
|
||||
</dbType>
|
||||
<dbType type="BIT">
|
||||
<talendType type="id_byte[]" />
|
||||
<talendType type="id_Boolean" default="true" />
|
||||
</dbType>
|
||||
<dbType type="BLOB">
|
||||
<talendType type="id_byte[]" default="true" />
|
||||
<talendType type="id_Object" />
|
||||
</dbType>
|
||||
<dbType type="CHAR">
|
||||
<talendType type="id_String" default="true" />
|
||||
</dbType>
|
||||
<dbType type="DATE">
|
||||
<talendType type="id_Date" default="true" />
|
||||
</dbType>
|
||||
<dbType type="DATETIME">
|
||||
<talendType type="id_Date" default="true" />
|
||||
</dbType>
|
||||
<dbType type="DECIMAL">
|
||||
<talendType type="id_Float"/>
|
||||
<talendType type="id_Double"/>
|
||||
<talendType type="id_BigDecimal" default="true"/>
|
||||
</dbType>
|
||||
<dbType type="DOUBLE">
|
||||
<talendType type="id_Double" default="true" />
|
||||
<talendType type="id_BigDecimal"/>
|
||||
</dbType>
|
||||
<dbType type="ENUM">
|
||||
<talendType type="id_Object" default="true" />
|
||||
</dbType>
|
||||
<dbType type="FLOAT">
|
||||
<talendType type="id_Float" default="true" />
|
||||
<talendType type="id_Double"/>
|
||||
<talendType type="id_BigDecimal"/>
|
||||
</dbType>
|
||||
<dbType type="GEOGRAPHY">
|
||||
<talendType type="id_Object" default="true" />
|
||||
</dbType>
|
||||
<dbType type="GEOGRAPHYPOINT">
|
||||
<talendType type="id_Object" default="true" />
|
||||
</dbType>
|
||||
<dbType type="JSON">
|
||||
<talendType type="id_String" default="true" />
|
||||
<talendType type="id_Object" />
|
||||
</dbType>
|
||||
<dbType type="INT">
|
||||
<talendType type="id_Integer" default="true" />
|
||||
<talendType type="id_Long"/>
|
||||
</dbType>
|
||||
<dbType type="INTEGER">
|
||||
<talendType type="id_Integer" default="true" />
|
||||
<talendType type="id_Long"/>
|
||||
</dbType>
|
||||
<dbType type="LONGTEXT">
|
||||
<talendType type="id_String" default="true" />
|
||||
</dbType>
|
||||
<dbType type="LONGBLOB">
|
||||
<talendType type="id_byte[]" default="true" />
|
||||
<talendType type="id_Object" />
|
||||
</dbType>
|
||||
<dbType type="MEDIUMBLOB">
|
||||
<talendType type="id_byte[]" default="true" />
|
||||
<talendType type="id_Object" />
|
||||
</dbType>
|
||||
<dbType type="MEDIUMINT">
|
||||
<talendType type="id_Integer" default="true" />
|
||||
<talendType type="id_Long"/>
|
||||
</dbType>
|
||||
<dbType type="MEDIUMTEXT">
|
||||
<talendType type="id_String" default="true" />
|
||||
</dbType>
|
||||
<dbType type="SMALLINT">
|
||||
<talendType type="id_Short" default="true" />
|
||||
<talendType type="id_Long"/>
|
||||
<talendType type="id_Integer"/>
|
||||
</dbType>
|
||||
<dbType type="SET">
|
||||
<talendType type="id_Object" default="true" />
|
||||
</dbType>
|
||||
<dbType type="TEXT">
|
||||
<talendType type="id_String" default="true" />
|
||||
</dbType>
|
||||
<dbType type="TIME">
|
||||
<talendType type="id_Date" default="true" />
|
||||
</dbType>
|
||||
<dbType type="TIMESTAMP">
|
||||
<talendType type="id_Date" default="true" />
|
||||
</dbType>
|
||||
<dbType type="TINYBLOB">
|
||||
<talendType type="id_byte[]" default="true" />
|
||||
<talendType type="id_Object" />
|
||||
</dbType>
|
||||
<dbType type="TINYINT">
|
||||
<talendType type="id_Byte" default="true" />
|
||||
<talendType type="id_Integer"/>
|
||||
<talendType type="id_Long"/>
|
||||
<talendType type="id_Short"/>
|
||||
</dbType>
|
||||
<dbType type="TINYTEXT">
|
||||
<talendType type="id_String" default="true" />
|
||||
</dbType>
|
||||
<dbType type="VARBINARY">
|
||||
<talendType type="id_byte[]" default="true" />
|
||||
</dbType>
|
||||
<dbType type="VARCHAR">
|
||||
<talendType type="id_String" default="true" />
|
||||
</dbType>
|
||||
<dbType type="YEAR">
|
||||
<talendType type="id_Date" default="true" />
|
||||
</dbType>
|
||||
<dbType type="BIGINT UNSIGNED" >
|
||||
</dbType>
|
||||
<dbType type="DOUBLE UNSIGNED" >
|
||||
<talendType type="id_Double" default="true" />
|
||||
<talendType type="id_BigDecimal"/>
|
||||
</dbType>
|
||||
<dbType type="FLOAT UNSIGNED" >
|
||||
<talendType type="id_Double" default="true" />
|
||||
<talendType type="id_BigDecimal"/>
|
||||
</dbType>
|
||||
<dbType type="INT UNSIGNED" >
|
||||
<talendType type="id_Long" default="true" />
|
||||
</dbType>
|
||||
<dbType type="INTEGER UNSIGNED" >
|
||||
<talendType type="id_Long" default="true" />
|
||||
</dbType>
|
||||
<dbType type="MEDIUMINT UNSIGNED" >
|
||||
<talendType type="id_Integer" default="true" />
|
||||
<talendType type="id_Long" />
|
||||
</dbType>
|
||||
<dbType type="SMALLINT UNSIGNED" >
|
||||
<talendType type="id_Integer" default="true" />
|
||||
<talendType type="id_Long" />
|
||||
</dbType>
|
||||
<dbType type="TINYINT UNSIGNED" >
|
||||
<talendType type="id_Short" default="true" />
|
||||
<talendType type="id_Integer" />
|
||||
<talendType type="id_Long" />
|
||||
</dbType>
|
||||
</dbToTalendTypes>
|
||||
</language>
|
||||
</dbms>
|
||||
|
||||
</mapping>
|
||||
@@ -42,6 +42,7 @@ import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
|
||||
@@ -50,11 +51,16 @@ import org.eclipse.core.resources.IContainer;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IFolder;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.resources.IWorkspace;
|
||||
import org.eclipse.core.resources.IWorkspaceRunnable;
|
||||
import org.eclipse.core.resources.ResourcesPlugin;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.FileLocator;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.OperationCanceledException;
|
||||
import org.eclipse.core.runtime.jobs.ISchedulingRule;
|
||||
import org.eclipse.core.runtime.jobs.Job;
|
||||
import org.osgi.framework.Bundle;
|
||||
import org.talend.commons.exception.CommonExceptionHandler;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
@@ -1173,4 +1179,33 @@ public class FilesUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static void executeFolderAction(IProgressMonitor monitor, IResource parentFolder, IWorkspaceRunnable run)
|
||||
throws CoreException {
|
||||
if (Job.getJobManager().currentRule() == null) {
|
||||
IWorkspace workspace = ResourcesPlugin.getWorkspace();
|
||||
ISchedulingRule defaultRule = workspace.getRuleFactory().modifyRule(parentFolder);
|
||||
ISchedulingRule noBlockRule = new ISchedulingRule() {
|
||||
|
||||
@Override
|
||||
public boolean isConflicting(ISchedulingRule rule) {
|
||||
return this.contains(rule);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean contains(ISchedulingRule rule) {
|
||||
if (this.equals(rule)) {
|
||||
return true;
|
||||
}
|
||||
if (defaultRule.contains(rule)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
workspace.run(run, noBlockRule, IWorkspace.AVOID_UPDATE, monitor);
|
||||
} else {
|
||||
run.run(monitor);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -94,4 +94,6 @@ public interface IESBService extends IService {
|
||||
* @return
|
||||
*/
|
||||
public IProcessor createOSGIJavaProcessor(IProcess process, Property property, boolean filenameFromLabel);
|
||||
|
||||
public boolean isSOAPServiceProvider(Item item);
|
||||
}
|
||||
|
||||
@@ -126,6 +126,8 @@ public class PluginChecker {
|
||||
|
||||
public static final String BDEE_PLUGIN_ID = "org.talend.designer.bigdata"; //$NON-NLS-1$
|
||||
|
||||
public static final String BD_ROUTINE_PLUGIN_ID = "org.talend.designer.routines.bigdata"; //$NON-NLS-1$
|
||||
|
||||
public static final String DOCKER_PLUGIN_ID = "org.talend.designer.docker"; //$NON-NLS-1$
|
||||
|
||||
public static final String HELP_DI_EE_PLUGIN_ID = "org.talend.help.dataprep"; //$NON-NLS-1$
|
||||
@@ -364,6 +366,10 @@ public class PluginChecker {
|
||||
return isPluginLoaded(ESBSE_PLUGIN_ID);
|
||||
}
|
||||
|
||||
public static boolean isBigdataRoutineLoaded() {
|
||||
return isPluginLoaded(BD_ROUTINE_PLUGIN_ID);
|
||||
}
|
||||
|
||||
public static String getBundlePath(String bundleName) {
|
||||
String bundlePath = ""; //$NON-NLS-1$
|
||||
Bundle refBundle = Platform.getBundle(bundleName);
|
||||
|
||||
@@ -224,6 +224,7 @@ public class DatabaseConnStrUtil {
|
||||
if (template.startsWith(DbConnStrForHive.URL_HIVE_2_TEMPLATE)) {
|
||||
url = getImpalaURLString(false, server, port, sidOrDatabase, impalaPrincipal);
|
||||
}
|
||||
url = attachAdditionalHiveParameters(url, dbConn, false);
|
||||
return url;
|
||||
}
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ public enum EDatabaseVersion4Drivers {
|
||||
HSQLDB_SERVER(new DbVersion4Drivers(EDatabaseTypeName.HSQLDB_SERVER, "hsqldb.jar")), //$NON-NLS-1$
|
||||
HSQLDB_WEBSERVER(new DbVersion4Drivers(EDatabaseTypeName.HSQLDB_WEBSERVER, "hsqldb.jar")), //$NON-NLS-1$
|
||||
|
||||
H2(new DbVersion4Drivers(EDatabaseTypeName.H2, "h2-1.3.160.jar")), //$NON-NLS-1$
|
||||
H2(new DbVersion4Drivers(EDatabaseTypeName.H2, "h2-1.4.198.jar")), //$NON-NLS-1$
|
||||
|
||||
//
|
||||
JAVADB_EMBEDED(new DbVersion4Drivers(EDatabaseTypeName.JAVADB_EMBEDED, "derby.jar")), //$NON-NLS-1$
|
||||
|
||||
@@ -81,6 +81,11 @@ public final class ComponentUtilities {
|
||||
|
||||
public static void setNodeValue(NodeType node, String name, String value) {
|
||||
ElementParameterType property = getNodeProperty(node, name);
|
||||
|
||||
if (property == null) {
|
||||
throw new IllegalArgumentException( "The component node "+node.getComponentName()+" doesn't have the property "+name );
|
||||
}
|
||||
|
||||
property.setValue(value);
|
||||
}
|
||||
|
||||
|
||||
@@ -111,4 +111,6 @@ public interface IComponentsFactory {
|
||||
public Map<String, File> getComponentsProvidersFolder();
|
||||
|
||||
public List<ComponentProviderInfo> getComponentsProvidersInfo();
|
||||
|
||||
public String getCustomComponentBundlePath();
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ public class ContextUtils {
|
||||
"static", "void", "class", "finally", "long", "strictfp", "volatile", "const", "float", "native", "super", "while")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ //$NON-NLS-11$ //$NON-NLS-12$
|
||||
|
||||
private static final Set<String> SECURE_SENSITIVE_CONTEXT_NAMES_EXP = new HashSet<String>(Arrays.asList("resource_flow_temp_folder", "resource_webhook_payload", "resource_file_[\\w]+",
|
||||
"resource_directory_[\\w]+", "connection_[a-zA-Z0-9]+_[\\w]"));
|
||||
"resource_directory_[\\w]+", "connection_[a-zA-Z0-9]+_[\\w]+"));
|
||||
|
||||
|
||||
/**
|
||||
@@ -594,7 +594,7 @@ public class ContextUtils {
|
||||
return false;
|
||||
}
|
||||
// need check the raw value, because in sourceParam, it's raw
|
||||
if (!sourceParam.getValue().equals(targetParamType.getRawValue())) {
|
||||
if (!StringUtils.equals(sourceParam.getValue(), targetParamType.getRawValue())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -320,7 +320,8 @@ public class JobContextManager implements IContextManager {
|
||||
contextParam = new JobContextParameter();
|
||||
contextParam.setContext(context);
|
||||
contextParam.setName(contextParamType.getName());
|
||||
contextParam.setPrompt(contextParamType.getPrompt());
|
||||
contextParam.setPrompt(
|
||||
contextParamType.getPrompt() == null ? (contextParamType.getName() + "?") : contextParamType.getPrompt());
|
||||
contextParam.setInternalId(contextParamType.getInternalId());
|
||||
originalParamerters.add(contextParam.getName());
|
||||
boolean exists = true;
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.util.Set;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.talend.commons.exception.BusinessException;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.IService;
|
||||
import org.talend.core.model.general.ModuleNeeded.ELibraryInstallStatus;
|
||||
import org.talend.core.model.process.IElement;
|
||||
@@ -133,4 +134,14 @@ public interface ILibrariesService extends IService {
|
||||
public void afterChangingLibraries();
|
||||
}
|
||||
|
||||
public static ILibrariesService get() {
|
||||
GlobalServiceRegister gsr = GlobalServiceRegister.getDefault();
|
||||
if (gsr != null) {
|
||||
if (gsr.isServiceRegistered(ILibrariesService.class)) {
|
||||
return gsr.getService(ILibrariesService.class);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1490,21 +1490,24 @@ public class RepositoryToComponentProperty {
|
||||
}
|
||||
|
||||
if (value.equals("USE_SSL") && (EDatabaseTypeName.HIVE.getDisplayName().equals(databaseType)
|
||||
|| EDatabaseTypeName.ORACLE_CUSTOM.getDisplayName().equals(databaseType))) {
|
||||
|| EDatabaseTypeName.ORACLE_CUSTOM.getDisplayName().equals(databaseType)
|
||||
|| EDatabaseTypeName.IMPALA.getDisplayName().equals(databaseType))) {
|
||||
String message = connection.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_USE_SSL);
|
||||
return Boolean.parseBoolean(message);
|
||||
}
|
||||
|
||||
if ((value.equals("SSL_TRUST_STORE") || value.equals("SSL_TRUSTSERVER_TRUSTSTORE"))
|
||||
&& (EDatabaseTypeName.HIVE.getDisplayName().equals(databaseType)
|
||||
|| EDatabaseTypeName.ORACLE_CUSTOM.getDisplayName().equals(databaseType))) {
|
||||
|| EDatabaseTypeName.ORACLE_CUSTOM.getDisplayName().equals(databaseType)
|
||||
|| EDatabaseTypeName.IMPALA.getDisplayName().equals(databaseType))) {
|
||||
return getAppropriateValue(connection,
|
||||
connection.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PATH));
|
||||
}
|
||||
|
||||
if ((value.equals("SSL_TRUST_STORE_PASSWORD") || value.equals("SSL_TRUSTSERVER_PASSWORD"))
|
||||
&& (EDatabaseTypeName.HIVE.getDisplayName().equals(databaseType)
|
||||
|| EDatabaseTypeName.ORACLE_CUSTOM.getDisplayName().equals(databaseType))) {
|
||||
|| EDatabaseTypeName.ORACLE_CUSTOM.getDisplayName().equals(databaseType)
|
||||
|| EDatabaseTypeName.IMPALA.getDisplayName().equals(databaseType))) {
|
||||
return getAppropriateValue(connection, connection
|
||||
.getValue(connection.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PASSWORD), false));
|
||||
}
|
||||
|
||||
@@ -113,8 +113,6 @@ public enum EParameterFieldType {
|
||||
|
||||
GROUPING_CAMPAIGN_CHOOSER, // htyin added for DQ Matching components
|
||||
MULTI_PATTERN, // yyin added TDQ-13437
|
||||
SYNC_NEXUS_BUTTON,
|
||||
CHECK_NEXUS_BUTTON,
|
||||
PATTERN_PROPERTY, // yyin, added TDQ-13437
|
||||
|
||||
UNIFIED_COMPONENTS,
|
||||
|
||||
@@ -60,6 +60,7 @@ import org.talend.designer.core.model.utils.emf.talendfile.RoutinesParameterType
|
||||
import org.talend.designer.runprocess.ItemCacheManager;
|
||||
import org.talend.repository.ProjectManager;
|
||||
import org.talend.repository.model.IProxyRepositoryFactory;
|
||||
import org.apache.commons.text.StringEscapeUtils;
|
||||
|
||||
/**
|
||||
* DOC bqian class global comment. Detailled comment
|
||||
@@ -1003,4 +1004,21 @@ public final class ProcessUtils {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isChildRouteProcess(IProcess process) {
|
||||
if (process != null) {
|
||||
for (INode node : process.getGraphicalNodes()) {
|
||||
if ((node.getComponent().getName() != null) &&
|
||||
(node.getComponent().getName().compareTo("tRouteInput") == 0)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String escapeJava(String input) {
|
||||
return StringEscapeUtils.escapeJava(input);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -963,7 +963,7 @@ public class RelationshipItemBuilder {
|
||||
|
||||
Map<Relation, Set<Relation>> itemRelations = getRelatedRelations(item);
|
||||
|
||||
Set<Relation> repositoryNode = (Set<Relation>) itemRelations.get(relation);
|
||||
Set<Relation> repositoryNode = (Set<Relation>) itemRelations.getOrDefault(relation, new HashSet<Relation>());
|
||||
|
||||
for (Relation rel : repositoryNode) {
|
||||
if (rel.getType().equals("Beans")) {
|
||||
|
||||
@@ -1414,12 +1414,8 @@ public class ERepositoryObjectType extends DynaEnum<ERepositoryObjectType> {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static List<ERepositoryObjectType> getAllTypesOfProcess() {
|
||||
public static List<ERepositoryObjectType> getAllTypesOfBigDataProcess() {
|
||||
List<ERepositoryObjectType> allTypes = new ArrayList<ERepositoryObjectType>();
|
||||
|
||||
if (ERepositoryObjectType.PROCESS != null) {
|
||||
allTypes.add(ERepositoryObjectType.PROCESS);
|
||||
}
|
||||
if (ERepositoryObjectType.PROCESS_MR != null) {
|
||||
allTypes.add(ERepositoryObjectType.PROCESS_MR);
|
||||
}
|
||||
@@ -1432,6 +1428,17 @@ public class ERepositoryObjectType extends DynaEnum<ERepositoryObjectType> {
|
||||
if (ERepositoryObjectType.PROCESS_SPARKSTREAMING != null) {
|
||||
allTypes.add(ERepositoryObjectType.PROCESS_SPARKSTREAMING);
|
||||
}
|
||||
return allTypes;
|
||||
}
|
||||
|
||||
public static List<ERepositoryObjectType> getAllTypesOfProcess() {
|
||||
List<ERepositoryObjectType> allTypes = new ArrayList<ERepositoryObjectType>();
|
||||
|
||||
allTypes.addAll(getAllTypesOfBigDataProcess());
|
||||
|
||||
if (ERepositoryObjectType.PROCESS != null) {
|
||||
allTypes.add(ERepositoryObjectType.PROCESS);
|
||||
}
|
||||
if (ERepositoryObjectType.PROCESS_ROUTE != null) {
|
||||
allTypes.add(ERepositoryObjectType.PROCESS_ROUTE);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ public interface SVNConstant {
|
||||
|
||||
public static final String NAME_MASTER = "master"; //$NON-NLS-1$
|
||||
|
||||
public static final String NAME_MAIN = "main"; //$NON-NLS-1$
|
||||
|
||||
public static final String NAME_ORIGIN = "origin"; //$NON-NLS-1$
|
||||
|
||||
/*
|
||||
|
||||
@@ -320,24 +320,28 @@ public class RepositoryUpdateManagerHelper {
|
||||
|
||||
// all the jobs
|
||||
for (IRepositoryViewObject process : processRep) {
|
||||
Item item = process.getProperty().getItem();
|
||||
boolean found = false;
|
||||
for (IProcess2 open : openedProcessList) {
|
||||
if (open.getId().equals(item.getProperty().getId())) {
|
||||
found = true;
|
||||
try {
|
||||
Item item = process.getProperty().getItem();
|
||||
boolean found = false;
|
||||
for (IProcess2 open : openedProcessList) {
|
||||
if (open.getId().equals(item.getProperty().getId())) {
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
continue;
|
||||
}
|
||||
checkMonitorCanceled(parentMonitor);
|
||||
parentMonitor.subTask(RepositoryUpdateManager.getUpdateJobInfor(item.getProperty()));
|
||||
if (found) {
|
||||
continue;
|
||||
}
|
||||
checkMonitorCanceled(parentMonitor);
|
||||
parentMonitor.subTask(RepositoryUpdateManager.getUpdateJobInfor(item.getProperty()));
|
||||
|
||||
// List<UpdateResult> resultFromProcess = getResultFromProcess(process, types, onlySimpleShow);
|
||||
// List<UpdateResult> resultFromProcess = getResultFromProcess(process, types, onlySimpleShow);
|
||||
|
||||
List<UpdateResult> resultFromProcess = getUpdatesNeededFromItems(parentMonitor, item, types);
|
||||
if (resultFromProcess != null) {
|
||||
resultList.addAll(resultFromProcess);
|
||||
List<UpdateResult> resultFromProcess = getUpdatesNeededFromItems(parentMonitor, item, types);
|
||||
if (resultFromProcess != null) {
|
||||
resultList.addAll(resultFromProcess);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
ExceptionHandler.process(ex);
|
||||
}
|
||||
parentMonitor.worked(1);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,9 @@ import java.io.InputStream;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.http.HttpEntity;
|
||||
@@ -53,6 +55,14 @@ public class NexusServerUtils {
|
||||
// the max search result is 200 by defult from nexus
|
||||
private static final int MAX_SEARCH_COUNT = 200;
|
||||
|
||||
public static final Set<String> IGNORED_TYPES = new HashSet<String>();
|
||||
|
||||
static {
|
||||
IGNORED_TYPES.add("pom");
|
||||
IGNORED_TYPES.add("sha1");
|
||||
IGNORED_TYPES.add("md5");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* DOC check if the repository exist or not
|
||||
@@ -236,36 +246,36 @@ public class NexusServerUtils {
|
||||
private static int readDocument(Document document, List<MavenArtifact> artifacts) throws Exception {
|
||||
List<Node> list = document.selectNodes("/searchNGResponse/data/artifact");//$NON-NLS-1$
|
||||
for (Node arNode : list) {
|
||||
MavenArtifact artifact = new MavenArtifact();
|
||||
artifacts.add(artifact);
|
||||
artifact.setGroupId(arNode.selectSingleNode("groupId").getText());//$NON-NLS-1$
|
||||
artifact.setArtifactId(arNode.selectSingleNode("artifactId").getText());//$NON-NLS-1$
|
||||
artifact.setVersion(arNode.selectSingleNode("version").getText());//$NON-NLS-1$
|
||||
Node descNode = arNode.selectSingleNode("description");//$NON-NLS-1$
|
||||
if (descNode != null) {
|
||||
artifact.setDescription(descNode.getText());
|
||||
}
|
||||
Node urlNode = arNode.selectSingleNode("url");//$NON-NLS-1$
|
||||
if (urlNode != null) {
|
||||
artifact.setUrl(urlNode.getText());
|
||||
}
|
||||
Node licenseNode = arNode.selectSingleNode("license");//$NON-NLS-1$
|
||||
if (licenseNode != null) {
|
||||
artifact.setLicense(licenseNode.getText());
|
||||
}
|
||||
|
||||
Node licenseUrlNode = arNode.selectSingleNode("licenseUrl");//$NON-NLS-1$
|
||||
if (licenseUrlNode != null) {
|
||||
artifact.setLicenseUrl(licenseUrlNode.getText());
|
||||
}
|
||||
|
||||
List<Node> artLinks = arNode.selectNodes("artifactHits/artifactHit/artifactLinks/artifactLink");//$NON-NLS-1$
|
||||
for (Node link : artLinks) {
|
||||
MavenArtifact artifact = new MavenArtifact();
|
||||
|
||||
artifact.setGroupId(arNode.selectSingleNode("groupId").getText());//$NON-NLS-1$
|
||||
artifact.setArtifactId(arNode.selectSingleNode("artifactId").getText());//$NON-NLS-1$
|
||||
artifact.setVersion(arNode.selectSingleNode("version").getText());//$NON-NLS-1$
|
||||
Node descNode = arNode.selectSingleNode("description");//$NON-NLS-1$
|
||||
if (descNode != null) {
|
||||
artifact.setDescription(descNode.getText());
|
||||
}
|
||||
Node urlNode = arNode.selectSingleNode("url");//$NON-NLS-1$
|
||||
if (urlNode != null) {
|
||||
artifact.setUrl(urlNode.getText());
|
||||
}
|
||||
Node licenseNode = arNode.selectSingleNode("license");//$NON-NLS-1$
|
||||
if (licenseNode != null) {
|
||||
artifact.setLicense(licenseNode.getText());
|
||||
}
|
||||
|
||||
Node licenseUrlNode = arNode.selectSingleNode("licenseUrl");//$NON-NLS-1$
|
||||
if (licenseUrlNode != null) {
|
||||
artifact.setLicenseUrl(licenseUrlNode.getText());
|
||||
}
|
||||
Node extensionElement = link.selectSingleNode("extension");//$NON-NLS-1$
|
||||
String extension = null;
|
||||
String classifier = null;
|
||||
if (extensionElement != null) {
|
||||
if ("pom".equals(extensionElement.getText())) {//$NON-NLS-1$
|
||||
if (IGNORED_TYPES.contains(extensionElement.getText())) {// $NON-NLS-1$
|
||||
continue;
|
||||
}
|
||||
extension = extensionElement.getText();
|
||||
@@ -276,6 +286,7 @@ public class NexusServerUtils {
|
||||
}
|
||||
artifact.setType(extension);
|
||||
artifact.setClassifier(classifier);
|
||||
artifacts.add(artifact);
|
||||
}
|
||||
}
|
||||
return list.size();
|
||||
|
||||
@@ -231,7 +231,12 @@ public class TalendLibsServerManager {
|
||||
return canConnect;
|
||||
}
|
||||
|
||||
public ArtifactRepositoryBean getTalentArtifactServer() {
|
||||
public boolean isProxyArtifactRepoConfigured() {
|
||||
ArtifactRepositoryBean serverBean = getProxyArtifactServer();
|
||||
return serverBean == null ? false : true;
|
||||
}
|
||||
|
||||
public ArtifactRepositoryBean getProxyArtifactServer() {
|
||||
ArtifactRepositoryBean serverBean = new ArtifactRepositoryBean();
|
||||
// get from ini file first
|
||||
String url = System.getProperty(NEXUS_PROXY_URL);
|
||||
@@ -255,9 +260,16 @@ public class TalendLibsServerManager {
|
||||
serverBean.setType(prefManager.getValue(TalendLibsServerManager.NEXUS_PROXY_TYPE));
|
||||
}
|
||||
}
|
||||
hasProxySetting = StringUtils.isNotEmpty(serverBean.getServer());
|
||||
// use default
|
||||
if (!hasProxySetting) {
|
||||
if (StringUtils.isNotEmpty(serverBean.getServer())) {
|
||||
return serverBean;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public ArtifactRepositoryBean getTalentArtifactServer() {
|
||||
ArtifactRepositoryBean serverBean = getProxyArtifactServer();
|
||||
if (serverBean == null) {
|
||||
serverBean = new ArtifactRepositoryBean();
|
||||
serverBean.setServer(TALEND_LIB_SERVER);
|
||||
serverBean.setUserName(TALEND_LIB_USER);
|
||||
serverBean.setPassword(TALEND_LIB_PASSWORD);
|
||||
|
||||
@@ -208,4 +208,8 @@ public interface ITalendCorePrefConstants {
|
||||
|
||||
public static final int ARTIFACT_PROXY_SETTING = 1;
|
||||
|
||||
public static final String NEXUS_SHARE_LIBS = "NEXUS_SHARE_LIBS";
|
||||
|
||||
public static final boolean NEXUS_SHARE_LIBS_DEFAULT = false;
|
||||
|
||||
}
|
||||
|
||||
@@ -380,4 +380,14 @@ public class MavenUrlHelper {
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
public static String getSNAPSHOTVersion(String rVersion) {
|
||||
if (rVersion == null) {
|
||||
return rVersion;
|
||||
}
|
||||
if (rVersion.contains("-")) {
|
||||
return rVersion.substring(0, rVersion.indexOf("-") + 1) + MavenUrlHelper.VERSION_SNAPSHOT;
|
||||
}
|
||||
return rVersion;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.talend.core.runtime.util;
|
||||
//============================================================================
|
||||
//
|
||||
//Copyright (C) 2006-2019 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
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
public interface ComponentsLocationProvider {
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package org.talend.core.runtime.util;
|
||||
//============================================================================
|
||||
//
|
||||
//Copyright (C) 2006-2019 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
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
public interface SharedStudioInfoProvider {
|
||||
public boolean isSupportCurrentMode();
|
||||
}
|
||||
@@ -13,21 +13,30 @@
|
||||
package org.talend.core.runtime.util;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.model.components.IComponentsFactory;
|
||||
import org.talend.core.runtime.CoreRuntimePlugin;
|
||||
import org.talend.core.service.IUpdateService;
|
||||
import org.talend.utils.io.FilesUtils;
|
||||
import org.talend.utils.string.DigestUtil;
|
||||
|
||||
public class SharedStudioUtils {
|
||||
|
||||
public static final String FILE_EXTRA_FEATURE_INDEX = "extra_feature.index"; //$NON-NLS-1$
|
||||
|
||||
public static final String SIGNATURE_FILE_NAME_SUFFIX = ".sig"; //$NON-NLS-1$
|
||||
|
||||
public static final String PROP_DEVMODE = "osgi.dev"; //$NON-NLS-1$
|
||||
|
||||
public static boolean updateExtraFeatureFile() {
|
||||
File userConfigFolder = new File(Platform.getConfigurationLocation().getURL().getPath());
|
||||
File studioConfigFolder = new File(Platform.getInstallLocation().getURL().getPath(), "configuration");//$NON-NLS-1$
|
||||
@@ -60,6 +69,9 @@ public class SharedStudioUtils {
|
||||
}
|
||||
|
||||
public static boolean isSharedStudioMode() {
|
||||
if (isDevEnvironment()) {
|
||||
return false;
|
||||
}
|
||||
File configFolder = new File (Platform.getConfigurationLocation().getURL().getFile());
|
||||
File studioFolder = new File (Platform.getInstallLocation().getURL().getFile());
|
||||
if (configFolder != null && studioFolder != null && configFolder.getParentFile() != null
|
||||
@@ -69,6 +81,36 @@ public class SharedStudioUtils {
|
||||
return true;
|
||||
}
|
||||
|
||||
private static boolean isDevEnvironment() {
|
||||
if (CoreRuntimePlugin.getInstance().getBundle().getBundleContext().getProperty(PROP_DEVMODE) != null) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isNeedCleanOnSharedMode() {
|
||||
if (SharedStudioUtils.isSharedStudioMode()) {
|
||||
boolean isNeedClean = installedPatch();
|
||||
String studioArtifactsFileSha256Hex = getStudioArtifactsFileSha256Hex();
|
||||
if (updateArtifactsFileSha256Hex(studioArtifactsFileSha256Hex)) {
|
||||
isNeedClean = true;
|
||||
}
|
||||
return isNeedClean;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean updateArtifactsFileSha256Hex(String studioArtifactsFileSha256Hex) {
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(IUpdateService.class)) {
|
||||
IUpdateService updateService = GlobalServiceRegister.getDefault().getService(IUpdateService.class);
|
||||
try {
|
||||
return updateService.updateArtifactsFileSha256Hex(new NullProgressMonitor(), studioArtifactsFileSha256Hex);
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public static boolean installedPatch() {
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(IUpdateService.class)) {
|
||||
IUpdateService updateService = GlobalServiceRegister.getDefault().getService(IUpdateService.class);
|
||||
@@ -80,4 +122,50 @@ public class SharedStudioUtils {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static File getSharedStudioComponentsParentFolder() {
|
||||
File configFolder = new File(Platform.getConfigurationLocation().getURL().getFile());
|
||||
return configFolder;
|
||||
}
|
||||
|
||||
public static File getSharedStudioComponentsExtFolder() {
|
||||
File componentFolder = SharedStudioUtils.getSharedStudioComponentsParentFolder();
|
||||
IPath path = new Path(IComponentsFactory.COMPONENTS_INNER_FOLDER);
|
||||
path = path.append(IComponentsFactory.EXTERNAL_COMPONENTS_INNER_FOLDER);
|
||||
File extchangeFolder = new File (componentFolder, path.toOSString());
|
||||
return extchangeFolder;
|
||||
}
|
||||
|
||||
public static IPath getTempFolderPath() {
|
||||
if (SharedStudioUtils.isSharedStudioMode()) {
|
||||
Path wsPath = new Path(Platform.getInstanceLocation().getURL().getPath());
|
||||
return wsPath.append("temp");
|
||||
} else {
|
||||
return new Path(System.getProperty("user.dir")).append("temp");
|
||||
}
|
||||
}
|
||||
|
||||
public static String getStudioArtifactsFileSha256Hex() {
|
||||
File studioArtifactsFile = new File(Platform.getInstallLocation().getURL().getPath(), "artifacts.xml");//$NON-NLS-1$
|
||||
if (studioArtifactsFile.exists()) {
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
inputStream = new FileInputStream(studioArtifactsFile);
|
||||
return DigestUtil.sha256Hex(inputStream);
|
||||
} catch (FileNotFoundException e) {
|
||||
ExceptionHandler.process(e);
|
||||
} catch (IOException e) {
|
||||
ExceptionHandler.process(e);
|
||||
} finally {
|
||||
if (inputStream != null) {
|
||||
try {
|
||||
inputStream.close();
|
||||
} catch (IOException ex) {
|
||||
ExceptionHandler.process(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,4 +38,12 @@ public interface IDQComponentService extends IService {
|
||||
* @param node The node which need to be modified
|
||||
*/
|
||||
void correctlyCustomMatcherParameter(NodeType node);
|
||||
|
||||
/**
|
||||
* Change the attribute of MatchingData and use Integer value instead of double value.
|
||||
*
|
||||
* @param node The node which need to be modified
|
||||
*/
|
||||
void covertConfindWeight2Int(NodeType node);
|
||||
|
||||
}
|
||||
|
||||
@@ -22,5 +22,9 @@ public interface IUpdateService extends IService {
|
||||
void syncComponentM2Jars(IProgressMonitor monitor);
|
||||
|
||||
public boolean syncSharedStudioLibraryInPatch(IProgressMonitor monitor) throws Exception;
|
||||
|
||||
public String getSharedStudioMissingPatchVersion();
|
||||
|
||||
public boolean updateArtifactsFileSha256Hex(IProgressMonitor monitor, String studioArtifactsFileShaCodeHex);
|
||||
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
@@ -94,6 +95,8 @@ public final class ProjectManager {
|
||||
|
||||
private Set<Project> tempProjects;
|
||||
|
||||
private WeakHashMap<IRepositoryViewObject, Boolean> cachedObjects = new WeakHashMap<IRepositoryViewObject, Boolean>();
|
||||
|
||||
private ProjectManager() {
|
||||
beforeLogonRecords = new HashSet<String>();
|
||||
logonRecords = new HashSet<String>();
|
||||
@@ -451,9 +454,15 @@ public final class ProjectManager {
|
||||
if (object == null) {
|
||||
return true;
|
||||
}
|
||||
if (cachedObjects.containsKey(object)) {
|
||||
return cachedObjects.get(object);
|
||||
}
|
||||
|
||||
org.talend.core.model.properties.Project emfProject = getProject(object.getProperty().getItem());
|
||||
org.talend.core.model.properties.Project curProject = curP.getEmfProject();
|
||||
return emfProject.equals(curProject);
|
||||
boolean ret = emfProject.equals(curProject);
|
||||
cachedObjects.put(object, ret);
|
||||
return ret;
|
||||
|
||||
} else {
|
||||
IProjectRepositoryNode root = node.getRoot();
|
||||
@@ -606,7 +615,8 @@ public final class ProjectManager {
|
||||
*/
|
||||
|
||||
if (!branchSelection.contains(NAME_TAGS) && !branchSelection.contains(NAME_BRANCHES)
|
||||
&& !branchSelection.contains(NAME_TRUNK) && !branchSelection.contains("master")) { //$NON-NLS-1$
|
||||
&& !branchSelection.contains(NAME_TRUNK) && !branchSelection.contains(SVNConstant.NAME_MASTER)
|
||||
&& !branchSelection.contains(SVNConstant.NAME_MAIN)) {
|
||||
branchSelection = NAME_BRANCHES + branchSelection;
|
||||
}
|
||||
return branchSelection;
|
||||
@@ -649,7 +659,8 @@ public final class ProjectManager {
|
||||
if (!branchName.startsWith(SVNConstant.NAME_TAGS + SVNConstant.SEP_CHAR)
|
||||
&& !branchName.startsWith(SVNConstant.NAME_BRANCHES + SVNConstant.SEP_CHAR)
|
||||
&& !branchName.startsWith(SVNConstant.NAME_ORIGIN + SVNConstant.SEP_CHAR)
|
||||
&& !branchName.equals(SVNConstant.NAME_TRUNK) && !branchName.equals(SVNConstant.NAME_MASTER)) {
|
||||
&& !branchName.equals(SVNConstant.NAME_TRUNK) && !branchName.equals(SVNConstant.NAME_MASTER)
|
||||
&& !branchName.equals(SVNConstant.NAME_MAIN)) {
|
||||
formatedBranchName = SVNConstant.NAME_BRANCHES + SVNConstant.SEP_CHAR + branchName;
|
||||
}
|
||||
return formatedBranchName;
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.IEditorPart;
|
||||
import org.talend.core.IService;
|
||||
import org.talend.core.model.components.IComponentsFactory;
|
||||
import org.talend.core.model.general.ModuleNeeded;
|
||||
import org.talend.core.model.general.Project;
|
||||
import org.talend.core.model.metadata.builder.connection.DatabaseConnection;
|
||||
import org.talend.core.model.process.IContextManager;
|
||||
@@ -125,7 +126,16 @@ public interface IRepositoryService extends IService {
|
||||
|
||||
public void openProjectSettingDialog(final String pageId);
|
||||
|
||||
public List<String> getProjectBranch(Project project) throws JSONException;
|
||||
/**
|
||||
*
|
||||
* get branches of project
|
||||
*
|
||||
* @param project
|
||||
* @param onlyLocalIfPossible try to only get branches from local repository to improve performance
|
||||
* @return
|
||||
* @throws JSONException
|
||||
*/
|
||||
public List<String> getProjectBranch(Project project, boolean onlyLocalIfPossible) throws JSONException;
|
||||
|
||||
public boolean askRetryForNetworkIssue(Throwable ex);
|
||||
|
||||
@@ -135,4 +145,8 @@ public interface IRepositoryService extends IService {
|
||||
|
||||
public void setShouldCheckRepoViewCommonNavigatorDirty(IRepositoryView repView, boolean shouldFlag);
|
||||
|
||||
boolean isProjectLevelLog4j2();
|
||||
|
||||
List<ModuleNeeded> getLog4j2Modules();
|
||||
|
||||
}
|
||||
|
||||
@@ -47,6 +47,8 @@ public class RepositoryConstants {
|
||||
|
||||
public static final String JOBLET_DOCUMENTATION_PATH = "documentations/generated/joblets"; //$NON-NLS-1$
|
||||
|
||||
public static final String PROJECT_SETTINGS_CUSTOM_URI_MAP = "custom_uri_mapping.json"; //$NON-NLS-1$
|
||||
|
||||
public static final String SYSTEM_DIRECTORY = "system"; //$NON-NLS-1$
|
||||
|
||||
public static final String USER_DEFINED = "UserDefined"; //$NON-NLS-1$
|
||||
|
||||
@@ -36,8 +36,6 @@ import org.talend.core.model.process.IElement;
|
||||
import org.talend.core.model.process.IElementParameter;
|
||||
import org.talend.core.model.process.INode;
|
||||
import org.talend.core.model.process.IProcess2;
|
||||
import org.talend.core.runtime.maven.MavenArtifact;
|
||||
import org.talend.core.runtime.maven.MavenUrlHelper;
|
||||
import org.talend.core.ui.CoreUIPlugin;
|
||||
import org.talend.core.ui.process.IGEFProcess;
|
||||
import org.talend.core.ui.services.IDesignerCoreUIService;
|
||||
@@ -192,33 +190,16 @@ public class ModuleListCellEditor extends DialogCellEditor {
|
||||
}
|
||||
// enable to refresh component setting after change modules.
|
||||
IElement element = this.tableParam.getElement();
|
||||
boolean isNotCConfig = element.getElementParameter("COMPONENT_NAME") == null ?
|
||||
true : !"cConfig".equals(element.getElementParameter("COMPONENT_NAME").getValue());
|
||||
if (element != null && isNotCConfig) {
|
||||
if (element != null) {
|
||||
IElementParameter updateComponentsParam = element.getElementParameter("UPDATE_COMPONENTS"); //$NON-NLS-1$
|
||||
if (updateComponentsParam != null) {
|
||||
updateComponentsParam.setValue(Boolean.TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
// cConfig
|
||||
if (!isNotCConfig) {
|
||||
if (newValue.startsWith(MavenUrlHelper.MVN_PROTOCOL)) {
|
||||
MavenArtifact art = MavenUrlHelper.parseMvnUrl(newValue);
|
||||
newValue = art.getFileName();
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
executeCommand(new ModelChangeCommand(tableParam, param.getName(), newValue, index));
|
||||
|
||||
if (newVal != null) {
|
||||
executeCommand(new ModelChangeCommand(tableParam, "JAR_PATH", newVal, index));
|
||||
}
|
||||
if (nexusVersion != null) {
|
||||
executeCommand(new ModelChangeCommand(tableParam, "JAR_NEXUS_VERSION", nexusVersion, index));
|
||||
}
|
||||
|
||||
oldValue = newValue;
|
||||
if (getTableViewer() != null) {
|
||||
getTableViewer().refresh(true);
|
||||
|
||||
@@ -40,6 +40,7 @@ import org.eclipse.ui.IWorkbench;
|
||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
|
||||
import org.talend.commons.ui.runtime.update.PreferenceKeys;
|
||||
import org.talend.commons.ui.runtime.utils.ZipFileUtils;
|
||||
import org.talend.commons.ui.swt.advanced.dataeditor.LabelFieldEditor;
|
||||
import org.talend.commons.ui.utils.workbench.preferences.OneLineComboFieldEditor;
|
||||
@@ -540,6 +541,7 @@ public abstract class I18nPreferencePage extends FieldEditorPreferencePage imple
|
||||
boolean ok = super.performOk();
|
||||
saveLanguageType();
|
||||
CorePlugin.getDefault().savePluginPreferences();
|
||||
PlatformUI.getPreferenceStore().setValue(PreferenceKeys.NEED_OSGI_CLEAN, true);
|
||||
if (isBabiliButtonClicked) {
|
||||
refreshAll();
|
||||
}
|
||||
@@ -557,6 +559,13 @@ public abstract class I18nPreferencePage extends FieldEditorPreferencePage imple
|
||||
protected void performApply() {
|
||||
saveLanguageType();
|
||||
CorePlugin.getDefault().savePluginPreferences();
|
||||
PlatformUI.getPreferenceStore().setValue(PreferenceKeys.NEED_OSGI_CLEAN, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void performDefaults() {
|
||||
super.performDefaults();
|
||||
PlatformUI.getPreferenceStore().setValue(PreferenceKeys.NEED_OSGI_CLEAN, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -102,7 +102,9 @@ public class HorizontalTabFactory {
|
||||
* @param descriptors
|
||||
*/
|
||||
public void setInput(List<TalendPropertyTabDescriptor> descriptors) {
|
||||
tabbedPropertyViewer.setInput(descriptors);
|
||||
if (tabbedPropertyViewer != null && tabbedPropertyViewer.getControl() != null && !tabbedPropertyViewer.getControl().isDisposed()) {
|
||||
tabbedPropertyViewer.setInput(descriptors);
|
||||
}
|
||||
}
|
||||
|
||||
public List<TalendPropertyTabDescriptor> getInput() {
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
// ============================================================================
|
||||
package org.talend.core;
|
||||
|
||||
import org.apache.logging.log4j.message.ThreadDumpMessage;
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
import org.eclipse.core.runtime.preferences.InstanceScope;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
@@ -208,4 +209,8 @@ public class CorePlugin extends Plugin {
|
||||
return (ICreateXtextProcessService) GlobalServiceRegister.getDefault().getService(ICreateXtextProcessService.class);
|
||||
}
|
||||
|
||||
public static String threadDump(String message) {
|
||||
return new ThreadDumpMessage(message).toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
package org.talend.core.model.metadata.query.generator;
|
||||
|
||||
import org.talend.core.database.EDatabaseTypeName;
|
||||
import org.talend.core.model.metadata.QueryUtil;
|
||||
import org.talend.core.model.metadata.query.AbstractQueryGenerator;
|
||||
import org.talend.core.model.process.IElement;
|
||||
|
||||
@@ -38,4 +39,23 @@ public class PostgreQueryGenerator extends AbstractQueryGenerator {
|
||||
}
|
||||
return super.getSchema(elem);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTableNameWithDBAndSchema(final String dbName, final String schema, String tableName) {
|
||||
if (tableName == null || EMPTY.equals(tableName.trim())) {
|
||||
tableName = QueryUtil.DEFAULT_TABLE_NAME;
|
||||
}
|
||||
|
||||
final StringBuffer tableNameWithDBAndSchema = new StringBuffer();
|
||||
|
||||
// postgres do not support db.schema.table_name, so only need schema.table_name
|
||||
if (schema != null && !EMPTY.equals(schema)) {
|
||||
tableNameWithDBAndSchema.append(checkContextAndAddQuote(schema));
|
||||
tableNameWithDBAndSchema.append(getSQLFieldConnector());
|
||||
}
|
||||
//
|
||||
tableNameWithDBAndSchema.append(checkContextAndAddQuote(tableName));
|
||||
|
||||
return tableNameWithDBAndSchema.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,13 +16,13 @@ import java.io.File;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
|
||||
import org.eclipse.core.runtime.preferences.DefaultScope;
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
||||
import org.talend.core.CorePlugin;
|
||||
import org.talend.core.prefs.GeneralParametersProvider.GeneralParameters;
|
||||
import org.talend.core.runtime.util.SharedStudioUtils;
|
||||
|
||||
/**
|
||||
* Intializer of core preferences. <br/>
|
||||
@@ -54,7 +54,7 @@ public class CorePreferenceInitializer extends AbstractPreferenceInitializer {
|
||||
IEclipsePreferences node = new DefaultScope().getNode(CorePlugin.getDefault().getBundle().getSymbolicName());
|
||||
|
||||
// Building temporary files directory path
|
||||
IPath tempPath = new Path(System.getProperty("user.dir")).append("temp"); // NON-NLS-1$// NON-NLS-2$ //$NON-NLS-1$ //$NON-NLS-2$
|
||||
IPath tempPath = SharedStudioUtils.getTempFolderPath();
|
||||
File tempFile = tempPath.toFile();
|
||||
if (!tempFile.exists()) {
|
||||
tempFile.mkdirs();
|
||||
|
||||
@@ -34,7 +34,14 @@ public interface IGITProviderService extends IService {
|
||||
|
||||
public String getCurrentGITRevision(Object process);
|
||||
|
||||
public String[] getBranchList(Project project);
|
||||
/**
|
||||
* get project branches
|
||||
*
|
||||
* @param project
|
||||
* @param onlyLocalIfPossible try to only get branches from local repository to improve performance
|
||||
* @return
|
||||
*/
|
||||
public String[] getBranchList(Project project, boolean onlyLocalIfPossible);
|
||||
|
||||
public boolean isGITProject(Project p) throws PersistenceException;
|
||||
|
||||
@@ -48,6 +55,8 @@ public interface IGITProviderService extends IService {
|
||||
|
||||
void createOrUpdateGitIgnoreFile(IProject eclipseProject) throws CoreException;
|
||||
|
||||
String getDefaultBranch(Project project);
|
||||
|
||||
public static IGITProviderService get() {
|
||||
GlobalServiceRegister register = GlobalServiceRegister.getDefault();
|
||||
if (!register.isServiceRegistered(IGITProviderService.class)) {
|
||||
|
||||
@@ -30,6 +30,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarOutputStream;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
@@ -59,6 +60,7 @@ import org.talend.commons.exception.CommonExceptionHandler;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.exception.PersistenceException;
|
||||
import org.talend.commons.runtime.model.repository.ERepositoryStatus;
|
||||
import org.talend.commons.runtime.utils.io.FileCopyUtils;
|
||||
import org.talend.commons.utils.PasswordEncryptUtil;
|
||||
import org.talend.commons.utils.generation.JavaUtils;
|
||||
import org.talend.commons.utils.time.TimeMeasure;
|
||||
@@ -620,7 +622,7 @@ public class ProcessorUtilities {
|
||||
*/
|
||||
generateBuildInfo(jobInfo, progressMonitor, isMainJob, currentProcess, currentJobName, processor, option);
|
||||
|
||||
copyDependenciedResources(currentProcess);
|
||||
copyDependenciedResources(currentProcess, progressMonitor);
|
||||
|
||||
return processor;
|
||||
}
|
||||
@@ -1082,8 +1084,8 @@ public class ProcessorUtilities {
|
||||
}
|
||||
|
||||
private static IContext checkCleanSecureContextParameterValue(IContext currentContext, JobInfo jobInfo) {
|
||||
|
||||
JobInfo job = null;
|
||||
|
||||
JobInfo job = null;
|
||||
|
||||
if (jobInfo.getFatherJobInfo() == null) {
|
||||
job = jobInfo;
|
||||
@@ -1095,10 +1097,10 @@ public class ProcessorUtilities {
|
||||
return currentContext;
|
||||
}
|
||||
}
|
||||
|
||||
if (job.getArgumentsMap() == null
|
||||
|| job.getArgumentsMap().get(TalendProcessArgumentConstant.ARG_CLEAR_PASSWORD_CONTEXT_PARAMETERS) == null
|
||||
|| !Boolean.parseBoolean((ProcessUtils.getOptionValue(job.getArgumentsMap(), TalendProcessArgumentConstant.ARG_CLEAR_PASSWORD_CONTEXT_PARAMETERS,
|
||||
|
||||
if (job.getArgumentsMap() == null
|
||||
|| job.getArgumentsMap().get(TalendProcessArgumentConstant.ARG_CLEAR_PASSWORD_CONTEXT_PARAMETERS) == null
|
||||
|| !Boolean.parseBoolean((ProcessUtils.getOptionValue(job.getArgumentsMap(), TalendProcessArgumentConstant.ARG_CLEAR_PASSWORD_CONTEXT_PARAMETERS,
|
||||
(String) null)))) {
|
||||
return currentContext;
|
||||
}
|
||||
@@ -1369,7 +1371,7 @@ public class ProcessorUtilities {
|
||||
generateBuildInfo(jobInfo, progressMonitor, isMainJob, currentProcess, currentJobName, processor, option);
|
||||
TimeMeasure.step(idTimer, "generateBuildInfo");
|
||||
|
||||
copyDependenciedResources(currentProcess);
|
||||
copyDependenciedResources(currentProcess, progressMonitor);
|
||||
|
||||
return processor;
|
||||
} finally {
|
||||
@@ -1382,7 +1384,40 @@ public class ProcessorUtilities {
|
||||
}
|
||||
}
|
||||
|
||||
private static Set<ModuleNeeded> getAllJobTestcaseModules(ProcessItem selectedProcessItem) {
|
||||
private static void syncContextResourcesForParentJob(IProcess currentProcess, IProgressMonitor progressMonitor) {
|
||||
ITalendProcessJavaProject processJavaProject = mainJobInfo.getProcessor().getTalendJavaProject();
|
||||
|
||||
final IFolder mainResourcesFolder = processJavaProject.getExternalResourcesFolder();
|
||||
final File targetFolder = mainResourcesFolder.getLocation().toFile();
|
||||
|
||||
final Set<JobInfo> dependenciesItems = mainJobInfo.getProcessor().getBuildChildrenJobs();
|
||||
|
||||
final IRunProcessService runProcessService = (IRunProcessService) GlobalServiceRegister.getDefault().getService(
|
||||
IRunProcessService.class);
|
||||
|
||||
List<ProcessItem> dependenciesItemsFiltered = dependenciesItems.stream().filter(jobInfo -> !jobInfo.isJoblet())
|
||||
.map(JobInfo::getProcessItem).collect(Collectors.toList());
|
||||
|
||||
if (dependenciesItemsFiltered.size() > 0) {
|
||||
dependenciesItemsFiltered.forEach(item -> {
|
||||
ITalendProcessJavaProject childJavaProject = runProcessService.getTalendJobJavaProject(item.getProperty());
|
||||
if (childJavaProject != null) {
|
||||
final IFolder childResourcesFolder = childJavaProject.getExternalResourcesFolder();
|
||||
if (childResourcesFolder.exists()) {
|
||||
FileCopyUtils.syncFolder(childResourcesFolder.getLocation().toFile(), targetFolder, false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
try {
|
||||
mainResourcesFolder.refreshLocal(IResource.DEPTH_INFINITE, progressMonitor);
|
||||
} catch (CoreException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Set<ModuleNeeded> getAllJobTestcaseModules(ProcessItem selectedProcessItem) {
|
||||
Set<ModuleNeeded> neededLibraries = new HashSet<>();
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(ITestContainerProviderService.class)) {
|
||||
ITestContainerProviderService testcontainerService =
|
||||
@@ -1516,7 +1551,7 @@ public class ProcessorUtilities {
|
||||
*
|
||||
* @param currentProcess
|
||||
*/
|
||||
private static void copyDependenciedResources(IProcess currentProcess) {
|
||||
private static void copyDependenciedResources(IProcess currentProcess, IProgressMonitor progressMonitor) {
|
||||
if (!(currentProcess instanceof IProcess2)) {
|
||||
return;
|
||||
}
|
||||
@@ -1573,6 +1608,7 @@ public class ProcessorUtilities {
|
||||
}
|
||||
}
|
||||
}
|
||||
syncContextResourcesForParentJob(currentProcess, progressMonitor);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -126,16 +126,16 @@ public class MavenLibraryResolverProvider {
|
||||
|
||||
}
|
||||
|
||||
public ArtifactResult resolveArtifact(MavenArtifact aritfact, boolean is4Parent) throws Exception {
|
||||
public ArtifactResult resolveArtifact(MavenArtifact artifact, boolean is4Parent) throws Exception {
|
||||
ArtifactRequest artifactRequest = new ArtifactRequest();
|
||||
RemoteRepository remoteRepo = getRemoteRepositroy(aritfact);
|
||||
RemoteRepository remoteRepo = getRemoteRepositroy(artifact);
|
||||
artifactRequest.addRepository(remoteRepo);
|
||||
if (is4Parent) {
|
||||
artifactRequest.addRepository(dynamicRemoteRepository);
|
||||
}
|
||||
Artifact artifact = new DefaultArtifact(aritfact.getGroupId(), aritfact.getArtifactId(), aritfact.getClassifier(),
|
||||
aritfact.getType(), aritfact.getVersion());
|
||||
artifactRequest.setArtifact(artifact);
|
||||
// Classifier must not be specified if type is pom
|
||||
artifactRequest.setArtifact(new DefaultArtifact(artifact.getGroupId(), artifact.getArtifactId(), "pom".equals(artifact.getType()) ? "" : artifact.getClassifier(),
|
||||
artifact.getType(), artifact.getVersion()));
|
||||
ArtifactResult result = null;
|
||||
if (is4Parent) {
|
||||
result = dynamicRepoSystem.resolveArtifact(dynamicRepoSystemSession, artifactRequest);
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<artifactId>studio-tacokit-dependencies</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<properties>
|
||||
<tacokit.components.version>1.13.0</tacokit.components.version>
|
||||
<tacokit.components.version>1.17.1</tacokit.components.version>
|
||||
</properties>
|
||||
<repositories>
|
||||
<repository>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<properties>
|
||||
<tcomp.version>1.1.25</tcomp.version>
|
||||
<tcomp.version>1.28.1</tcomp.version>
|
||||
<slf4j.version>1.7.25</slf4j.version>
|
||||
</properties>
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ import org.eclipse.swt.widgets.Display;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.exception.PersistenceException;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.IESBService;
|
||||
import org.talend.core.ILibraryManagerService;
|
||||
import org.talend.core.context.Context;
|
||||
import org.talend.core.context.RepositoryContext;
|
||||
@@ -168,6 +169,10 @@ public class AggregatorPomsHelper {
|
||||
}
|
||||
|
||||
public void updateCodeProjects(IProgressMonitor monitor, boolean forceBuild) {
|
||||
updateCodeProjects(monitor, forceBuild, false);
|
||||
}
|
||||
|
||||
public void updateCodeProjects(IProgressMonitor monitor, boolean forceBuild, boolean ignoreM2Cache) {
|
||||
RepositoryWorkUnit workUnit = new RepositoryWorkUnit<Object>("update code project") { //$NON-NLS-1$
|
||||
|
||||
@Override
|
||||
@@ -175,8 +180,11 @@ public class AggregatorPomsHelper {
|
||||
Project currentProject = ProjectManager.getInstance().getCurrentProject();
|
||||
for (ERepositoryObjectType codeType : ERepositoryObjectType.getAllTypesOfCodes()) {
|
||||
try {
|
||||
if (CodeM2CacheManager.needUpdateCodeProject(currentProject, codeType)) {
|
||||
ITalendProcessJavaProject codeProject = getCodesProject(codeType);
|
||||
ITalendProcessJavaProject codeProject = getCodesProject(codeType);
|
||||
if (ERepositoryObjectType.ROUTINES == codeType) {
|
||||
PomUtil.checkExistingLog4j2Dependencies4RoutinePom(projectTechName, codeProject.getProjectPom());
|
||||
}
|
||||
if (ignoreM2Cache || CodeM2CacheManager.needUpdateCodeProject(currentProject, codeType)) {
|
||||
updateCodeProjectPom(monitor, codeType, codeProject.getProjectPom());
|
||||
buildAndInstallCodesProject(monitor, codeType, true, forceBuild);
|
||||
CodeM2CacheManager.updateCodeProjectCache(currentProject, codeType);
|
||||
@@ -344,14 +352,9 @@ public class AggregatorPomsHelper {
|
||||
private static boolean checkIfCanAddToParentModules(Property property, boolean checkFilter) {
|
||||
// Check relation for ESB service job, should not be added into main pom
|
||||
if (property != null) {
|
||||
List<Relation> relations = RelationshipItemBuilder.getInstance().getItemsRelatedTo(property.getId(),
|
||||
property.getVersion(), RelationshipItemBuilder.JOB_RELATION);
|
||||
for (Relation relation : relations) {
|
||||
if (RelationshipItemBuilder.SERVICES_RELATION.equals(relation.getType())) {
|
||||
return false;
|
||||
}
|
||||
if (isSOAPServiceProvider(property)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// for import won't add for exclude option
|
||||
if (property.getItem() != null && property.getItem().getState() != null && property.getItem().getState().isDeleted()
|
||||
&& PomIdsHelper.getIfExcludeDeletedItems(property)) {
|
||||
@@ -860,7 +863,7 @@ public class AggregatorPomsHelper {
|
||||
}
|
||||
// codes pom
|
||||
monitor.subTask("Synchronize code poms"); //$NON-NLS-1$
|
||||
updateCodeProjects(monitor, true);
|
||||
updateCodeProjects(monitor, true, true);
|
||||
monitor.worked(1);
|
||||
if (monitor.isCanceled()) {
|
||||
return;
|
||||
@@ -896,7 +899,7 @@ public class AggregatorPomsHelper {
|
||||
}
|
||||
IFile pomFile = getItemPomFolder(item.getProperty()).getFile(TalendMavenConstants.POM_FILE_NAME);
|
||||
// filter esb data service node
|
||||
if (!isDataServiceOperation(object.getProperty()) && pomFile.exists()) {
|
||||
if (!isSOAPServiceProvider(object.getProperty()) && pomFile.exists()) {
|
||||
modules.add(getModulePath(pomFile));
|
||||
}
|
||||
}
|
||||
@@ -937,7 +940,7 @@ public class AggregatorPomsHelper {
|
||||
* @param property
|
||||
* @return
|
||||
*/
|
||||
private boolean isDataServiceOperation(Property property) {
|
||||
private static boolean isSOAPServiceProvider(Property property) {
|
||||
if (property != null) {
|
||||
List<Relation> relations = RelationshipItemBuilder.getInstance().getItemsRelatedTo(property.getId(),
|
||||
property.getVersion(), RelationshipItemBuilder.JOB_RELATION);
|
||||
@@ -946,6 +949,14 @@ public class AggregatorPomsHelper {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(IESBService.class)) {
|
||||
IESBService service = GlobalServiceRegister.getDefault().getService(IESBService.class);
|
||||
if (service != null) {
|
||||
if (service.isSOAPServiceProvider(property.getItem())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.text.ParseException;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
@@ -39,6 +40,14 @@ public class CodeM2CacheManager {
|
||||
|
||||
private static final String KEY_SEPERATOR = "|"; //$NON-NLS-1$
|
||||
|
||||
private static final String EMPTY_DATE;
|
||||
|
||||
static {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTimeInMillis(0);
|
||||
EMPTY_DATE = ResourceHelper.dateFormat().format(c.getTime());
|
||||
}
|
||||
|
||||
public static boolean needUpdateCodeProject(Project project, ERepositoryObjectType codeType) {
|
||||
try {
|
||||
String projectTechName = project.getTechnicalLabel();
|
||||
@@ -56,11 +65,11 @@ public class CodeM2CacheManager {
|
||||
// check M
|
||||
for (IRepositoryViewObject codeItem : allCodes) {
|
||||
Property property = codeItem.getProperty();
|
||||
String key = getCacheKey(projectTechName, property);
|
||||
String cachedTimestamp = cache.getProperty(key);
|
||||
if (cachedTimestamp != null) {
|
||||
Date currentDate = ResourceHelper.dateFormat().parse(getCacheDate(projectTechName, property));
|
||||
Date cachedDate = ResourceHelper.dateFormat().parse(cachedTimestamp);
|
||||
String key = getKey(projectTechName, property);
|
||||
String cacheValue = cache.getProperty(key);
|
||||
if (cacheValue != null) {
|
||||
Date currentDate = ResourceHelper.dateFormat().parse(getModifiedDate(projectTechName, property));
|
||||
Date cachedDate = ResourceHelper.dateFormat().parse(cacheValue);
|
||||
if (currentDate.compareTo(cachedDate) != 0) {
|
||||
return true;
|
||||
}
|
||||
@@ -82,8 +91,8 @@ public class CodeM2CacheManager {
|
||||
Properties cache = new Properties();
|
||||
for (IRepositoryViewObject codeItem : allCodes) {
|
||||
Property property = codeItem.getProperty();
|
||||
String key = getCacheKey(projectTechName, property);
|
||||
String value = getCacheDate(projectTechName, property);
|
||||
String key = getKey(projectTechName, property);
|
||||
String value = getModifiedDate(projectTechName, property);
|
||||
cache.put(key, value);
|
||||
}
|
||||
cache.store(out, StringUtils.EMPTY);
|
||||
@@ -92,18 +101,19 @@ public class CodeM2CacheManager {
|
||||
}
|
||||
}
|
||||
|
||||
private static File getCacheFile(String projectTechName, ERepositoryObjectType codeType) {
|
||||
public static File getCacheFile(String projectTechName, ERepositoryObjectType codeType) {
|
||||
String cacheFileName = PomIdsHelper.getProjectGroupId(projectTechName) + "." + codeType.name().toLowerCase() + "-" //$NON-NLS-1$ //$NON-NLS-2$
|
||||
+ PomIdsHelper.getCodesVersion(projectTechName) + ".cache"; // $NON-NLS-1$
|
||||
return new File(MavenPlugin.getMaven().getLocalRepositoryPath(), cacheFileName);
|
||||
}
|
||||
|
||||
private static String getCacheKey(String projectTechName, Property property) {
|
||||
private static String getKey(String projectTechName, Property property) {
|
||||
return projectTechName + KEY_SEPERATOR + property.getId() + KEY_SEPERATOR + property.getVersion(); // $NON-NLS-1$
|
||||
}
|
||||
|
||||
private static String getCacheDate(String projectTechName, Property property) {
|
||||
return (String) property.getAdditionalProperties().get(ItemProductKeys.DATE.getModifiedKey());
|
||||
private static String getModifiedDate(String projectTechName, Property property) {
|
||||
String modifiedDate = (String) property.getAdditionalProperties().get(ItemProductKeys.DATE.getModifiedKey());
|
||||
return StringUtils.isNotBlank(modifiedDate) ? modifiedDate : EMPTY_DATE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -118,6 +118,8 @@ public abstract class AbstractMavenCodesTemplatePom extends AbstractMavenGeneral
|
||||
}
|
||||
if (isDeployed) {
|
||||
dependency = PomUtil.createModuleDependency(module.getMavenUri());
|
||||
if (module.isExcluded())
|
||||
dependency.setScope("provided");
|
||||
}
|
||||
if (dependency != null) {
|
||||
existedDependencies.add(dependency);
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
// ============================================================================
|
||||
package org.talend.designer.maven.tools.creator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -45,13 +46,14 @@ import org.talend.core.model.utils.JavaResourcesHelper;
|
||||
import org.talend.core.runtime.maven.MavenArtifact;
|
||||
import org.talend.core.runtime.maven.MavenConstants;
|
||||
import org.talend.core.runtime.maven.MavenUrlHelper;
|
||||
import org.talend.core.runtime.process.TalendProcessArgumentConstant;
|
||||
import org.talend.core.runtime.process.LastGenerationInfo;
|
||||
import org.talend.core.runtime.projectsetting.IProjectSettingTemplateConstants;
|
||||
import org.talend.core.runtime.repository.build.IMavenPomCreator;
|
||||
import org.talend.core.ui.ITestContainerProviderService;
|
||||
import org.talend.designer.maven.model.TalendMavenConstants;
|
||||
import org.talend.designer.maven.template.ETalendMavenVariables;
|
||||
import org.talend.designer.maven.tools.ProcessorDependenciesManager;
|
||||
import org.talend.designer.maven.utils.JobUtils;
|
||||
import org.talend.designer.maven.utils.PomIdsHelper;
|
||||
import org.talend.designer.maven.utils.PomUtil;
|
||||
import org.talend.designer.runprocess.IBigDataProcessor;
|
||||
@@ -134,9 +136,15 @@ public abstract class AbstractMavenProcessorPom extends CreateMavenBundleTemplat
|
||||
|
||||
Map<ETalendMavenVariables, String> variablesValuesMap = new HashMap<ETalendMavenVariables, String>();
|
||||
// no need check property is null or not, because if null, will get default ids.
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobGroupId, PomIdsHelper.getJobGroupId(property));
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobArtifactId, PomIdsHelper.getJobArtifactId(property));
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobVersion, PomIdsHelper.getJobVersion(property));
|
||||
JobInfo lastMainJob = LastGenerationInfo.getInstance().getLastMainJob();
|
||||
if (JobUtils.isJob(property) && ProcessUtils.isChildRouteProcess(process) && lastMainJob != null) {
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobGroupId, PomIdsHelper.getJobGroupId(lastMainJob.getProcessor().getProperty()));
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobVersion, PomIdsHelper.getJobVersion(lastMainJob.getProcessor().getProperty()));
|
||||
}else {
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobGroupId, PomIdsHelper.getJobGroupId(property));
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobVersion, PomIdsHelper.getJobVersion(property));
|
||||
}
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobArtifactId, PomIdsHelper.getJobArtifactId(property));
|
||||
variablesValuesMap.put(ETalendMavenVariables.TalendJobVersion, property.getVersion());
|
||||
final String jobName = JavaResourcesHelper.escapeFileName(process.getName());
|
||||
variablesValuesMap.put(ETalendMavenVariables.JobName, jobName);
|
||||
@@ -276,6 +284,11 @@ public abstract class AbstractMavenProcessorPom extends CreateMavenBundleTemplat
|
||||
}
|
||||
|
||||
protected void addCodesDependencies(final List<Dependency> dependencies) {
|
||||
dependencies.addAll(getCodesDependencies());
|
||||
}
|
||||
|
||||
protected List<Dependency> getCodesDependencies() {
|
||||
List<Dependency> dependencies = new ArrayList<Dependency>();
|
||||
String projectTechName = ProjectManager.getInstance().getProject(getJobProcessor().getProperty()).getTechnicalLabel();
|
||||
String codeVersion = PomIdsHelper.getCodesVersion(projectTechName);
|
||||
|
||||
@@ -292,6 +305,7 @@ public abstract class AbstractMavenProcessorPom extends CreateMavenBundleTemplat
|
||||
Dependency beansDependency = PomUtil.createDependency(beansGroupId, beansArtifactId, codeVersion, null);
|
||||
dependencies.add(beansDependency);
|
||||
}
|
||||
return dependencies;
|
||||
}
|
||||
|
||||
protected void addChildrenDependencies(final List<Dependency> dependencies) {
|
||||
@@ -310,10 +324,18 @@ public abstract class AbstractMavenProcessorPom extends CreateMavenBundleTemplat
|
||||
String type = null;
|
||||
if (!jobInfo.isJoblet()) {
|
||||
property = jobInfo.getProcessItem().getProperty();
|
||||
groupId = PomIdsHelper.getJobGroupId(property);
|
||||
artifactId = PomIdsHelper.getJobArtifactId(jobInfo);
|
||||
|
||||
JobInfo lastMainJob = LastGenerationInfo.getInstance().getLastMainJob();
|
||||
if (lastMainJob != null && JobUtils.isJob(jobInfo) && JobUtils.isRoute(getJobProcessor().getProperty())) {
|
||||
groupId = PomIdsHelper.getJobGroupId(lastMainJob.getProcessor().getProperty());
|
||||
version = PomIdsHelper.getJobVersion(lastMainJob.getProcessor().getProperty());
|
||||
} else {
|
||||
groupId = PomIdsHelper.getJobGroupId(property);
|
||||
version = PomIdsHelper.getJobVersion(property);
|
||||
}
|
||||
|
||||
version = PomIdsHelper.getJobVersion(property);
|
||||
|
||||
// try to get the pom version of children job and load from the pom file.
|
||||
String childPomFileName = PomUtil.getPomFileName(jobInfo.getJobName(), jobInfo.getJobVersion());
|
||||
IProject codeProject = getJobProcessor().getCodeProject();
|
||||
|
||||
@@ -668,19 +668,25 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
|
||||
|
||||
List<Dependency> dependencies = new ArrayList<>();
|
||||
// codes
|
||||
addCodesDependencies(dependencies);
|
||||
List<Dependency> codeDependencies = getCodesDependencies();
|
||||
dependencies.addAll(codeDependencies);
|
||||
|
||||
// codes dependencies (optional)
|
||||
ERepositoryObjectType.getAllTypesOfCodes().forEach(t -> dependencies.addAll(PomUtil.getCodesDependencies(t)));
|
||||
|
||||
// libraries of talend/3rd party
|
||||
dependencies.addAll(processor.getNeededModules(TalendProcessOptionConstants.MODULES_EXCLUDE_SHADED).stream()
|
||||
.filter(m -> !m.isExcluded()).map(m -> createDenpendency(m, false)).collect(Collectors.toSet()));
|
||||
Set<Dependency> parentJobDependencies = processor.getNeededModules(TalendProcessOptionConstants.MODULES_EXCLUDE_SHADED).stream()
|
||||
.filter(m -> !m.isExcluded()).map(m -> createDenpendency(m, false))
|
||||
.collect(Collectors.toSet());
|
||||
dependencies.addAll(parentJobDependencies);
|
||||
|
||||
// missing modules from the job generation of children
|
||||
childrenJobInfo.forEach(j -> dependencies
|
||||
.addAll(LastGenerationInfo.getInstance().getModulesNeededPerJob(j.getJobId(), j.getJobVersion()).stream()
|
||||
.filter(m -> !m.isExcluded()).map(m -> createDenpendency(m, false)).collect(Collectors.toSet())));
|
||||
Map<String, Set<Dependency>> childjobDependencies = new HashMap<String, Set<Dependency>>();
|
||||
childrenJobInfo.forEach(j -> {
|
||||
Set<Dependency> collectDependency = LastGenerationInfo.getInstance().getModulesNeededPerJob(j.getJobId(), j.getJobVersion()).stream()
|
||||
.filter(m -> !m.isExcluded()).map(m -> createDenpendency(m, false)).collect(Collectors.toSet());
|
||||
dependencies.addAll(collectDependency);
|
||||
childjobDependencies.put(j.getJobId(), collectDependency);});
|
||||
|
||||
Set<ModuleNeeded> modules = new HashSet<>();
|
||||
// testcase modules from current job (optional)
|
||||
@@ -701,7 +707,7 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
|
||||
|| _3rdLibCoordinate.contains(coordinate)) {
|
||||
return;
|
||||
}
|
||||
if (MavenConstants.DEFAULT_LIB_GROUP_ID.equals(groupId) || groupId.startsWith(projectGroupId)) {
|
||||
if (MavenConstants.DEFAULT_LIB_GROUP_ID.equals(groupId) || codeDependencies.contains(d)) {
|
||||
if (!optional) {
|
||||
talendLibCoordinate.add(coordinate);
|
||||
}
|
||||
@@ -749,7 +755,7 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
|
||||
setupDependencySetNode(document, jobCoordinate, "${talend.job.name}",
|
||||
"${artifact.build.finalName}.${artifact.extension}", true, false);
|
||||
// add duplicate dependencies if exists
|
||||
setupFileNode(document, duplicateLibs.values().stream().flatMap(s -> s.stream()).collect(Collectors.toSet()));
|
||||
setupFileNode(document, parentJobDependencies, childjobDependencies, duplicateLibs);
|
||||
|
||||
PomUtil.saveAssemblyFile(assemblyFile, document);
|
||||
} catch (Exception e) {
|
||||
@@ -757,6 +763,7 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// remove duplicate job dependencies and only keep the latest one
|
||||
// keep high priority dependencies if set by tLibraryLoad
|
||||
// FIXME not used now since tacokit component use specific dependency version. so we must include all job dependencies.
|
||||
@@ -886,15 +893,18 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
|
||||
|
||||
}
|
||||
|
||||
private void setupFileNode(Document document, Set<Dependency> duplicateDependencies) throws CoreException {
|
||||
private void setupFileNode(Document document, Set<Dependency> parentJobDependencies, Map<String, Set<Dependency>> childJobDependencies, Map<String, Set<Dependency>> duplicateLibs) throws CoreException {
|
||||
Node filesNode = document.getElementsByTagName("files").item(0);
|
||||
// TESB-27614:NPE while building a route
|
||||
if (filesNode == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Set<Dependency> duplicateDependencies = duplicateLibs.values().stream().flatMap(s -> s.stream()).collect(Collectors.toSet());
|
||||
if (duplicateDependencies.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
IMaven maven = MavenPlugin.getMaven();
|
||||
ArtifactRepository repository = maven.getLocalRepository();
|
||||
boolean isDIJob = ERepositoryObjectType.getItemType(getJobProcessor().getProperty().getItem()) == ERepositoryObjectType.PROCESS;
|
||||
@@ -906,10 +916,13 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
|
||||
dependency.getVersion(), dependency.getType(), dependency.getClassifier());
|
||||
Path path = new File(repository.getBasedir()).toPath().resolve(sourceLocation);
|
||||
sourceLocation = path.toString();
|
||||
if (isDIJob && !new File(sourceLocation).exists()) {
|
||||
|
||||
boolean latestVersionOrLowerVersionInChildJob = isLatestVersionOrLowerVersionInChildJob(parentJobDependencies, childJobDependencies, duplicateLibs, dependency);
|
||||
if (isDIJob && !latestVersionOrLowerVersionInChildJob && !new File(sourceLocation).exists()) {
|
||||
CommonExceptionHandler.warn("Job dependency [" + sourceLocation + "] does not exist!");
|
||||
continue;
|
||||
}
|
||||
|
||||
String destName = path.getFileName().toString();
|
||||
Node fileNode = document.createElement("file");
|
||||
filesNode.appendChild(fileNode);
|
||||
@@ -926,8 +939,49 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
|
||||
destNameNode.setTextContent(destName);
|
||||
fileNode.appendChild(destNameNode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected boolean isLatestVersionOrLowerVersionInChildJob(Set<Dependency> parentJobDependencies,
|
||||
Map<String, Set<Dependency>> childJobDependencies, Map<String, Set<Dependency>> duplicateLibs,
|
||||
Dependency dependency) {
|
||||
String coordinate = getCheckDupCoordinate(dependency);
|
||||
Set<Dependency> dependencies = duplicateLibs.get(coordinate);
|
||||
if (dependencies.size() == 1) {
|
||||
return true; // latest version
|
||||
}
|
||||
|
||||
boolean latest = false;
|
||||
if (parentJobDependencies.contains(dependency)) {
|
||||
// keep if it's latest version in parent job
|
||||
latest = isTheLatest(dependency, coordinate, parentJobDependencies);
|
||||
if(!latest) {//check if it's the latest in any child job
|
||||
latest = isLatestInAnyChild(dependency, coordinate, childJobDependencies);
|
||||
}
|
||||
} else {//only check if it's the latest in any child job
|
||||
latest = isLatestInAnyChild(dependency, coordinate, childJobDependencies);
|
||||
}
|
||||
|
||||
|
||||
return latest;
|
||||
}
|
||||
|
||||
private boolean isLatestInAnyChild(Dependency dependency, String coordinate,
|
||||
Map<String, Set<Dependency>> childJobDependencies) {
|
||||
return childJobDependencies.entrySet().stream().filter(entry -> entry.getValue().contains(dependency))
|
||||
.anyMatch(entry -> isTheLatest(dependency, coordinate, entry.getValue()));
|
||||
}
|
||||
|
||||
private boolean isTheLatest(Dependency dependency, String coordinate, Set<Dependency> targetSet) {
|
||||
Optional<Dependency> latest = targetSet.stream().filter(d -> getCheckDupCoordinate(d).equals(coordinate))
|
||||
.sorted((d1, d2) -> compareVersion(d2, d1)).findFirst();
|
||||
return latest.isPresent() && dependency.equals(latest.get());
|
||||
}
|
||||
|
||||
private int compareVersion(Dependency dependency, Dependency targetDependency) {
|
||||
return new ComparableVersion(dependency.getVersion()).compareTo(new ComparableVersion(targetDependency.getVersion()));
|
||||
}
|
||||
|
||||
protected Plugin addSkipDockerMavenPlugin() {
|
||||
Plugin plugin = new Plugin();
|
||||
|
||||
|
||||
@@ -12,16 +12,18 @@
|
||||
// ============================================================================
|
||||
package org.talend.designer.maven.tools.creator;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.PluginChecker;
|
||||
import org.talend.core.model.general.ILibrariesService;
|
||||
import org.talend.core.model.general.ModuleNeeded;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.designer.maven.template.MavenTemplateManager;
|
||||
import org.talend.repository.model.IRepositoryService;
|
||||
|
||||
/**
|
||||
* DOC ggu class global comment. Detailled comment
|
||||
@@ -46,13 +48,18 @@ public class CreateMavenRoutinePom extends AbstractMavenCodesTemplatePom {
|
||||
// Set<ModuleNeeded> runningModules = routiensService.getRunningModules();
|
||||
// return runningModules;
|
||||
// }
|
||||
Set<ModuleNeeded> runningModules = new HashSet<>();
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(ILibrariesService.class)) {
|
||||
ILibrariesService libService = (ILibrariesService) GlobalServiceRegister.getDefault().getService(
|
||||
ILibrariesService.class);
|
||||
Set<ModuleNeeded> runningModules = libService.getCodesModuleNeededs(ERepositoryObjectType.ROUTINES);
|
||||
return runningModules;
|
||||
runningModules.addAll(libService.getCodesModuleNeededs(ERepositoryObjectType.ROUTINES));
|
||||
}
|
||||
return Collections.emptySet();
|
||||
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(IRepositoryService.class)) {
|
||||
IRepositoryService repositoryService = GlobalServiceRegister.getDefault().getService(IRepositoryService.class);
|
||||
if (PluginChecker.isBigdataRoutineLoaded() && repositoryService.isProjectLevelLog4j2()) {
|
||||
runningModules.addAll(repositoryService.getLog4j2Modules());
|
||||
}
|
||||
}
|
||||
return runningModules;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ import org.talend.core.model.process.JobInfo;
|
||||
import org.talend.core.model.process.ProcessUtils;
|
||||
import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.properties.ProcessItem;
|
||||
import org.talend.core.model.properties.Property;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.utils.JavaResourcesHelper;
|
||||
import org.talend.core.runtime.CoreRuntimePlugin;
|
||||
@@ -97,5 +99,29 @@ public class JobUtils {
|
||||
}
|
||||
return clonedJobInfos;
|
||||
}
|
||||
|
||||
public static boolean isRoute(Property p) {
|
||||
if (p != null) {
|
||||
return ERepositoryObjectType.getType(p).equals(ERepositoryObjectType.PROCESS_ROUTE);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isJob(JobInfo job) {
|
||||
if (job != null && job.getProcessItem() != null) {
|
||||
Property p = job.getProcessItem().getProperty();
|
||||
if (p != null) {
|
||||
return isJob(p);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isJob(Property p) {
|
||||
if (p != null) {
|
||||
return ERepositoryObjectType.getType(p).equals(ERepositoryObjectType.PROCESS);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -98,12 +98,7 @@ public class MavenProjectUtils {
|
||||
IRunProcessService service = (IRunProcessService) GlobalServiceRegister.getDefault().getDefault()
|
||||
.getService(IRunProcessService.class);
|
||||
|
||||
if (service.isdebug()) {
|
||||
changeClasspath(monitor, project, MavenSystemFolders.ALL_DIRS_EXT);
|
||||
} else {
|
||||
|
||||
changeClasspath(monitor, project);
|
||||
}
|
||||
changeClasspath(monitor, project, MavenSystemFolders.ALL_DIRS_EXT);
|
||||
}
|
||||
|
||||
// only need this when pom has no parent.
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.talend.commons.utils.VersionUtils;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.IESBService;
|
||||
import org.talend.core.PluginChecker;
|
||||
import org.talend.core.model.general.Project;
|
||||
import org.talend.core.model.process.JobInfo;
|
||||
import org.talend.core.model.properties.Property;
|
||||
@@ -346,7 +347,9 @@ public class PomIdsHelper {
|
||||
if (!preferenceManager.exist()
|
||||
&& StringUtils.isBlank(preferenceStore.getString(MavenConstants.EXCLUDE_DELETED_ITEMS))) {
|
||||
// for new project, set EXCLUDE_DELETED_ITEMS=true as default
|
||||
preferenceStore.setValue(MavenConstants.EXCLUDE_DELETED_ITEMS, true);
|
||||
if (PluginChecker.isTIS()) {
|
||||
preferenceStore.setValue(MavenConstants.EXCLUDE_DELETED_ITEMS, true);
|
||||
}
|
||||
}
|
||||
preferenceManager.save();
|
||||
preferenceManagers.put(projectTechName, preferenceManager);
|
||||
|
||||
@@ -64,7 +64,6 @@ import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.jobs.ISchedulingRule;
|
||||
import org.eclipse.core.runtime.jobs.Job;
|
||||
import org.eclipse.core.runtime.jobs.MultiRule;
|
||||
import org.eclipse.m2e.core.MavenPlugin;
|
||||
import org.eclipse.m2e.core.embedder.MavenModelManager;
|
||||
@@ -73,9 +72,11 @@ import org.talend.commons.exception.PersistenceException;
|
||||
import org.talend.commons.runtime.utils.io.IOUtils;
|
||||
import org.talend.commons.utils.VersionUtils;
|
||||
import org.talend.commons.utils.generation.JavaUtils;
|
||||
import org.talend.commons.utils.io.FilesUtils;
|
||||
import org.talend.commons.utils.workbench.resources.ResourceUtils;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.ILibraryManagerService;
|
||||
import org.talend.core.PluginChecker;
|
||||
import org.talend.core.model.general.Project;
|
||||
import org.talend.core.model.process.IProcess;
|
||||
import org.talend.core.model.process.JobInfo;
|
||||
@@ -98,10 +99,12 @@ import org.talend.designer.maven.model.TalendJavaProjectConstants;
|
||||
import org.talend.designer.maven.model.TalendMavenConstants;
|
||||
import org.talend.designer.maven.template.MavenTemplateManager;
|
||||
import org.talend.designer.maven.tools.AggregatorPomsHelper;
|
||||
import org.talend.designer.maven.tools.CodeM2CacheManager;
|
||||
import org.talend.designer.maven.tools.ProcessorDependenciesManager;
|
||||
import org.talend.designer.runprocess.IProcessor;
|
||||
import org.talend.designer.runprocess.IRunProcessService;
|
||||
import org.talend.repository.ProjectManager;
|
||||
import org.talend.repository.model.IRepositoryService;
|
||||
import org.talend.utils.xml.XmlUtils;
|
||||
import org.w3c.dom.Attr;
|
||||
import org.w3c.dom.DOMImplementation;
|
||||
@@ -583,7 +586,7 @@ public class PomUtil {
|
||||
IProject fsProject = ResourceUtils.getProject(project);
|
||||
IFolder tmpFolder = fsProject.getFolder("temp");
|
||||
if (!tmpFolder.exists()) {
|
||||
executeFolderAction(monitor, fsProject, new IWorkspaceRunnable() {
|
||||
FilesUtils.executeFolderAction(monitor, fsProject, new IWorkspaceRunnable() {
|
||||
|
||||
@Override
|
||||
public void run(IProgressMonitor monitor) throws CoreException {
|
||||
@@ -595,7 +598,7 @@ public class PomUtil {
|
||||
createTempFile.delete();
|
||||
String tmpFolderName = createTempFile.getName();
|
||||
IFolder folder = tmpFolder.getFolder(tmpFolderName);
|
||||
executeFolderAction(monitor, tmpFolder, new IWorkspaceRunnable() {
|
||||
FilesUtils.executeFolderAction(monitor, tmpFolder, new IWorkspaceRunnable() {
|
||||
|
||||
@Override
|
||||
public void run(IProgressMonitor monitor) throws CoreException {
|
||||
@@ -604,7 +607,7 @@ public class PomUtil {
|
||||
});
|
||||
IFile pomFile = folder.getFile(TalendMavenConstants.POM_FILE_NAME);
|
||||
|
||||
executeFolderAction(monitor, folder, new IWorkspaceRunnable() {
|
||||
FilesUtils.executeFolderAction(monitor, folder, new IWorkspaceRunnable() {
|
||||
|
||||
@Override
|
||||
public void run(IProgressMonitor monitor) throws CoreException {
|
||||
@@ -622,35 +625,6 @@ public class PomUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static void executeFolderAction(IProgressMonitor monitor, IResource parentFolder, IWorkspaceRunnable run)
|
||||
throws CoreException {
|
||||
if (Job.getJobManager().currentRule() == null) {
|
||||
IWorkspace workspace = ResourcesPlugin.getWorkspace();
|
||||
ISchedulingRule defaultRule = workspace.getRuleFactory().modifyRule(parentFolder);
|
||||
ISchedulingRule noBlockRule = new ISchedulingRule() {
|
||||
|
||||
@Override
|
||||
public boolean isConflicting(ISchedulingRule rule) {
|
||||
return this.contains(rule);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean contains(ISchedulingRule rule) {
|
||||
if (this.equals(rule)) {
|
||||
return true;
|
||||
}
|
||||
if (defaultRule.contains(rule)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
workspace.run(run, noBlockRule, IWorkspace.AVOID_UPDATE, monitor);
|
||||
} else {
|
||||
run.run(monitor);
|
||||
}
|
||||
}
|
||||
|
||||
private static Model createModel(MavenArtifact artifact) {
|
||||
Model pomModel = new Model();
|
||||
pomModel.setModelVersion(TalendMavenConstants.POM_VERSION);
|
||||
@@ -1207,7 +1181,7 @@ public class PomUtil {
|
||||
IRunProcessService runProcessService = GlobalServiceRegister.getDefault().getService(IRunProcessService.class);
|
||||
try {
|
||||
Model model = MODEL_MANAGER.readMavenModel(runProcessService.getTalendCodeJavaProject(codeType).getProjectPom());
|
||||
return model.getDependencies().stream().map(
|
||||
return model.getDependencies().stream().filter(d -> !"provided".equals(d.getScope())).map(
|
||||
d -> createDependency(d.getGroupId(), d.getArtifactId(), d.getVersion(), d.getType(), d.getClassifier()))
|
||||
.peek(d -> ((SortableDependency) d).setAssemblyOptional(true)).collect(Collectors.toSet());
|
||||
} catch (CoreException e) {
|
||||
@@ -1217,4 +1191,49 @@ public class PomUtil {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
public static void checkExistingLog4j2Dependencies4RoutinePom(String projectTechName, IFile pomFile) {
|
||||
if (!PluginChecker.isBigdataRoutineLoaded()) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (GlobalServiceRegister.getDefault().isServiceRegistered(IRepositoryService.class)) {
|
||||
Model model = MODEL_MANAGER.readMavenModel(pomFile);
|
||||
IRepositoryService service = GlobalServiceRegister.getDefault().getService(IRepositoryService.class);
|
||||
boolean isLog4j2 = service.isProjectLevelLog4j2();
|
||||
Map<String, MavenArtifact> GAVMap = service.getLog4j2Modules().stream()
|
||||
.map(m -> MavenUrlHelper.parseMvnUrl(m.getMavenUri()))
|
||||
.collect(Collectors.toMap(MavenArtifact::getArtifactId, MavenArtifact -> MavenArtifact));
|
||||
long existingDependenciesSize = model.getDependencies().stream()
|
||||
.filter(d -> GAVMap.containsKey(d.getArtifactId())
|
||||
&& GAVMap.get(d.getArtifactId()).getGroupId().equals(d.getGroupId())
|
||||
&& GAVMap.get(d.getArtifactId()).getVersion().equals(d.getVersion()))
|
||||
.count();
|
||||
boolean clean = false;
|
||||
// CAUTION
|
||||
// with this fix, project level log4j2 user can use log4j2 api in routine directly in BD project
|
||||
// user should NEVER manually setup log4j2 in routine dependencies
|
||||
// or else routine install cache could always be cleaned
|
||||
if (isLog4j2 && existingDependenciesSize != GAVMap.size()) {
|
||||
// if project level log4j1 -> log4j2
|
||||
// if first time add log4j2 dependencies
|
||||
// if log4j2 upgrade version
|
||||
// then clean cache to add
|
||||
clean = true;
|
||||
} else if (!isLog4j2 && existingDependenciesSize > 0) {
|
||||
// if project level log4j2 -> log4j1
|
||||
// then clean cache to remove
|
||||
clean = true;
|
||||
}
|
||||
if (clean) {
|
||||
File cacheFile = CodeM2CacheManager.getCacheFile(projectTechName, ERepositoryObjectType.ROUTINES);
|
||||
if (cacheFile.exists()) {
|
||||
cacheFile.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -96,10 +96,14 @@ public final class TalendCodeProjectUtil {
|
||||
return true;
|
||||
}
|
||||
|
||||
// because some cases, the project is not opened.
|
||||
if (!codeProject.isOpen()) {
|
||||
// if not opened, will have exception when check nature or such
|
||||
codeProject.open(monitor);
|
||||
try {
|
||||
// because some cases, the project is not opened.
|
||||
if (!codeProject.isOpen()) {
|
||||
// if not opened, will have exception when check nature or such
|
||||
codeProject.open(monitor);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return true;
|
||||
}
|
||||
|
||||
codeProject.refreshLocal(IResource.DEPTH_ONE, monitor);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -44,6 +44,7 @@ Export-Package: org.apache.commons.cli2,
|
||||
org.apache.commons.math3.stat.descriptive;version="3.3.0",
|
||||
org.apache.commons.math3.stat.descriptive.rank;version="3.3.0",
|
||||
org.apache.commons.math3.util;version="3.3.0",
|
||||
org.apache.commons.text,
|
||||
org.apache.commons.text.similarity,
|
||||
org.apache.commons.validator;version="1.5.1",
|
||||
org.apache.commons.validator.routines;version="1.5.1"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry exported="true" kind="lib" path="lib/h2-1.3.160.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="lib/h2-1.4.198.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
||||
@@ -4,7 +4,7 @@ Bundle-Name: H2
|
||||
Bundle-SymbolicName: org.talend.libraries.jdbc.h2
|
||||
Bundle-Version: 7.3.1.qualifier
|
||||
Bundle-ClassPath: .,
|
||||
lib/h2-1.3.160.jar
|
||||
lib/h2-1.4.198.jar
|
||||
Export-Package: org.h2,
|
||||
org.h2.api;uses:="org.h2.command.ddl,org.h2.table",
|
||||
org.h2.bnf;uses:="org.h2.server.web",
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
lib/h2-1.3.160.jar,\
|
||||
lib/h2-1.2.139.jar,\
|
||||
lib/h2-1.2.132.jar
|
||||
lib/h2-1.4.198.jar
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -9,4 +9,32 @@
|
||||
</parent>
|
||||
<artifactId>org.talend.libraries.jdbc.h2</artifactId>
|
||||
<packaging>eclipse-plugin</packaging>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-dependencies</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>copy</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.basedir}/lib</outputDirectory>
|
||||
<excludeTransitive>true</excludeTransitive>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<version>1.4.198</version>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
||||
@@ -72,7 +72,8 @@ download.external.dialog.desciption=List of modules to be downloaded automatical
|
||||
download.external.dialog.help.url=https://help.talend.com/display/KB/How+to+install+external+modules+in+the+Talend+products
|
||||
download.external.dialog.warning=Warning
|
||||
download.external.dialog.message=Select at least one module not installed.
|
||||
|
||||
Module.view.sharelibsAction.title=Share libraries
|
||||
Module.view.sharelibsAction.info=Libraries sharing finished successfully.
|
||||
|
||||
AcceptModuleLicensesWizard.title=Download external modules
|
||||
AcceptModuleLicensesWizardDialog.button.acceptAll=Accept all
|
||||
@@ -126,6 +127,7 @@ ConfigModuleDialog.searchRemoteBtn=Search Remote
|
||||
ConfigModuleDialog.error.missingName=Please input a module name!
|
||||
ConfigModuleDialog.error.missingModule=Please select a module!
|
||||
ConfigModuleDialog.search.noModules=No modules found for search of: {0} !
|
||||
ConfigModuleDialog.warn.artifactory=User libraries artifact repository can't be connected!
|
||||
|
||||
ImportCustomSettingsAction.title=Import custom settings
|
||||
ImportCustomSettingsAction.warning=Are you sure to overwrite the custom mvn uri settings with the selected file ?
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2019 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.librariesmanager.ui.actions;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jface.action.Action;
|
||||
import org.eclipse.swt.custom.BusyIndicator;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
import org.eclipse.swt.events.SelectionListener;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.eclipse.swt.widgets.TableItem;
|
||||
import org.eclipse.ui.ISharedImages;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.core.model.general.ModuleNeeded;
|
||||
import org.talend.librariesmanager.ui.LibManagerUiPlugin;
|
||||
import org.talend.librariesmanager.ui.views.ModulesViewComposite;
|
||||
|
||||
/**
|
||||
* qzhang class global comment. Detailled comment <br/>
|
||||
*
|
||||
*/
|
||||
public class RemoveExternalJarAction extends Action {
|
||||
|
||||
/**
|
||||
* qzhang RemoveExternalJarAction constructor comment.
|
||||
*/
|
||||
public RemoveExternalJarAction() {
|
||||
super();
|
||||
setText("Remove external JARs"); //$NON-NLS-1$
|
||||
setDescription("Remove external JARs"); //$NON-NLS-1$
|
||||
setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
|
||||
setDisabledImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
|
||||
.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE_DISABLED));
|
||||
setEnabled(true);
|
||||
init();
|
||||
}
|
||||
|
||||
List<ModuleNeeded> modules;
|
||||
|
||||
public void init() {
|
||||
modules = new ArrayList<ModuleNeeded>();
|
||||
if (ModulesViewComposite.getTableViewerCreator() != null) {
|
||||
ModulesViewComposite.getTableViewerCreator().getTable().addSelectionListener(new SelectionListener() {
|
||||
|
||||
@Override
|
||||
public void widgetDefaultSelected(SelectionEvent e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
modules.clear();
|
||||
TableItem[] selection = ModulesViewComposite.getTableViewerCreator().getTable().getSelection();
|
||||
for (TableItem tableItem : selection) {
|
||||
ModuleNeeded needed = (ModuleNeeded) tableItem.getData();
|
||||
if (ModuleNeeded.UNKNOWN.equals(needed.getContext())) {
|
||||
modules.add(needed);
|
||||
} else {
|
||||
setEnabled(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
setEnabled(true);
|
||||
}
|
||||
});
|
||||
setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.jface.action.Action#run()
|
||||
*/
|
||||
@Override
|
||||
public void run() {
|
||||
BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
for (ModuleNeeded module : modules) {
|
||||
try {
|
||||
LibManagerUiPlugin.getDefault().getLibrariesService().undeployLibrary(module.getModuleName());
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
}
|
||||
// no use since use maven
|
||||
// if (GlobalServiceRegister.getDefault().isServiceRegistered(IRunProcessService.class)) {
|
||||
// IRunProcessService processService = (IRunProcessService) GlobalServiceRegister.getDefault().getService(
|
||||
// IRunProcessService.class);
|
||||
// ITalendProcessJavaProject talendProcessJavaProject = processService.getTalendProcessJavaProject();
|
||||
// if (talendProcessJavaProject != null) {
|
||||
// IJavaProject javaProject = talendProcessJavaProject.getJavaProject();
|
||||
// List<IClasspathEntry> projectLibraries = new ArrayList<IClasspathEntry>();
|
||||
// try {
|
||||
// IClasspathEntry[] resolvedClasspath = javaProject.getResolvedClasspath(true);
|
||||
// projectLibraries.addAll(Arrays.asList(resolvedClasspath));
|
||||
// for (ModuleNeeded module : modules) {
|
||||
// IClasspathEntry foundEntry = null;
|
||||
// for (IClasspathEntry entry : resolvedClasspath) {
|
||||
// if (entry.getPath().toPortableString().contains(module.getModuleName())) {
|
||||
// foundEntry = entry;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// if (foundEntry != null) {
|
||||
// projectLibraries.remove(foundEntry);
|
||||
// }
|
||||
// }
|
||||
// javaProject.setRawClasspath(projectLibraries.toArray(new IClasspathEntry[projectLibraries.size()]),
|
||||
// null);
|
||||
// setEnabled(false);
|
||||
// } catch (JavaModelException e) {
|
||||
// ExceptionHandler.process(e);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2020 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.librariesmanager.ui.actions;
|
||||
|
||||
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
|
||||
import org.eclipse.core.runtime.jobs.IJobChangeListener;
|
||||
import org.eclipse.jface.action.Action;
|
||||
import org.eclipse.jface.dialogs.MessageDialog;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.talend.commons.ui.runtime.image.ECoreImage;
|
||||
import org.talend.commons.ui.runtime.image.ImageProvider;
|
||||
import org.talend.core.nexus.ArtifactRepositoryBean;
|
||||
import org.talend.core.nexus.IRepositoryArtifactHandler;
|
||||
import org.talend.core.nexus.RepositoryArtifactHandlerManager;
|
||||
import org.talend.core.nexus.TalendLibsServerManager;
|
||||
import org.talend.librariesmanager.ui.i18n.Messages;
|
||||
import org.talend.librariesmanager.ui.startup.ShareLibsJob;
|
||||
|
||||
|
||||
/*
|
||||
* Created by bhe on Dec 17, 2020
|
||||
*/
|
||||
public class ShareLibsAction extends Action {
|
||||
|
||||
public ShareLibsAction() {
|
||||
super();
|
||||
this.setText(Messages.getString("Module.view.sharelibsAction.title")); //$NON-NLS-1$
|
||||
this.setDescription(Messages.getString("Module.view.sharelibsAction.title")); //$NON-NLS-1$
|
||||
this.setImageDescriptor(ImageProvider.getImageDesc(ECoreImage.SHARE_LIBS));
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.jface.action.Action#run()
|
||||
*/
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
ShareLibsJob job = new ShareLibsJob();
|
||||
job.addJobChangeListener(new IJobChangeListener() {
|
||||
|
||||
@Override
|
||||
public void scheduled(IJobChangeEvent event) {
|
||||
ShareLibsAction.this.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void running(IJobChangeEvent event) {
|
||||
ShareLibsAction.this.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void done(IJobChangeEvent event) {
|
||||
ShareLibsAction.this.setEnabled(true);
|
||||
Display.getDefault().asyncExec(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
MessageDialog.open(MessageDialog.INFORMATION, Display.getDefault().getActiveShell(), "",
|
||||
Messages.getString("Module.view.sharelibsAction.info"), SWT.NONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void awake(IJobChangeEvent event) {
|
||||
ShareLibsAction.this.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void aboutToRun(IJobChangeEvent event) {
|
||||
ShareLibsAction.this.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sleeping(IJobChangeEvent event) {
|
||||
ShareLibsAction.this.setEnabled(false);
|
||||
}
|
||||
});
|
||||
job.schedule();
|
||||
}
|
||||
|
||||
public boolean show() {
|
||||
boolean ret = false;
|
||||
try {
|
||||
ArtifactRepositoryBean customNexusServer = TalendLibsServerManager.getInstance().getCustomNexusServer();
|
||||
IRepositoryArtifactHandler customerRepHandler = RepositoryArtifactHandlerManager
|
||||
.getRepositoryHandler(customNexusServer);
|
||||
if (customerRepHandler != null) {
|
||||
ret = customerRepHandler.checkConnection();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -21,7 +21,6 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
@@ -58,8 +57,6 @@ import org.talend.commons.ui.gmf.util.DisplayUtils;
|
||||
import org.talend.commons.ui.runtime.image.EImage;
|
||||
import org.talend.commons.ui.runtime.image.ImageProvider;
|
||||
import org.talend.commons.ui.swt.dialogs.IConfigModuleDialog;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.ILibraryManagerService;
|
||||
import org.talend.core.model.general.ModuleNeeded;
|
||||
import org.talend.core.model.general.ModuleNeeded.ELibraryInstallStatus;
|
||||
import org.talend.core.model.general.ModuleToInstall;
|
||||
@@ -103,8 +100,6 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
|
||||
private Button useCustomBtn;
|
||||
|
||||
private boolean useCustom;
|
||||
|
||||
private String urlToUse;
|
||||
|
||||
private String defaultURI;
|
||||
@@ -131,6 +126,12 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
|
||||
private String initValue;
|
||||
|
||||
private Label warningLabel;
|
||||
|
||||
private GridData warningLayoutData;
|
||||
|
||||
private Composite warningComposite;
|
||||
|
||||
/**
|
||||
* DOC wchen InstallModuleDialog constructor comment.
|
||||
*
|
||||
@@ -152,15 +153,17 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
protected Control createDialogArea(Composite parent) {
|
||||
Composite container = new Composite(parent, SWT.NONE);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.marginTop = 10;
|
||||
layout.marginTop = 20;
|
||||
layout.marginLeft = 20;
|
||||
layout.marginRight = 20;
|
||||
layout.marginBottom = 40;
|
||||
layout.marginBottom = 60;
|
||||
layout.marginHeight = 0;
|
||||
container.setLayout(layout);
|
||||
GridData data = new GridData(GridData.FILL_BOTH);
|
||||
container.setLayoutData(data);
|
||||
|
||||
createWarningLabel(container);
|
||||
|
||||
Composite radioContainer = new Composite(container, SWT.NONE);
|
||||
layout = new GridLayout();
|
||||
layout.numColumns = 2;
|
||||
@@ -175,6 +178,36 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
return parent;
|
||||
}
|
||||
|
||||
private void createWarningLabel(Composite container) {
|
||||
warningComposite = new Composite(container, SWT.NONE);
|
||||
warningComposite.setBackground(warningColor);
|
||||
warningLayoutData = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
|
||||
warningLayoutData.horizontalSpan = ((GridLayout) container.getLayout()).numColumns;
|
||||
warningComposite.setLayoutData(warningLayoutData);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.marginTop = 0;
|
||||
layout.marginLeft = 0;
|
||||
layout.marginRight = 0;
|
||||
layout.numColumns = 2;
|
||||
warningComposite.setLayout(layout);
|
||||
Label imageLabel = new Label(warningComposite, SWT.NONE);
|
||||
imageLabel.setImage(ImageProvider.getImage(EImage.WARNING_ICON));
|
||||
imageLabel.setBackground(warningColor);
|
||||
|
||||
warningLabel = new Label(warningComposite, SWT.WRAP);
|
||||
warningLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
|
||||
warningLabel.setBackground(warningColor);
|
||||
warningLayoutData.exclude = true;
|
||||
}
|
||||
|
||||
private void layoutWarningComposite(boolean exclude) {
|
||||
warningComposite.setVisible(!exclude);
|
||||
warningLayoutData.exclude = exclude;
|
||||
warningLabel.setText(Messages.getString("ConfigModuleDialog.warn.artifactory"));
|
||||
warningLabel.getParent().getParent().layout();
|
||||
warningLabel.getParent().getParent().getParent().getParent().getParent().pack();
|
||||
}
|
||||
|
||||
private void createMavenURIGroup(Composite parent) {
|
||||
Composite mvnContainer = new Composite(parent, SWT.NONE);
|
||||
GridLayout layout = new GridLayout();
|
||||
@@ -302,6 +335,13 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
|
||||
jarPathTxt = new Text(repGroupSubComp, SWT.BORDER);
|
||||
jarPathTxt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
|
||||
jarPathTxt.addModifyListener(new ModifyListener() {
|
||||
|
||||
@Override
|
||||
public void modifyText(ModifyEvent e) {
|
||||
handJarPathChanged();
|
||||
}
|
||||
});
|
||||
|
||||
browseButton = new Button(repGroupSubComp, SWT.PUSH);
|
||||
browseButton.setText("...");//$NON-NLS-1$
|
||||
@@ -316,7 +356,7 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
setInstallNewGroupEnabled(true);
|
||||
setInstallNewGroupEnabled(installRadioBtn.getSelection());
|
||||
setPlatformGroupEnabled(false);
|
||||
setRepositoryGroupEnabled(false);
|
||||
}
|
||||
@@ -394,6 +434,10 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
if (useCustomBtn.getSelection()) {
|
||||
customUriText.setEnabled(true);
|
||||
}
|
||||
boolean canConnectRemoteArtifactory = ConfigModuleHelper.notShowConnectionWarning();
|
||||
layoutWarningComposite(canConnectRemoteArtifactory);
|
||||
} else {
|
||||
layoutWarningComposite(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -489,7 +533,10 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
return;
|
||||
}
|
||||
this.jarPathTxt.setText(result);
|
||||
File file = new File(result);
|
||||
}
|
||||
|
||||
private void handJarPathChanged() {
|
||||
File file = new File(this.jarPathTxt.getText());
|
||||
moduleName = file.getName();
|
||||
|
||||
final IRunnableWithProgress detectProgress = new IRunnableWithProgress() {
|
||||
@@ -537,15 +584,11 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
ret = ConfigModuleHelper.searchRemoteArtifacts(name);
|
||||
}
|
||||
String[] items = ConfigModuleHelper.toArray(ret);
|
||||
Map<String, MavenArtifact> data = new HashMap<String, MavenArtifact>();
|
||||
for (MavenArtifact art : ret) {
|
||||
data.put(art.getFileName(false), art);
|
||||
}
|
||||
searchResultCombo.setData(data);
|
||||
searchResultCombo.setData(ret);
|
||||
if (items.length > 0) {
|
||||
searchResultCombo.setItems(items);
|
||||
searchResultCombo.setText(searchResultCombo.getItem(0));
|
||||
resultField.setProposals(items);
|
||||
resultField.setProposals(ConfigModuleHelper.toArrayUnique(items));
|
||||
} else {
|
||||
searchResultCombo.setText("");
|
||||
searchResultCombo.setItems(new String[0]);
|
||||
@@ -608,7 +651,6 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
}
|
||||
String originalText = defaultUriTxt.getText().trim();
|
||||
String customURIWithType = MavenUrlHelper.addTypeForMavenUri(customUriText.getText(), moduleName);
|
||||
useCustom = useCustomBtn.getSelection();
|
||||
if (useCustomBtn.getSelection()) {
|
||||
// if use custom uri:validate custom uri + check deploy status
|
||||
String errorMessage = ModuleMavenURIUtils.validateCustomMvnURI(originalText, customURIWithType);
|
||||
@@ -700,6 +742,7 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
if (installRadioBtn.getSelection()) {
|
||||
File jarFile = new File(jarPathTxt.getText().trim());
|
||||
MavenArtifact art = MavenUrlHelper.parseMvnUrl(urlToUse);
|
||||
moduleName = art.getFileName();
|
||||
String sha1New = ConfigModuleHelper.getSHA1(jarFile);
|
||||
art.setSha1(sha1New);
|
||||
// resolve jar locally
|
||||
@@ -732,7 +775,7 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
List<MavenArtifact> remoteArtifacts = null;
|
||||
try {
|
||||
remoteArtifacts = ConfigModuleHelper.searchRemoteArtifacts(art.getGroupId(),
|
||||
art.getArtifactId(), art.getVersion());
|
||||
art.getArtifactId(), null);
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
@@ -741,9 +784,15 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
if (ConfigModuleHelper.canFind(new HashSet<MavenArtifact>(remoteArtifacts), art)) {
|
||||
deploy = false;
|
||||
} else {
|
||||
// popup and ask, reinstall?
|
||||
deploy = MessageDialog.open(MessageDialog.CONFIRM, getShell(), "",
|
||||
Messages.getString("ConfigModuleDialog.shareInfo"), SWT.NONE);
|
||||
if (art.getVersion() != null
|
||||
&& art.getVersion().endsWith(MavenUrlHelper.VERSION_SNAPSHOT)) {
|
||||
// snapshot
|
||||
deploy = true;
|
||||
} else {
|
||||
// popup and ask, reinstall?
|
||||
deploy = MessageDialog.open(MessageDialog.CONFIRM, getShell(), "",
|
||||
Messages.getString("ConfigModuleDialog.shareInfo"), SWT.NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -771,8 +820,8 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
// check sha1
|
||||
String sha1Local = ConfigModuleHelper.getSHA1(localFile);
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, MavenArtifact> data = (Map<String, MavenArtifact>) searchResultCombo.getData();
|
||||
MavenArtifact art = data.get(moduleName);
|
||||
List<MavenArtifact> data = (List<MavenArtifact>) searchResultCombo.getData();
|
||||
MavenArtifact art = data.get(this.searchResultCombo.getSelectionIndex());
|
||||
try {
|
||||
// for nexus2 only
|
||||
ConfigModuleHelper.resolveSha1(art);
|
||||
@@ -796,6 +845,7 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
DownloadModuleRunnableWithLicenseDialog downloadModuleRunnable = new DownloadModuleRunnableWithLicenseDialog(
|
||||
toInstall, getShell());
|
||||
runProgress(downloadModuleRunnable);
|
||||
this.updateIndex(defaultURI);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -837,9 +887,19 @@ public class ConfigModuleDialog extends TitleAreaDialog implements IConfigModule
|
||||
private void setupMavenURIforSearch() {
|
||||
if (validateInputFields()) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, MavenArtifact> data = (Map<String, MavenArtifact>) searchResultCombo.getData();
|
||||
if (data != null && data.get(moduleName) != null) {
|
||||
MavenArtifact art = data.get(moduleName);
|
||||
List<MavenArtifact> data = (List<MavenArtifact>) searchResultCombo.getData();
|
||||
if (data != null && !data.isEmpty()) {
|
||||
if (this.searchResultCombo.getSelectionIndex() < 0) {
|
||||
int i = 0;
|
||||
for (MavenArtifact temp : data) {
|
||||
if (temp.getFileName().equals(this.searchResultCombo.getText())) {
|
||||
this.searchResultCombo.select(i);
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
MavenArtifact art = data.get(this.searchResultCombo.getSelectionIndex());
|
||||
defaultURIValue = MavenUrlHelper.generateMvnUrl(art);
|
||||
defaultUriTxt.setText(defaultURIValue);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2020 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.librariesmanager.ui.startup;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.SubMonitor;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.utils.MojoType;
|
||||
import org.talend.commons.utils.VersionUtils;
|
||||
import org.talend.core.model.general.ModuleNeeded;
|
||||
import org.talend.core.nexus.TalendMavenResolver;
|
||||
import org.talend.core.runtime.maven.MavenConstants;
|
||||
import org.talend.core.runtime.maven.MavenUrlHelper;
|
||||
import org.talend.designer.maven.model.TalendMavenConstants;
|
||||
import org.talend.librariesmanager.ui.i18n.Messages;
|
||||
|
||||
|
||||
/*
|
||||
* Created by bhe on Dec 24, 2020
|
||||
*/
|
||||
public class ShareCIJarsOnStartup extends ShareMavenArtifactsOnStartup {
|
||||
|
||||
@Override
|
||||
public Map<ModuleNeeded, File> getFilesToShare(IProgressMonitor monitor) {
|
||||
SubMonitor mainSubMonitor = SubMonitor.convert(monitor, 1);
|
||||
mainSubMonitor.setTaskName(Messages.getString("ShareLibsJob.getFilesToShare")); //$NON-NLS-1$
|
||||
Map<ModuleNeeded, File> files = new HashMap<>();
|
||||
// get plugin artifacts to share
|
||||
Stream.of(MojoType.values()).forEach(m -> {
|
||||
String mvnUrl = MavenUrlHelper.generateMvnUrl(TalendMavenConstants.DEFAULT_CI_GROUP_ID, m.getArtifactId(),
|
||||
VersionUtils.getMojoVersion(m), null, null);
|
||||
// try to resolve locally
|
||||
String localMvnUrl = mvnUrl.replace(MavenUrlHelper.MVN_PROTOCOL,
|
||||
MavenUrlHelper.MVN_PROTOCOL + MavenConstants.LOCAL_RESOLUTION_URL + MavenUrlHelper.REPO_SEPERATOR);
|
||||
File file = null;
|
||||
try {
|
||||
file = TalendMavenResolver.resolve(localMvnUrl);
|
||||
} catch (IOException | RuntimeException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
if (file != null) {
|
||||
ModuleNeeded module = new ModuleNeeded("", mvnUrl, "", true);
|
||||
files.put(module, file);
|
||||
}
|
||||
});
|
||||
|
||||
mainSubMonitor.worked(1);
|
||||
return files;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2020 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.librariesmanager.ui.startup;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.jobs.Job;
|
||||
|
||||
/*
|
||||
* Created by bhe on Dec 24, 2020
|
||||
*/
|
||||
public class ShareCILibsJob extends Job {
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public ShareCILibsJob() {
|
||||
super("");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected IStatus run(IProgressMonitor monitor) {
|
||||
ShareCIJarsOnStartup task = new ShareCIJarsOnStartup();
|
||||
return task.shareLibs(this, monitor);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,10 +22,6 @@ import org.eclipse.core.runtime.jobs.Job;
|
||||
*/
|
||||
public class ShareLibsJob extends Job {
|
||||
|
||||
private final String TYPE_NEXUS = "nexus";
|
||||
|
||||
private final String TYPE_SVN = "svn";
|
||||
|
||||
/**
|
||||
* DOC Talend ShareLibsJob constructor comment.
|
||||
*
|
||||
|
||||
@@ -14,12 +14,21 @@ package org.talend.librariesmanager.ui.startup;
|
||||
|
||||
import org.eclipse.ui.IStartup;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
||||
import org.eclipse.core.runtime.preferences.InstanceScope;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.utils.network.NetworkUtil;
|
||||
import org.talend.core.prefs.ITalendCorePrefConstants;
|
||||
|
||||
/**
|
||||
* created by wchen on 2015-6-15 Detailled comment
|
||||
*
|
||||
*/
|
||||
public class ShareLibsSynchronizer implements IStartup {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(ShareLibsSynchronizer.class.getCanonicalName());
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
@@ -27,8 +36,26 @@ public class ShareLibsSynchronizer implements IStartup {
|
||||
*/
|
||||
@Override
|
||||
public void earlyStartup() {
|
||||
ShareLibsJob job = new ShareLibsJob();
|
||||
job.schedule();
|
||||
|
||||
// share ci jars anyway
|
||||
ShareCILibsJob ciJob = new ShareCILibsJob();
|
||||
ciJob.schedule();
|
||||
|
||||
if (shareLibsAtStartup()) {
|
||||
ShareLibsJob job = new ShareLibsJob();
|
||||
job.schedule();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shareLibsAtStartup() {
|
||||
boolean ret = ITalendCorePrefConstants.NEXUS_SHARE_LIBS_DEFAULT;
|
||||
try {
|
||||
IEclipsePreferences node = InstanceScope.INSTANCE.getNode(NetworkUtil.ORG_TALEND_DESIGNER_CORE);
|
||||
ret = node.getBoolean(ITalendCorePrefConstants.NEXUS_SHARE_LIBS, ITalendCorePrefConstants.NEXUS_SHARE_LIBS_DEFAULT);
|
||||
} catch (Throwable e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
LOGGER.info("shareLibsAtStartup: " + ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,25 +91,6 @@ public class ShareMavenArtifactsOnStartup extends ShareLibrareisHelper {
|
||||
}
|
||||
}
|
||||
|
||||
// get plugin artifacts to share
|
||||
Stream.of(MojoType.values()).forEach(m -> {
|
||||
String mvnUrl = MavenUrlHelper.generateMvnUrl(TalendMavenConstants.DEFAULT_CI_GROUP_ID, m.getArtifactId(),
|
||||
VersionUtils.getMojoVersion(m), null, null);
|
||||
// try to resolve locally
|
||||
String localMvnUrl = mvnUrl.replace(MavenUrlHelper.MVN_PROTOCOL,
|
||||
MavenUrlHelper.MVN_PROTOCOL + MavenConstants.LOCAL_RESOLUTION_URL + MavenUrlHelper.REPO_SEPERATOR);
|
||||
File file = null;
|
||||
try {
|
||||
file = TalendMavenResolver.resolve(localMvnUrl);
|
||||
} catch (IOException | RuntimeException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
if (file != null) {
|
||||
ModuleNeeded module = new ModuleNeeded("", mvnUrl, "", true);
|
||||
files.put(module, file);
|
||||
}
|
||||
});
|
||||
|
||||
mainSubMonitor.worked(1);
|
||||
return files;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ import org.talend.librariesmanager.ui.actions.DownloadExternalJarAction;
|
||||
import org.talend.librariesmanager.ui.actions.ExportCustomSettingsAction;
|
||||
import org.talend.librariesmanager.ui.actions.ImportCustomSettingsAction;
|
||||
import org.talend.librariesmanager.ui.actions.ImportExternalJarAction;
|
||||
import org.talend.librariesmanager.ui.actions.RemoveExternalJarAction;
|
||||
import org.talend.librariesmanager.ui.actions.ShareLibsAction;
|
||||
|
||||
/**
|
||||
* DOC nrousseau class global comment. Detailled comment <br/>
|
||||
@@ -129,12 +129,16 @@ public class ModulesView extends ViewPart {
|
||||
manager.add(importSettingAction);
|
||||
ExportCustomSettingsAction exportSettingAction = new ExportCustomSettingsAction();
|
||||
manager.add(exportSettingAction);
|
||||
RemoveExternalJarAction removeAction = new RemoveExternalJarAction();
|
||||
manager.add(removeAction);
|
||||
ImportExternalJarAction importAction = new ImportExternalJarAction();
|
||||
manager.add(importAction);
|
||||
DownloadExternalJarAction downloadAcion = new DownloadExternalJarAction(this);
|
||||
manager.add(downloadAcion);
|
||||
|
||||
ShareLibsAction shareAction = new ShareLibsAction();
|
||||
if (shareAction.show()) {
|
||||
manager.add(shareAction);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -35,6 +36,7 @@ import org.talend.core.nexus.TalendLibsServerManager;
|
||||
import org.talend.core.runtime.maven.MavenArtifact;
|
||||
import org.talend.core.runtime.maven.MavenUrlHelper;
|
||||
import org.talend.librariesmanager.model.ModulesNeededProvider;
|
||||
import org.talend.librariesmanager.nexus.utils.VersionUtil;
|
||||
import org.talend.librariesmanager.ui.LibManagerUiPlugin;
|
||||
|
||||
/*
|
||||
@@ -45,6 +47,16 @@ public class ConfigModuleHelper {
|
||||
|
||||
private static final String LOCAL_M2 = MavenPlugin.getMaven().getLocalRepositoryPath();
|
||||
|
||||
private static final Set<String> IGNORED_FILE_EXTS = new HashSet<String>();
|
||||
static {
|
||||
IGNORED_FILE_EXTS.add("repositories");
|
||||
IGNORED_FILE_EXTS.add("lastUpdated");
|
||||
IGNORED_FILE_EXTS.add("sha1");
|
||||
IGNORED_FILE_EXTS.add("md5");
|
||||
IGNORED_FILE_EXTS.add("pom");
|
||||
IGNORED_FILE_EXTS.add("xml");
|
||||
}
|
||||
|
||||
private ConfigModuleHelper() {
|
||||
|
||||
}
|
||||
@@ -54,7 +66,8 @@ public class ConfigModuleHelper {
|
||||
IRepositoryArtifactHandler customerRepHandler = RepositoryArtifactHandlerManager.getRepositoryHandler(customNexusServer);
|
||||
if (customerRepHandler != null) {
|
||||
List<MavenArtifact> ret = customerRepHandler.search(name, true);
|
||||
return ret;
|
||||
|
||||
return VersionUtil.filterSnapshotArtifacts(ret);
|
||||
}
|
||||
return new ArrayList<MavenArtifact>();
|
||||
}
|
||||
@@ -66,7 +79,19 @@ public class ConfigModuleHelper {
|
||||
|
||||
List<String> ret = new ArrayList<String>();
|
||||
for (MavenArtifact art : artifacts) {
|
||||
ret.add(art.getFileName(false));
|
||||
ret.add(art.getFileName());
|
||||
}
|
||||
return ret.toArray(new String[0]);
|
||||
}
|
||||
|
||||
public static String[] toArrayUnique(String[] arr) {
|
||||
if (arr == null) {
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
Set<String> ret = new HashSet<String>();
|
||||
for (String art : arr) {
|
||||
ret.add(art);
|
||||
}
|
||||
return ret.toArray(new String[0]);
|
||||
}
|
||||
@@ -78,7 +103,8 @@ public class ConfigModuleHelper {
|
||||
search(name, m2Dir, ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
return VersionUtil.filterSnapshotArtifacts(ret);
|
||||
|
||||
}
|
||||
|
||||
private static void search(String name, File dir, List<MavenArtifact> ret) throws Exception {
|
||||
@@ -87,11 +113,16 @@ public class ConfigModuleHelper {
|
||||
if (f.isDirectory()) {
|
||||
search(name, f, ret);
|
||||
} else {
|
||||
if (f.isFile() && f.getName().endsWith(".jar")
|
||||
&& StringUtils.containsIgnoreCase(FilenameUtils.getBaseName(f.getName()), name)) {
|
||||
if (f.isFile() && StringUtils.containsIgnoreCase(FilenameUtils.getName(f.getName()), name)) {
|
||||
|
||||
String ext = FilenameUtils.getExtension(f.getName());
|
||||
if (IGNORED_FILE_EXTS.contains(ext)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String path = f.getPath().substring(LOCAL_M2.length() + 1, f.getPath().length());
|
||||
|
||||
MavenArtifact art = parse(path);
|
||||
MavenArtifact art = parse(path, ext);
|
||||
if (art != null) {
|
||||
ret.add(art);
|
||||
}
|
||||
@@ -100,7 +131,7 @@ public class ConfigModuleHelper {
|
||||
}
|
||||
}
|
||||
|
||||
public static MavenArtifact parse(String path) {
|
||||
public static MavenArtifact parse(String path, String ext) {
|
||||
MavenArtifact art = new MavenArtifact();
|
||||
if (path == null || StringUtils.isEmpty(path)) {
|
||||
return null;
|
||||
@@ -127,14 +158,19 @@ public class ConfigModuleHelper {
|
||||
art.setGroupId(sb.toString());
|
||||
art.setArtifactId(a);
|
||||
art.setVersion(v);
|
||||
art.setType("jar");
|
||||
art.setType(ext);
|
||||
|
||||
String baseName = FilenameUtils.getBaseName(fname);
|
||||
if (!baseName.contains(v)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
int endIndex = a.length() + v.length() + 1;
|
||||
if (baseName.length() > endIndex + 1) {
|
||||
String classifier = baseName.substring(endIndex + 1, baseName.length());
|
||||
art.setClassifier(classifier);
|
||||
}
|
||||
|
||||
return art;
|
||||
}
|
||||
|
||||
@@ -185,8 +221,8 @@ public class ConfigModuleHelper {
|
||||
for (MavenArtifact art : artifacts) {
|
||||
if (StringUtils.equals(art.getGroupId(), artifact.getGroupId())
|
||||
&& StringUtils.equals(art.getArtifactId(), artifact.getArtifactId())
|
||||
&& StringUtils.equals(art.getVersion(), artifact.getVersion())
|
||||
&& StringUtils.equals(art.getClassifier(), artifact.getClassifier())
|
||||
&& StringUtils.equals(art.getVersion(), artifact.getVersion())
|
||||
&& StringUtils.equals(art.getType(), artifact.getType())
|
||||
&& StringUtils.equals(art.getSha1(), artifact.getSha1())) {
|
||||
return true;
|
||||
@@ -199,22 +235,24 @@ public class ConfigModuleHelper {
|
||||
ArtifactRepositoryBean customNexusServer = TalendLibsServerManager.getInstance().getCustomNexusServer();
|
||||
IRepositoryArtifactHandler customerRepHandler = RepositoryArtifactHandlerManager.getRepositoryHandler(customNexusServer);
|
||||
if (customerRepHandler != null) {
|
||||
boolean fromSnapshot = false;
|
||||
if (v != null && v.endsWith(MavenUrlHelper.VERSION_SNAPSHOT)) {
|
||||
fromSnapshot = true;
|
||||
}
|
||||
List<MavenArtifact> ret = customerRepHandler.search(g, a, v, true, fromSnapshot);
|
||||
List<MavenArtifact> ret = customerRepHandler.search(g, a, v, true, true);
|
||||
|
||||
if (customNexusServer.getType() == ArtifactRepositoryBean.NexusType.NEXUS_2.name()) {
|
||||
// resolve sha1
|
||||
for (MavenArtifact art : ret) {
|
||||
String sha1 = customerRepHandler.resolveRemoteSha1(art, !fromSnapshot);
|
||||
String sha1 = customerRepHandler.resolveRemoteSha1(art, false);
|
||||
if (sha1 != null) {
|
||||
art.setSha1(sha1);
|
||||
}
|
||||
if (StringUtils.isEmpty(art.getSha1())) {
|
||||
sha1 = customerRepHandler.resolveRemoteSha1(art, true);
|
||||
if (sha1 != null) {
|
||||
art.setSha1(sha1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
return VersionUtil.filterSnapshotArtifacts(ret);
|
||||
}
|
||||
return new ArrayList<MavenArtifact>();
|
||||
}
|
||||
@@ -291,4 +329,20 @@ public class ConfigModuleHelper {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean notShowConnectionWarning() {
|
||||
try {
|
||||
ArtifactRepositoryBean customNexusServer = TalendLibsServerManager.getInstance().getCustomNexusServer();
|
||||
IRepositoryArtifactHandler customerRepHandler = RepositoryArtifactHandlerManager
|
||||
.getRepositoryHandler(customNexusServer);
|
||||
if (customerRepHandler != null) {
|
||||
return customerRepHandler.checkConnection();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
|
||||
// ignore local
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
package routines.system;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public final class BundleUtils {
|
||||
|
||||
@@ -75,6 +78,31 @@ public final class BundleUtils {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> Map<String, T> getServices(List<?> serviceReferences, Class<T> serviceClass ) {
|
||||
|
||||
Map<String, T> services = new HashMap<String, T>();
|
||||
|
||||
if (BUNDLE == null || SERVICE_REFERENCE_CLASS == null ) {
|
||||
return services;
|
||||
}
|
||||
|
||||
try {
|
||||
for (Object serviceRef : serviceReferences) {
|
||||
Object serviceId = serviceRef.getClass().getMethod("getProperty",
|
||||
java.lang.String.class).invoke(serviceRef, "osgi.jndi.service.name");
|
||||
Method getBundleContext = BUNDLE.getClass().getMethod("getBundleContext");
|
||||
Object context = getBundleContext.invoke(BUNDLE);
|
||||
Class<?> ctxClass = context.getClass();
|
||||
Method getService = ctxClass.getMethod("getService", SERVICE_REFERENCE_CLASS);
|
||||
services.put(serviceId.toString(), serviceClass.cast(getService.invoke(context, serviceRef)));
|
||||
}
|
||||
return services;
|
||||
} catch (Exception e) {
|
||||
return services;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static boolean inOSGi() {
|
||||
return BUNDLE != null;
|
||||
|
||||
@@ -21,14 +21,10 @@
|
||||
// ============================================================================
|
||||
package routines.system;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.lang.management.RuntimeMXBean;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
//TODO split to several classes by the level when have a clear requirement or design : job, component, connection
|
||||
public class JobStructureCatcherUtils {
|
||||
@@ -193,6 +189,8 @@ public class JobStructureCatcherUtils {
|
||||
|
||||
public void addCM(String component_id, String component_label, String component_name) {
|
||||
JobStructureCatcherMessage scm = new JobStructureCatcherMessage();
|
||||
scm.moment = sdf.format(new Date());
|
||||
|
||||
scm.job_name = this.job_name;
|
||||
scm.job_id = this.job_id;
|
||||
scm.job_version = this.job_version;
|
||||
|
||||
@@ -54,114 +54,112 @@ public abstract class ShareLibrareisHelper {
|
||||
// deploy to maven if needed and share to custom nexus
|
||||
try {
|
||||
setJobName(job, Messages.getString("ShareLibsJob.message", TYPE_NEXUS));
|
||||
|
||||
Map<String, List<MavenArtifact>> snapshotArtifactMap = new HashMap<String, List<MavenArtifact>>();
|
||||
Map<String, List<MavenArtifact>> releaseArtifactMap = new HashMap<String, List<MavenArtifact>>();
|
||||
|
||||
ArtifactRepositoryBean customNexusServer = TalendLibsServerManager.getInstance().getCustomNexusServer();
|
||||
IRepositoryArtifactHandler customerRepHandler = RepositoryArtifactHandlerManager
|
||||
.getRepositoryHandler(customNexusServer);
|
||||
if (customerRepHandler != null) {
|
||||
filesToShare = getFilesToShare(monitor);
|
||||
if (filesToShare == null) {
|
||||
return Status.CANCEL_STATUS;
|
||||
}
|
||||
|
||||
// collect groupId to search
|
||||
Set<String> groupIds = new HashSet<String>();
|
||||
Map<String, List<MavenArtifact>> snapshotArtifactMap = new HashMap<String, List<MavenArtifact>>();
|
||||
Map<String, List<MavenArtifact>> releaseArtifactMap = new HashMap<String, List<MavenArtifact>>();
|
||||
Set<String> snapshotGroupIdSet = new HashSet<String>();
|
||||
Set<String> releaseGroupIdSet = new HashSet<String>();
|
||||
for (ModuleNeeded module : filesToShare.keySet()) {
|
||||
checkCancel(monitor);
|
||||
if (module.getMavenUri() != null) {
|
||||
MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(module.getMavenUri());
|
||||
if (parseMvnUrl != null) {
|
||||
groupIds.add(parseMvnUrl.getGroupId());
|
||||
if (isSnapshotVersion(parseMvnUrl.getVersion())) {
|
||||
snapshotGroupIdSet.add(parseMvnUrl.getGroupId());
|
||||
} else {
|
||||
releaseGroupIdSet.add(parseMvnUrl.getGroupId());
|
||||
}
|
||||
ArtifactRepositoryBean proxyServer = TalendLibsServerManager.getInstance().getProxyArtifactServer();
|
||||
IRepositoryArtifactHandler proxyArtifactHandler = RepositoryArtifactHandlerManager.getRepositoryHandler(proxyServer);
|
||||
|
||||
if (customerRepHandler == null) {
|
||||
return Status.CANCEL_STATUS;
|
||||
}
|
||||
|
||||
filesToShare = getFilesToShare(monitor);
|
||||
if (filesToShare == null || filesToShare.isEmpty()) {
|
||||
return Status.CANCEL_STATUS;
|
||||
}
|
||||
|
||||
// collect groupId to search
|
||||
Set<String> snapshotGroupIdSet = new HashSet<String>();
|
||||
Set<String> releaseGroupIdSet = new HashSet<String>();
|
||||
checkCancel(monitor);
|
||||
for (ModuleNeeded module : filesToShare.keySet()) {
|
||||
checkCancel(monitor);
|
||||
if (module.getMavenUri() != null) {
|
||||
MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(module.getMavenUri());
|
||||
if (parseMvnUrl != null) {
|
||||
if (isSnapshotVersion(parseMvnUrl.getVersion())) {
|
||||
snapshotGroupIdSet.add(parseMvnUrl.getGroupId());
|
||||
} else {
|
||||
releaseGroupIdSet.add(parseMvnUrl.getGroupId());
|
||||
}
|
||||
}
|
||||
}
|
||||
List<MavenArtifact> searchResults = new ArrayList<MavenArtifact>();
|
||||
for (String groupId : groupIds) {
|
||||
checkCancel(monitor);
|
||||
if (releaseGroupIdSet.contains(groupId)) {
|
||||
searchResults = customerRepHandler.search(groupId, null, null, true, false);
|
||||
if (searchResults != null) {
|
||||
for (MavenArtifact result : searchResults) {
|
||||
checkCancel(monitor);
|
||||
ShareLibrariesUtil.putArtifactToMap(result, releaseArtifactMap, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
checkCancel(monitor);
|
||||
if (snapshotGroupIdSet.contains(groupId)) {
|
||||
searchResults = customerRepHandler.search(groupId, null, null, false, true);
|
||||
if (searchResults != null) {
|
||||
for (MavenArtifact result : searchResults) {
|
||||
checkCancel(monitor);
|
||||
ShareLibrariesUtil.putArtifactToMap(result, snapshotArtifactMap, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// search from custom artifact repositories if any
|
||||
seachArtifacts(monitor, customerRepHandler, snapshotArtifactMap, releaseArtifactMap, snapshotGroupIdSet,
|
||||
releaseGroupIdSet);
|
||||
|
||||
try {
|
||||
// search from proxy artifact repository if any
|
||||
seachArtifacts(monitor, proxyArtifactHandler, snapshotArtifactMap, releaseArtifactMap, snapshotGroupIdSet,
|
||||
releaseGroupIdSet);
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
checkCancel(monitor);
|
||||
|
||||
Iterator<ModuleNeeded> iterator = filesToShare.keySet().iterator();
|
||||
Map<File, MavenArtifact> shareFiles = new HashMap<>();
|
||||
while (iterator.hasNext()) {
|
||||
checkCancel(monitor);
|
||||
ModuleNeeded next = iterator.next();
|
||||
File file = filesToShare.get(next);
|
||||
MavenArtifact artifact = MavenUrlHelper.parseMvnUrl(next.getMavenUri());
|
||||
if (artifact == null) {
|
||||
continue;
|
||||
}
|
||||
// If from custom component definition file
|
||||
if (LocalLibraryManager.isSystemCacheFile(file.getName())
|
||||
|| (LocalLibraryManager.isComponentDefinitionFileType(file.getName())
|
||||
&& isTalendLibraryGroupId(artifact))) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
Integer.parseInt(artifact.getType());
|
||||
// FIXME unexpected type if it's an integer, should fix it in component module definition.
|
||||
continue;
|
||||
} catch (NumberFormatException e) {
|
||||
//
|
||||
}
|
||||
boolean isSnapshotVersion = isSnapshotVersion(artifact.getVersion());
|
||||
String key = ShareLibrariesUtil.getArtifactKey(artifact, isSnapshotVersion);
|
||||
List<MavenArtifact> artifactList = null;
|
||||
if (isSnapshotVersion) {
|
||||
artifactList = snapshotArtifactMap.get(key);
|
||||
} else {
|
||||
artifactList = releaseArtifactMap.get(key);
|
||||
// skip checksum for release artifact.
|
||||
if (artifactList != null && artifactList.contains(artifact)
|
||||
&& !Boolean.getBoolean("force_libs_release_update")) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
Iterator<ModuleNeeded> iterator = filesToShare.keySet().iterator();
|
||||
Map<File, MavenArtifact> shareFiles = new HashMap<>();
|
||||
while (iterator.hasNext()) {
|
||||
checkCancel(monitor);
|
||||
ModuleNeeded next = iterator.next();
|
||||
File file = filesToShare.get(next);
|
||||
MavenArtifact artifact = MavenUrlHelper.parseMvnUrl(next.getMavenUri());
|
||||
if (artifact == null) {
|
||||
if (artifactList != null && artifactList.size() > 0) {
|
||||
if (ShareLibrariesUtil.isSameFileWithRemote(file, artifactList, customNexusServer, customerRepHandler,
|
||||
isSnapshotVersion)) {
|
||||
continue;
|
||||
}
|
||||
// If from custom component definition file
|
||||
if (LocalLibraryManager.isSystemCacheFile(file.getName())
|
||||
|| (LocalLibraryManager.isComponentDefinitionFileType(file.getName())
|
||||
&& isTalendLibraryGroupId(artifact))) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
Integer.parseInt(artifact.getType());
|
||||
// FIXME unexpected type if it's an integer, should fix it in component module definition.
|
||||
continue;
|
||||
} catch (NumberFormatException e) {
|
||||
//
|
||||
}
|
||||
boolean isSnapshotVersion = isSnapshotVersion(artifact.getVersion());
|
||||
String key = ShareLibrariesUtil.getArtifactKey(artifact, isSnapshotVersion);
|
||||
List<MavenArtifact> artifactList = null;
|
||||
if (isSnapshotVersion) {
|
||||
artifactList = snapshotArtifactMap.get(key);
|
||||
} else {
|
||||
artifactList = releaseArtifactMap.get(key);
|
||||
// skip checksum for release artifact.
|
||||
if (artifactList != null && artifactList.contains(artifact)
|
||||
&& !Boolean.getBoolean("force_libs_release_update")) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (artifactList != null && artifactList.size() > 0) {
|
||||
if (ShareLibrariesUtil.isSameFileWithRemote(file, artifactList, customNexusServer, customerRepHandler,
|
||||
isSnapshotVersion)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
shareFiles.put(file, artifact);
|
||||
}
|
||||
SubMonitor mainSubMonitor = SubMonitor.convert(monitor, shareFiles.size());
|
||||
for (Map.Entry<File, MavenArtifact> entry : shareFiles.entrySet()) {
|
||||
checkCancel(monitor);
|
||||
try {
|
||||
File k = entry.getKey();
|
||||
MavenArtifact v = entry.getValue();
|
||||
mainSubMonitor.setTaskName(Messages.getString("ShareLibsJob.sharingLibraries", k.getName()));
|
||||
shareToRepository(k, v);
|
||||
mainSubMonitor.worked(1);
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
shareFiles.put(file, artifact);
|
||||
}
|
||||
SubMonitor mainSubMonitor = SubMonitor.convert(monitor, shareFiles.size());
|
||||
for (Map.Entry<File, MavenArtifact> entry : shareFiles.entrySet()) {
|
||||
checkCancel(monitor);
|
||||
try {
|
||||
File k = entry.getKey();
|
||||
MavenArtifact v = entry.getValue();
|
||||
mainSubMonitor.setTaskName(Messages.getString("ShareLibsJob.sharingLibraries", k.getName()));
|
||||
shareToRepository(k, v);
|
||||
mainSubMonitor.worked(1);
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
@@ -175,6 +173,38 @@ public abstract class ShareLibrareisHelper {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Search artifacts based on given snapshotGroupIdSet and releaseGroupIdSet from remote artifact repositories
|
||||
* represented by artifactHandler, the search results are put to snapshotArtifactMap and releaseArtifactMap
|
||||
*/
|
||||
protected void seachArtifacts(IProgressMonitor monitor, IRepositoryArtifactHandler artifactHandler,
|
||||
Map<String, List<MavenArtifact>> snapshotArtifactMap, Map<String, List<MavenArtifact>> releaseArtifactMap,
|
||||
Set<String> snapshotGroupIdSet, Set<String> releaseGroupIdSet) throws Exception {
|
||||
if (artifactHandler != null) {
|
||||
checkCancel(monitor);
|
||||
List<MavenArtifact> searchResults = new ArrayList<MavenArtifact>();
|
||||
for (String groupId : releaseGroupIdSet) {
|
||||
searchResults = artifactHandler.search(groupId, null, null, true, false);
|
||||
if (searchResults != null) {
|
||||
for (MavenArtifact result : searchResults) {
|
||||
checkCancel(monitor);
|
||||
ShareLibrariesUtil.putArtifactToMap(result, releaseArtifactMap, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
checkCancel(monitor);
|
||||
for (String groupId : snapshotGroupIdSet) {
|
||||
searchResults = artifactHandler.search(groupId, null, null, false, true);
|
||||
if (searchResults != null) {
|
||||
for (MavenArtifact result : searchResults) {
|
||||
checkCancel(monitor);
|
||||
ShareLibrariesUtil.putArtifactToMap(result, snapshotArtifactMap, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isTalendLibraryGroupId(MavenArtifact artifact) {
|
||||
if ("org.talend.libraries".equalsIgnoreCase(artifact.getGroupId())) {
|
||||
return true;
|
||||
|
||||
@@ -714,11 +714,9 @@ public class ModulesNeededProvider {
|
||||
isRequired);
|
||||
toAdd.setMavenUri(currentImport.getMVN());
|
||||
if (!isRequired) {
|
||||
if ("BeanItem".equals(routine.eClass().getName())) {
|
||||
toAdd.getExtraAttributes().put("IS_OSGI_EXCLUDED", Boolean.TRUE);
|
||||
}
|
||||
toAdd.getExtraAttributes().put("IS_OSGI_EXCLUDED", Boolean.TRUE);
|
||||
if ("RoutineItem".equals(routine.eClass().getName())) {
|
||||
continue;
|
||||
toAdd.setExcluded(true);
|
||||
}
|
||||
}
|
||||
// toAdd.setStatus(ELibraryInstallStatus.INSTALLED);
|
||||
|
||||
@@ -13,25 +13,37 @@
|
||||
package org.talend.librariesmanager.model.service;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Set;
|
||||
|
||||
import net.sf.json.JSONObject;
|
||||
|
||||
import org.codehaus.jackson.map.ObjectMapper;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IFolder;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.resources.IWorkspaceRunnable;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.exception.LoginException;
|
||||
import org.talend.commons.exception.PersistenceException;
|
||||
import org.talend.commons.utils.io.FilesUtils;
|
||||
import org.talend.commons.utils.workbench.resources.ResourceUtils;
|
||||
import org.talend.core.model.general.Project;
|
||||
import org.talend.core.runtime.CoreRuntimePlugin;
|
||||
import org.talend.repository.ProjectManager;
|
||||
import org.talend.repository.RepositoryWorkUnit;
|
||||
import org.talend.repository.model.IProxyRepositoryFactory;
|
||||
import org.talend.repository.model.RepositoryConstants;
|
||||
|
||||
import net.sf.json.JSONObject;
|
||||
|
||||
/**
|
||||
* created by wchen on Aug 18, 2017 Detailled comment
|
||||
@@ -43,15 +55,13 @@ public class CustomUriManager {
|
||||
|
||||
private static CustomUriManager manager = new CustomUriManager();;
|
||||
|
||||
private static final String CUSTOM_URI_MAP = "custom_uri_mapping.json";
|
||||
|
||||
private static long lastModified = 0;
|
||||
|
||||
private static boolean isNeedReload = false;
|
||||
|
||||
private final Object reloadingLock = new Object();
|
||||
|
||||
private CustomUriManager() {
|
||||
try {
|
||||
customURIObject = loadResources(getResourcePath(), CUSTOM_URI_MAP);
|
||||
customURIObject = loadResources(getResourcePath(), RepositoryConstants.PROJECT_SETTINGS_CUSTOM_URI_MAP);
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
@@ -61,34 +71,121 @@ public class CustomUriManager {
|
||||
return manager;
|
||||
}
|
||||
|
||||
private synchronized JSONObject loadResources(String path, String fileName) throws IOException {
|
||||
BufferedReader br = null;
|
||||
private JSONObject loadResources(String path, String fileName) throws IOException {
|
||||
JSONObject jsonObj = new JSONObject();
|
||||
InputStream in = null;
|
||||
try {
|
||||
File file = new File(path, fileName);
|
||||
if (file.exists()) {
|
||||
br = new BufferedReader(new FileReader(file));
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
String line = null;
|
||||
while ((line = br.readLine()) != null) {
|
||||
buffer.append(line);
|
||||
}
|
||||
jsonObj = JSONObject.fromObject(buffer.toString());
|
||||
jsonObj = loadResources(new FileInputStream(file), fileName);
|
||||
}
|
||||
} finally {
|
||||
if (br != null) {
|
||||
br.close();
|
||||
if (in != null) {
|
||||
try {
|
||||
in.close();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return jsonObj;
|
||||
}
|
||||
|
||||
private JSONObject loadResources(IFolder path, String fileName) throws CoreException, IOException {
|
||||
JSONObject jsonObj = new JSONObject();
|
||||
InputStream in = null;
|
||||
try {
|
||||
IFile file = path.getFile(fileName);
|
||||
FilesUtils.executeFolderAction(new NullProgressMonitor(), path, new IWorkspaceRunnable() {
|
||||
|
||||
@Override
|
||||
public void run(IProgressMonitor monitor) throws CoreException {
|
||||
file.refreshLocal(IResource.DEPTH_ZERO, monitor);
|
||||
}
|
||||
});
|
||||
if (file.isAccessible()) {
|
||||
in = file.getContents(true);
|
||||
return loadResources(in, fileName);
|
||||
}
|
||||
} finally {
|
||||
try {
|
||||
if (in != null) {
|
||||
in.close();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
return jsonObj;
|
||||
}
|
||||
|
||||
private JSONObject loadResources(InputStream in, String fileName) throws IOException {
|
||||
BufferedReader br = null;
|
||||
JSONObject jsonObj = new JSONObject();
|
||||
try {
|
||||
br = new BufferedReader(new InputStreamReader(in));
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
String line = null;
|
||||
while ((line = br.readLine()) != null) {
|
||||
buffer.append(line);
|
||||
}
|
||||
jsonObj = JSONObject.fromObject(buffer.toString());
|
||||
} finally {
|
||||
if (br != null) {
|
||||
try {
|
||||
br.close();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return jsonObj;
|
||||
}
|
||||
|
||||
private void saveResource(JSONObject customMap, IFolder filePath, String fileName, boolean isExport) {
|
||||
ByteArrayOutputStream out = null;
|
||||
ByteArrayInputStream in = null;
|
||||
try {
|
||||
IFile file = filePath.getFile(fileName);
|
||||
out = new ByteArrayOutputStream();
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.writerWithDefaultPrettyPrinter().writeValue(out, customMap);
|
||||
in = new ByteArrayInputStream(out.toByteArray());
|
||||
final InputStream fin = in;
|
||||
FilesUtils.executeFolderAction(new NullProgressMonitor(), file.getParent(), new IWorkspaceRunnable() {
|
||||
|
||||
@Override
|
||||
public void run(IProgressMonitor monitor) throws CoreException {
|
||||
file.refreshLocal(IResource.DEPTH_ZERO, monitor);
|
||||
if (!file.exists()) {
|
||||
file.create(fin, false, monitor);
|
||||
} else {
|
||||
file.setContents(fin, true, false, monitor);
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
} finally {
|
||||
if (out != null) {
|
||||
try {
|
||||
out.close();
|
||||
} catch (IOException ex) {
|
||||
// ExceptionHandler.process(ex);
|
||||
}
|
||||
}
|
||||
if (in != null) {
|
||||
try {
|
||||
in.close();
|
||||
} catch (IOException ex) {
|
||||
// ExceptionHandler.process(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void saveResource(JSONObject customMap, String filePath, String fileName, boolean isExport) {
|
||||
try {
|
||||
File file = new File(filePath, fileName);
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.writerWithDefaultPrettyPrinter().writeValue(file, customMap);
|
||||
lastModified = file.lastModified();
|
||||
} catch (IOException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
@@ -100,7 +197,7 @@ public class CustomUriManager {
|
||||
|
||||
@Override
|
||||
public void run() throws PersistenceException, LoginException {
|
||||
saveResource(customURIObject, getResourcePath(), CUSTOM_URI_MAP, false);
|
||||
saveResource(customURIObject, getResourcePath(), RepositoryConstants.PROJECT_SETTINGS_CUSTOM_URI_MAP, false);
|
||||
}
|
||||
};
|
||||
IProxyRepositoryFactory factory = CoreRuntimePlugin.getInstance().getProxyRepositoryFactory();
|
||||
@@ -111,12 +208,11 @@ public class CustomUriManager {
|
||||
|
||||
}
|
||||
|
||||
private String getResourcePath() {
|
||||
private IFolder getResourcePath() {
|
||||
try {
|
||||
Project currentProject = ProjectManager.getInstance().getCurrentProject();
|
||||
IProject project = ResourceUtils.getProject(currentProject);
|
||||
IFolder settingsFolder = project.getFolder(".settings");
|
||||
return settingsFolder.getLocation().toPortableString();
|
||||
return project.getFolder(".settings");
|
||||
} catch (PersistenceException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
@@ -124,7 +220,11 @@ public class CustomUriManager {
|
||||
}
|
||||
|
||||
public void put(String key, String value) {
|
||||
reloadCustomMapping();
|
||||
try {
|
||||
reloadCustomMapping();
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
if (value != null) {
|
||||
customURIObject.put(key, value);
|
||||
} else {
|
||||
@@ -133,7 +233,11 @@ public class CustomUriManager {
|
||||
}
|
||||
|
||||
public String get(String key) {
|
||||
reloadCustomMapping();
|
||||
try {
|
||||
reloadCustomMapping();
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
if (customURIObject.containsKey(key)) {
|
||||
return customURIObject.getString(key);
|
||||
}
|
||||
@@ -159,16 +263,18 @@ public class CustomUriManager {
|
||||
|
||||
public void reloadCustomMapping() {
|
||||
try {
|
||||
File file = new File(getResourcePath(), CUSTOM_URI_MAP);
|
||||
long modifyDate = file.lastModified();
|
||||
if (isNeedReload || modifyDate > lastModified) {
|
||||
customURIObject.clear();
|
||||
JSONObject loadResources = loadResources(getResourcePath(), CUSTOM_URI_MAP);
|
||||
customURIObject.putAll(loadResources);
|
||||
lastModified = modifyDate;
|
||||
isNeedReload = false;
|
||||
if (isNeedReload) {
|
||||
synchronized (reloadingLock) {
|
||||
if (isNeedReload) {
|
||||
customURIObject.clear();
|
||||
JSONObject loadResources = loadResources(getResourcePath(),
|
||||
RepositoryConstants.PROJECT_SETTINGS_CUSTOM_URI_MAP);
|
||||
customURIObject.putAll(loadResources);
|
||||
isNeedReload = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1315,8 +1315,7 @@ public class LocalLibraryManager implements ILibraryManagerService, IChangedLibr
|
||||
String contributeID = providerInfo.getContributer();
|
||||
String id = providerInfo.getId();
|
||||
try {
|
||||
if (!"org.talend.designer.components.model.UserComponentsProvider".equals(id)
|
||||
&& !"org.talend.designer.components.exchange.ExchangeComponentsProvider".equals(id)) {
|
||||
if (!isExtComponentProvider(id)) {
|
||||
File file = new File(providerInfo.getLocation());
|
||||
List<File> jarFiles = FilesUtils.getJarFilesFromFolder(file, null, "ext");
|
||||
if (jarFiles.size() > 0) {
|
||||
@@ -1348,40 +1347,48 @@ public class LocalLibraryManager implements ILibraryManagerService, IChangedLibr
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isExtComponentProvider(String id) {
|
||||
if ("org.talend.designer.components.model.UserComponentsProvider".equals(id)
|
||||
|| "org.talend.designer.codegen.components.model.SharedStudioUserComponentProvider".equals(id)
|
||||
|| "org.talend.designer.components.exchange.ExchangeComponentsProvider".equals(id)
|
||||
|| "org.talend.designer.components.exchange.SharedStudioExchangeComponentsProvider".equals(id)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void deployLibsFromCustomComponents(IComponentsService service, Map<String, String> platformURLMap) {
|
||||
Set<File> needToDeploy = new HashSet<>();
|
||||
List<ComponentProviderInfo> componentsFolders = service.getComponentsFactory().getComponentsProvidersInfo();
|
||||
for (ComponentProviderInfo providerInfo : componentsFolders) {
|
||||
String id = providerInfo.getId();
|
||||
try {
|
||||
File file = new File(providerInfo.getLocation());
|
||||
if ("org.talend.designer.components.model.UserComponentsProvider".equals(id)
|
||||
|| "org.talend.designer.components.exchange.ExchangeComponentsProvider".equals(id)) {
|
||||
if (file.isDirectory()) {
|
||||
List<File> jarFiles = FilesUtils.getJarFilesFromFolder(file, null);
|
||||
if (jarFiles.size() > 0) {
|
||||
for (File jarFile : jarFiles) {
|
||||
String name = jarFile.getName();
|
||||
if (!canDeployFromCustomComponentFolder(name)
|
||||
|| platformURLMap.get(name) != null) {
|
||||
continue;
|
||||
}
|
||||
needToDeploy.add(jarFile);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (platformURLMap.get(file.getName()) != null) {
|
||||
continue;
|
||||
}
|
||||
needToDeploy.add(file);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
private void deployLibsFromCustomComponents(IComponentsService service, Map<String, String> platformURLMap) {
|
||||
Set<File> needToDeploy = new HashSet<>();
|
||||
List<ComponentProviderInfo> componentsFolders = service.getComponentsFactory().getComponentsProvidersInfo();
|
||||
for (ComponentProviderInfo providerInfo : componentsFolders) {
|
||||
String id = providerInfo.getId();
|
||||
try {
|
||||
File file = new File(providerInfo.getLocation());
|
||||
if (isExtComponentProvider(id)) {
|
||||
if (file.isDirectory()) {
|
||||
List<File> jarFiles = FilesUtils.getJarFilesFromFolder(file, null);
|
||||
if (jarFiles.size() > 0) {
|
||||
for (File jarFile : jarFiles) {
|
||||
String name = jarFile.getName();
|
||||
if (!canDeployFromCustomComponentFolder(name) || platformURLMap.get(name) != null) {
|
||||
continue;
|
||||
}
|
||||
needToDeploy.add(jarFile);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (platformURLMap.get(file.getName()) != null) {
|
||||
continue;
|
||||
}
|
||||
needToDeploy.add(file);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// deploy needed jars for User and Exchange component providers
|
||||
Map<String, List<MavenArtifact>> snapshotArtifactMap = new HashMap<String, List<MavenArtifact>>();
|
||||
@@ -1392,23 +1399,25 @@ public class LocalLibraryManager implements ILibraryManagerService, IChangedLibr
|
||||
ArtifactRepositoryBean customNexusServer = TalendLibsServerManager.getInstance().getCustomNexusServer();
|
||||
IRepositoryArtifactHandler customerRepHandler = RepositoryArtifactHandlerManager
|
||||
.getRepositoryHandler(customNexusServer);
|
||||
List<MavenArtifact> snapshotResult = new ArrayList<>();
|
||||
List<MavenArtifact> releaseResult = new ArrayList<>();
|
||||
try {
|
||||
snapshotResult = customerRepHandler.search(MavenConstants.DEFAULT_LIB_GROUP_ID, null, null, false, true);
|
||||
if (snapshotResult != null) {
|
||||
for (MavenArtifact result : snapshotResult) {
|
||||
ShareLibrariesUtil.putArtifactToMap(result, snapshotArtifactMap, true);
|
||||
if (customerRepHandler != null) {
|
||||
List<MavenArtifact> snapshotResult = new ArrayList<>();
|
||||
List<MavenArtifact> releaseResult = new ArrayList<>();
|
||||
try {
|
||||
snapshotResult = customerRepHandler.search(MavenConstants.DEFAULT_LIB_GROUP_ID, null, null, false, true);
|
||||
if (snapshotResult != null) {
|
||||
for (MavenArtifact result : snapshotResult) {
|
||||
ShareLibrariesUtil.putArtifactToMap(result, snapshotArtifactMap, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
releaseResult = customerRepHandler.search(MavenConstants.DEFAULT_LIB_GROUP_ID, null, null, true, false);
|
||||
if (releaseResult != null) {
|
||||
for (MavenArtifact result : releaseResult) {
|
||||
ShareLibrariesUtil.putArtifactToMap(result, releaseArtifactMap, false);
|
||||
releaseResult = customerRepHandler.search(MavenConstants.DEFAULT_LIB_GROUP_ID, null, null, true, false);
|
||||
if (releaseResult != null) {
|
||||
for (MavenArtifact result : releaseResult) {
|
||||
ShareLibrariesUtil.putArtifactToMap(result, releaseArtifactMap, false);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
for(File exsitFile:needToDeploy) {
|
||||
if (customerRepHandler != null) {
|
||||
|
||||
@@ -41,6 +41,7 @@ import org.talend.core.runtime.maven.MavenArtifact;
|
||||
import org.talend.core.runtime.maven.MavenUrlHelper;
|
||||
import org.talend.designer.maven.aether.RepositorySystemFactory;
|
||||
import org.talend.librariesmanager.i18n.Messages;
|
||||
import org.talend.librariesmanager.nexus.utils.ShareLibrariesUtil;
|
||||
import org.talend.utils.sugars.TypedReturnCode;
|
||||
|
||||
import net.sf.json.JSONArray;
|
||||
@@ -259,6 +260,9 @@ public class ArtifacoryRepositoryHandler extends AbstractArtifactRepositoryHandl
|
||||
artifact.setVersion(v);
|
||||
artifact.setType(type);
|
||||
artifact.setLastUpdated(lastUpdated);
|
||||
String regex = a + "-" + v;
|
||||
String classifier = ShareLibrariesUtil.getMavenClassifier(artifactPath, regex, type);
|
||||
artifact.setClassifier(classifier);
|
||||
fillChecksumData(jsonObject, artifact);
|
||||
resultList.add(artifact);
|
||||
}
|
||||
@@ -353,6 +357,9 @@ public class ArtifacoryRepositoryHandler extends AbstractArtifactRepositoryHandl
|
||||
artifact.setVersion(v);
|
||||
artifact.setType(type);
|
||||
artifact.setLastUpdated(lastUpdated);
|
||||
String regex = a + "-" + v;
|
||||
String classifier = ShareLibrariesUtil.getMavenClassifier(artifactPath, regex, type);
|
||||
artifact.setClassifier(classifier);
|
||||
fillChecksumData(jsonObject, artifact);
|
||||
resultList.add(artifact);
|
||||
}
|
||||
|
||||
@@ -30,13 +30,17 @@ import org.apache.log4j.Logger;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.talend.core.nexus.ArtifactRepositoryBean;
|
||||
import org.talend.core.nexus.HttpClientTransport;
|
||||
import org.talend.core.nexus.NexusServerUtils;
|
||||
import org.talend.core.runtime.maven.MavenArtifact;
|
||||
import org.talend.librariesmanager.nexus.utils.ShareLibrariesUtil;
|
||||
|
||||
import net.sf.json.JSONArray;
|
||||
import net.sf.json.JSONObject;
|
||||
|
||||
public abstract class AbsNexus3SearchHandler implements INexus3SearchHandler {
|
||||
|
||||
private static Logger log = Logger.getLogger(AbsNexus3SearchHandler.class);
|
||||
|
||||
protected ArtifactRepositoryBean serverBean;
|
||||
|
||||
/**
|
||||
@@ -126,41 +130,54 @@ public abstract class AbsNexus3SearchHandler implements INexus3SearchHandler {
|
||||
if (resultArray != null) {
|
||||
for (int i = 0; i < resultArray.size(); i++) {
|
||||
JSONObject jsonObject = resultArray.getJSONObject(i);
|
||||
MavenArtifact artifact = new MavenArtifact();
|
||||
artifact.setGroupId(jsonObject.getString("group")); //$NON-NLS-1$
|
||||
artifact.setArtifactId(jsonObject.getString("name")); //$NON-NLS-1$
|
||||
artifact.setVersion(jsonObject.getString("version")); //$NON-NLS-1$
|
||||
JSONArray assertsArray = jsonObject.getJSONArray("assets"); //$NON-NLS-1$
|
||||
artifact.setType(getPackageType(assertsArray));
|
||||
fillCheckSumData(assertsArray, artifact);
|
||||
resultList.add(artifact);
|
||||
String repository = jsonObject.getString("repository");//$NON-NLS-1$
|
||||
String group = jsonObject.getString("group");//$NON-NLS-1$
|
||||
String name = jsonObject.getString("name");//$NON-NLS-1$
|
||||
String version = jsonObject.getString("version");//$NON-NLS-1$
|
||||
JSONArray assertsArray = jsonObject.getJSONArray("assets");//$NON-NLS-1$
|
||||
|
||||
if (assertsArray != null) {
|
||||
for (int j = 0; j < assertsArray.size(); j++) {
|
||||
JSONObject assertsObject = assertsArray.getJSONObject(j);
|
||||
String packageType = getPackageType(assertsObject);
|
||||
if (packageType != null) {
|
||||
MavenArtifact artifact = new MavenArtifact();
|
||||
String path = assertsObject.getString("path"); //$NON-NLS-1$
|
||||
String regex = name + "-" + version;
|
||||
String classifier = ShareLibrariesUtil.getMavenClassifier(path, regex, packageType);
|
||||
artifact.setGroupId(group);
|
||||
artifact.setArtifactId(name);
|
||||
artifact.setVersion(version);
|
||||
artifact.setType(packageType);
|
||||
artifact.setClassifier(classifier);
|
||||
if (artifact.getType() != null) {
|
||||
fillCheckSumData(assertsArray, artifact);
|
||||
resultList.add(artifact);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return continuationToken;
|
||||
}
|
||||
|
||||
protected String getPackageType(JSONArray assertsArray) {
|
||||
protected String getPackageType(JSONObject jsonObject) {
|
||||
String type = null;
|
||||
if (assertsArray != null) {
|
||||
for (int i = 0; i < assertsArray.size(); i++) {
|
||||
JSONObject jsonObject = assertsArray.getJSONObject(i);
|
||||
String path = jsonObject.getString("path"); //$NON-NLS-1$
|
||||
if (path != null && path.endsWith(".exe")) { //$NON-NLS-1$
|
||||
return "exe"; //$NON-NLS-1$
|
||||
}
|
||||
if (path != null && path.endsWith(".zip")) { //$NON-NLS-1$
|
||||
return "zip"; //$NON-NLS-1$
|
||||
}
|
||||
if (path != null && path.endsWith(".jar")) { //$NON-NLS-1$
|
||||
return "jar"; //$NON-NLS-1$
|
||||
}
|
||||
if (path != null && path.endsWith(".pom")) { //$NON-NLS-1$
|
||||
type = "pom"; //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
String path = jsonObject.getString("path"); //$NON-NLS-1$
|
||||
int idx = path.lastIndexOf('.');
|
||||
if (idx > -1) {
|
||||
type = path.substring(idx + 1);
|
||||
}
|
||||
return type;
|
||||
if (!NexusServerUtils.IGNORED_TYPES.contains(type)) {
|
||||
return type;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void fillCheckSumData(JSONArray assertsArray, MavenArtifact artifact) {
|
||||
|
||||
@@ -136,7 +136,9 @@ public class NexusDownloader implements IDownloadHelper {
|
||||
bos.flush();
|
||||
if (bytesDownloaded == contentLength) {
|
||||
MavenArtifactsHandler deployer = new MavenArtifactsHandler();
|
||||
deployer.install(downloadedFile.getAbsolutePath(), mavenUri, nServer.isOfficial());
|
||||
// if proxy artifact repository was configured, then do not deploy
|
||||
boolean deploy = !TalendLibsServerManager.getInstance().isProxyArtifactRepoConfigured();
|
||||
deployer.install(downloadedFile.getAbsolutePath(), mavenUri, deploy);
|
||||
}
|
||||
fireDownloadComplete();
|
||||
} finally {
|
||||
|
||||
@@ -33,7 +33,10 @@ public class ShareLibrariesUtil {
|
||||
public static boolean isSameFileWithRemote(File localFile, List<MavenArtifact> artifactList,
|
||||
ArtifactRepositoryBean customNexusServer, IRepositoryArtifactHandler customerRepHandler, boolean isSnapshotVersion)
|
||||
throws Exception {
|
||||
String localFileShaCode = DigestUtils.shaHex(new FileInputStream(localFile));
|
||||
String localFileShaCode = "";
|
||||
try (FileInputStream fi = new FileInputStream(localFile)) {
|
||||
localFileShaCode = DigestUtils.shaHex(fi);
|
||||
}
|
||||
String remoteSha1 = null;
|
||||
if (ArtifactRepositoryBean.NexusType.ARTIFACTORY.name().equalsIgnoreCase(customNexusServer.getType())) {
|
||||
MavenArtifact lastUpdatedArtifact = getLateUpdatedMavenArtifact(artifactList);
|
||||
@@ -123,4 +126,17 @@ public class ShareLibrariesUtil {
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String getMavenClassifier(String path, String regex, String packageType) {
|
||||
String classifier = null;
|
||||
// javax/xml/bind/acxb-test/2.2.6/acxb-test-2.2.6-jdk10.dll
|
||||
path = StringUtils.removeEnd(path, "." + packageType);
|
||||
// javax/xml/bind/acxb-test/2.2.6/acxb-test-2.2.6-jdk10
|
||||
path = StringUtils.substringAfter(path, regex);// -jdk10
|
||||
path = StringUtils.stripStart(path, "-");// jdk10
|
||||
if (StringUtils.isNotBlank(path)) {
|
||||
classifier = path;
|
||||
}
|
||||
return classifier;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,14 @@
|
||||
// ============================================================================
|
||||
package org.talend.librariesmanager.nexus.utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import org.talend.core.runtime.maven.MavenArtifact;
|
||||
import org.talend.core.runtime.maven.MavenUrlHelper;
|
||||
|
||||
/**
|
||||
@@ -20,13 +28,60 @@ import org.talend.core.runtime.maven.MavenUrlHelper;
|
||||
public class VersionUtil {
|
||||
|
||||
public static String getSNAPSHOTVersion(String rVersion) {
|
||||
if(rVersion == null) {
|
||||
return rVersion;
|
||||
}
|
||||
if(rVersion.contains("-")) {
|
||||
return rVersion.substring(0, rVersion.indexOf("-") + 1) + MavenUrlHelper.VERSION_SNAPSHOT;
|
||||
}
|
||||
return rVersion;
|
||||
return MavenUrlHelper.getSNAPSHOTVersion(rVersion);
|
||||
}
|
||||
|
||||
public static List<MavenArtifact> filterSnapshotArtifacts(List<MavenArtifact> arts) {
|
||||
List<MavenArtifact> ret = new ArrayList<MavenArtifact>();
|
||||
if (arts == null || arts.isEmpty()) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
Map<String, List<MavenArtifact>> snapshotArtifacts = new HashMap<String, List<MavenArtifact>>();
|
||||
|
||||
for (MavenArtifact art : arts) {
|
||||
if (isSnapshot(art.getVersion())) {
|
||||
String v = art.getVersion().split("-")[0];
|
||||
String key = art.getGroupId() + ":" + art.getArtifactId() + ":" + v;
|
||||
if (art.getType() != null) {
|
||||
key = key + ":" + art.getType();
|
||||
}
|
||||
if (art.getClassifier() != null) {
|
||||
key = key + ":" + art.getClassifier();
|
||||
}
|
||||
List<MavenArtifact> groupArts = null;
|
||||
if (snapshotArtifacts.containsKey(key)) {
|
||||
groupArts = snapshotArtifacts.get(key);
|
||||
} else {
|
||||
groupArts = new ArrayList<MavenArtifact>();
|
||||
snapshotArtifacts.put(key, groupArts);
|
||||
}
|
||||
groupArts.add(art);
|
||||
} else {
|
||||
ret.add(art);
|
||||
}
|
||||
}
|
||||
|
||||
Set<Entry<String, List<MavenArtifact>>> entries = snapshotArtifacts.entrySet();
|
||||
for (Entry<String, List<MavenArtifact>> entry : entries) {
|
||||
if (!entry.getValue().isEmpty()) {
|
||||
MavenArtifact art = entry.getValue().get(0);
|
||||
if (art != null) {
|
||||
art.setVersion(MavenUrlHelper.getSNAPSHOTVersion(art.getVersion()));
|
||||
ret.add(art);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static boolean isSnapshot(String v) {
|
||||
if (v != null && (v.contains("-") || v.toUpperCase().endsWith(MavenUrlHelper.VERSION_SNAPSHOT))) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -703,7 +703,7 @@ public final class ConnectionContextHelper {
|
||||
Set<String> addedVars = tempVars;
|
||||
|
||||
if (addedVars != null && !addedVars.isEmpty()
|
||||
&& (isGeneric || !isAddContextVar(contextItem, process.getContextManager(), neededVars))) {
|
||||
&& (isGeneric || !isAddContextVar(contextItem, process.getContextManager(), neededVars, true))) {
|
||||
AtomicBoolean added = new AtomicBoolean();
|
||||
if (ignoreContextMode) {
|
||||
addContextVarForJob(process, contextItem, addedVars);
|
||||
@@ -1591,7 +1591,13 @@ public final class ConnectionContextHelper {
|
||||
}
|
||||
|
||||
public static boolean isAddContextVar(ContextItem contextItem, IContextManager contextManager, Set<String> neededVars) {
|
||||
return isAddContextVar(contextItem, contextManager, neededVars, false);
|
||||
}
|
||||
|
||||
public static boolean isAddContextVar(ContextItem contextItem, IContextManager contextManager, Set<String> neededVars,
|
||||
boolean checkByDefault) {
|
||||
boolean isAdd = true;
|
||||
boolean foundGroup = false;
|
||||
Set<String> addedVars = new HashSet<String>();
|
||||
for (IContext context : contextManager.getListContext()) {
|
||||
ContextType contextType = null;
|
||||
@@ -1599,6 +1605,7 @@ public final class ConnectionContextHelper {
|
||||
for (ContextType contye : contextTypeList) {
|
||||
if (context.getName() != null && contye.getName().toLowerCase().equals(context.getName().toLowerCase())) {
|
||||
contextType = contye;
|
||||
foundGroup = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1615,6 +1622,26 @@ public final class ConnectionContextHelper {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// if not found might different groups, check from default context if duplicate var
|
||||
if (checkByDefault && !foundGroup) {
|
||||
IContext jobDefaultContext = contextManager.getDefaultContext();
|
||||
String itemDefaultContextName = contextItem.getDefaultContext();
|
||||
List<ContextType> contextTypeList = contextItem.getContext();
|
||||
ContextType itemDefaultContext = ContextUtils.getContextTypeByName(contextTypeList, itemDefaultContextName);
|
||||
if (itemDefaultContext != null) {
|
||||
for (String var : neededVars) {
|
||||
if (jobDefaultContext.getContextParameter(var) != null) {
|
||||
continue;
|
||||
}
|
||||
ContextParameterType param = ContextUtils.getContextParameterTypeByName(itemDefaultContext, var);
|
||||
if (param != null) {
|
||||
addedVars.add(var);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (addedVars != null && !addedVars.isEmpty()) {
|
||||
isAdd = false;
|
||||
}
|
||||
|
||||
@@ -131,6 +131,11 @@ public final class DBConnectionContextUtils {
|
||||
Znode_Parent,
|
||||
// impala
|
||||
ImpalaPrincipal,
|
||||
ImpalaKeyTabPrincipal,
|
||||
ImpalaKeyTab,
|
||||
ImpalaUseSSL,
|
||||
ImpalaSSLTrustStorePath,
|
||||
ImpalaSSLTrustStorePassword,
|
||||
|
||||
// Oracle Custom SSL Encryption
|
||||
SSLTrustStorePath,
|
||||
@@ -265,10 +270,16 @@ public final class DBConnectionContextUtils {
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value, JavaTypesManager.PASSWORD);
|
||||
break;
|
||||
case HiveKeyTabPrincipal:
|
||||
case HbaseKeyTabPrincipal:
|
||||
case MaprdbKeyTabPrincipal:
|
||||
case ImpalaKeyTabPrincipal:
|
||||
value = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_KEYTAB_PRINCIPAL);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value);
|
||||
break;
|
||||
case HiveKeyTab:
|
||||
case ImpalaKeyTab:
|
||||
case HbaseKeyTab:
|
||||
case MaprdbKeyTab:
|
||||
value = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_KEYTAB);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value);
|
||||
break;
|
||||
@@ -285,10 +296,14 @@ public final class DBConnectionContextUtils {
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value);
|
||||
break;
|
||||
case hiveSSLTrustStorePath:
|
||||
case ImpalaSSLTrustStorePath:
|
||||
case SSLTrustStorePath:
|
||||
value = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PATH);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value);
|
||||
break;
|
||||
case hiveSSLTrustStorePassword:
|
||||
case ImpalaSSLTrustStorePassword:
|
||||
case SSLTrustStorePassword:
|
||||
value = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PASSWORD);
|
||||
value = conn.getValue(value, false);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value, JavaTypesManager.PASSWORD);
|
||||
@@ -321,16 +336,6 @@ public final class DBConnectionContextUtils {
|
||||
value = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HBASE_ZNODE_PARENT);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value);
|
||||
break;
|
||||
case HbaseKeyTabPrincipal:
|
||||
case MaprdbKeyTabPrincipal:
|
||||
value = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_KEYTAB_PRINCIPAL);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value);
|
||||
break;
|
||||
case HbaseKeyTab:
|
||||
case MaprdbKeyTab:
|
||||
value = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_KEYTAB);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value);
|
||||
break;
|
||||
case ImpalaPrincipal:
|
||||
value = conn.getParameters().get(ConnParameterKeys.IMPALA_AUTHENTICATION_PRINCIPLA);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value);
|
||||
@@ -375,15 +380,6 @@ public final class DBConnectionContextUtils {
|
||||
value = conn.getParameters().get(key);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value, JavaTypesManager.LONG);
|
||||
break;
|
||||
case SSLTrustStorePath:
|
||||
value = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PATH);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value);
|
||||
break;
|
||||
case SSLTrustStorePassword:
|
||||
value = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PASSWORD);
|
||||
value = conn.getValue(value, false);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value, JavaTypesManager.PASSWORD);
|
||||
break;
|
||||
case SSLKeyStorePath:
|
||||
value = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_KEY_STORE_PATH);
|
||||
ConnectionContextHelper.createParameters(varList, paramName, value);
|
||||
@@ -664,10 +660,16 @@ public final class DBConnectionContextUtils {
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
case HiveKeyTabPrincipal:
|
||||
case ImpalaKeyTabPrincipal:
|
||||
case HbaseKeyTabPrincipal:
|
||||
case MaprdbKeyTabPrincipal:
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_KEYTAB_PRINCIPAL,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
case HiveKeyTab:
|
||||
case ImpalaKeyTab:
|
||||
case HbaseKeyTab:
|
||||
case MaprdbKeyTab:
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_KEYTAB,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
@@ -684,10 +686,14 @@ public final class DBConnectionContextUtils {
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
case hiveSSLTrustStorePath:
|
||||
case SSLTrustStorePath:
|
||||
case ImpalaSSLTrustStorePath:
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PATH,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
case hiveSSLTrustStorePassword:
|
||||
case SSLTrustStorePassword:
|
||||
case ImpalaSSLTrustStorePassword:
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PASSWORD,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
@@ -716,16 +722,6 @@ public final class DBConnectionContextUtils {
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HBASE_ZNODE_PARENT,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
case HbaseKeyTabPrincipal:
|
||||
case MaprdbKeyTabPrincipal:
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_KEYTAB_PRINCIPAL,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
case HbaseKeyTab:
|
||||
case MaprdbKeyTab:
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_KEYTAB,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
case Username:
|
||||
key = ConnParameterKeys.CONN_PARA_KEY_HIVE_AUTHENTICATION_USERNAME;
|
||||
if (EDatabaseTypeName.HBASE.getDisplayName().equals(conn.getDatabaseType())) {
|
||||
@@ -766,14 +762,6 @@ public final class DBConnectionContextUtils {
|
||||
conn.getParameters().put(ConnParameterKeys.IMPALA_AUTHENTICATION_PRINCIPLA,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
case SSLTrustStorePath:
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PATH,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
case SSLTrustStorePassword:
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PASSWORD,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
break;
|
||||
case SSLKeyStorePath:
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_SSL_KEY_STORE_PATH,
|
||||
ContextParameterUtils.getNewScriptCode(originalVariableName, LANGUAGE));
|
||||
@@ -1288,6 +1276,35 @@ public final class DBConnectionContextUtils {
|
||||
cloneConn.getParameters().put(ConnParameterKeys.IMPALA_AUTHENTICATION_PRINCIPLA,
|
||||
ContextParameterUtils.getOriginalValue(contextType, impalaAuthPrinciple));
|
||||
}
|
||||
String keyTabPrin = cloneConn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_KEYTAB_PRINCIPAL);
|
||||
if (keyTabPrin != null) {
|
||||
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_KEYTAB_PRINCIPAL,
|
||||
getOriginalValue(hadoopClusterContextType, contextType, keyTabPrin));
|
||||
}
|
||||
|
||||
String keyTab = cloneConn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_KEYTAB);
|
||||
if (keyTab != null) {
|
||||
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_KEYTAB,
|
||||
getOriginalValue(hadoopClusterContextType, contextType, keyTab));
|
||||
}
|
||||
String additionalJDBCSettings = cloneConn.getParameters()
|
||||
.get(ConnParameterKeys.CONN_PARA_KEY_HIVE_ADDITIONAL_JDBC_SETTINGS);
|
||||
if (additionalJDBCSettings != null) {
|
||||
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_ADDITIONAL_JDBC_SETTINGS,
|
||||
getOriginalValue(hadoopClusterContextType, contextType, additionalJDBCSettings));
|
||||
}
|
||||
|
||||
String trustStorePath = cloneConn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PATH);
|
||||
if (trustStorePath != null) {
|
||||
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PATH,
|
||||
getOriginalValue(hadoopClusterContextType, contextType, trustStorePath));
|
||||
}
|
||||
String trustStorePassword = cloneConn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PASSWORD);
|
||||
if (trustStorePassword != null) {
|
||||
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PASSWORD, cloneConn.getValue(
|
||||
cloneConn.getValue(getOriginalValue(hadoopClusterContextType, contextType, trustStorePassword), false),
|
||||
true));
|
||||
}
|
||||
}
|
||||
|
||||
if (EDatabaseTypeName.ORACLE_CUSTOM.equals(EDatabaseTypeName.getTypeFromDbType(dbConn.getDatabaseType()))) {
|
||||
@@ -1638,6 +1655,22 @@ public final class DBConnectionContextUtils {
|
||||
.get(ConnParameterKeys.CONN_PARA_KEY_HIVE_ADDITIONAL_JDBC_SETTINGS);
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_ADDITIONAL_JDBC_SETTINGS,
|
||||
ContextParameterUtils.getOriginalValue(contextType, addtionalJDBCParameters));
|
||||
|
||||
String ktPrincipal = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_KEYTAB_PRINCIPAL);
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_KEYTAB_PRINCIPAL,
|
||||
ContextParameterUtils.getOriginalValue(contextType, ktPrincipal));
|
||||
|
||||
String keytab = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_KEYTAB);
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_KEYTAB,
|
||||
ContextParameterUtils.getOriginalValue(contextType, keytab));
|
||||
|
||||
String sslTrustStorePath = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PATH);
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PATH,
|
||||
ContextParameterUtils.getOriginalValue(contextType, sslTrustStorePath));
|
||||
|
||||
String sslTrustStorePassword = conn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PASSWORD);
|
||||
conn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_SSL_TRUST_STORE_PASSWORD,
|
||||
conn.getValue(ContextParameterUtils.getOriginalValue(contextType, sslTrustStorePassword), true));
|
||||
}
|
||||
|
||||
if (EDatabaseTypeName.ORACLE_CUSTOM.equals(EDatabaseTypeName.getTypeFromDbType(conn.getDatabaseType()))) {
|
||||
|
||||
@@ -49,6 +49,7 @@ import org.talend.core.model.general.Project;
|
||||
import org.talend.core.model.metadata.MappingTypeRetriever;
|
||||
import org.talend.core.model.metadata.MetadataTalendType;
|
||||
import org.talend.core.model.metadata.types.JavaDataTypeHelper;
|
||||
import org.talend.core.runtime.util.SharedStudioUtils;
|
||||
import org.talend.datatools.xml.utils.ATreeNode;
|
||||
import org.talend.datatools.xml.utils.NodeCreationObserver;
|
||||
import org.talend.datatools.xml.utils.OdaException;
|
||||
@@ -1075,7 +1076,7 @@ public class TreeUtil {
|
||||
|
||||
private static String copyToTempFile(URL url, String fileName) {
|
||||
try {
|
||||
IPath tempPath = new Path(System.getProperty("user.dir")).append("temp"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
IPath tempPath = SharedStudioUtils.getTempFolderPath();
|
||||
File tempFile = tempPath.toFile();
|
||||
if (!tempFile.exists()) {
|
||||
tempFile.mkdirs();
|
||||
|
||||
@@ -45,6 +45,7 @@ import org.talend.cwm.helper.ColumnSetHelper;
|
||||
import org.talend.cwm.helper.ConnectionHelper;
|
||||
import org.talend.cwm.helper.PackageHelper;
|
||||
import org.talend.cwm.helper.SchemaHelper;
|
||||
import org.talend.cwm.helper.TableHelper;
|
||||
import org.talend.cwm.helper.TaggedValueHelper;
|
||||
import org.talend.cwm.relational.TdColumn;
|
||||
import org.talend.cwm.relational.TdTable;
|
||||
@@ -226,8 +227,69 @@ public final class DqRepositoryViewService {
|
||||
}
|
||||
}
|
||||
|
||||
public static List<TdTable> getCalculationViews(Connection dataProvider, Schema schema, String tablePattern,
|
||||
boolean loadFromDB, boolean isPersist2Con) throws Exception {
|
||||
TypedReturnCode<java.sql.Connection> trc =
|
||||
MetadataConnectionUtils.createConnection((DatabaseConnection) dataProvider);
|
||||
java.sql.Connection connection = trc.getObject();
|
||||
try {
|
||||
return getCalculationViews(connection, dataProvider, schema, tablePattern, loadFromDB, isPersist2Con);
|
||||
} finally {
|
||||
if (connection != null) {
|
||||
ConnectionUtils.closeConnection(connection);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get the tables belong to the schema.
|
||||
* get the calculation views belong to the schema.
|
||||
*
|
||||
* @param sqlConnection the java.sql.Connection
|
||||
* @param dataProvider the talend Connection
|
||||
* @param schema the schema
|
||||
* @param tablePattern calculation view pattern
|
||||
* @param loadFromDB load form db or not
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static List<TdTable> getCalculationViews(java.sql.Connection sqlConnection, Connection dataProvider,
|
||||
Schema schema, String tablePattern, boolean loadFromDB, boolean isPersist2Con) throws Exception {
|
||||
if (loadFromDB && !(isComeFromRefrenceProject(dataProvider) && isPersist2Con)) {
|
||||
final Catalog parentCatalog = CatalogHelper.getParentCatalog(schema);
|
||||
return loadCalculationViews(sqlConnection, dataProvider, parentCatalog, schema, tablePattern,
|
||||
isPersist2Con);
|
||||
} else {
|
||||
return TableHelper.getCalculationView(schema.getOwnedElement());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get the calculation views belong to the schema.
|
||||
*
|
||||
* @param sqlConnection the java.sql.Connection
|
||||
* @param dataProvider the talend Connection
|
||||
* @param schema the schema
|
||||
* @param tablePattern calculation view pattern
|
||||
* @param loadFromDB load form db or not
|
||||
* @return empty list if it is not come from schema
|
||||
* @throws Exception
|
||||
*/
|
||||
public static List<TdTable> getCalculationViews(java.sql.Connection sqlConnection, Connection dataProvider,
|
||||
Package schema, String tablePattern, boolean loadFromDB, boolean isPersist2Con) throws Exception {
|
||||
if (!(schema instanceof Schema)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
if (loadFromDB && !(isComeFromRefrenceProject(dataProvider) && isPersist2Con)) {
|
||||
final Catalog parentCatalog = CatalogHelper.getParentCatalog(schema);
|
||||
return loadCalculationViews(sqlConnection, dataProvider, parentCatalog, (Schema) schema, tablePattern,
|
||||
isPersist2Con);
|
||||
} else {
|
||||
return TableHelper.getCalculationView(schema.getOwnedElement());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get the calculation Views belong to the schema.
|
||||
*
|
||||
* @param sqlConnection the java.sql.Connection
|
||||
* @param dataProvider the talend Connection
|
||||
@@ -545,6 +607,31 @@ public final class DqRepositoryViewService {
|
||||
return tables;
|
||||
}
|
||||
|
||||
private static List<TdTable> loadCalculationViews(java.sql.Connection sqlConnection, Connection dataProvider,
|
||||
Catalog catalog, Schema schema, String tablePattern, boolean isPersist2Con) throws Exception {
|
||||
List<TdTable> tables = new ArrayList<>();
|
||||
DatabaseMetaData dm = ExtractMetaDataUtils
|
||||
.getInstance()
|
||||
.getDatabaseMetaData(sqlConnection, (DatabaseConnection) dataProvider, false);
|
||||
Package pack = schema == null ? catalog : schema;
|
||||
MetadataFillFactory dbInstance = MetadataFillFactory.getDBInstance(dataProvider);
|
||||
|
||||
if (isPersist2Con) {
|
||||
// will persistence to connection item
|
||||
tables = dbInstance
|
||||
.fillTables(pack, dm, null, tablePattern,
|
||||
new String[] { ETableTypes.TABLETYPE_CALCULATION_VIEW.getName() });
|
||||
} else {
|
||||
// will not persistence to connection item
|
||||
dbInstance.setLinked(false);
|
||||
tables = dbInstance
|
||||
.fillTables(pack, dm, null, tablePattern,
|
||||
new String[] { ETableTypes.TABLETYPE_CALCULATION_VIEW.getName() });
|
||||
dbInstance.setLinked(true);
|
||||
}
|
||||
return tables;
|
||||
}
|
||||
|
||||
private static List<TdView> loadViews(java.sql.Connection sqlConnection, Connection dataProvider, Catalog catalog,
|
||||
Schema schema, String viewPattern, boolean isPersist2Con) throws Exception {
|
||||
List<TdView> views = new ArrayList<TdView>();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user