/* * Copyright (c) 2002-2017 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] * * This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. * * This product may include a number of subcomponents with * separate copyright notices and license terms. Your use of the source * code for these subcomponents is subject to the terms and * conditions of the subcomponent's license, as noted in the LICENSE file. */ package org.neo4j.ogm.testutil; import java.io.IOException; import java.net.ServerSocket; import java.util.Iterator; import java.util.Scanner; /** * @author Vince Bickers */ public final class TestUtils { public static int getAvailablePort() { try { try (ServerSocket socket = new ServerSocket(0)) { return socket.getLocalPort(); } } catch (IOException e) { throw new IllegalStateException("Cannot find available port: " + e.getMessage(), e); } } public static <T> T firstOrNull(Iterable<T> iterable) { return firstOrNull(iterable.iterator()); } public static <T> T firstOrNull(Iterator<T> iterator) { return iterator.hasNext() ? iterator.next() : null; } public static StringBuilder readCQLFile(String cqlFileName) { StringBuilder cypher = new StringBuilder(); try (Scanner scanner = new Scanner(Thread.currentThread().getContextClassLoader().getResourceAsStream(cqlFileName))) { scanner.useDelimiter(System.getProperty("line.separator")); while (scanner.hasNext()) { cypher.append(scanner.next()).append(' '); } } return cypher; } private TestUtils() { } }