diff options
Diffstat (limited to 'org.eclipse.egit.core/src/org/eclipse')
9 files changed, 46 insertions, 99 deletions
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/AdapterUtils.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/AdapterUtils.java index d79d66cad8..d9cf678ac7 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/AdapterUtils.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/AdapterUtils.java @@ -16,10 +16,8 @@ import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.Adapters; import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.egit.core.internal.Utils; import org.eclipse.jgit.annotations.Nullable; /** @@ -32,32 +30,6 @@ public class AdapterUtils { } /** - * Adapt object to given target class type - * - * @param object - * @param target - * @param <V> type of target - * @return adapted - */ - @Nullable - public static <V> V adapt(Object object, Class<V> target) { - if (object == null) { - return null; - } - if (target.isInstance(object)) { - return target.cast(object); - } - if (object instanceof IAdaptable) { - V adapter = Utils.getAdapter(((IAdaptable) object), target); - if (adapter != null || object instanceof PlatformObject) { - return adapter; - } - } - Object adapted = Platform.getAdapterManager().getAdapter(object, target); - return target.cast(adapted); - } - - /** * Adapt object to one interface from list: {@link IResource}, * {@link IContainer}, {@link IFile} or {@link IProject}. * @@ -69,19 +41,19 @@ public class AdapterUtils { if (object == null) { return null; } - IResource resource = adapt(object, IResource.class); + IResource resource = Adapters.adapt(object, IResource.class); if (resource != null) { return resource; } - resource = adapt(object, IFile.class); + resource = Adapters.adapt(object, IFile.class); if (resource != null) { return resource; } - resource = adapt(object, IProject.class); + resource = Adapters.adapt(object, IProject.class); if (resource != null) { return resource; } - resource = adapt(object, IContainer.class); + resource = Adapters.adapt(object, IContainer.class); if (resource != null) { return resource; } diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/CoreText.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/CoreText.java index 34246c7a72..ca62bc8392 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/CoreText.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/CoreText.java @@ -502,9 +502,6 @@ public class CoreText extends NLS { public static String SubmoduleUpdateOperation_cloning; /** */ - public static String Utils_InvalidAdapterError; - - /** */ public static String ValidationUtils_CanNotResolveRefMessage; /** */ diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/SshPreferencesMirror.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/SshPreferencesMirror.java index dcfafbca3e..8c73aab60e 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/SshPreferencesMirror.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/SshPreferencesMirror.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (C) 2018, Thomas Wolf <thomas.wolf@paranor.ch> + * Copyright (C) 2018, 2019 Thomas Wolf <thomas.wolf@paranor.ch> * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -58,12 +58,18 @@ public class SshPreferencesMirror { private String defaultMechanisms; + private boolean started; + private SshPreferencesMirror() { // This is a singleton. } /** Starts mirroring the ssh preferences. */ public void start() { + if (started) { + return; + } + started = true; preferences = InstanceScope.INSTANCE.getNode(PREFERENCES_NODE); if (preferences != null) { preferences.addPreferenceChangeListener(listener); @@ -73,6 +79,7 @@ public class SshPreferencesMirror { /** Stops mirroring the ssh preferences. */ public void stop() { + started = false; if (preferences != null) { preferences.removePreferenceChangeListener(listener); } @@ -168,8 +175,13 @@ public class SshPreferencesMirror { return null; } return defaultIdentities.stream() - .map(s -> new File(sshDir, s).toPath()) - .filter(Files::exists).collect(Collectors.toList()); + .map(s -> { + File f = new File(s); + if (!f.isAbsolute()) { + f = new File(sshDir, s); + } + return f.toPath(); + }).filter(Files::exists).collect(Collectors.toList()); } } diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/Utils.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/Utils.java index 82abd31c28..afbfab3dc6 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/Utils.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/Utils.java @@ -17,7 +17,6 @@ import java.io.IOException; import java.text.MessageFormat; import java.util.Collection; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IStatus; import org.eclipse.egit.core.Activator; import org.eclipse.jgit.annotations.NonNull; @@ -96,38 +95,6 @@ public class Utils { } /** - * Returns the adapter corresponding to the given adapter class. - * <p> - * Workaround for "Unnecessary cast" errors, see bug 460685. Can be removed - * when EGit depends on Eclipse 4.5 or higher. - * - * @param adaptable - * the adaptable - * @param adapterClass - * the adapter class to look up - * @return a object of the given class, or <code>null</code> if this object - * does not have an adapter for the given class - */ - public static <T> T getAdapter(IAdaptable adaptable, Class<T> adapterClass) { - Object adapter = adaptable.getAdapter(adapterClass); - if (adapter == null) { - return null; - } - // Guard against misbehaving IAdaptables... - if (adapterClass.isInstance(adapter)) { - return adapterClass.cast(adapter); - } else { - Activator.logError( - MessageFormat.format(CoreText.Utils_InvalidAdapterError, - adaptable.getClass().getName(), - adapterClass.getName(), - adapter.getClass().getName()), - new IllegalStateException()); - return null; - } - } - - /** * Validates a given ref name, including testing whether a ref with that * name already exists, or if the name conflicts with an already existing * ref. diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/coretext.properties b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/coretext.properties index 432624ae0a..6a8251df47 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/coretext.properties +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/coretext.properties @@ -204,8 +204,6 @@ MergeStrategy_ReservedName=The strategy name {0} is reserved by JGit for class { SubmoduleUpdateOperation_updating=Updating submodules in {0} SubmoduleUpdateOperation_cloning=Updating submodules in {0}: cloning submodule {1} -Utils_InvalidAdapterError={0}.getAdapter({1}.class) returned an object of type {2}, which is not of the requested type. Please ask the provider of {0} to fix this bug in their code. - ValidationUtils_CanNotResolveRefMessage=Cannot resolve {0} ValidationUtils_InvalidRefNameMessage={0} is not a valid name for a ref ValidationUtils_InvalidRevision=Invalid revision {0} diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/storage/GitFileHistory.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/storage/GitFileHistory.java index a076b542b9..842a2f3ca8 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/storage/GitFileHistory.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/storage/GitFileHistory.java @@ -18,11 +18,11 @@ import java.util.Collections; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.Adapters; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.egit.core.Activator; import org.eclipse.egit.core.internal.CoreText; -import org.eclipse.egit.core.internal.Utils; import org.eclipse.egit.core.project.RepositoryMapping; import org.eclipse.egit.core.synchronize.GitRemoteResource; import org.eclipse.jgit.errors.IncorrectObjectTypeException; @@ -211,33 +211,35 @@ class GitFileHistory extends FileHistory implements IAdaptable { } private String getGitPath(IFileRevision revision) { - if (revision instanceof CommitFileRevision) + if (revision instanceof CommitFileRevision) { return ((CommitFileRevision) revision).getGitPath(); - else if (revision instanceof IAdaptable) { - final IResourceVariant variant = Utils.getAdapter(((IAdaptable) revision), IResourceVariant.class); - - if (variant instanceof GitRemoteResource) - return ((GitRemoteResource) variant).getPath(); } + IResourceVariant variant = Adapters.adapt(revision, + IResourceVariant.class); + if (variant instanceof GitRemoteResource) { + return ((GitRemoteResource) variant).getPath(); + } return null; } private RevCommit getRevCommit(IFileRevision revision) { - if (revision instanceof CommitFileRevision) + if (revision instanceof CommitFileRevision) { return ((CommitFileRevision) revision).getRevCommit(); - else if (revision instanceof IAdaptable) { - final IResourceVariant variant = Utils.getAdapter(((IAdaptable) revision), IResourceVariant.class); - if (variant instanceof GitRemoteResource) { - final RevCommit commit = ((GitRemoteResource) variant) - .getCommitId(); - try { - return walk.parseCommit(commit); - } catch (IOException e) { - Activator.logError(NLS.bind( - CoreText.GitFileHistory_invalidCommit, - commit.getName(), resource.getName()), e); - } + } + IResourceVariant variant = Adapters.adapt(revision, + IResourceVariant.class); + if (variant instanceof GitRemoteResource) { + final RevCommit commit = ((GitRemoteResource) variant) + .getCommitId(); + try { + return walk.parseCommit(commit); + } catch (IOException e) { + Activator + .logError( + NLS.bind(CoreText.GitFileHistory_invalidCommit, + commit.getName(), resource.getName()), + e); } } diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/util/ResourceUtil.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/util/ResourceUtil.java index 3172693260..e2a62e6fcc 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/util/ResourceUtil.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/internal/util/ResourceUtil.java @@ -648,8 +648,7 @@ public class ResourceUtil { } final ResourceMapping[] modelMappings = model.getMappings( resource, context, new NullProgressMonitor()); - for (ResourceMapping mapping : modelMappings) - mappings.add(mapping); + mappings.addAll(Arrays.asList(modelMappings)); } } catch (CoreException e) { Activator.logError(e.getMessage(), e); diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java index 56f7f8096d..425ab69850 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java @@ -38,6 +38,7 @@ import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.IResourceDeltaVisitor; import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.Adapters; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; @@ -52,7 +53,6 @@ import org.eclipse.egit.core.Activator; import org.eclipse.egit.core.GitCorePreferences; import org.eclipse.egit.core.JobFamilies; import org.eclipse.egit.core.internal.CoreText; -import org.eclipse.egit.core.internal.Utils; import org.eclipse.egit.core.internal.trace.GitTraceLocation; import org.eclipse.egit.core.internal.util.ResourceUtil; import org.eclipse.jgit.annotations.NonNull; @@ -667,7 +667,7 @@ public class GitProjectData { if (r instanceof IContainer) { c = (IContainer) r; } else if (r != null) { - c = Utils.getAdapter(r, IContainer.class); + c = Adapters.adapt(r, IContainer.class); } if (c == null) { diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/securestorage/EGitSecureStore.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/securestorage/EGitSecureStore.java index 38995c2173..9c50d46937 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/securestorage/EGitSecureStore.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/securestorage/EGitSecureStore.java @@ -120,7 +120,7 @@ public class EGitSecureStore { return; ISecurePreferences node = preferences.node(pathName); node.removeNode(); - node.flush(); + preferences.flush(); } } |