提交 90249ee8 编写于 作者: J jurgen

Maven context

Former-commit-id: 7f37464d
上级 398537dc
......@@ -21,6 +21,7 @@ import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.connection.DBPDriverDependencies;
import org.jkiss.dbeaver.model.connection.DBPDriverLibrary;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.registry.maven.MavenContext;
import java.io.IOException;
import java.util.*;
......@@ -33,10 +34,7 @@ public class DriverDependencies implements DBPDriverDependencies
final List<DependencyNode> rootNodes = new ArrayList<>();
final List<DBPDriverLibrary> libraryList = new ArrayList<>();
public DriverDependencies() {
}
void resolveDependencies(DBRProgressMonitor monitor, Collection<? extends DBPDriverLibrary> rootLibraries) throws DBException {
void resolveDependencies(MavenContext context, Collection<? extends DBPDriverLibrary> rootLibraries) throws DBException {
try {
{
rootNodes.clear();
......@@ -46,7 +44,7 @@ public class DriverDependencies implements DBPDriverDependencies
DependencyNode node = new DependencyNode(null, library);
libMap.put(node.library.getId(), node.library);
resolveDependencies(monitor, node, libMap);
resolveDependencies(context.getMonitor(), node, libMap);
rootNodes.add(node);
}
libraryList.clear();
......
......@@ -39,6 +39,7 @@ import org.jkiss.dbeaver.model.runtime.OSDescriptor;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.dbeaver.registry.DataSourceProviderDescriptor;
import org.jkiss.dbeaver.registry.RegistryConstants;
import org.jkiss.dbeaver.registry.maven.MavenContext;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.dialogs.AcceptLicenseDialog;
import org.jkiss.dbeaver.ui.dialogs.driver.DriverDownloadDialog;
......@@ -613,8 +614,11 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver
@Override
public DBPDriverDependencies resolveDependencies(@NotNull DBRProgressMonitor monitor) throws DBException {
if (dependencies == null) {
dependencies = new DriverDependencies();
dependencies.resolveDependencies(monitor, getDriverLibraries());
try (MavenContext mavenContext = new MavenContext(monitor)) {
DriverDependencies depsResolver = new DriverDependencies();
depsResolver.resolveDependencies(mavenContext, getDriverLibraries());
this.dependencies = depsResolver;
}
}
return dependencies;
}
......
......@@ -43,6 +43,7 @@ public class DriverLibraryMavenArtifact extends DriverLibraryAbstract
public static final String PATH_PREFIX = "maven:/";
private final MavenArtifactReference reference;
private MavenArtifactVersion version;
public DriverLibraryMavenArtifact(DriverDescriptor driver, FileType type, String path) {
super(driver, type, path);
......@@ -73,7 +74,10 @@ public class DriverLibraryMavenArtifact extends DriverLibraryAbstract
@Nullable
protected MavenArtifactVersion getMavenVersion() {
return MavenRegistry.getInstance().findArtifact(VoidProgressMonitor.INSTANCE, reference);
if (version == null) {
version = MavenRegistry.getInstance().findArtifact(VoidProgressMonitor.INSTANCE, reference);
}
return version;
}
@Nullable
......
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2015 Serge Rieder (serge@jkiss.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License (version 2)
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jkiss.dbeaver.registry.maven;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import java.util.*;
/**
* Maven resolve context
*/
public class MavenContext implements AutoCloseable {
private final DBRProgressMonitor monitor;
private final Date initTime = new Date();
private final Map<String, String> properties = new HashMap<>();
private final Map<MavenArtifactVersion, List<MavenRepository>> artifactRepositories = new LinkedHashMap<>();
private final List<MavenRepository> activeRepositories = new ArrayList<>();
public MavenContext(DBRProgressMonitor monitor) {
this.monitor = monitor;
}
public DBRProgressMonitor getMonitor() {
return monitor;
}
public Date getInitTime() {
return initTime;
}
public Map<String, String> getProperties() {
return properties;
}
public List<MavenRepository> getActiveRepositories() {
return activeRepositories;
}
public void addRepositories(MavenArtifactVersion artifactVersion, List<MavenRepository> repositories) {
artifactRepositories.put(artifactVersion, repositories);
}
public void removeRepositories(MavenArtifactVersion artifactVersion) {
artifactRepositories.remove(artifactVersion);
}
@Override
public void close() {
}
}
......@@ -79,7 +79,7 @@ public class MavenRepository
this.predefined = true;
}
MavenRepository(String id, String name, String url, boolean local) {
public MavenRepository(String id, String name, String url, boolean local) {
this.id = id;
this.name = name;
if (!url.endsWith("/")) url += "/";
......@@ -229,13 +229,12 @@ public class MavenRepository
xml.addAttribute(ATTR_URL, url);
for (MavenArtifact artifact : cachedArtifacts.values()) {
if (CommonUtils.isEmpty(artifact.getActiveVersionName())) {
continue;
}
try (XMLBuilder.Element e1 = xml.startElement(TAG_ARTIFACT)) {
xml.addAttribute(ATTR_GROUP_ID, artifact.getGroupId());
xml.addAttribute(ATTR_ARTIFACT_ID, artifact.getArtifactId());
xml.addAttribute(ATTR_ACTIVE_VERSION, artifact.getActiveVersionName());
if (CommonUtils.isEmpty(artifact.getActiveVersionName())) {
xml.addAttribute(ATTR_ACTIVE_VERSION, artifact.getActiveVersionName());
}
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册