From cbcc4a6c412801aa65cf8ac0657b2e77b0a8a0f3 Mon Sep 17 00:00:00 2001
From: Sergii Kabashniuk <skabashnyuk@users.noreply.github.com>
Date: Mon, 11 Nov 2019 11:15:20 +0100
Subject: [PATCH] Delete unused classes and functionality (#15156)

Signed-off-by: Sergii Kabashniuk <skabashniuk@redhat.com>
---
 .../che/api/core/util/CustomPortService.java  | 207 ------------------
 .../che/everrest/CheAsynchronousJobPool.java  |  39 ----
 2 files changed, 246 deletions(-)
 delete mode 100644 core/che-core-api-core/src/main/java/org/eclipse/che/api/core/util/CustomPortService.java
 delete mode 100644 core/che-core-api-core/src/main/java/org/eclipse/che/everrest/CheAsynchronousJobPool.java

diff --git a/core/che-core-api-core/src/main/java/org/eclipse/che/api/core/util/CustomPortService.java b/core/che-core-api-core/src/main/java/org/eclipse/che/api/core/util/CustomPortService.java
deleted file mode 100644
index 75e5b01f92..0000000000
--- a/core/che-core-api-core/src/main/java/org/eclipse/che/api/core/util/CustomPortService.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (c) 2012-2018 Red Hat, Inc.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.core.util;
-
-import java.io.IOException;
-import java.net.DatagramSocket;
-import java.net.ServerSocket;
-import java.security.SecureRandom;
-import java.util.Random;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-import org.eclipse.che.commons.lang.Pair;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Helps to find free ports. Usage:
- *
- * <pre>
- *     CustomPortService portService = ...
- *     int free = portService.acquire();
- *     if (free < 0) {
- *         // No free ports.
- *     } else {
- *         try {
- *             // Do something.
- *         } finally {
- *             portService.release(free);
- *         }
- *     }
- * </pre>
- *
- * <p>Note: It is important to release port when it is not needed any more, otherwise it will be not
- * possible to reuse ports.
- *
- * @author andrew00x
- * @see #MIN_PORT
- * @see #MAX_PORT
- */
-@Singleton
-public class CustomPortService {
-  /** Name of configuration parameter that sets min port number. */
-  public static final String MIN_PORT = "sys.resources.min_port";
-  /** Name of configuration parameter that sets max port number. */
-  public static final String MAX_PORT = "sys.resources.max_port";
-
-  private static final Logger LOG = LoggerFactory.getLogger(CustomPortService.class);
-
-  private final Random rnd;
-  private final ConcurrentMap<Integer, Boolean> portsInUse;
-  private final Pair<Integer, Integer> range;
-
-  @Inject
-  public CustomPortService(@Named(MIN_PORT) int minPort, @Named(MAX_PORT) int maxPort) {
-    this(Pair.of(minPort, maxPort));
-  }
-
-  public CustomPortService(Pair<Integer, Integer> range) {
-    if (range.first < 0 || range.second > 65535) {
-      throw new IllegalArgumentException(
-          String.format("Invalid port range: [%d:%d]", range.first, range.second));
-    }
-    this.range = range;
-    rnd = new SecureRandom();
-    portsInUse = new ConcurrentHashMap<>();
-  }
-
-  /**
-   * This service stores allocated ports in internal storage to avoid checking ports that already in
-   * use. After calling this method storage is cleared. For next port allocation this service will
-   * iterates through range of configured ports until finds free port. It may be expensive since
-   * checking port means trying to open {@link ServerSocket} and {@link DatagramSocket} on each port
-   * in the range.
-   *
-   * @see #MIN_PORT
-   * @see #MAX_PORT
-   */
-  public void reset() {
-    portsInUse.clear();
-  }
-
-  /**
-   * Returns range of ports that service uses for lookup free port. Modifications to the returned
-   * {@code Pair} will not affect the internal {@code Pair}.
-   */
-  public Pair<Integer, Integer> getRange() {
-    return Pair.of(range.first, range.second);
-  }
-
-  /**
-   * Get free port from the whole range of possible ports.
-   *
-   * @return free port or {@code -1} if there is no free port
-   */
-  public int acquire() {
-    return doAcquire(range.first, range.second);
-  }
-
-  /**
-   * Get free port from the specified range. Specified range may not be wider than configured range
-   * otherwise IllegalArgumentException is thrown. Configured range may be checked with method
-   * {@link #getRange()}.
-   *
-   * @return free port or {@code -1} if there is no free port
-   * @throws IllegalArgumentException if {@code min > range.first} or if {@code min > range.second}
-   * @see #getRange()
-   * @see #MIN_PORT
-   * @see #MAX_PORT
-   */
-  public int acquire(int min, int max) {
-    if (min < range.first) {
-      throw new IllegalArgumentException(
-          String.format("Min port value may not be less than %d", range.first));
-    }
-    if (max > range.second) {
-      throw new IllegalArgumentException(
-          String.format("Max port value may not be greater than %d", range.second));
-    }
-    return doAcquire(min, max);
-  }
-
-  public void release(int port) {
-    if (port != -1) {
-      portsInUse.remove(port);
-    }
-    LOG.debug("Release port {}", port);
-  }
-
-  private int doAcquire(int min, int max) {
-    // Use this for getting ports for web applications but unfortunately get issue with browser
-    // cache.
-    // If different applications reuse the same port sometimes user can see previous application.
-    // Make number of port in 'more random' way instead of checking from min to max until find free
-    // port.
-    final int m = min + rnd.nextInt((max - min) + 1);
-    final boolean ev = (m % 2) == 0;
-    int port;
-    if (ev) {
-      port = lookupForward(m, max);
-      if (port < 0) {
-        port = lookupBackward(m, min);
-      }
-    } else {
-      port = lookupBackward(m, min);
-      if (port < 0) {
-        port = lookupForward(m, max);
-      }
-    }
-    return port;
-  }
-
-  private int lookupForward(int min, int max) {
-    for (int port = min; port <= max; port++) {
-      if (checkPort(port)) {
-        return port;
-      }
-    }
-    return -1;
-  }
-
-  private int lookupBackward(int max, int min) {
-    for (int port = max; port >= min; port--) {
-      if (checkPort(port)) {
-        return port;
-      }
-    }
-    return -1;
-  }
-
-  private boolean checkPort(int port) {
-    if (portsInUse.putIfAbsent(port, Boolean.TRUE) == null) {
-      ServerSocket ss = null;
-      DatagramSocket ds = null;
-      try {
-        ss = new ServerSocket(port);
-        ds = new DatagramSocket(port);
-        LOG.debug("Acquire port {}", port);
-        return true;
-      } catch (IOException ignored) {
-        portsInUse.remove(port);
-      } finally {
-        if (ds != null) {
-          ds.close();
-        }
-        if (ss != null) {
-          try {
-            ss.close();
-          } catch (IOException ignored) {
-          }
-        }
-      }
-    }
-    return false;
-  }
-}
diff --git a/core/che-core-api-core/src/main/java/org/eclipse/che/everrest/CheAsynchronousJobPool.java b/core/che-core-api-core/src/main/java/org/eclipse/che/everrest/CheAsynchronousJobPool.java
deleted file mode 100644
index 7d6d690916..0000000000
--- a/core/che-core-api-core/src/main/java/org/eclipse/che/everrest/CheAsynchronousJobPool.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2012-2018 Red Hat, Inc.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.everrest;
-
-import java.lang.reflect.Method;
-import java.util.concurrent.Callable;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import javax.ws.rs.ext.ContextResolver;
-import javax.ws.rs.ext.Provider;
-import org.eclipse.che.commons.lang.concurrent.ThreadLocalPropagateContext;
-import org.everrest.core.impl.EverrestConfiguration;
-import org.everrest.core.impl.async.AsynchronousJobPool;
-
-/** @author Vitaly Parfonov */
-@Singleton
-@Provider
-public class CheAsynchronousJobPool extends AsynchronousJobPool
-    implements ContextResolver<AsynchronousJobPool> {
-
-  @Inject
-  public CheAsynchronousJobPool(EverrestConfiguration everrestConfiguration) {
-    super(everrestConfiguration);
-  }
-
-  @Override
-  protected Callable<Object> newCallable(Object resource, Method method, Object[] params) {
-    return ThreadLocalPropagateContext.wrap((super.newCallable(resource, method, params)));
-  }
-}
-- 
GitLab