maven cleanup - fixed lambda-unfriendly "perform" methods in RemoteObjectWrapper, anonymous parameters of these methods replaced with lambdas

This commit is contained in:
Ivan Bessonov
2017-10-26 15:10:25 +03:00
parent acd7c01917
commit 6a3b720434
4 changed files with 58 additions and 189 deletions
@@ -52,12 +52,9 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
public void customizeForResolve(MavenConsole console, MavenProgressIndicator indicator) {
setCustomization(console, indicator, null, false, false, null);
perform(new Retriable<Object>() {
@Override
public Object execute() throws RemoteException {
doCustomize();
return null;
}
perform(() -> {
doCustomize();
return null;
});
}
@@ -68,12 +65,9 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
public void customizeForResolve(MavenWorkspaceMap workspaceMap, MavenConsole console, MavenProgressIndicator indicator,
boolean alwaysUpdateSnapshot, @Nullable Properties userProperties) {
setCustomization(console, indicator, workspaceMap, false, alwaysUpdateSnapshot, userProperties);
perform(new Retriable<Object>() {
@Override
public Object execute() throws RemoteException {
doCustomize();
return null;
}
perform(() -> {
doCustomize();
return null;
});
}
@@ -81,22 +75,16 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
MavenConsole console,
MavenProgressIndicator indicator) {
setCustomization(console, indicator, workspaceMap, true, false, null);
perform(new Retriable<Object>() {
@Override
public Object execute() throws RemoteException {
doCustomize();
return null;
}
perform(() -> {
doCustomize();
return null;
});
}
public void customizeForGetVersions() {
perform(new Retriable<Object>() {
@Override
public Object execute() throws RemoteException {
doCustomizeComponents();
return null;
}
perform(() -> {
doCustomizeComponents();
return null;
});
}
@@ -125,12 +113,9 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
@NotNull final Collection<String> activeProfiles,
@NotNull final Collection<String> inactiveProfiles)
throws MavenProcessCanceledException {
return perform(new RetriableCancelable<Collection<MavenServerExecutionResult>>() {
@Override
public Collection<MavenServerExecutionResult> execute() throws RemoteException, MavenServerProcessCanceledException {
final List<File> ioFiles = ContainerUtil.map(files, file -> new File(file.getPath()));
return getOrCreateWrappee().resolveProject(ioFiles, activeProfiles, inactiveProfiles);
}
return performCancelable(() -> {
final List<File> ioFiles = ContainerUtil.map(files, file -> new File(file.getPath()));
return getOrCreateWrappee().resolveProject(ioFiles, activeProfiles, inactiveProfiles);
});
}
@@ -138,24 +123,14 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
public String evaluateEffectivePom(@NotNull final VirtualFile file,
@NotNull final Collection<String> activeProfiles,
@NotNull final Collection<String> inactiveProfiles) throws MavenProcessCanceledException {
return perform(new RetriableCancelable<String>() {
@Override
public String execute() throws RemoteException, MavenServerProcessCanceledException {
return getOrCreateWrappee()
.evaluateEffectivePom(new File(file.getPath()), new ArrayList<>(activeProfiles), new ArrayList<>(inactiveProfiles));
}
});
return performCancelable(() -> getOrCreateWrappee()
.evaluateEffectivePom(new File(file.getPath()), new ArrayList<>(activeProfiles), new ArrayList<>(inactiveProfiles)));
}
@NotNull
public MavenArtifact resolve(@NotNull final MavenArtifactInfo info,
@NotNull final List<MavenRemoteRepository> remoteRepositories) throws MavenProcessCanceledException {
return perform(new RetriableCancelable<MavenArtifact>() {
@Override
public MavenArtifact execute() throws RemoteException, MavenServerProcessCanceledException {
return getOrCreateWrappee().resolve(info, remoteRepositories);
}
});
return performCancelable(() -> getOrCreateWrappee().resolve(info, remoteRepositories));
}
@NotNull
@@ -163,12 +138,7 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
@NotNull final List<MavenArtifactInfo> artifacts,
@NotNull final List<MavenRemoteRepository> remoteRepositories) throws MavenProcessCanceledException {
return perform(new RetriableCancelable<List<MavenArtifact>>() {
@Override
public List<MavenArtifact> execute() throws RemoteException, MavenServerProcessCanceledException {
return getOrCreateWrappee().resolveTransitively(artifacts, remoteRepositories);
}
});
return performCancelable(() -> getOrCreateWrappee().resolveTransitively(artifacts, remoteRepositories));
}
@NotNull
@@ -176,12 +146,7 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
@NotNull final String artifactId,
@NotNull final List<MavenRemoteRepository> remoteRepositories) throws MavenProcessCanceledException {
return perform(new RetriableCancelable<List<String>>() {
@Override
public List<String> execute() throws RemoteException, MavenServerProcessCanceledException {
return getOrCreateWrappee().retrieveAvailableVersions(groupId, artifactId, remoteRepositories);
}
});
return performCancelable(() -> getOrCreateWrappee().retrieveAvailableVersions(groupId, artifactId, remoteRepositories));
}
public Collection<MavenArtifact> resolvePlugin(@NotNull final MavenPlugin plugin,
@@ -211,12 +176,7 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
}
public MavenModel readModel(final File file) throws MavenProcessCanceledException {
return perform(new RetriableCancelable<MavenModel>() {
@Override
public MavenModel execute() throws RemoteException, MavenServerProcessCanceledException {
return getOrCreateWrappee().readModel(file);
}
});
return performCancelable(() -> getOrCreateWrappee().readModel(file));
}
@NotNull
@@ -224,13 +184,8 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
@NotNull final Collection<String> activeProfiles,
@NotNull final Collection<String> inactiveProfiles,
@NotNull final List<String> goals) throws MavenProcessCanceledException {
return perform(new RetriableCancelable<MavenServerExecutionResult>() {
@Override
public MavenServerExecutionResult execute() throws RemoteException, MavenServerProcessCanceledException {
return getOrCreateWrappee()
.execute(new File(file.getPath()), activeProfiles, inactiveProfiles, goals, Collections.emptyList(), false, false);
}
});
return performCancelable(() -> getOrCreateWrappee()
.execute(new File(file.getPath()), activeProfiles, inactiveProfiles, goals, Collections.emptyList(), false, false));
}
@NotNull
@@ -241,13 +196,8 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
@NotNull final List<String> selectedProjects,
final boolean alsoMake,
final boolean alsoMakeDependents) throws MavenProcessCanceledException {
return perform(new RetriableCancelable<MavenServerExecutionResult>() {
@Override
public MavenServerExecutionResult execute() throws RemoteException, MavenServerProcessCanceledException {
return getOrCreateWrappee()
.execute(new File(file.getPath()), activeProfiles, inactiveProfiles, goals, selectedProjects, alsoMake, alsoMakeDependents);
}
});
return performCancelable(() -> getOrCreateWrappee()
.execute(new File(file.getPath()), activeProfiles, inactiveProfiles, goals, selectedProjects, alsoMake, alsoMakeDependents));
}
public void reset() {
@@ -58,12 +58,7 @@ public abstract class MavenIndexerWrapper extends RemoteObjectWrapper<MavenServe
final int localId = System.identityHashCode(data);
myDataMap.put(localId, data);
perform(new IndexRetriable<Object>() {
@Override
public Object execute() throws RemoteException, MavenServerIndexerException {
return getRemoteId(localId);
}
});
perform(() -> getRemoteId(localId));
return localId;
}
@@ -100,65 +95,44 @@ public abstract class MavenIndexerWrapper extends RemoteObjectWrapper<MavenServe
}
public int getIndexCount() {
return perform(new Retriable<Integer>() {
@Override
public Integer execute() throws RemoteException {
return getOrCreateWrappee().getIndexCount();
}
});
return perform(() -> getOrCreateWrappee().getIndexCount());
}
public void updateIndex(final int localId,
final MavenGeneralSettings settings,
final MavenProgressIndicator indicator) throws MavenProcessCanceledException,
MavenServerIndexerException {
perform(new IndexRetriableCancelable<Object>() {
@Override
public Object execute() throws RemoteException, MavenServerIndexerException, MavenServerProcessCanceledException {
MavenServerProgressIndicator indicatorWrapper = MavenServerManager.wrapAndExport(indicator);
try {
getOrCreateWrappee().updateIndex(getRemoteId(localId), MavenServerManager.convertSettings(settings), indicatorWrapper);
}
finally {
UnicastRemoteObject.unexportObject(indicatorWrapper, true);
}
return null;
performCancelable(() -> {
MavenServerProgressIndicator indicatorWrapper = MavenServerManager.wrapAndExport(indicator);
try {
getOrCreateWrappee().updateIndex(getRemoteId(localId), MavenServerManager.convertSettings(settings), indicatorWrapper);
}
finally {
UnicastRemoteObject.unexportObject(indicatorWrapper, true);
}
return null;
});
}
public void processArtifacts(final int indexId, final MavenIndicesProcessor processor) throws MavenServerIndexerException {
perform(new IndexRetriable<Object>() {
@Override
public Object execute() throws RemoteException, MavenServerIndexerException {
MavenServerIndicesProcessor processorWrapper = MavenServerManager.wrapAndExport(processor);
try {
getOrCreateWrappee().processArtifacts(getRemoteId(indexId), processorWrapper);
}
finally {
UnicastRemoteObject.unexportObject(processorWrapper, true);
}
return null;
perform(() -> {
MavenServerIndicesProcessor processorWrapper = MavenServerManager.wrapAndExport(processor);
try {
getOrCreateWrappee().processArtifacts(getRemoteId(indexId), processorWrapper);
}
finally {
UnicastRemoteObject.unexportObject(processorWrapper, true);
}
return null;
});
}
public MavenId addArtifact(final int localId, final File artifactFile) throws MavenServerIndexerException {
return perform(new IndexRetriable<MavenId>() {
@Override
public MavenId execute() throws RemoteException, MavenServerIndexerException {
return getOrCreateWrappee().addArtifact(getRemoteId(localId), artifactFile);
}
});
return perform(() -> getOrCreateWrappee().addArtifact(getRemoteId(localId), artifactFile));
}
public Set<MavenArtifactInfo> search(final int localId, final Query query, final int maxResult) throws MavenServerIndexerException {
return perform(new IndexRetriable<Set<MavenArtifactInfo>>() {
@Override
public Set<MavenArtifactInfo> execute() throws RemoteException, MavenServerIndexerException {
return getOrCreateWrappee().search(getRemoteId(localId), query, maxResult);
}
});
return perform(() -> getOrCreateWrappee().search(getRemoteId(localId), query, maxResult));
}
private synchronized int getRemoteId(int localId) throws RemoteException, MavenServerIndexerException {
@@ -172,12 +146,7 @@ public abstract class MavenIndexerWrapper extends RemoteObjectWrapper<MavenServe
}
public Collection<MavenArchetype> getArchetypes() {
return perform(new Retriable<Collection<MavenArchetype>>() {
@Override
public Collection<MavenArchetype> execute() throws RemoteException {
return getOrCreateWrappee().getArchetypes();
}
});
return perform(() -> getOrCreateWrappee().getArchetypes());
}
@TestOnly
@@ -526,33 +526,18 @@ public class MavenServerManager extends RemoteObjectWrapper<MavenServer> impleme
@NotNull
public MavenModel interpolateAndAlignModel(final MavenModel model, final File basedir) {
return perform(new Retriable<MavenModel>() {
@Override
public MavenModel execute() throws RemoteException {
return getOrCreateWrappee().interpolateAndAlignModel(model, basedir);
}
});
return perform(() -> getOrCreateWrappee().interpolateAndAlignModel(model, basedir));
}
public MavenModel assembleInheritance(final MavenModel model, final MavenModel parentModel) {
return perform(new Retriable<MavenModel>() {
@Override
public MavenModel execute() throws RemoteException {
return getOrCreateWrappee().assembleInheritance(model, parentModel);
}
});
return perform(() -> getOrCreateWrappee().assembleInheritance(model, parentModel));
}
public ProfileApplicationResult applyProfiles(final MavenModel model,
final File basedir,
final MavenExplicitProfiles explicitProfiles,
final Collection<String> alwaysOnProfiles) {
return perform(new Retriable<ProfileApplicationResult>() {
@Override
public ProfileApplicationResult execute() throws RemoteException {
return getOrCreateWrappee().applyProfiles(model, basedir, explicitProfiles, alwaysOnProfiles);
}
});
return perform(() -> getOrCreateWrappee().applyProfiles(model, basedir, explicitProfiles, alwaysOnProfiles));
}
public void addDownloadListener(MavenServerDownloadListener listener) {
@@ -32,7 +32,7 @@ public abstract class RemoteObjectWrapper<T> {
@Nullable
protected synchronized T getWrappee() {
return myWrappee == null ? null : myWrappee;
return myWrappee;
}
@NotNull
@@ -69,7 +69,7 @@ public abstract class RemoteObjectWrapper<T> {
myWrappee = null;
}
protected <T> T perform(Retriable<T> r) {
protected <R, E extends Exception> R perform(Retriable<R, E> r) throws E {
RemoteException last = null;
for (int i = 0; i < 2; i++) {
try {
@@ -82,7 +82,7 @@ public abstract class RemoteObjectWrapper<T> {
throw new RuntimeException("Cannot reconnect.", last);
}
protected <T> T perform(RetriableCancelable<T> r) throws MavenProcessCanceledException {
protected <R, E extends Exception> R performCancelable(RetriableCancelable<R, E> r) throws MavenProcessCanceledException, E {
RemoteException last = null;
for (int i = 0; i < 2; i++) {
try {
@@ -98,48 +98,13 @@ public abstract class RemoteObjectWrapper<T> {
throw new RuntimeException("Cannot reconnect.", last);
}
protected <T> T perform(IndexRetriable<T> r) throws MavenServerIndexerException {
RemoteException last = null;
for (int i = 0; i < 2; i++) {
try {
return r.execute();
}
catch (RemoteException e) {
handleRemoteError(last = e);
}
}
throw new RuntimeException("Cannot reconnect.", last);
@FunctionalInterface
protected interface Retriable<T, E extends Exception> {
T execute() throws RemoteException, E;
}
protected <T> T perform(IndexRetriableCancelable<T> r) throws MavenServerIndexerException, MavenProcessCanceledException {
RemoteException last = null;
for (int i = 0; i < 2; i++) {
try {
return r.execute();
}
catch (RemoteException e) {
handleRemoteError(last = e);
}
catch (MavenServerProcessCanceledException e) {
throw new MavenProcessCanceledException();
}
}
throw new RuntimeException("Cannot reconnect.", last);
}
protected interface Retriable<T> {
T execute() throws RemoteException;
}
protected interface IndexRetriable<T> {
T execute() throws RemoteException, MavenServerIndexerException;
}
protected interface IndexRetriableCancelable<T> {
T execute() throws RemoteException, MavenServerIndexerException, MavenServerProcessCanceledException;
}
protected interface RetriableCancelable<T> {
T execute() throws RemoteException, MavenServerProcessCanceledException;
@FunctionalInterface
protected interface RetriableCancelable<T, E extends Exception> {
T execute() throws RemoteException, MavenServerProcessCanceledException, E;
}
}