http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/NamedFactory.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/NamedFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/NamedFactory.java index 5574552..dccb426 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/NamedFactory.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/NamedFactory.java @@ -18,9 +18,9 @@ */ package org.apache.sshd.common; -import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; import org.apache.sshd.common.util.Transformer; @@ -36,6 +36,7 @@ public interface NamedFactory<T> extends Factory<T>, NamedResource { * Utility class to help using NamedFactories */ // CHECKSTYLE:OFF + @Deprecated final class Utils { // CHECKSTYLE:ON @@ -43,45 +44,51 @@ public interface NamedFactory<T> extends Factory<T>, NamedResource { throw new UnsupportedOperationException("No instance allowed"); } - /** - * Create an instance of the specified name by looking up the needed factory - * in the list. - * - * @param factories list of available factories - * @param name the factory name to use - * @param <T> type of object to create - * @return a newly created object or {@code null} if the factory is not in the list - */ public static <T> T create(Collection<? extends NamedFactory<T>> factories, String name) { - NamedFactory<? extends T> f = NamedResource.Utils.findByName(name, String.CASE_INSENSITIVE_ORDER, factories); - if (f != null) { - return f.create(); - } else { - return null; - } + return NamedFactory.create(factories, name); } public static <S extends OptionalFeature, T, E extends NamedFactory<T>> List<NamedFactory<T>> setUpTransformedFactories( boolean ignoreUnsupported, Collection<? extends S> preferred, Transformer<? super S, ? extends E> xform) { - List<NamedFactory<T>> avail = new ArrayList<>(preferred.size()); - for (S f : preferred) { - if (ignoreUnsupported || f.isSupported()) { - avail.add(xform.transform(f)); - } - } - return avail; + return NamedFactory.setUpTransformedFactories(ignoreUnsupported, preferred, xform); } public static <T, E extends NamedFactory<T> & OptionalFeature> List<NamedFactory<T>> setUpBuiltinFactories( boolean ignoreUnsupported, Collection<? extends E> preferred) { - List<NamedFactory<T>> avail = new ArrayList<>(preferred.size()); - for (E f : preferred) { - if (ignoreUnsupported || f.isSupported()) { - avail.add(f); - } - } + return NamedFactory.setUpBuiltinFactories(ignoreUnsupported, preferred); + } + } - return avail; + /** + * Create an instance of the specified name by looking up the needed factory + * in the list. + * + * @param factories list of available factories + * @param name the factory name to use + * @param <T> type of object to create + * @return a newly created object or {@code null} if the factory is not in the list + */ + static <T> T create(Collection<? extends NamedFactory<T>> factories, String name) { + NamedFactory<? extends T> f = NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, factories); + if (f != null) { + return f.create(); + } else { + return null; } } + + static <S extends OptionalFeature, T, E extends NamedFactory<T>> List<NamedFactory<T>> setUpTransformedFactories( + boolean ignoreUnsupported, Collection<? extends S> preferred, Transformer<? super S, ? extends E> xform) { + return preferred.stream() + .filter(f -> ignoreUnsupported || f.isSupported()) + .map(xform::transform) + .collect(Collectors.toList()); + } + + static <T, E extends NamedFactory<T> & OptionalFeature> List<NamedFactory<T>> setUpBuiltinFactories( + boolean ignoreUnsupported, Collection<? extends E> preferred) { + return preferred.stream() + .filter(f -> ignoreUnsupported || f.isSupported()) + .collect(Collectors.toList()); + } }
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/NamedResource.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/NamedResource.java b/sshd-core/src/main/java/org/apache/sshd/common/NamedResource.java index 87b1e63..6aab4409 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/NamedResource.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/NamedResource.java @@ -19,9 +19,7 @@ package org.apache.sshd.common; -import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -35,31 +33,15 @@ import org.apache.sshd.common.util.Transformer; public interface NamedResource { /** - * Compares 2 {@link NamedResource}s according to their {@link #getName()} - * value case <U>insensitive</U> + * Returns the value of {@link #getName()} - or {@code null} if argument is {@code null} */ - Comparator<NamedResource> BY_NAME_COMPARATOR = new Comparator<NamedResource>() { - @Override - public int compare(NamedResource r1, NamedResource r2) { - String n1 = r1.getName(); - String n2 = r2.getName(); - return String.CASE_INSENSITIVE_ORDER.compare(n1, n2); - } - }; + Transformer<NamedResource, String> NAME_EXTRACTOR = input -> input == null ? null : input.getName(); /** - * Returns the value of {@link #getName()} - or {@code null} if argument is {@code null} + * Compares 2 {@link NamedResource}s according to their {@link #getName()} + * value case <U>insensitive</U> */ - Transformer<NamedResource, String> NAME_EXTRACTOR = new Transformer<NamedResource, String>() { - @Override - public String transform(NamedResource input) { - if (input == null) { - return null; - } else { - return input.getName(); - } - } - }; + Comparator<NamedResource> BY_NAME_COMPARATOR = Comparator.comparing(NAME_EXTRACTOR, String.CASE_INSENSITIVE_ORDER); /** * @return The resource name @@ -70,6 +52,7 @@ public interface NamedResource { * Utility class to help using {@link NamedResource}s */ // CHECKSTYLE:OFF + @Deprecated final class Utils { // CHECKSTYLE:ON @@ -77,74 +60,73 @@ public interface NamedResource { throw new UnsupportedOperationException("No instance allowed"); } - /** - * @param resources The named resources - * @return A {@link List} of all the factories names - in same order - * as they appear in the input collection - */ public static List<String> getNameList(Collection<? extends NamedResource> resources) { - if (GenericUtils.isEmpty(resources)) { - return Collections.emptyList(); - } - - List<String> names = new ArrayList<>(resources.size()); - for (NamedResource r : resources) { - names.add(r.getName()); - } - - return names; + return NamedResource.getNameList(resources); } - /** - * @param resources list of available resources - * @return A comma separated list of factory names - */ public static String getNames(Collection<? extends NamedResource> resources) { - return GenericUtils.join(getNameList(resources), ','); + return NamedResource.getNames(resources); } - /** - * Remove the resource identified by the name from the list. - * - * @param <R> The generic resource type - * @param name Name of the resource - ignored if {@code null}/empty - * @param c The {@link Comparator} to decide whether the {@link NamedResource#getName()} - * matches the <tt>name</tt> parameter - * @param resources The {@link NamedResource} to check - ignored if {@code null}/empty - * @return the removed resource from the list or {@code null} if not in the list - */ public static <R extends NamedResource> R removeByName(String name, Comparator<? super String> c, Collection<? extends R> resources) { - R r = findByName(name, c, resources); - if (r != null) { - resources.remove(r); - } - - return r; + return NamedResource.removeByName(name, c, resources); } - /** - * @param <R> The generic resource type - * @param name Name of the resource - ignored if {@code null}/empty - * @param c The {@link Comparator} to decide whether the {@link NamedResource#getName()} - * matches the <tt>name</tt> parameter - * @param resources The {@link NamedResource} to check - ignored if {@code null}/empty - * @return The <U>first</U> resource whose name matches the parameter (by invoking - * {@link Comparator#compare(Object, Object)} - {@code null} if no match found - */ public static <R extends NamedResource> R findByName(String name, Comparator<? super String> c, Collection<? extends R> resources) { - if (GenericUtils.isEmpty(name) || GenericUtils.isEmpty(resources)) { - return null; - } - - for (R r : resources) { - String n = r.getName(); - int nRes = c.compare(name, n); - if (nRes == 0) { - return r; - } - } - - return null; + return NamedResource.findByName(name, c, resources); + } + } + + /** + * @param resources The named resources + * @return A {@link List} of all the factories names - in same order + * as they appear in the input collection + */ + static List<String> getNameList(Collection<? extends NamedResource> resources) { + return GenericUtils.map(resources, NamedResource::getName); + } + + /** + * @param resources list of available resources + * @return A comma separated list of factory names + */ + static String getNames(Collection<? extends NamedResource> resources) { + return GenericUtils.join(getNameList(resources), ','); + } + + /** + * Remove the resource identified by the name from the list. + * + * @param <R> The generic resource type + * @param name Name of the resource - ignored if {@code null}/empty + * @param c The {@link Comparator} to decide whether the {@link NamedResource#getName()} + * matches the <tt>name</tt> parameter + * @param resources The {@link NamedResource} to check - ignored if {@code null}/empty + * @return the removed resource from the list or {@code null} if not in the list + */ + static <R extends NamedResource> R removeByName(String name, Comparator<? super String> c, Collection<? extends R> resources) { + R r = findByName(name, c, resources); + if (r != null) { + resources.remove(r); } + return r; + } + + /** + * @param <R> The generic resource type + * @param name Name of the resource - ignored if {@code null}/empty + * @param c The {@link Comparator} to decide whether the {@link NamedResource#getName()} + * matches the <tt>name</tt> parameter + * @param resources The {@link NamedResource} to check - ignored if {@code null}/empty + * @return The <U>first</U> resource whose name matches the parameter (by invoking + * {@link Comparator#compare(Object, Object)} - {@code null} if no match found + */ + static <R extends NamedResource> R findByName(String name, Comparator<? super String> c, Collection<? extends R> resources) { + return GenericUtils.isEmpty(name) + ? null + : GenericUtils.stream(resources) + .filter(r -> c.compare(name, r.getName()) == 0) + .findFirst() + .orElse(null); } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/OptionalFeature.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/OptionalFeature.java b/sshd-core/src/main/java/org/apache/sshd/common/OptionalFeature.java index 54ec1b4..6bc6eac 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/OptionalFeature.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/OptionalFeature.java @@ -58,6 +58,7 @@ public interface OptionalFeature { * Utility class to help using {@link OptionalFeature}s */ // CHECKSTYLE:OFF + @Deprecated final class Utils { // CHECKSTYLE:ON @@ -66,45 +67,51 @@ public interface OptionalFeature { } public static OptionalFeature of(boolean supported) { - return supported ? TRUE : FALSE; + return OptionalFeature.of(supported); } public static OptionalFeature all(final Collection<? extends OptionalFeature> features) { - return new OptionalFeature() { - @Override - public boolean isSupported() { - if (GenericUtils.isEmpty(features)) { - return false; - } - - for (OptionalFeature f : features) { - if (!f.isSupported()) { - return false; - } - } - - return true; - } - }; + return OptionalFeature.all(features); } public static OptionalFeature any(final Collection<? extends OptionalFeature> features) { - return new OptionalFeature() { - @Override - public boolean isSupported() { - if (GenericUtils.isEmpty(features)) { - return false; - } - - for (OptionalFeature f : features) { - if (f.isSupported()) { - return true; - } - } + return OptionalFeature.any(features); + } + } + static OptionalFeature of(boolean supported) { + return supported ? TRUE : FALSE; + } + + static OptionalFeature all(final Collection<? extends OptionalFeature> features) { + return () -> { + if (GenericUtils.isEmpty(features)) { + return false; + } + + for (OptionalFeature f : features) { + if (!f.isSupported()) { return false; } - }; - } + } + + return true; + }; + } + + static OptionalFeature any(final Collection<? extends OptionalFeature> features) { + return () -> { + if (GenericUtils.isEmpty(features)) { + return false; + } + + for (OptionalFeature f : features) { + if (f.isSupported()) { + return true; + } + } + + return false; + }; } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/ServiceFactory.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/ServiceFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/ServiceFactory.java index bd08a52..2335074 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/ServiceFactory.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/ServiceFactory.java @@ -30,6 +30,7 @@ public interface ServiceFactory extends NamedResource { * Utility class to help using NamedFactories */ // CHECKSTYLE:OFF + @Deprecated final class Utils { // CHECKSTYLE:ON @@ -37,24 +38,28 @@ public interface ServiceFactory extends NamedResource { throw new UnsupportedOperationException("No instance allowed"); } - /** - * Create an instance of the specified name by looking up the needed factory - * in the list (case <U>insensitive</U>. - * - * @param factories list of available factories - * @param name the factory name to use - * @param session the referenced {@link Session} - * @return a newly created object or {@code null} if the factory is not in the list - * @throws IOException if session creation failed - * @see ServiceFactory#create(Session) - */ public static Service create(Collection<? extends ServiceFactory> factories, String name, Session session) throws IOException { - ServiceFactory factory = NamedResource.Utils.findByName(name, String.CASE_INSENSITIVE_ORDER, factories); - if (factory == null) { - return null; - } else { - return factory.create(session); - } + return ServiceFactory.create(factories, name, session); + } + } + + /** + * Create an instance of the specified name by looking up the needed factory + * in the list (case <U>insensitive</U>. + * + * @param factories list of available factories + * @param name the factory name to use + * @param session the referenced {@link Session} + * @return a newly created object or {@code null} if the factory is not in the list + * @throws IOException if session creation failed + * @see ServiceFactory#create(Session) + */ + static Service create(Collection<? extends ServiceFactory> factories, String name, Session session) throws IOException { + ServiceFactory factory = NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, factories); + if (factory == null) { + return null; + } else { + return factory.create(session); } } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java b/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java index 4ceb0c3..35205c1 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java @@ -18,12 +18,10 @@ */ package org.apache.sshd.common; -import java.lang.reflect.Field; import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; -import java.util.function.Predicate; import org.apache.sshd.common.util.GenericUtils; import org.apache.sshd.common.util.logging.LoggingUtils; @@ -153,19 +151,16 @@ public final class SshConstants { private static class LazyMessagesMapHolder { private static final Map<Integer, String> MESSAGES_MAP = - LoggingUtils.generateMnemonicMap(SshConstants.class, new Predicate<Field>() { - @Override - public boolean test(Field f) { - String name = f.getName(); - if (!name.startsWith("SSH_MSG_")) { - return false; - } - - try { - return !isAmbiguousOpcode(f.getByte(null)); - } catch (Exception e) { - return false; - } + LoggingUtils.generateMnemonicMap(SshConstants.class, f -> { + String name = f.getName(); + if (!name.startsWith("SSH_MSG_")) { + return false; + } + + try { + return !isAmbiguousOpcode(f.getByte(null)); + } catch (Exception e) { + return false; } }); } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/SyspropsMapWrapper.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/SyspropsMapWrapper.java b/sshd-core/src/main/java/org/apache/sshd/common/SyspropsMapWrapper.java index 757f709..6dcb615 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/SyspropsMapWrapper.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/SyspropsMapWrapper.java @@ -19,14 +19,13 @@ package org.apache.sshd.common; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Properties; import java.util.Set; import java.util.TreeSet; +import java.util.stream.Collectors; import org.apache.sshd.common.util.GenericUtils; import org.apache.sshd.common.util.Pair; @@ -134,16 +133,12 @@ public final class SyspropsMapWrapper implements Map<String, Object> { @Override public Set<String> keySet() { - Properties props = System.getProperties(); - Set<String> keys = new TreeSet<>(); - // filter out any non-SSHD properties - for (String key : props.stringPropertyNames()) { - if (isMappedSyspropKey(key)) { - keys.add(getUnmappedSyspropKey(key)); - } - } - - return keys; + return System.getProperties() + .stringPropertyNames().stream() + // filter out any non-SSHD properties + .filter(SyspropsMapWrapper::isMappedSyspropKey) + .map(SyspropsMapWrapper::getUnmappedSyspropKey) + .collect(Collectors.toSet()); } @Override @@ -152,7 +147,7 @@ public final class SyspropsMapWrapper implements Map<String, Object> { } @Override - public void putAll(Map<? extends String, ? extends Object> m) { + public void putAll(Map<? extends String, ?> m) { throw new UnsupportedOperationException("sysprops#putAll(" + m + ") N/A"); } @@ -170,18 +165,11 @@ public final class SyspropsMapWrapper implements Map<String, Object> { public Collection<Object> values() { Properties props = System.getProperties(); // return a copy in order to avoid concurrent modifications - List<Object> values = new ArrayList<>(props.size()); - for (String key : props.stringPropertyNames()) { - if (!isMappedSyspropKey(key)) { - continue; - } - Object v = props.getProperty(key); - if (v != null) { - values.add(v); - } - } - - return values; + return props + .stringPropertyNames().stream() + .filter(SyspropsMapWrapper::isMappedSyspropKey) + .map(props::get) + .collect(Collectors.toList()); } @Override http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java index b2e4c1c..d611d1d 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java @@ -68,7 +68,7 @@ public abstract class AbstractChannel /** * Default growth factor function used to resize response buffers */ - public static final Int2IntFunction RESPONSE_BUFFER_GROWTH_FACTOR = Int2IntFunction.Utils.add(Byte.SIZE); + public static final Int2IntFunction RESPONSE_BUFFER_GROWTH_FACTOR = Int2IntFunction.add(Byte.SIZE); protected enum GracefulState { Opened, CloseSent, CloseReceived, Closed @@ -125,11 +125,7 @@ public abstract class AbstractChannel } public void addRequestHandlers(Collection<? extends RequestHandler<Channel>> handlers) { - if (GenericUtils.size(handlers) > 0) { - for (RequestHandler<Channel> h : handlers) { - addRequestHandler(h); - } - } + GenericUtils.forEach(handlers, this::addRequestHandler); } public void addRequestHandler(RequestHandler<Channel> handler) { @@ -505,14 +501,11 @@ public abstract class AbstractChannel try { long timeout = PropertyResolverUtils.getLongProperty(channel, FactoryManager.CHANNEL_CLOSE_TIMEOUT, FactoryManager.DEFAULT_CHANNEL_CLOSE_TIMEOUT); - s.writePacket(buffer, timeout, TimeUnit.MILLISECONDS).addListener(new SshFutureListener<IoWriteFuture>() { - @Override - public void operationComplete(IoWriteFuture future) { - if (future.isWritten()) { - handleClosePacketWritten(channel, immediately); - } else { - handleClosePacketWriteFailure(channel, immediately, future.getException()); - } + s.writePacket(buffer, timeout, TimeUnit.MILLISECONDS).addListener(future -> { + if (future.isWritten()) { + handleClosePacketWritten(channel, immediately); + } else { + handleClosePacketWriteFailure(channel, immediately, future.getException()); } }); } catch (IOException e) { @@ -815,7 +808,7 @@ public abstract class AbstractChannel @Override public <T> T resolveAttribute(AttributeKey<T> key) { - return AttributeStore.Utils.resolveAttribute(this, key); + return AttributeStore.resolveAttribute(this, key); } protected void configureWindow() { http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelRequestHandler.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelRequestHandler.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelRequestHandler.java index 3268469..7fdaf1c 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelRequestHandler.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelRequestHandler.java @@ -28,13 +28,7 @@ import org.apache.sshd.common.util.buffer.Buffer; public interface ChannelRequestHandler extends RequestHandler<Channel> { // required because of generics issues - Transformer<ChannelRequestHandler, RequestHandler<Channel>> CHANN2HNDLR = - new Transformer<ChannelRequestHandler, RequestHandler<Channel>>() { - @Override - public RequestHandler<Channel> transform(ChannelRequestHandler input) { - return input; - } - }; + Transformer<ChannelRequestHandler, RequestHandler<Channel>> CHANN2HNDLR = Transformer.identity(); @Override Result process(Channel channel, String request, boolean wantReply, Buffer buffer) throws Exception; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java index 82e3cbf..f8c01c7 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java @@ -20,11 +20,12 @@ package org.apache.sshd.common.channel; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.EnumMap; import java.util.EnumSet; -import java.util.HashMap; import java.util.Map; import java.util.Set; +import java.util.function.Function; import org.apache.sshd.common.util.GenericUtils; @@ -293,15 +294,8 @@ public enum PtyMode { public static final Set<PtyMode> MODES = Collections.unmodifiableSet(EnumSet.allOf(PtyMode.class)); private static final Map<Integer, PtyMode> COMMANDS = - Collections.unmodifiableMap(new HashMap<Integer, PtyMode>(MODES.size()) { - private static final long serialVersionUID = 1L; // we're not serializing it - - { - for (PtyMode c : PtyMode.MODES) { - put(c.toInt(), c); - } - } - }); + Collections.unmodifiableMap( + GenericUtils.toSortedMap(MODES, PtyMode::toInt, Function.identity(), Comparator.naturalOrder())); private int v; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/channel/SttySupport.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/SttySupport.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/SttySupport.java index b7ee317..650fe55 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/SttySupport.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/SttySupport.java @@ -245,9 +245,7 @@ public final class SttySupport { */ public static String exec(final String cmd) throws IOException, InterruptedException { - return exec("sh", - "-c", - cmd); + return exec("sh", "-c", cmd); } /** http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/channel/Window.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/Window.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/Window.java index d85e51d..0ca48ef 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/Window.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/Window.java @@ -47,13 +47,9 @@ public class Window extends AbstractLoggingBean implements java.nio.channels.Cha /** * Default {@link Predicate} used to test if space became available */ - public static final Predicate<Window> SPACE_AVAILABLE_PREDICATE = new Predicate<Window>() { - @SuppressWarnings("synthetic-access") - @Override - public boolean test(Window input) { - // NOTE: we do not call "getSize()" on purpose in order to avoid the lock - return input.sizeHolder.get() > 0; - } + public static final Predicate<Window> SPACE_AVAILABLE_PREDICATE = input -> { + // NOTE: we do not call "getSize()" on purpose in order to avoid the lock + return input.sizeHolder.get() > 0; }; private final AtomicBoolean closed = new AtomicBoolean(false); @@ -230,13 +226,9 @@ public class Window extends AbstractLoggingBean implements java.nio.channels.Cha checkInitialized("waitAndConsume"); synchronized (lock) { - waitForCondition(new Predicate<Window>() { - @SuppressWarnings("synthetic-access") - @Override - public boolean test(Window input) { - // NOTE: we do not call "getSize()" on purpose in order to avoid the lock - return input.sizeHolder.get() >= len; - } + waitForCondition(input -> { + // NOTE: we do not call "getSize()" on purpose in order to avoid the lock + return input.sizeHolder.get() >= len; }, maxWaitTime); if (log.isDebugEnabled()) { http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/cipher/BuiltinCiphers.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/cipher/BuiltinCiphers.java b/sshd-core/src/main/java/org/apache/sshd/common/cipher/BuiltinCiphers.java index 409bade..3c3403c 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/cipher/BuiltinCiphers.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/cipher/BuiltinCiphers.java @@ -98,7 +98,7 @@ public enum BuiltinCiphers implements CipherFactory { * and then the JVM re-started. Therefore, the answer is not going to * change while the JVM is running */ - this.supported = Constants.NONE.equals(factoryName) || Cipher.Utils.checkSupported(this.transformation, this.keysize); + this.supported = Constants.NONE.equals(factoryName) || Cipher.checkSupported(this.transformation, this.keysize); } @Override @@ -237,7 +237,7 @@ public enum BuiltinCiphers implements CipherFactory { * (case <U>insensitive</U>) the provided name - {@code null} if no match */ public static BuiltinCiphers fromFactoryName(String name) { - return NamedResource.Utils.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); + return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); } /** http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/cipher/Cipher.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/cipher/Cipher.java b/sshd-core/src/main/java/org/apache/sshd/common/cipher/Cipher.java index 6f35973..dbf7f94 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/cipher/Cipher.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/cipher/Cipher.java @@ -69,6 +69,7 @@ public interface Cipher extends CipherInformation { * Utility class to help using {@link Cipher}s */ // CHECKSTYLE:OFF + @Deprecated final class Utils { // CHECKSTYLE:ON @@ -76,26 +77,30 @@ public interface Cipher extends CipherInformation { throw new UnsupportedOperationException("No instance allowed"); } - /** - * @param xform The full cipher transformation - e.g., AES/CBC/NoPadding - - * never {@code null}/empty - * @param keyLength The required key length in bits - always positive - * @return {@code true} if the cipher transformation <U>and</U> required - * key length are supported - * @see javax.crypto.Cipher#getMaxAllowedKeyLength(String) - */ public static boolean checkSupported(String xform, int keyLength) { - ValidateUtils.checkNotNullAndNotEmpty(xform, "No transformation"); - if (keyLength <= 0) { - throw new IllegalArgumentException("Bad key length (" + keyLength + ") for cipher=" + xform); - } + return Cipher.checkSupported(xform, keyLength); + } + } + + /** + * @param xform The full cipher transformation - e.g., AES/CBC/NoPadding - + * never {@code null}/empty + * @param keyLength The required key length in bits - always positive + * @return {@code true} if the cipher transformation <U>and</U> required + * key length are supported + * @see javax.crypto.Cipher#getMaxAllowedKeyLength(String) + */ + static boolean checkSupported(String xform, int keyLength) { + ValidateUtils.checkNotNullAndNotEmpty(xform, "No transformation"); + if (keyLength <= 0) { + throw new IllegalArgumentException("Bad key length (" + keyLength + ") for cipher=" + xform); + } - try { - int maxKeyLength = javax.crypto.Cipher.getMaxAllowedKeyLength(xform); - return maxKeyLength >= keyLength; - } catch (Exception e) { - return false; - } + try { + int maxKeyLength = javax.crypto.Cipher.getMaxAllowedKeyLength(xform); + return maxKeyLength >= keyLength; + } catch (Exception e) { + return false; } } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java b/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java index dbc2359..9dfd064 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java @@ -24,13 +24,12 @@ import java.security.spec.ECFieldFp; import java.security.spec.ECParameterSpec; import java.security.spec.ECPoint; import java.security.spec.EllipticCurve; -import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.EnumSet; import java.util.List; import java.util.Set; -import java.util.TreeSet; +import java.util.stream.Collectors; import org.apache.sshd.common.NamedResource; import org.apache.sshd.common.OptionalFeature; @@ -103,49 +102,31 @@ public enum ECCurves implements NamedResource, OptionalFeature { * A {@link Set} of all the known curves names */ public static final Set<String> NAMES = - Collections.unmodifiableSet(new TreeSet<String>(String.CASE_INSENSITIVE_ORDER) { - private static final long serialVersionUID = 1L; // we're not serializing it - - { - for (ECCurves c : VALUES) { - add(c.getName()); - } - } - }); + Collections.unmodifiableSet(GenericUtils.mapSort( + VALUES, + ECCurves::getName, + String.CASE_INSENSITIVE_ORDER)); /** * A {@link Set} of all the known curves key types */ public static final Set<String> KEY_TYPES = - Collections.unmodifiableSet(new TreeSet<String>(String.CASE_INSENSITIVE_ORDER) { - private static final long serialVersionUID = 1L; // we're not serializing it - - { - for (ECCurves c : VALUES) { - add(c.getKeyType()); - } - } - }); - - public static final Comparator<ECCurves> BY_KEY_SIZE = new Comparator<ECCurves>() { - @Override - public int compare(ECCurves o1, ECCurves o2) { - int k1 = (o1 == null) ? Integer.MAX_VALUE : o1.getKeySize(); - int k2 = (o2 == null) ? Integer.MAX_VALUE : o2.getKeySize(); - return Integer.compare(k1, k2); - } + Collections.unmodifiableSet(GenericUtils.mapSort( + VALUES, + ECCurves::getKeyType, + String.CASE_INSENSITIVE_ORDER)); + + public static final Comparator<ECCurves> BY_KEY_SIZE = (o1, o2) -> { + int k1 = (o1 == null) ? Integer.MAX_VALUE : o1.getKeySize(); + int k2 = (o2 == null) ? Integer.MAX_VALUE : o2.getKeySize(); + return Integer.compare(k1, k2); }; public static final List<ECCurves> SORTED_KEY_SIZE = - Collections.unmodifiableList( - new ArrayList<ECCurves>(VALUES) { - // Not serializing it - private static final long serialVersionUID = 1L; - - { - Collections.sort(this, BY_KEY_SIZE); - } - }); + Collections.unmodifiableList(VALUES.stream() + .sorted(BY_KEY_SIZE) + .collect(Collectors.toList())); + private final String name; private final String keyType; private final ECParameterSpec params; @@ -230,7 +211,7 @@ public enum ECCurves implements NamedResource, OptionalFeature { * match found */ public static ECCurves fromCurveName(String name) { - return NamedResource.Utils.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); + return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); } /** http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java b/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java index 8365226..bf547c9 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java @@ -151,7 +151,7 @@ public enum BuiltinCompressions implements CompressionFactory { } public static BuiltinCompressions fromFactoryName(String name) { - return NamedResource.Utils.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); + return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); } /** http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java b/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java index 4031a74..246cae0 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java @@ -41,7 +41,7 @@ public abstract class NamedFactoriesListParseResult<T, F extends NamedFactory<T> @Override public String toString() { - return "parsed=" + NamedResource.Utils.getNames(getParsedFactories()) + return "parsed=" + NamedResource.getNames(getParsedFactories()) + ";unknown=" + GenericUtils.join(getUnsupportedFactories(), ','); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java b/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java index 3559d64..feb45f4 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java @@ -51,7 +51,7 @@ public abstract class NamedResourceListParseResult<R extends NamedResource> exte @Override public String toString() { - return "parsed=" + NamedResource.Utils.getNames(getParsedResources()) + return "parsed=" + NamedResource.getNames(getParsedResources()) + ";unknown=" + GenericUtils.join(getUnsupportedResources(), ','); } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/SshConfigFileReader.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/SshConfigFileReader.java b/sshd-core/src/main/java/org/apache/sshd/common/config/SshConfigFileReader.java index 27a42a2..c11c865 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/SshConfigFileReader.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/config/SshConfigFileReader.java @@ -501,7 +501,7 @@ public final class SshConfigFileReader { ValidateUtils.checkTrue(lenient || GenericUtils.isEmpty(unsupported), "Unsupported cipher(s) (%s) in %s", unsupported, value); List<NamedFactory<Cipher>> factories = - BuiltinFactory.Utils.setUpFactories(ignoreUnsupported, result.getParsedFactories()); + BuiltinFactory.setUpFactories(ignoreUnsupported, result.getParsedFactories()); manager.setCipherFactories(ValidateUtils.checkNotNullAndNotEmpty(factories, "No known/unsupported ciphers(s): %s", value)); return manager; } @@ -519,7 +519,7 @@ public final class SshConfigFileReader { ValidateUtils.checkTrue(lenient || GenericUtils.isEmpty(unsupported), "Unsupported signatures (%s) in %s", unsupported, value); List<NamedFactory<Signature>> factories = - BuiltinFactory.Utils.setUpFactories(ignoreUnsupported, result.getParsedFactories()); + BuiltinFactory.setUpFactories(ignoreUnsupported, result.getParsedFactories()); manager.setSignatureFactories(ValidateUtils.checkNotNullAndNotEmpty(factories, "No known/supported signatures: %s", value)); return manager; } @@ -537,7 +537,7 @@ public final class SshConfigFileReader { ValidateUtils.checkTrue(lenient || GenericUtils.isEmpty(unsupported), "Unsupported MAC(s) (%s) in %s", unsupported, value); List<NamedFactory<Mac>> factories = - BuiltinFactory.Utils.setUpFactories(ignoreUnsupported, result.getParsedFactories()); + BuiltinFactory.setUpFactories(ignoreUnsupported, result.getParsedFactories()); manager.setMacFactories(ValidateUtils.checkNotNullAndNotEmpty(factories, "No known/supported MAC(s): %s", value)); return manager; } @@ -573,7 +573,7 @@ public final class SshConfigFileReader { ValidateUtils.checkTrue(lenient || GenericUtils.isEmpty(unsupported), "Unsupported KEX(s) (%s) in %s", unsupported, value); List<NamedFactory<KeyExchange>> factories = - NamedFactory.Utils.setUpTransformedFactories(ignoreUnsupported, result.getParsedFactories(), xformer); + NamedFactory.setUpTransformedFactories(ignoreUnsupported, result.getParsedFactories(), xformer); manager.setKeyExchangeFactories(ValidateUtils.checkNotNullAndNotEmpty(factories, "No known/supported KEXS(s): %s", value)); return manager; } @@ -621,7 +621,7 @@ public final class SshConfigFileReader { ValidateUtils.checkTrue(lenient || GenericUtils.isEmpty(unsupported), "Unsupported compressions(s) (%s) in %s", unsupported, value); List<NamedFactory<Compression>> factories = - BuiltinFactory.Utils.setUpFactories(ignoreUnsupported, result.getParsedFactories()); + BuiltinFactory.setUpFactories(ignoreUnsupported, result.getParsedFactories()); // SSH can work without compression if (GenericUtils.size(factories) > 0) { manager.setCompressionFactories(factories); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/keys/BuiltinIdentities.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/BuiltinIdentities.java b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/BuiltinIdentities.java index f63ca5e..7a3623b 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/BuiltinIdentities.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/BuiltinIdentities.java @@ -33,7 +33,6 @@ import java.util.Collections; import java.util.EnumSet; import java.util.Objects; import java.util.Set; -import java.util.TreeSet; import org.apache.sshd.common.NamedResource; import org.apache.sshd.common.util.GenericUtils; @@ -56,13 +55,9 @@ public enum BuiltinIdentities implements Identity { Collections.unmodifiableSet(EnumSet.allOf(BuiltinIdentities.class)); public static final Set<String> NAMES = - Collections.unmodifiableSet(new TreeSet<String>(String.CASE_INSENSITIVE_ORDER) { - private static final long serialVersionUID = 1L; // we're not serializing it - - { - addAll(NamedResource.Utils.getNameList(VALUES)); - } - }); + Collections.unmodifiableSet(GenericUtils.asSortedSet( + String.CASE_INSENSITIVE_ORDER, + NamedResource.getNameList(VALUES))); private final String name; private final String algorithm; @@ -111,7 +106,7 @@ public enum BuiltinIdentities implements Identity { * value matches case <U>insensitive</U> or {@code null} if no match found */ public static BuiltinIdentities fromName(String name) { - return NamedResource.Utils.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); + return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); } /** http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/keys/KeyUtils.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/KeyUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/KeyUtils.java index 5dc90ef..c06f9e9 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/KeyUtils.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/KeyUtils.java @@ -296,6 +296,7 @@ public final class KeyUtils { for (String n : names) { PublicKeyEntryDecoder<?, ?> prev = BY_KEY_TYPE_DECODERS_MAP.put(n, decoder); if (prev != null) { + //noinspection UnnecessaryContinue continue; // debug breakpoint } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/keys/PublicKeyEntry.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/PublicKeyEntry.java b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/PublicKeyEntry.java index 5ea14aa..6897338 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/PublicKeyEntry.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/PublicKeyEntry.java @@ -172,7 +172,7 @@ public class PublicKeyEntry implements Serializable { * @throws IllegalArgumentException if bad format found * @see #parsePublicKeyEntry(PublicKeyEntry, String) */ - public static final PublicKeyEntry parsePublicKeyEntry(String data) throws IllegalArgumentException { + public static PublicKeyEntry parsePublicKeyEntry(String data) throws IllegalArgumentException { if (GenericUtils.isEmpty(data)) { return null; } else { @@ -189,7 +189,7 @@ public class PublicKeyEntry implements Serializable { * @return The updated entry instance * @throws IllegalArgumentException if bad format found */ - public static final <E extends PublicKeyEntry> E parsePublicKeyEntry(E entry, String data) throws IllegalArgumentException { + public static <E extends PublicKeyEntry> E parsePublicKeyEntry(E entry, String data) throws IllegalArgumentException { if (GenericUtils.isEmpty(data) || (entry == null)) { return entry; } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/digest/BuiltinDigests.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/digest/BuiltinDigests.java b/sshd-core/src/main/java/org/apache/sshd/common/digest/BuiltinDigests.java index 01ed09a..a600419 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/digest/BuiltinDigests.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/digest/BuiltinDigests.java @@ -130,7 +130,7 @@ public enum BuiltinDigests implements DigestFactory { * (case <U>insensitive</U>) the provided name - {@code null} if no match */ public static BuiltinDigests fromFactoryName(String name) { - return NamedResource.Utils.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); + return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); } /** http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/file/util/BaseFileSystem.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/file/util/BaseFileSystem.java b/sshd-core/src/main/java/org/apache/sshd/common/file/util/BaseFileSystem.java index 367a12e..8755593 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/file/util/BaseFileSystem.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/file/util/BaseFileSystem.java @@ -146,12 +146,9 @@ public abstract class BaseFileSystem<T extends Path> extends FileSystem { } final Pattern regex = Pattern.compile(expr); - return new PathMatcher() { - @Override - public boolean matches(Path path) { - Matcher m = regex.matcher(path.toString()); - return m.matches(); - } + return path -> { + Matcher m = regex.matcher(path.toString()); + return m.matches(); }; } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/file/util/MockFileSystem.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/file/util/MockFileSystem.java b/sshd-core/src/main/java/org/apache/sshd/common/file/util/MockFileSystem.java index 50eba2e..9181c2d 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/file/util/MockFileSystem.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/file/util/MockFileSystem.java @@ -52,6 +52,7 @@ public class MockFileSystem extends FileSystem { @Override public void close() throws IOException { if (open.getAndSet(false)) { + //noinspection UnnecessaryReturnStatement return; // debug breakpoint } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java index 48c8e1c..b774b37 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java @@ -33,7 +33,6 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import org.apache.sshd.client.channel.ClientChannelEvent; -import org.apache.sshd.client.future.OpenFuture; import org.apache.sshd.common.Closeable; import org.apache.sshd.common.Factory; import org.apache.sshd.common.FactoryManager; @@ -41,7 +40,6 @@ import org.apache.sshd.common.PropertyResolverUtils; import org.apache.sshd.common.RuntimeSshException; import org.apache.sshd.common.SshConstants; import org.apache.sshd.common.SshException; -import org.apache.sshd.common.future.SshFutureListener; import org.apache.sshd.common.io.IoAcceptor; import org.apache.sshd.common.io.IoHandler; import org.apache.sshd.common.io.IoHandlerFactory; @@ -86,23 +84,13 @@ public class DefaultTcpipForwarder Collections.unmodifiableSet(EnumSet.of(ClientChannelEvent.OPENED, ClientChannelEvent.CLOSED)); private final ConnectionService service; - private final IoHandlerFactory socksProxyIoHandlerFactory = new IoHandlerFactory() { - @Override - public IoHandler create() { - return new SocksProxy(getConnectionService()); - } - }; + private final IoHandlerFactory socksProxyIoHandlerFactory = () -> new SocksProxy(getConnectionService()); private final Session sessionInstance; private final Map<Integer, SshdSocketAddress> localToRemote = new HashMap<>(); private final Map<Integer, SshdSocketAddress> remoteToLocal = new HashMap<>(); private final Map<Integer, SocksProxy> dynamicLocal = new HashMap<>(); private final Set<LocalForwardingEntry> localForwards = new HashSet<>(); - private final IoHandlerFactory staticIoHandlerFactory = new IoHandlerFactory() { - @Override - public IoHandler create() { - return new StaticIoHandler(); - } - }; + private final IoHandlerFactory staticIoHandlerFactory = StaticIoHandler::new; private final Collection<PortForwardingEventListener> listeners = EventListenerUtils.synchronizedListenersSet(); private final PortForwardingEventListener listenerProxy; @@ -586,19 +574,16 @@ public class DefaultTcpipForwarder session.setAttribute(TcpipClientChannel.class, channel); service.registerChannel(channel); - channel.open().addListener(new SshFutureListener<OpenFuture>() { - @Override - public void operationComplete(OpenFuture future) { - Throwable t = future.getException(); - if (t != null) { - log.warn("Failed ({}) to open channel for session={}: {}", - t.getClass().getSimpleName(), session, t.getMessage()); - if (log.isDebugEnabled()) { - log.debug("sessionCreated(" + session + ") channel=" + channel + " open failure details", t); - } - DefaultTcpipForwarder.this.service.unregisterChannel(channel); - channel.close(false); + channel.open().addListener(future -> { + Throwable t = future.getException(); + if (t != null) { + log.warn("Failed ({}) to open channel for session={}: {}", + t.getClass().getSimpleName(), session, t.getMessage()); + if (log.isDebugEnabled()) { + log.debug("sessionCreated(" + session + ") channel=" + channel + " open failure details", t); } + DefaultTcpipForwarder.this.service.unregisterChannel(channel); + channel.close(false); } }); } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/forward/LocalForwardingEntry.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/LocalForwardingEntry.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/LocalForwardingEntry.java index b45562e..f08afc9 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/forward/LocalForwardingEntry.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/LocalForwardingEntry.java @@ -72,7 +72,7 @@ public class LocalForwardingEntry extends SshdSocketAddress { * @return The <U>first</U> entry whose host or alias matches the host name - case * <U>sensitive</U> <B>and</B> has a matching port - {@code null} if no match found */ - public static final LocalForwardingEntry findMatchingEntry(String host, int port, Collection<? extends LocalForwardingEntry> entries) { + public static LocalForwardingEntry findMatchingEntry(String host, int port, Collection<? extends LocalForwardingEntry> entries) { if (GenericUtils.isEmpty(host) || (port <= 0) || (GenericUtils.isEmpty(entries))) { return null; } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java index 9a04394..5e38e01 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java @@ -25,7 +25,6 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.sshd.client.future.OpenFuture; import org.apache.sshd.common.SshException; -import org.apache.sshd.common.future.SshFutureListener; import org.apache.sshd.common.io.IoHandler; import org.apache.sshd.common.io.IoSession; import org.apache.sshd.common.session.ConnectionService; @@ -154,12 +153,7 @@ public class SocksProxy extends AbstractCloseable implements IoHandler { SshdSocketAddress remote = new SshdSocketAddress(host, port); channel = new TcpipClientChannel(TcpipClientChannel.Type.Direct, session, remote); service.registerChannel(channel); - channel.open().addListener(new SshFutureListener<OpenFuture>() { - @Override - public void operationComplete(OpenFuture future) { - onChannelOpened(future); - } - }); + channel.open().addListener(this::onChannelOpened); } else { super.onMessage(buffer); } @@ -271,12 +265,7 @@ public class SocksProxy extends AbstractCloseable implements IoHandler { SshdSocketAddress remote = new SshdSocketAddress(host, port); channel = new TcpipClientChannel(TcpipClientChannel.Type.Direct, session, remote); service.registerChannel(channel); - channel.open().addListener(new SshFutureListener<OpenFuture>() { - @Override - public void operationComplete(OpenFuture future) { - onChannelOpened(future); - } - }); + channel.open().addListener(this::onChannelOpened); } else { log.debug("Received socks5 connection message"); super.onMessage(buffer); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/global/AbstractOpenSshHostKeysHandler.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/global/AbstractOpenSshHostKeysHandler.java b/sshd-core/src/main/java/org/apache/sshd/common/global/AbstractOpenSshHostKeysHandler.java index 2d8d1f1..ac1507f 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/global/AbstractOpenSshHostKeysHandler.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/global/AbstractOpenSshHostKeysHandler.java @@ -43,8 +43,8 @@ public abstract class AbstractOpenSshHostKeysHandler extends AbstractConnectionS protected AbstractOpenSshHostKeysHandler(String request) { // TODO use only the default parser once ED25519 implementation is complete (see SSHD-440) - this(request, BufferPublicKeyParser.Utils.aggregate(Arrays.asList( - BufferPublicKeyParser.Utils.DEFAULT, + this(request, BufferPublicKeyParser.aggregate(Arrays.asList( + BufferPublicKeyParser.DEFAULT, ED25519BufferPublicKeyParser.IGNORING ))); } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java b/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java index 415d101..80cb8c4 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java @@ -154,7 +154,7 @@ public abstract class AbstractFactoryManager extends AbstractKexFactoryManager i @Override public <T> T resolveAttribute(AttributeKey<T> key) { - return AttributeStore.Utils.resolveAttribute(this, key); + return AttributeStore.resolveAttribute(this, key); } @Override http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/io/BuiltinIoServiceFactoryFactories.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/BuiltinIoServiceFactoryFactories.java b/sshd-core/src/main/java/org/apache/sshd/common/io/BuiltinIoServiceFactoryFactories.java index ba0d014..1310735 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/io/BuiltinIoServiceFactoryFactories.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/io/BuiltinIoServiceFactoryFactories.java @@ -68,7 +68,7 @@ public enum BuiltinIoServiceFactoryFactories implements NamedFactory<IoServiceFa } public static BuiltinIoServiceFactoryFactories fromFactoryName(String name) { - return NamedResource.Utils.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); + return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); } public static BuiltinIoServiceFactoryFactories fromFactoryClass(Class<?> clazz) { http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java index e2e0eab..176d565 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java @@ -105,16 +105,13 @@ public class MinaConnector extends MinaService implements org.apache.sshd.common } } final IoConnectFuture future = new Future(null); - getConnector().connect(address).addListener(new IoFutureListener<ConnectFuture>() { - @Override - public void operationComplete(ConnectFuture cf) { - if (cf.getException() != null) { - future.setException(cf.getException()); - } else if (cf.isCanceled()) { - future.cancel(); - } else { - future.setSession(getSession(cf.getSession())); - } + getConnector().connect(address).addListener((IoFutureListener<ConnectFuture>) cf -> { + if (cf.getException() != null) { + future.setException(cf.getException()); + } else if (cf.isCanceled()) { + future.cancel(); + } else { + future.setSession(getSession(cf.getSession())); } }); return future; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java index b03da53..a6e254d 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java @@ -21,7 +21,6 @@ package org.apache.sshd.common.io.mina; import java.net.SocketAddress; import org.apache.mina.core.buffer.IoBuffer; -import org.apache.mina.core.future.IoFuture; import org.apache.mina.core.future.IoFutureListener; import org.apache.mina.core.future.WriteFuture; import org.apache.sshd.common.Closeable; @@ -116,12 +115,7 @@ public class MinaSession extends AbstractInnerCloseable implements IoSession { @Override public org.apache.sshd.common.future.CloseFuture close(boolean immediately) { org.apache.mina.core.future.CloseFuture cf = immediately ? session.closeNow() : session.closeOnFlush(); - cf.addListener(new IoFutureListener<IoFuture>() { - @Override - public void operationComplete(IoFuture f) { - future.setValue(Boolean.TRUE); - } - }); + cf.addListener(f -> future.setValue(Boolean.TRUE)); return future; } }; @@ -145,15 +139,12 @@ public class MinaSession extends AbstractInnerCloseable implements IoSession { // NOTE !!! data buffer may NOT be re-used when method returns - at least until IoWriteFuture is signalled public IoWriteFuture write(IoBuffer buffer) { final Future future = new Future(null); - session.write(buffer).addListener(new IoFutureListener<WriteFuture>() { - @Override - public void operationComplete(WriteFuture cf) { - Throwable t = cf.getException(); - if (t != null) { - future.setException(t); - } else { - future.setWritten(); - } + session.write(buffer).addListener((IoFutureListener<WriteFuture>) cf -> { + Throwable t = cf.getException(); + if (t != null) { + future.setException(t); + } else { + future.setWritten(); } }); return future; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java index 9867097..1ed9286 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java @@ -34,23 +34,17 @@ public abstract class Nio2CompletionHandler<V, A> implements CompletionHandler<V @Override public void completed(final V result, final A attachment) { - AccessController.doPrivileged(new PrivilegedAction<Object>() { - @Override - public Object run() { - onCompleted(result, attachment); - return null; - } + AccessController.doPrivileged((PrivilegedAction<Object>) () -> { + onCompleted(result, attachment); + return null; }); } @Override public void failed(final Throwable exc, final A attachment) { - AccessController.doPrivileged(new PrivilegedAction<Object>() { - @Override - public Object run() { - onFailed(exc, attachment); - return null; - } + AccessController.doPrivileged((PrivilegedAction<Object>) () -> { + onFailed(exc, attachment); + return null; }); } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java index 080369a..805b9bd 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java @@ -40,7 +40,6 @@ import org.apache.sshd.common.io.IoSession; import org.apache.sshd.common.util.GenericUtils; import org.apache.sshd.common.util.ValidateUtils; import org.apache.sshd.common.util.closeable.AbstractInnerCloseable; -import org.apache.sshd.common.util.closeable.CloseableUtils; /** */ @@ -76,7 +75,7 @@ public abstract class Nio2Service extends AbstractInnerCloseable implements IoSe public void dispose() { try { - long maxWait = CloseableUtils.getMaxCloseWaitTime(getFactoryManager()); + long maxWait = Closeable.getMaxCloseWaitTime(getFactoryManager()); boolean successful = close(true).await(maxWait); if (!successful) { throw new SocketTimeoutException("Failed to receive closure confirmation within " + maxWait + " millis"); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java index a139fa6..5f09c49 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java @@ -234,7 +234,7 @@ public enum BuiltinDHFactories implements DHFactory { * or {@code null} if no match found */ public static BuiltinDHFactories fromFactoryName(String name) { - return NamedResource.Utils.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); + return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); } @Override http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java index 6a7042f..1f8908c 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java @@ -23,6 +23,7 @@ import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PublicKey; + import javax.crypto.KeyAgreement; import javax.crypto.spec.DHParameterSpec; import javax.crypto.spec.DHPublicKeySpec; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java index cce5cd1..1559858 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java @@ -57,10 +57,10 @@ public interface KexFactoryManager extends KeyPairProviderHolder, SignatureFacto */ List<NamedFactory<Cipher>> getCipherFactories(); default String getCipherFactoriesNameList() { - return NamedResource.Utils.getNames(getCipherFactories()); + return NamedResource.getNames(getCipherFactories()); } default List<String> getCipherFactoriesNames() { - return NamedResource.Utils.getNameList(getCipherFactories()); + return NamedResource.getNameList(getCipherFactories()); } void setCipherFactories(List<NamedFactory<Cipher>> cipherFactories); @@ -87,10 +87,10 @@ public interface KexFactoryManager extends KeyPairProviderHolder, SignatureFacto */ List<NamedFactory<Compression>> getCompressionFactories(); default String getCompressionFactoriesNameList() { - return NamedResource.Utils.getNames(getCompressionFactories()); + return NamedResource.getNames(getCompressionFactories()); } default List<String> getCompressionFactoriesNames() { - return NamedResource.Utils.getNameList(getCompressionFactories()); + return NamedResource.getNameList(getCompressionFactories()); } void setCompressionFactories(List<NamedFactory<Compression>> compressionFactories); @@ -117,10 +117,10 @@ public interface KexFactoryManager extends KeyPairProviderHolder, SignatureFacto */ List<NamedFactory<Mac>> getMacFactories(); default String getMacFactoriesNameList() { - return NamedResource.Utils.getNames(getMacFactories()); + return NamedResource.getNames(getMacFactories()); } default List<String> getMacFactoriesNames() { - return NamedResource.Utils.getNameList(getMacFactories()); + return NamedResource.getNameList(getMacFactories()); } void setMacFactories(List<NamedFactory<Mac>> macFactories); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java index 3216a71..da6278a 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java @@ -19,11 +19,11 @@ package org.apache.sshd.common.kex; -import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.EnumSet; import java.util.List; +import java.util.stream.Collectors; import org.apache.sshd.common.util.GenericUtils; @@ -43,34 +43,24 @@ public enum KexProposalOption { S2CLANG(Constants.PROPOSAL_LANG_STOC, "languages (server to client)"); /** + * Compares values according to {@link KexProposalOption#getProposalIndex()} + */ + public static final Comparator<KexProposalOption> BY_PROPOSAL_INDEX = + Comparator.comparingInt(KexProposalOption::getProposalIndex); + + /** * A {@link List} of all the options <U>sorted</U> according to {@link #getProposalIndex()} * * @see #BY_PROPOSAL_INDEX */ public static final List<KexProposalOption> VALUES = - Collections.unmodifiableList(new ArrayList<KexProposalOption>(EnumSet.allOf(KexProposalOption.class)) { - private static final long serialVersionUID = 1L; // we're not serializing it - - { - Collections.sort(this, BY_PROPOSAL_INDEX); - } - }); + Collections.unmodifiableList( + EnumSet.allOf(KexProposalOption.class).stream() + .sorted(BY_PROPOSAL_INDEX) + .collect(Collectors.toList())); public static final int PROPOSAL_MAX = VALUES.size(); - /** - * Compares values according to {@link KexProposalOption#getProposalIndex()} - */ - public static final Comparator<KexProposalOption> BY_PROPOSAL_INDEX = - new Comparator<KexProposalOption>() { - @Override - public int compare(KexProposalOption o1, KexProposalOption o2) { - int i1 = (o1 == null) ? -1 : o1.getProposalIndex(); - int i2 = (o2 == null) ? -1 : o2.getProposalIndex(); - return Integer.compare(i1, i2); - } - }; - private final int proposalIndex; private final String description; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java index bd5f7ed..7930f69 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java @@ -36,6 +36,12 @@ import org.apache.sshd.common.util.logging.LoggingUtils; */ public interface KeyExchange extends NamedResource { + Map<Integer, String> GROUP_KEX_OPCODES_MAP = + LoggingUtils.generateMnemonicMap(SshConstants.class, "SSH_MSG_KEX_DH_GEX_"); + + Map<Integer, String> SIMPLE_KEX_OPCODES_MAP = + LoggingUtils.generateMnemonicMap(SshConstants.class, "SSH_MSG_KEXDH_"); + /** * Initialize the key exchange algorithm. * @@ -91,33 +97,44 @@ public interface KeyExchange extends NamedResource { * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> */ // CHECKSTYLE:OFF + @Deprecated final class Utils { // CHECKSTYLE:ON + public static final Map<Integer, String> GROUP_KEX_OPCODES_MAP = - LoggingUtils.generateMnemonicMap(SshConstants.class, "SSH_MSG_KEX_DH_GEX_"); + KeyExchange.GROUP_KEX_OPCODES_MAP; + public static final Map<Integer, String> SIMPLE_KEX_OPCODES_MAP = - LoggingUtils.generateMnemonicMap(SshConstants.class, "SSH_MSG_KEXDH_"); + KeyExchange.SIMPLE_KEX_OPCODES_MAP; private Utils() { throw new UnsupportedOperationException("No instance allowed"); } public static String getGroupKexOpcodeName(int cmd) { - String name = GROUP_KEX_OPCODES_MAP.get(cmd); - if (GenericUtils.isEmpty(name)) { - return SshConstants.getCommandMessageName(cmd); - } else { - return name; - } + return KeyExchange.getGroupKexOpcodeName(cmd); } public static String getSimpleKexOpcodeName(int cmd) { - String name = SIMPLE_KEX_OPCODES_MAP.get(cmd); - if (GenericUtils.isEmpty(name)) { - return SshConstants.getCommandMessageName(cmd); - } else { - return name; - } + return KeyExchange.getSimpleKexOpcodeName(cmd); + } + } + + static String getGroupKexOpcodeName(int cmd) { + String name = GROUP_KEX_OPCODES_MAP.get(cmd); + if (GenericUtils.isEmpty(name)) { + return SshConstants.getCommandMessageName(cmd); + } else { + return name; + } + } + + static String getSimpleKexOpcodeName(int cmd) { + String name = SIMPLE_KEX_OPCODES_MAP.get(cmd); + if (GenericUtils.isEmpty(name)) { + return SshConstants.getCommandMessageName(cmd); + } else { + return name; } } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java index 1991e99..8d36508 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java @@ -25,10 +25,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.security.GeneralSecurityException; import java.security.KeyPair; -import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; -import java.util.List; import org.apache.sshd.common.util.GenericUtils; import org.apache.sshd.common.util.io.IoUtils; @@ -53,27 +50,12 @@ public abstract class AbstractFileKeyPairProvider extends AbstractResourceKeyPai } public void setFiles(Collection<File> files) { - if (GenericUtils.isEmpty(files)) { - setPaths(Collections.emptyList()); - } else { - List<Path> paths = new ArrayList<>(files.size()); - for (File f : files) { - paths.add(f.toPath()); - } - setPaths(paths); - } + setPaths(GenericUtils.map(files, File::toPath)); } public void setPaths(Collection<? extends Path> paths) { - int numPaths = GenericUtils.size(paths); - Collection<Path> resolved = (numPaths <= 0) ? Collections.emptyList() : new ArrayList<>(paths.size()); // use absolute path in order to have unique cache keys - if (numPaths > 0) { - for (Path p : paths) { - resolved.add(p.toAbsolutePath()); - } - } - + Collection<Path> resolved = GenericUtils.map(paths, Path::toAbsolutePath); resetCacheMap(resolved); files = resolved; } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractKeyPairProvider.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractKeyPairProvider.java b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractKeyPairProvider.java index 5ce1eae..5cd13c1 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractKeyPairProvider.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractKeyPairProvider.java @@ -18,13 +18,6 @@ */ package org.apache.sshd.common.keyprovider; -import java.security.KeyPair; -import java.util.ArrayList; -import java.util.List; - -import org.apache.sshd.common.config.keys.KeyUtils; -import org.apache.sshd.common.util.GenericUtils; -import org.apache.sshd.common.util.ValidateUtils; import org.apache.sshd.common.util.logging.AbstractLoggingBean; /** @@ -33,37 +26,9 @@ import org.apache.sshd.common.util.logging.AbstractLoggingBean; * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> */ public abstract class AbstractKeyPairProvider extends AbstractLoggingBean implements KeyPairProvider { - // TODO move this code as default interface methods in Java-8 + protected AbstractKeyPairProvider() { super(); } - @Override - public KeyPair loadKey(String type) { - ValidateUtils.checkNotNullAndNotEmpty(type, "No key type to load"); - - Iterable<KeyPair> keys = loadKeys(); - for (KeyPair key : keys) { - String keyType = KeyUtils.getKeyType(key); - if (type.equals(keyType)) { - return key; - } - } - return null; - } - - @Override - public List<String> getKeyTypes() { - List<String> types = new ArrayList<>(); - Iterable<KeyPair> keys = loadKeys(); - for (KeyPair key : keys) { - String type = KeyUtils.getKeyType(key); - if (GenericUtils.isEmpty(type) || types.contains(type)) { - continue; - } - types.add(type); - } - - return types; - } }
