From 60aa4e1a086abe555aea9cf30dbeb5e17c1ef4eb Mon Sep 17 00:00:00 2001 From: wchen-talend Date: Tue, 19 May 2015 18:02:48 +0800 Subject: [PATCH] TUP-2880 :migrate java/lib to maven repository --- .../utils/LoginTaskRegistryReader.java | 11 ++ .../core/nexus/MavenResolverCreator.java | 42 +++- .../org/talend/core/nexus/NexusConstants.java | 26 +++ ...erverUtil.java => NexusServerManager.java} | 2 +- .../META-INF/MANIFEST.MF | 5 +- .../maven/deploy/ArtifactsDeployer.java | 4 +- .../tools/repo/LocalRepositoryManager.java | 4 + .../repo/LocalRepsitoryLauncherManager.java | 4 + .../talend/designer/maven/utils/PomUtil.java | 36 ++-- .../.classpath | 2 + .../META-INF/MANIFEST.MF | 40 ++++ .../build.properties | 5 +- .../utils/RemoteModulesHelper.java | 18 +- .../utils/nexus/NexusDownloader.java | 4 +- .../META-INF/MANIFEST.MF | 3 +- .../org.talend.librariesmanager/plugin.xml | 11 -- .../resources/java/routines/TalendDate.java | 1 - .../routines/system/TalendDataSource.java | 2 - .../routines/system/api/TalendMDMJob.java | 2 + .../deploy/ArtifactsDeployer.java | 181 ++++++++++++++++++ .../emf/librariesindex/LibrariesIndex.java | 2 - .../impl/LibrariesIndexImpl.java | 10 - .../impl/LibrariesindexFactoryImpl.java | 7 +- .../impl/LibrariesindexPackageImpl.java | 2 - .../impl/jarToRelativePathImpl.java | 4 - .../util/LibrariesindexAdapterFactory.java | 6 +- .../LibrariesindexResourceFactoryImpl.java | 2 - .../util/LibrariesindexResourceImpl.java | 1 - .../util/LibrariesindexSwitch.java | 4 +- .../util/LibrariesindexXMLProcessor.java | 3 - .../DeployLibJavaToMavenLoginTask.java | 58 ++++-- .../DeployLibJavaToMavenMigrationTask.java | 94 --------- .../model/service/LibrariesIndexManager.java | 10 +- .../model/service/LocalLibraryManager.java | 42 ++-- pom.xml | 1 + 35 files changed, 447 insertions(+), 202 deletions(-) create mode 100644 main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/NexusConstants.java rename main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/{NexusServerUtil.java => NexusServerManager.java} (99%) create mode 100644 main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/deploy/ArtifactsDeployer.java delete mode 100644 main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/migration/DeployLibJavaToMavenMigrationTask.java diff --git a/main/plugins/org.talend.core.repository/src/main/java/org/talend/core/repository/utils/LoginTaskRegistryReader.java b/main/plugins/org.talend.core.repository/src/main/java/org/talend/core/repository/utils/LoginTaskRegistryReader.java index aa8875242d..134f275ce3 100644 --- a/main/plugins/org.talend.core.repository/src/main/java/org/talend/core/repository/utils/LoginTaskRegistryReader.java +++ b/main/plugins/org.talend.core.repository/src/main/java/org/talend/core/repository/utils/LoginTaskRegistryReader.java @@ -93,6 +93,17 @@ public class LoginTaskRegistryReader extends RegistryReader { return getAllRunnables(allLoginTasks); } + public ILoginTask[] getAllCommandlineTaskListInstance() { + List commandlineTask = new ArrayList(); + ILoginTask[] allTask = getAllTaskListInstance(); + for (ILoginTask task : allTask) { + if (task.isCommandlineTask()) { + commandlineTask.add((LoginTask) task); + } + } + return getAllRunnables(commandlineTask); + } + /** * DOC sgandon Comment method "getAllRunnables". * diff --git a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/MavenResolverCreator.java b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/MavenResolverCreator.java index a5de2bcd1f..c22adb0b9c 100644 --- a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/MavenResolverCreator.java +++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/MavenResolverCreator.java @@ -20,6 +20,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.Dictionary; import java.util.HashSet; +import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -32,6 +33,7 @@ import org.dom4j.io.XMLWriter; import org.ops4j.pax.url.mvn.MavenResolver; import org.ops4j.pax.url.mvn.MavenResolvers; import org.ops4j.pax.url.mvn.ServiceConstants; +import org.talend.commons.exception.BusinessException; import org.talend.commons.exception.ExceptionHandler; /** @@ -57,7 +59,29 @@ public class MavenResolverCreator { return MavenResolvers.createMavenResolver(properties, ServiceConstants.PID); } - public void setupMavenWithNexus(String url, String userName, String password) { + public MavenResolver getMavenResolver(NexusServerBean nexusServer) { + Hashtable properties = new Hashtable(); + if (nexusServer != null) { + String nexusUrl = nexusServer.getServer(); + if (nexusUrl.endsWith(NexusConstants.SLASH)) { + nexusUrl = nexusUrl.substring(0, nexusUrl.length() - 1); + } + String urlSeparator = "://";//$NON-NLS-1$ + String[] split = nexusUrl.split(urlSeparator); + if (split.length != 2) { + ExceptionHandler.process(new BusinessException("Nexus url is not valid ,please contract the administrator")); + } + String newUrl = split[0] + + ":" + nexusServer.getUserName() + ":" + nexusServer.getPassword() + "@//" + split[1] + NexusConstants.CONTENT_REPOSITORIES + nexusServer.getRepositoryId()//$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ + + "@id=" + nexusServer.getRepositoryId();//$NON-NLS-1$ + properties.put("org.ops4j.pax.url.mvn.repositories", newUrl);//$NON-NLS-1$ + } + return MavenResolvers.createMavenResolver(properties, ServiceConstants.PID); + } + + public String setupMavenWithNexus(String url, String userName, String password, String repId) { + // return the repository id configured in the settings.xml + String repositoryIdToReture = repId; try { if (url == null || userName == null || password == null) { throw new MavenSetupException("Please specifiy a nexus url to setup"); @@ -105,6 +129,7 @@ public class MavenResolverCreator { if (urlElement != null) { String repUrl = urlElement.getText().trim(); if (nexusUrl.equals(repUrl)) { + repositoryIdToReture = repositoryId; found = true; modified = false; break; @@ -121,7 +146,8 @@ public class MavenResolverCreator { } } else { // create profile - createProfile(profiles, servers, activeProf, existingProIds, existingRepIds, url, userName, password); + repositoryIdToReture = createProfile(profiles, servers, activeProf, existingProIds, existingRepIds, url, + userName, password, repId); } } if (modified) { @@ -148,21 +174,23 @@ public class MavenResolverCreator { } catch (Exception e) { ExceptionHandler.process(e); } + + return repositoryIdToReture; } - private void createProfile(Element profiles, Element servers, Element activeProfiles, Set exsitProfIds, - Set existRepIds, String server_url, String user, String password) { + private String createProfile(Element profiles, Element servers, Element activeProfiles, Set exsitProfIds, + Set existRepIds, String server_url, String user, String password, String repositoryId) { Element profile = profiles.addElement("profile"); // profile id Element profIdElement = profile.addElement("id"); - String profileId = getValidId(exsitProfIds, "talend_official_nexus"); + String profileId = getValidId(exsitProfIds, repositoryId); profIdElement.setText(profileId); Element repositories = profile.addElement("repositories"); Element repository = repositories.addElement("repository"); // repository id Element repIdElement = repository.addElement("id"); - String repId = getValidId(existRepIds, "talend_official_nexus"); + String repId = getValidId(existRepIds, repositoryId); repIdElement.setText(repId); // url Element urlElement = repository.addElement("url"); @@ -187,6 +215,8 @@ public class MavenResolverCreator { serverUser.setText(user); Element serverPass = server.addElement("password"); serverPass.setText(password); + + return repId; } private String getValidId(Set existingId, String id) { diff --git a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/NexusConstants.java b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/NexusConstants.java new file mode 100644 index 0000000000..06a29e8306 --- /dev/null +++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/NexusConstants.java @@ -0,0 +1,26 @@ +// ============================================================================ +// +// Copyright (C) 2006-2014 Talend Inc. - www.talend.com +// +// This source code is available under agreement available at +// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt +// +// You should have received a copy of the agreement +// along with this program; if not, write to Talend SA +// 9 rue Pages 92150 Suresnes, France +// +// ============================================================================ +package org.talend.core.nexus; + +/** + * created by Talend on 2015年5月19日 Detailled comment + * + */ +public class NexusConstants { + + public static final String SERVICES_SEARCH = "service/local/lucene/search?";//$NON-NLS-1$ + + public static final String CONTENT_REPOSITORIES = "/content/repositories/";//$NON-NLS-1$ + + public static final String SLASH = "/";//$NON-NLS-1$ +} diff --git a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/NexusServerUtil.java b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/NexusServerManager.java similarity index 99% rename from main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/NexusServerUtil.java rename to main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/NexusServerManager.java index c958a396e0..e06131d5e0 100644 --- a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/NexusServerUtil.java +++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/nexus/NexusServerManager.java @@ -28,7 +28,7 @@ import org.talend.utils.json.JSONObject; * created by wchen on 2015-5-12 Detailled comment * */ -public class NexusServerUtil { +public class NexusServerManager { private static final String KEY_NEXUS_RUL = "nexusUrl";//$NON-NLS-1$ diff --git a/main/plugins/org.talend.designer.maven/META-INF/MANIFEST.MF b/main/plugins/org.talend.designer.maven/META-INF/MANIFEST.MF index 943e0aa59e..5545daeda9 100644 --- a/main/plugins/org.talend.designer.maven/META-INF/MANIFEST.MF +++ b/main/plugins/org.talend.designer.maven/META-INF/MANIFEST.MF @@ -11,6 +11,7 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.m2e.maven.runtime, org.eclipse.m2e.launching, org.eclipse.m2e.jdt, + org.ops4j.pax.url.mvn, org.eclipse.jdt.core, org.eclipse.jdt.launching, org.eclipse.jdt.debug, @@ -21,10 +22,10 @@ Require-Bundle: org.eclipse.core.runtime, org.talend.common.ui.runtime, org.talend.core.runtime Bundle-ActivationPolicy: lazy -Export-Package: org.talend.designer.maven.deploy, - org.talend.designer.maven.launch, +Export-Package: org.talend.designer.maven.launch, org.talend.designer.maven.model, org.talend.designer.maven.template, org.talend.designer.maven.tools, org.talend.designer.maven.tools.creator, + org.talend.designer.maven.tools.repo, org.talend.designer.maven.utils diff --git a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/deploy/ArtifactsDeployer.java b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/deploy/ArtifactsDeployer.java index eb2f37cffb..8563f693db 100644 --- a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/deploy/ArtifactsDeployer.java +++ b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/deploy/ArtifactsDeployer.java @@ -15,7 +15,7 @@ package org.talend.designer.maven.deploy; import java.util.Map; import org.talend.core.nexus.NexusServerBean; -import org.talend.core.nexus.NexusServerUtil; +import org.talend.core.nexus.NexusServerManager; /** * created by wchen on 2015-5-14 Detailled comment @@ -28,7 +28,7 @@ public class ArtifactsDeployer { private NexusServerBean nexusServer; private ArtifactsDeployer() { - nexusServer = NexusServerUtil.getNexusServer(true); + nexusServer = NexusServerManager.getNexusServer(true); } public static ArtifactsDeployer getInstance() { diff --git a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/repo/LocalRepositoryManager.java b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/repo/LocalRepositoryManager.java index 093de09e82..be80cd3092 100644 --- a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/repo/LocalRepositoryManager.java +++ b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/repo/LocalRepositoryManager.java @@ -55,6 +55,10 @@ public abstract class LocalRepositoryManager { private final File repoFolder; + public LocalRepositoryManager() { + repoFolder = null; + } + public LocalRepositoryManager(File baseDir) { super(); Assert.isNotNull(baseDir); diff --git a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/repo/LocalRepsitoryLauncherManager.java b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/repo/LocalRepsitoryLauncherManager.java index 6759605124..5e7f13cbe8 100644 --- a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/repo/LocalRepsitoryLauncherManager.java +++ b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/repo/LocalRepsitoryLauncherManager.java @@ -34,6 +34,10 @@ import org.talend.designer.maven.launch.MavenCommandLauncher; @SuppressWarnings("restriction") public class LocalRepsitoryLauncherManager extends LocalRepositoryManager { + public LocalRepsitoryLauncherManager() { + super(); + } + public LocalRepsitoryLauncherManager(File baseDir) { super(baseDir); } diff --git a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/utils/PomUtil.java b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/utils/PomUtil.java index ad50ac1167..d23cbd068a 100644 --- a/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/utils/PomUtil.java +++ b/main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/utils/PomUtil.java @@ -427,23 +427,35 @@ public class PomUtil { } public static String getArtifactPath(MavenArtifact artifact) { + IMaven maven = MavenPlugin.getMaven(); + String artifactPath = null; + try { + artifactPath = maven.getArtifactPath(maven.getLocalRepository(), artifact.getGroupId(), artifact.getArtifactId(), + artifact.getVersion(), artifact.getType(), artifact.getClassifier()); + } catch (CoreException e) { + ExceptionHandler.process(e); + } + return artifactPath; + } + + public static String getAbsArtifactPath(MavenArtifact artifact) { if (artifact == null) { return null; } IMaven maven = MavenPlugin.getMaven(); - try { - String artifactPath = maven.getArtifactPath(maven.getLocalRepository(), artifact.getGroupId(), - artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier()); - if (artifactPath == null) { - return null; - } - File file = new File(artifactPath); - if (file.exists()) { - return artifactPath; - } - } catch (CoreException e) { - ExceptionHandler.process(e); + String artifactPath = getArtifactPath(artifact); + if (artifactPath == null) { + return null; } + String localRepositoryPath = maven.getLocalRepositoryPath(); + if (!localRepositoryPath.endsWith("/") && !localRepositoryPath.endsWith("\\")) { + localRepositoryPath = localRepositoryPath + "/"; + } + File file = new File(localRepositoryPath + artifactPath); + if (file.exists()) { + return artifactPath; + } + return null; } diff --git a/main/plugins/org.talend.libraries.apache.http/.classpath b/main/plugins/org.talend.libraries.apache.http/.classpath index acad1c227c..0f86f4fff0 100644 --- a/main/plugins/org.talend.libraries.apache.http/.classpath +++ b/main/plugins/org.talend.libraries.apache.http/.classpath @@ -1,5 +1,7 @@ + + diff --git a/main/plugins/org.talend.libraries.apache.http/META-INF/MANIFEST.MF b/main/plugins/org.talend.libraries.apache.http/META-INF/MANIFEST.MF index 09fb80ec16..9602b09501 100644 --- a/main/plugins/org.talend.libraries.apache.http/META-INF/MANIFEST.MF +++ b/main/plugins/org.talend.libraries.apache.http/META-INF/MANIFEST.MF @@ -5,3 +5,43 @@ Bundle-SymbolicName: org.talend.libraries.apache.http Bundle-Version: 6.0.0.qualifier Bundle-ActivationPolicy: lazy Eclipse-BundleShape: dir +Bundle-ClassPath: ./, + lib/httpclient-4.2.5.jar, + lib/httpcore-4.2.5.jar +Export-Package: org.apache.http, + org.apache.http.annotation, + org.apache.http.auth, + org.apache.http.auth.params, + org.apache.http.client, + org.apache.http.client.entity, + org.apache.http.client.methods, + org.apache.http.client.params, + org.apache.http.client.protocol, + org.apache.http.client.utils, + org.apache.http.concurrent, + org.apache.http.conn, + org.apache.http.conn.params, + org.apache.http.conn.routing, + org.apache.http.conn.scheme, + org.apache.http.conn.ssl, + org.apache.http.conn.util, + org.apache.http.cookie, + org.apache.http.cookie.params, + org.apache.http.entity, + org.apache.http.impl, + org.apache.http.impl.auth, + org.apache.http.impl.client, + org.apache.http.impl.conn, + org.apache.http.impl.conn.tsccm, + org.apache.http.impl.cookie, + org.apache.http.impl.entity, + org.apache.http.impl.io, + org.apache.http.impl.pool, + org.apache.http.io, + org.apache.http.message, + org.apache.http.params, + org.apache.http.pool, + org.apache.http.protocol, + org.apache.http.util +Require-Bundle: org.apache.commons.logging, + org.apache.commons.codec diff --git a/main/plugins/org.talend.libraries.apache.http/build.properties b/main/plugins/org.talend.libraries.apache.http/build.properties index fa5e6ce67c..e14a5a49cf 100644 --- a/main/plugins/org.talend.libraries.apache.http/build.properties +++ b/main/plugins/org.talend.libraries.apache.http/build.properties @@ -1,3 +1,6 @@ output.. = bin/ bin.includes = META-INF/,\ - lib/ + lib/,\ + ./,\ + lib/httpclient-4.2.5.jar,\ + lib/httpcore-4.2.5.jar diff --git a/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/RemoteModulesHelper.java b/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/RemoteModulesHelper.java index 72e18b36b8..73ef40d78a 100644 --- a/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/RemoteModulesHelper.java +++ b/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/RemoteModulesHelper.java @@ -58,6 +58,8 @@ import org.talend.commons.utils.network.NetworkUtil; import org.talend.core.model.general.ModuleNeeded; import org.talend.core.model.general.ModuleToInstall; import org.talend.core.nexus.MavenResolverCreator; +import org.talend.core.nexus.NexusServerBean; +import org.talend.core.nexus.NexusServerManager; import org.talend.core.runtime.maven.MavenConstants; import org.talend.core.runtime.maven.MavenUrlHelper; import org.talend.librariesmanager.ui.dialogs.IModulesListener; @@ -74,8 +76,10 @@ import us.monoid.json.JSONObject; */ public class RemoteModulesHelper { + private static final String SLASH = "/";//$NON-NLS-1$ + // TODO to be removed after nexus server available - public static final boolean nexus_available = false; + public static final boolean nexus_available = true; // true if user was warned the network connection is not possible static private boolean alreadyWarnedAboutConnectionIssue = false; @@ -483,7 +487,8 @@ public class RemoteModulesHelper { private Map cache; private RemoteModulesHelper() { - mvnResolver = MavenResolverCreator.getInstance().getMavenResolver(null); + NexusServerBean nexusServer = NexusServerManager.getNexusServer(true); + mvnResolver = MavenResolverCreator.getInstance().getMavenResolver(nexusServer); } public synchronized static RemoteModulesHelper getInstance() { @@ -820,4 +825,13 @@ public class RemoteModulesHelper { } return null; } + + /** + * Getter for mvnResolver. + * + * @return the mvnResolver + */ + public MavenResolver getMvnResolver() { + return this.mvnResolver; + } } diff --git a/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/nexus/NexusDownloader.java b/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/nexus/NexusDownloader.java index f1e5e27c85..01084dfa50 100644 --- a/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/nexus/NexusDownloader.java +++ b/main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/utils/nexus/NexusDownloader.java @@ -20,7 +20,7 @@ import java.util.List; import org.talend.core.download.DownloadListener; import org.talend.core.download.IDownloadHelper; -import org.talend.core.nexus.MavenResolverCreator; +import org.talend.librariesmanager.utils.RemoteModulesHelper; /** * created by wchen on Apr 24, 2015 Detailled comment @@ -42,7 +42,7 @@ public class NexusDownloader implements IDownloadHelper { @Override public void download(URL url, File destination) throws IOException { fireDownloadStart(100); - MavenResolverCreator.getInstance().getMavenResolver(null).resolve(url.toExternalForm()); + RemoteModulesHelper.getInstance().getMvnResolver().resolve(url.toExternalForm()); fireDownloadComplete(); } diff --git a/main/plugins/org.talend.librariesmanager/META-INF/MANIFEST.MF b/main/plugins/org.talend.librariesmanager/META-INF/MANIFEST.MF index 4203c163ac..cf472ccc09 100644 --- a/main/plugins/org.talend.librariesmanager/META-INF/MANIFEST.MF +++ b/main/plugins/org.talend.librariesmanager/META-INF/MANIFEST.MF @@ -9,11 +9,10 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.emf.ecore.xmi, org.eclipse.core.expressions, org.apache.commons.lang, - org.eclipse.m2e.maven.runtime, - org.eclipse.m2e.core, org.talend.model, org.talend.libraries.apache, org.talend.libraries.dom4j-jaxen, + org.talend.libraries.apache.http, org.talend.core.runtime;visibility:=reexport, org.talend.metadata.managment, org.apache.log4j, diff --git a/main/plugins/org.talend.librariesmanager/plugin.xml b/main/plugins/org.talend.librariesmanager/plugin.xml index a49807045a..e5a533d23c 100644 --- a/main/plugins/org.talend.librariesmanager/plugin.xml +++ b/main/plugins/org.talend.librariesmanager/plugin.xml @@ -43,15 +43,4 @@ priority="lowest"> - - - - diff --git a/main/plugins/org.talend.librariesmanager/resources/java/routines/TalendDate.java b/main/plugins/org.talend.librariesmanager/resources/java/routines/TalendDate.java index 1ca1d30555..cece69646a 100644 --- a/main/plugins/org.talend.librariesmanager/resources/java/routines/TalendDate.java +++ b/main/plugins/org.talend.librariesmanager/resources/java/routines/TalendDate.java @@ -8,7 +8,6 @@ package routines; import java.text.DateFormat; import java.text.FieldPosition; import java.text.ParseException; -import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; diff --git a/main/plugins/org.talend.librariesmanager/resources/java/routines/system/TalendDataSource.java b/main/plugins/org.talend.librariesmanager/resources/java/routines/system/TalendDataSource.java index f29d41b522..a6c8ee960f 100644 --- a/main/plugins/org.talend.librariesmanager/resources/java/routines/system/TalendDataSource.java +++ b/main/plugins/org.talend.librariesmanager/resources/java/routines/system/TalendDataSource.java @@ -1,7 +1,5 @@ package routines.system; -import java.io.PrintWriter; -import java.sql.Connection; import java.sql.SQLException; public class TalendDataSource { diff --git a/main/plugins/org.talend.librariesmanager/resources/java/routines/system/api/TalendMDMJob.java b/main/plugins/org.talend.librariesmanager/resources/java/routines/system/api/TalendMDMJob.java index 74d497d39d..24bf86a438 100644 --- a/main/plugins/org.talend.librariesmanager/resources/java/routines/system/api/TalendMDMJob.java +++ b/main/plugins/org.talend.librariesmanager/resources/java/routines/system/api/TalendMDMJob.java @@ -10,6 +10,8 @@ ******************************************************************************/ package routines.system.api; +import org.dom4j.DocumentException; + /** * A JOB interface for Jobs that are using tMDMTrigger Components diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/deploy/ArtifactsDeployer.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/deploy/ArtifactsDeployer.java new file mode 100644 index 0000000000..dd86a806ab --- /dev/null +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/deploy/ArtifactsDeployer.java @@ -0,0 +1,181 @@ +// ============================================================================ +// +// Copyright (C) 2006-2014 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.deploy; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Map; + +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.StatusLine; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.entity.FileEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.util.EntityUtils; +import org.talend.commons.exception.BusinessException; +import org.talend.commons.exception.ExceptionHandler; +import org.talend.core.nexus.NexusConstants; +import org.talend.core.nexus.NexusServerBean; +import org.talend.core.nexus.NexusServerManager; +import org.talend.core.runtime.maven.MavenArtifact; +import org.talend.core.runtime.maven.MavenUrlHelper; +import org.talend.designer.maven.utils.PomUtil; + +/** + * created by wchen on 2015-5-14 Detailled comment + * + */ +public class ArtifactsDeployer { + + private static final String SLASH = "/";//$NON-NLS-1$ + + private static ArtifactsDeployer deployer; + + private NexusServerBean nexusServer; + + // private LocalRepsitoryLauncherManager repositoryManager; + + private String repositoryUrl; + + private ArtifactsDeployer() { + init(); + } + + private void init() { + nexusServer = NexusServerManager.getNexusServer(true); + // nexusServer = new NexusServerBean(); + // nexusServer.setServer("http://localhost:8081/nexus/"); + // nexusServer.setRepositoryId("upload_test"); + // nexusServer.setUserName("admin"); + // nexusServer.setPassword("admin123"); + if (nexusServer != null) { + String server = nexusServer.getServer().trim(); + if (server.endsWith(NexusConstants.SLASH)) { + server = server.substring(0, server.length() - 1); + } + repositoryUrl = server + NexusConstants.CONTENT_REPOSITORIES + nexusServer.getRepositoryId() + NexusConstants.SLASH; + } + // repositoryManager = new LocalRepsitoryLauncherManager(); + } + + public static ArtifactsDeployer getInstance() { + if (deployer == null) { + deployer = new ArtifactsDeployer(); + } + return deployer; + } + + /** + * + * DOC Talend Comment method "deployToLocalMaven". + * + * @param jarSourceAndMavenUri a map with key : can be a filePath or platform uri , value :maven uri + * @throws Exception + */ + public void deployToLocalMaven(Map jarSourceAndMavenUri) throws Exception { + for (String path : jarSourceAndMavenUri.keySet()) { + deployToLocalMaven(path, jarSourceAndMavenUri.get(path)); + } + } + + /** + * + * DOC Talend Comment method "deployToLocalMaven". + * + * @param uriOrPath can be a filePath or platform uri + * @param mavenUri maven uri + * @throws Exception + */ + public void deployToLocalMaven(String path, String mavenUri) throws Exception { + MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(mavenUri); + if (parseMvnUrl != null) { + parseMvnUrl.setRepositoryUrl(repositoryUrl); + if (nexusServer != null && !nexusServer.isOfficial()) { + // deploy to nexus server if it is not null and not official server + // repositoryManager.deploy(new File(path), parseMvnUrl); + installToRemote(new File(path), parseMvnUrl); + } + // install to local maven repository + // repositoryManager.install(new File(path), parseMvnUrl); + // TODO install by cmd by now need to change latter + install(path, parseMvnUrl); + + } + } + + private void install(String path, MavenArtifact artifact) { + StringBuffer command = new StringBuffer(); + // mvn -Dfile=E:\studio_code\.metadata\aaabbbb\lib\java\ojdbc6.jar -DgroupId=org.talend.libraries + // -DartifactId=ojdbc6 -Dversion=1.0.0 -Dpackaging=jar + // -B install:install-file + command.append(" mvn "); + command.append(" -Dfile="); + command.append(path); + command.append(" -DgroupId="); + command.append(artifact.getGroupId()); + command.append(" -DartifactId="); + command.append(artifact.getArtifactId()); + command.append(" -Dversion="); + command.append(artifact.getVersion()); + command.append(" -Dpackaging="); + command.append(artifact.getType()); + command.append(" -B install:install-file"); + try { + Runtime.getRuntime().exec("cmd /c " + command.toString()); + } catch (IOException e) { + ExceptionHandler.process(e); + } + } + + protected void installToRemote(File content, MavenArtifact artifact) throws BusinessException { + URL targetURL; + try { + String target = repositoryUrl + PomUtil.getArtifactPath(artifact); + targetURL = new URL(target); + installToRemote(new FileEntity(content), targetURL); + } catch (MalformedURLException e) { + ExceptionHandler.process(e); + } + } + + private void installToRemote(HttpEntity entity, URL targetURL) throws BusinessException { + DefaultHttpClient httpClient = new DefaultHttpClient(); + try { + httpClient.getCredentialsProvider().setCredentials(new AuthScope(targetURL.getHost(), targetURL.getPort()), + new UsernamePasswordCredentials(nexusServer.getUserName(), nexusServer.getPassword())); + + HttpPut httpPut = new HttpPut(targetURL.toString()); + httpPut.setEntity(entity); + HttpResponse response = httpClient.execute(httpPut); + StatusLine statusLine = response.getStatusLine(); + int responseCode = statusLine.getStatusCode(); + EntityUtils.consume(entity); + if (responseCode > 399) { + if (responseCode == 401) { + throw new BusinessException("Authrity failed"); + } else { + throw new BusinessException("Deploy failed: " + responseCode + ' ' + statusLine.getReasonPhrase()); + } + } + } catch (Exception e) { + throw new BusinessException("softwareupdate.error.cannotupload", e.getMessage()); + } finally { + httpClient.getConnectionManager().shutdown(); + } + } +} diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/LibrariesIndex.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/LibrariesIndex.java index b9f46c0dfd..7055da6c9d 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/LibrariesIndex.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/LibrariesIndex.java @@ -7,8 +7,6 @@ package org.talend.librariesmanager.emf.librariesindex; import org.eclipse.emf.common.util.EMap; -import java.util.Map; - import org.eclipse.emf.ecore.EObject; /** diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesIndexImpl.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesIndexImpl.java index 82636d7304..8e3353941b 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesIndexImpl.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesIndexImpl.java @@ -6,26 +6,16 @@ */ package org.talend.librariesmanager.emf.librariesindex.impl; -import java.util.Collection; -import java.util.Map; - -import java.util.Map.Entry; - import org.eclipse.emf.common.notify.Notification; - import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.EMap; import org.eclipse.emf.ecore.EClass; - import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.ecore.impl.EObjectImpl; - import org.eclipse.emf.ecore.util.EcoreEMap; import org.eclipse.emf.ecore.util.InternalEList; -import org.eclipse.emf.ecore.util.EObjectResolvingEList; - import org.talend.librariesmanager.emf.librariesindex.LibrariesIndex; import org.talend.librariesmanager.emf.librariesindex.LibrariesindexPackage; diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesindexFactoryImpl.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesindexFactoryImpl.java index e0914785dd..54848d0997 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesindexFactoryImpl.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesindexFactoryImpl.java @@ -11,12 +11,11 @@ import java.util.Map; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; - import org.eclipse.emf.ecore.impl.EFactoryImpl; - import org.eclipse.emf.ecore.plugin.EcorePlugin; - -import org.talend.librariesmanager.emf.librariesindex.*; +import org.talend.librariesmanager.emf.librariesindex.LibrariesIndex; +import org.talend.librariesmanager.emf.librariesindex.LibrariesindexFactory; +import org.talend.librariesmanager.emf.librariesindex.LibrariesindexPackage; /** * diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesindexPackageImpl.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesindexPackageImpl.java index 45cdb11269..04fe6f69a6 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesindexPackageImpl.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/LibrariesindexPackageImpl.java @@ -12,9 +12,7 @@ import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EReference; - import org.eclipse.emf.ecore.impl.EPackageImpl; - import org.talend.librariesmanager.emf.librariesindex.LibrariesIndex; import org.talend.librariesmanager.emf.librariesindex.LibrariesindexFactory; import org.talend.librariesmanager.emf.librariesindex.LibrariesindexPackage; diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/jarToRelativePathImpl.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/jarToRelativePathImpl.java index 2c10eec832..5404ebf9be 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/jarToRelativePathImpl.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/impl/jarToRelativePathImpl.java @@ -7,16 +7,12 @@ package org.talend.librariesmanager.emf.librariesindex.impl; import org.eclipse.emf.common.notify.Notification; - import org.eclipse.emf.common.util.BasicEMap; import org.eclipse.emf.common.util.EMap; - import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; - import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.ecore.impl.EObjectImpl; - import org.talend.librariesmanager.emf.librariesindex.LibrariesindexPackage; /** diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexAdapterFactory.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexAdapterFactory.java index dc3d6e7fd6..5efc345ed3 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexAdapterFactory.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexAdapterFactory.java @@ -10,12 +10,10 @@ import java.util.Map; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notifier; - import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; - import org.eclipse.emf.ecore.EObject; - -import org.talend.librariesmanager.emf.librariesindex.*; +import org.talend.librariesmanager.emf.librariesindex.LibrariesIndex; +import org.talend.librariesmanager.emf.librariesindex.LibrariesindexPackage; /** * diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexResourceFactoryImpl.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexResourceFactoryImpl.java index 35e348c41b..5e900dc7f4 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexResourceFactoryImpl.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexResourceFactoryImpl.java @@ -7,9 +7,7 @@ package org.talend.librariesmanager.emf.librariesindex.util; import org.eclipse.emf.common.util.URI; - import org.eclipse.emf.ecore.resource.Resource; - import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; /** diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexResourceImpl.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexResourceImpl.java index 25e53afa2a..2eaf098e8e 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexResourceImpl.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexResourceImpl.java @@ -7,7 +7,6 @@ package org.talend.librariesmanager.emf.librariesindex.util; import org.eclipse.emf.common.util.URI; - import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl; /** diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexSwitch.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexSwitch.java index e59f26472c..597638f4f0 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexSwitch.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexSwitch.java @@ -11,8 +11,8 @@ import java.util.Map; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; - -import org.talend.librariesmanager.emf.librariesindex.*; +import org.talend.librariesmanager.emf.librariesindex.LibrariesIndex; +import org.talend.librariesmanager.emf.librariesindex.LibrariesindexPackage; /** * diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexXMLProcessor.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexXMLProcessor.java index d31ec87405..5cfd1b019e 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexXMLProcessor.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/emf/librariesindex/util/LibrariesindexXMLProcessor.java @@ -9,11 +9,8 @@ package org.talend.librariesmanager.emf.librariesindex.util; import java.util.Map; import org.eclipse.emf.ecore.EPackage; - import org.eclipse.emf.ecore.resource.Resource; - import org.eclipse.emf.ecore.xmi.util.XMLProcessor; - import org.talend.librariesmanager.emf.librariesindex.LibrariesindexPackage; /** diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/migration/DeployLibJavaToMavenLoginTask.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/migration/DeployLibJavaToMavenLoginTask.java index 68174b5794..4beb779227 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/migration/DeployLibJavaToMavenLoginTask.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/migration/DeployLibJavaToMavenLoginTask.java @@ -18,24 +18,35 @@ import java.util.Date; import java.util.GregorianCalendar; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.preferences.ConfigurationScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.talend.commons.exception.ExceptionHandler; import org.talend.core.GlobalServiceRegister; import org.talend.core.ILibraryManagerService; import org.talend.core.language.ECodeLanguage; +import org.talend.core.model.general.Project; +import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.librariesmanager.prefs.LibrariesManagerUtils; import org.talend.login.AbstractLoginTask; +import org.talend.repository.ProjectManager; /** * created by wchen on 2015-5-15 Detailled comment * - * This logon task will deploy jars from configration/lib/java/... to local maven repository + * This logon task will deploy jars from configration/lib/java/... and project/lib/... to local maven repository + * configration/lib/java/... will be migrated only one time for each workspace , project/lib/... will be migrated one + * time for each project */ public class DeployLibJavaToMavenLoginTask extends AbstractLoginTask { private static IEclipsePreferences prefs = new ConfigurationScope().getNode("org.talend.librariesmanager"); + private static final String migration_key = "org.talend.librariesmanager.migration.DeployLibJavaToMavenLoginTask."; + + private static final String configureation_key = migration_key + "configration"; + /* * (non-Javadoc) * @@ -44,19 +55,42 @@ public class DeployLibJavaToMavenLoginTask extends AbstractLoginTask { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { - // keep in preference and only deploy one time - if (prefs.get("org.talend.librariesmanager.migration.DeployLibJavaToMavenLoginTask", null) != null) { - return; + + Project currentProject = ProjectManager.getInstance().getCurrentProject(); + boolean configureMigrated = prefs.getBoolean(configureation_key, false); + boolean projectMigrated = prefs.getBoolean(migration_key + currentProject.getTechnicalLabel(), false); + + boolean modified = false; + // configration/lib/java/... + if (!configureMigrated) { + String librariesPath = LibrariesManagerUtils.getLibrariesPath(ECodeLanguage.JAVA); + File storageDir = new File(librariesPath); + if (storageDir.exists()) { + ILibraryManagerService librariesManager = (ILibraryManagerService) GlobalServiceRegister.getDefault() + .getService(ILibraryManagerService.class); + librariesManager.deploy(storageDir.toURI()); + } + prefs.putBoolean(configureation_key, true); + modified = true; } - String librariesPath = LibrariesManagerUtils.getLibrariesPath(ECodeLanguage.JAVA); - File storageDir = new File(librariesPath); - if (storageDir.exists()) { - ILibraryManagerService librariesManager = (ILibraryManagerService) GlobalServiceRegister.getDefault().getService( - ILibraryManagerService.class); - librariesManager.deploy(storageDir.toURI()); + // project/lib/... + if (!projectMigrated) { + String path = new Path(Platform.getInstanceLocation().getURL().getPath()).toFile().getPath(); + String projectLabel = currentProject.getTechnicalLabel(); + path = path + File.separatorChar + projectLabel + File.separatorChar + + ERepositoryObjectType.getFolderName(ERepositoryObjectType.LIBS); + File libsTargetFile = new File(path); + if (libsTargetFile.exists()) { + ILibraryManagerService librariesManager = (ILibraryManagerService) GlobalServiceRegister.getDefault() + .getService(ILibraryManagerService.class); + librariesManager.deploy(libsTargetFile.toURI()); + } + prefs.putBoolean(migration_key + currentProject.getTechnicalLabel(), true); + modified = true; + } + if (modified) { + prefs.flush(); } - prefs.put("org.talend.librariesmanager.migration.DeployLibJavaToMavenLoginTask", "done"); - prefs.flush(); } catch (Exception e) { ExceptionHandler.process(e); } diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/migration/DeployLibJavaToMavenMigrationTask.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/migration/DeployLibJavaToMavenMigrationTask.java deleted file mode 100644 index 1079ecbed9..0000000000 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/migration/DeployLibJavaToMavenMigrationTask.java +++ /dev/null @@ -1,94 +0,0 @@ -// ============================================================================ -// -// Copyright (C) 2006-2014 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.migration; - -import java.io.File; -import java.util.Date; -import java.util.GregorianCalendar; - -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.ILibraryManagerService; -import org.talend.core.model.general.Project; -import org.talend.core.model.properties.Item; -import org.talend.core.model.repository.ERepositoryObjectType; -import org.talend.migration.AbstractMigrationTask; -import org.talend.migration.IProjectMigrationTask; -import org.talend.repository.ProjectManager; - -/** - * created by wchen on 2015-5-15 Detailled comment - * - * This migration task will deploy project/lib to local maven repository - */ -public class DeployLibJavaToMavenMigrationTask extends AbstractMigrationTask implements IProjectMigrationTask { - - /* - * (non-Javadoc) - * - * @see org.talend.migration.IMigrationTask#getOrder() - */ - @Override - public Date getOrder() { - GregorianCalendar gc = new GregorianCalendar(2015, 5, 15, 12, 0, 0); - return gc.getTime(); - } - - /* - * (non-Javadoc) - * - * @see org.talend.migration.IProjectMigrationTask#execute(org.talend.core.model.general.Project) - */ - @Override - public ExecutionResult execute(Project project) { - try { - String path = new Path(Platform.getInstanceLocation().getURL().getPath()).toFile().getPath(); - String projectLabel = ProjectManager.getInstance().getCurrentProject().getTechnicalLabel(); - path = path + File.separatorChar + projectLabel + File.separatorChar - + ERepositoryObjectType.getFolderName(ERepositoryObjectType.LIBS); - File libsTargetFile = new File(path); - if (libsTargetFile.exists()) { - ILibraryManagerService librariesManager = (ILibraryManagerService) GlobalServiceRegister.getDefault().getService( - ILibraryManagerService.class); - librariesManager.deploy(libsTargetFile.toURI()); - } - } catch (Exception e) { - ExceptionHandler.process(e); - return ExecutionResult.FAILURE; - } - return ExecutionResult.SUCCESS_WITH_ALERT; - } - - @Override - public final ExecutionResult execute(Project project, Item item) { - return ExecutionResult.NOTHING_TO_DO; - } - - @Override - public ExecutionResult execute(Project project, boolean doSave) { - return execute(project); - } - - @Override - public final boolean isApplicableOnItems() { - return false; - } - - @Override - public boolean isDeprecated() { - return false; - } - -} diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LibrariesIndexManager.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LibrariesIndexManager.java index 8455cdacaa..5414b58655 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LibrariesIndexManager.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LibrariesIndexManager.java @@ -73,7 +73,7 @@ public class LibrariesIndexManager { if (!new File(getMavenIndexPath()).exists()) { mavenLibIndex = LibrariesindexFactory.eINSTANCE.createLibrariesIndex(); } else { - Resource resource = createLibrariesIndexResource(getIndexFileInstallFolder(), LIBRARIES_INDEX); + Resource resource = createLibrariesIndexResource(getIndexFileInstallFolder(), MAVEN_INDEX); Map optionMap = new HashMap(); optionMap.put(XMLResource.OPTION_DEFER_ATTACHMENT, Boolean.TRUE); optionMap.put(XMLResource.OPTION_DEFER_IDREF_RESOLUTION, Boolean.TRUE); @@ -154,4 +154,12 @@ public class LibrariesIndexManager { return this.mavenLibIndex; } + public String getMvnUriFromIndex(String jarName) { + if (mavenLibIndex != null) { + return this.mavenLibIndex.getJarsToRelativePath().get(jarName); + } + + return null; + } + } diff --git a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java index 9e0bb68afd..727aac9497 100644 --- a/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java +++ b/main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java @@ -50,8 +50,8 @@ import org.talend.core.model.general.ILibrariesService; import org.talend.core.model.general.ModuleNeeded; import org.talend.core.runtime.maven.MavenArtifact; import org.talend.core.runtime.maven.MavenUrlHelper; -import org.talend.designer.maven.deploy.ArtifactsDeployer; import org.talend.designer.maven.utils.PomUtil; +import org.talend.librariesmanager.deploy.ArtifactsDeployer; import org.talend.librariesmanager.emf.librariesindex.LibrariesIndex; import org.talend.librariesmanager.model.ExtensionModuleManager; import org.talend.librariesmanager.model.ModulesNeededProvider; @@ -74,6 +74,8 @@ public class LocalLibraryManager implements ILibraryManagerService { private Map studioJarInstalled = new HashMap(); // rules same as studioJarInstalled + // key maven uri , value jar path + // only check the existing status in list() incase of performance problem private Map mavenJarInstalled = new HashMap(); private Set jarsNeededForComponents = new HashSet(); @@ -124,7 +126,7 @@ public class LocalLibraryManager implements ILibraryManagerService { if (!jarFiles.isEmpty()) { for (File jarFile : jarFiles) { String jarName = jarFile.getName(); - String mavenUri = LibrariesIndexManager.getInstance().getMavenLibIndex().getJarsToRelativePath().map() + String mavenUri = LibrariesIndexManager.getInstance().getMavenLibIndex().getJarsToRelativePath() .get(jarName); if (mavenUri == null) { mavenUri = MavenUrlHelper.generateMvnUrlForJarName(jarName); @@ -308,9 +310,8 @@ public class LocalLibraryManager implements ILibraryManagerService { EMap jarsToMavenUri = LibrariesIndexManager.getInstance().getMavenLibIndex().getJarsToRelativePath(); for (String jarName : jarsToMavenUri.keySet()) { - String artifactPath = PomUtil.getArtifactPath(MavenUrlHelper.parseMvnUrl(jarName)); - mavenJarInstalled.put(jarsToMavenUri.get(artifactPath), artifactPath); - if (artifactPath != null) { + String mvnUri = jarsToMavenUri.get(jarName); + if (checkJarInstalledInMaven(mvnUri)) { jarList.add(jarName); } } @@ -452,16 +453,9 @@ public class LocalLibraryManager implements ILibraryManagerService { public String getJarPath(String jarName) { String libPath = null; - if (jarName != null && jarName.startsWith(MavenUrlHelper.MVN_PROTOCOL)) { - libPath = mavenJarInstalled.get(jarName); - if (libPath != null) { - return libPath; - } - } - EMap jarsToMavenUri = LibrariesIndexManager.getInstance().getMavenLibIndex().getJarsToRelativePath(); String mavenUri = jarsToMavenUri.get(jarName); - if (mavenUri != null && mavenUri.startsWith(MavenUrlHelper.MVN_PROTOCOL)) { + if (mavenUri == null) { libPath = mavenJarInstalled.get(mavenUri); if (libPath != null) { return libPath; @@ -480,6 +474,15 @@ public class LocalLibraryManager implements ILibraryManagerService { return libPath; } + private boolean checkJarInstalledInMaven(String mvnUri) { + String artifactPath = PomUtil.getAbsArtifactPath(MavenUrlHelper.parseMvnUrl(mvnUri)); + if (artifactPath != null) { + mavenJarInstalled.put(mvnUri, artifactPath); + return true; + } + return false; + } + /* * (non-Javadoc) * @@ -725,8 +728,8 @@ public class LocalLibraryManager implements ILibraryManagerService { } } } else { - libsToMavenUri.put(module.getModuleName(), existUri); - libsToMavenUriAll.put(module.getModuleName(), existUri); + libsToMavenUri.put(module.getModuleName(), mavenUrl); + libsToMavenUriAll.put(module.getModuleName(), mavenUrl); } } if (moduleLocation != null && moduleLocation.startsWith("platform:/")) { @@ -769,9 +772,14 @@ public class LocalLibraryManager implements ILibraryManagerService { * org.eclipse.core.runtime.IProgressMonitor[]) */ @Override - public void deployMavenIndex(Map libsToMavenUri, IProgressMonitor... monitorWrap) { + public void deployMavenIndex(Map libsMavenUriToDeploy, IProgressMonitor... monitorWrap) { EMap jarsToMavenuri = LibrariesIndexManager.getInstance().getMavenLibIndex().getJarsToRelativePath(); - jarsToMavenuri.putAll(libsToMavenUri); + for (String key : libsMavenUriToDeploy.keySet()) { + String mvnUri = libsMavenUriToDeploy.get(key); + if (checkJarInstalledInMaven(mvnUri)) { + jarsToMavenuri.put(key, mvnUri); + } + } LibrariesIndexManager.getInstance().saveMavenIndexResource(); } diff --git a/pom.xml b/pom.xml index f4937bf6ad..9b5d961dd7 100644 --- a/pom.xml +++ b/pom.xml @@ -99,6 +99,7 @@ main/plugins/org.talend.libraries.apache.google main/plugins/org.talend.libraries.apache.hive main/plugins/org.talend.libraries.apache.http + main/plugins/org.talend.libraries.apache.http.jars main/plugins/org.talend.libraries.apache.lucene main/plugins/org.talend.libraries.apache.xml main/plugins/org.talend.libraries.csv