diff --git a/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyCheckService.java b/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyCheckService.java index ffcd368c4bf3e..ee63a08f748ef 100644 --- a/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyCheckService.java +++ b/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyCheckService.java @@ -25,7 +25,6 @@ import java.text.SimpleDateFormat; import java.util.Date; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.kernel.configuration.Settings; @@ -119,18 +118,13 @@ public Result runFullConsistencyCheck( final File storeDir, Config tuningConfigu ConsistencySummaryStatistics summary; final File reportFile = chooseReportPath( storeDir, tuningConfiguration ); - Log reportLog = new ConsistencyReportLog( Suppliers.lazySingleton( new Supplier() - { - @Override - public PrintWriter get() + Log reportLog = new ConsistencyReportLog( Suppliers.lazySingleton( () -> { + try { - try - { - return new PrintWriter( createOrOpenAsOuputStream( fileSystem, reportFile, true ) ); - } catch ( IOException e ) - { - throw new RuntimeException( e ); - } + return new PrintWriter( createOrOpenAsOuputStream( fileSystem, reportFile, true ) ); + } catch ( IOException e ) + { + throw new RuntimeException( e ); } } ) ); diff --git a/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyReportLog.java b/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyReportLog.java index 1a2bc3ca9977d..5587bddb1c8d4 100644 --- a/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyReportLog.java +++ b/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyReportLog.java @@ -20,9 +20,9 @@ package org.neo4j.legacy.consistency; import java.io.PrintWriter; +import java.util.function.Supplier; import org.neo4j.function.Consumer; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; import org.neo4j.logging.AbstractLog; import org.neo4j.logging.Log; diff --git a/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyReportLogger.java b/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyReportLogger.java index 0e0fc1cc26e07..02c45d8a2dfda 100644 --- a/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyReportLogger.java +++ b/community/consistency-check-legacy/src/main/java/org/neo4j/legacy/consistency/ConsistencyReportLogger.java @@ -20,8 +20,8 @@ package org.neo4j.legacy.consistency; import java.io.PrintWriter; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; import org.neo4j.logging.AbstractPrintWriterLogger; import org.neo4j.logging.Logger; diff --git a/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyCheckService.java b/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyCheckService.java index 16fc3072435ea..8ff9a31f5eb98 100644 --- a/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyCheckService.java +++ b/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyCheckService.java @@ -33,7 +33,6 @@ import org.neo4j.consistency.statistics.DefaultCounts; import org.neo4j.consistency.statistics.Statistics; import org.neo4j.consistency.statistics.VerboseStatistics; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.kernel.configuration.Settings; @@ -123,19 +122,14 @@ public Result runFullConsistencyCheck( final File storeDir, Config tuningConfigu ConsistencySummaryStatistics summary; final File reportFile = chooseReportPath( storeDir, tuningConfiguration ); - Log reportLog = new ConsistencyReportLog( Suppliers.lazySingleton( new Supplier() - { - @Override - public PrintWriter get() + Log reportLog = new ConsistencyReportLog( Suppliers.lazySingleton( () -> { + try { - try - { - return new PrintWriter( createOrOpenAsOuputStream( fileSystem, reportFile, true ) ); - } - catch ( IOException e ) - { - throw new RuntimeException( e ); - } + return new PrintWriter( createOrOpenAsOuputStream( fileSystem, reportFile, true ) ); + } + catch ( IOException e ) + { + throw new RuntimeException( e ); } } ) ); diff --git a/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyReportLog.java b/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyReportLog.java index f1e68c0afb421..431a30671f823 100644 --- a/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyReportLog.java +++ b/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyReportLog.java @@ -19,16 +19,16 @@ */ package org.neo4j.consistency; +import java.io.PrintWriter; +import java.util.function.Supplier; + import org.neo4j.function.Consumer; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; import org.neo4j.logging.AbstractLog; import org.neo4j.logging.Log; import org.neo4j.logging.Logger; import org.neo4j.logging.NullLogger; -import java.io.PrintWriter; - public class ConsistencyReportLog extends AbstractLog { private final Supplier writerSupplier; diff --git a/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyReportLogger.java b/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyReportLogger.java index 56d369dd7464f..0185db5a61d57 100644 --- a/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyReportLogger.java +++ b/community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyReportLogger.java @@ -19,13 +19,13 @@ */ package org.neo4j.consistency; -import org.neo4j.function.Supplier; +import java.io.PrintWriter; +import java.util.function.Supplier; + import org.neo4j.function.Suppliers; import org.neo4j.logging.AbstractPrintWriterLogger; import org.neo4j.logging.Logger; -import java.io.PrintWriter; - public class ConsistencyReportLogger extends AbstractPrintWriterLogger { private final String prefix; diff --git a/community/cypher/cypher-compiler-3.0/src/main/java/org/neo4j/cypher/internal/compiler/v3_0/executionplan/GeneratedQuery.java b/community/cypher/cypher-compiler-3.0/src/main/java/org/neo4j/cypher/internal/compiler/v3_0/executionplan/GeneratedQuery.java index 21f8acaf0df74..82a5f9de99f15 100644 --- a/community/cypher/cypher-compiler-3.0/src/main/java/org/neo4j/cypher/internal/compiler/v3_0/executionplan/GeneratedQuery.java +++ b/community/cypher/cypher-compiler-3.0/src/main/java/org/neo4j/cypher/internal/compiler/v3_0/executionplan/GeneratedQuery.java @@ -20,12 +20,12 @@ package org.neo4j.cypher.internal.compiler.v3_0.executionplan; import java.util.Map; +import java.util.function.Supplier; import org.neo4j.cypher.internal.compiler.v3_0.ExecutionMode; import org.neo4j.cypher.internal.compiler.v3_0.TaskCloser; import org.neo4j.cypher.internal.compiler.v3_0.codegen.QueryExecutionTracer; import org.neo4j.cypher.internal.compiler.v3_0.planDescription.InternalPlanDescription; -import org.neo4j.function.Supplier; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.impl.core.NodeManager; diff --git a/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/CodeGenerator.scala b/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/CodeGenerator.scala index 44ff6fac17fa3..f1b2a768345ad 100644 --- a/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/CodeGenerator.scala +++ b/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/CodeGenerator.scala @@ -21,20 +21,20 @@ package org.neo4j.cypher.internal.compiler.v3_0.codegen import java.lang.Boolean.getBoolean import java.util +import java.util.function.Supplier import org.neo4j.cypher.internal.compiler.v3_0.codegen.CodeGenerator.SourceSink import org.neo4j.cypher.internal.compiler.v3_0.codegen.ir._ import org.neo4j.cypher.internal.compiler.v3_0.executionplan.{CompiledPlan, PlanFingerprint, _} import org.neo4j.cypher.internal.compiler.v3_0.planDescription.InternalPlanDescription.Arguments.SourceCode import org.neo4j.cypher.internal.compiler.v3_0.planDescription.{Id, InternalPlanDescription} +import org.neo4j.cypher.internal.compiler.v3_0.planner.CantCompileQueryException import org.neo4j.cypher.internal.compiler.v3_0.planner.logical.plans._ import org.neo4j.cypher.internal.compiler.v3_0.planner.logical.{LogicalPlan2PlanDescription, LogicalPlanIdentificationBuilder} -import org.neo4j.cypher.internal.compiler.v3_0.planner.CantCompileQueryException import org.neo4j.cypher.internal.compiler.v3_0.spi.{InstrumentedGraphStatistics, PlanContext} import org.neo4j.cypher.internal.compiler.v3_0.{ExecutionMode, PlannerName, TaskCloser} import org.neo4j.cypher.internal.frontend.v3_0.SemanticTable import org.neo4j.cypher.internal.frontend.v3_0.helpers.Eagerly -import org.neo4j.function.Supplier import org.neo4j.helpers.Clock import org.neo4j.kernel.api.Statement import org.neo4j.kernel.impl.core.NodeManager diff --git a/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/executionplan/CompiledExecutionResult.scala b/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/executionplan/CompiledExecutionResult.scala index 6e5e8b7578323..48e9790692911 100644 --- a/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/executionplan/CompiledExecutionResult.scala +++ b/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/executionplan/CompiledExecutionResult.scala @@ -21,7 +21,7 @@ package org.neo4j.cypher.internal.compiler.v3_0.executionplan import java.io.{PrintWriter, StringWriter} import java.util -import java.util.Collections +import java.util.function.Supplier import org.neo4j.cypher.internal.compiler.v3_0._ import org.neo4j.cypher.internal.compiler.v3_0.commands.values.KeyToken @@ -32,7 +32,6 @@ import org.neo4j.cypher.internal.compiler.v3_0.planDescription.InternalPlanDescr import org.neo4j.cypher.internal.frontend.v3_0.helpers.Eagerly import org.neo4j.cypher.internal.frontend.v3_0.notification.InternalNotification import org.neo4j.cypher.internal.frontend.v3_0.{EntityNotFoundException, ProfilerStatisticsNotReadyException} -import org.neo4j.function.Supplier import org.neo4j.graphdb.QueryExecutionType._ import org.neo4j.graphdb.Result.{ResultRow, ResultVisitor} import org.neo4j.graphdb._ diff --git a/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/executionplan/ExecutionPlanBuilder.scala b/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/executionplan/ExecutionPlanBuilder.scala index 60f94d2eafb9a..397b3dc92bc5c 100644 --- a/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/executionplan/ExecutionPlanBuilder.scala +++ b/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/executionplan/ExecutionPlanBuilder.scala @@ -19,6 +19,8 @@ */ package org.neo4j.cypher.internal.compiler.v3_0.executionplan +import java.util.function.Supplier + import org.neo4j.cypher.internal.compiler.v3_0.codegen.QueryExecutionTracer import org.neo4j.cypher.internal.compiler.v3_0.codegen.profiling.ProfilingTracer import org.neo4j.cypher.internal.compiler.v3_0.commands._ @@ -27,17 +29,15 @@ import org.neo4j.cypher.internal.compiler.v3_0.executionplan.builders._ import org.neo4j.cypher.internal.compiler.v3_0.pipes._ import org.neo4j.cypher.internal.compiler.v3_0.planDescription.InternalPlanDescription import org.neo4j.cypher.internal.compiler.v3_0.planDescription.InternalPlanDescription.Arguments -import org.neo4j.cypher.internal.compiler.v3_0.planner.logical.Cardinality import org.neo4j.cypher.internal.compiler.v3_0.planner.logical.plans.LogicalPlan import org.neo4j.cypher.internal.compiler.v3_0.planner.{CantCompileQueryException, CantHandleQueryException} import org.neo4j.cypher.internal.compiler.v3_0.profiler.Profiler import org.neo4j.cypher.internal.compiler.v3_0.spi._ import org.neo4j.cypher.internal.compiler.v3_0.symbols.SymbolTable import org.neo4j.cypher.internal.compiler.v3_0.{ExecutionMode, ProfileMode, _} -import org.neo4j.cypher.internal.frontend.v3_0.{LabelId, PeriodicCommitInOpenTransactionException} +import org.neo4j.cypher.internal.frontend.v3_0.PeriodicCommitInOpenTransactionException import org.neo4j.cypher.internal.frontend.v3_0.ast.Statement -import org.neo4j.cypher.internal.frontend.v3_0.notification.{LargeLabelWithLoadCsvNotification, EagerLoadCsvNotification, InternalNotification} -import org.neo4j.function.Supplier +import org.neo4j.cypher.internal.frontend.v3_0.notification.InternalNotification import org.neo4j.function.Suppliers.singleton import org.neo4j.graphdb.GraphDatabaseService import org.neo4j.graphdb.QueryExecutionType.QueryType diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/GeneratedQueryStructure.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/GeneratedQueryStructure.scala index 771bca1e4dcbf..6d9f1c050582f 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/GeneratedQueryStructure.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/GeneratedQueryStructure.scala @@ -21,6 +21,7 @@ package org.neo4j.cypher.internal.spi.v2_3 import java.util +import java.util.function.Supplier import org.neo4j.codegen import org.neo4j.codegen.CodeGeneratorOption._ @@ -42,7 +43,6 @@ import org.neo4j.cypher.internal.compiler.v2_3.planner.CantCompileQueryException import org.neo4j.cypher.internal.compiler.v2_3.{ExecutionMode, TaskCloser} import org.neo4j.cypher.internal.frontend.v2_3.symbols.CypherType import org.neo4j.cypher.internal.frontend.v2_3.{SemanticDirection, CypherExecutionException, ParameterNotFoundException, symbols} -import org.neo4j.function.Supplier import org.neo4j.graphdb.{Relationship, Node, Direction} import org.neo4j.graphdb.Result.{ResultRow, ResultVisitor} import org.neo4j.helpers.collection.MapUtil diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_0/GeneratedQueryStructure.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_0/GeneratedQueryStructure.scala index b921a62d27001..dd2325fe84b3e 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_0/GeneratedQueryStructure.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_0/GeneratedQueryStructure.scala @@ -21,6 +21,7 @@ package org.neo4j.cypher.internal.spi.v3_0 import java.util +import java.util.function.Supplier import org.neo4j.codegen import org.neo4j.codegen.CodeGeneratorOption._ @@ -42,7 +43,6 @@ import org.neo4j.cypher.internal.compiler.v3_0.planner.CantCompileQueryException import org.neo4j.cypher.internal.compiler.v3_0.{ExecutionMode, TaskCloser} import org.neo4j.cypher.internal.frontend.v3_0.symbols.CypherType import org.neo4j.cypher.internal.frontend.v3_0.{CypherExecutionException, ParameterNotFoundException, SemanticDirection, symbols} -import org.neo4j.function.Supplier import org.neo4j.graphdb.Result.{ResultRow, ResultVisitor} import org.neo4j.graphdb.{Direction, Node, Relationship} import org.neo4j.helpers.collection.MapUtil diff --git a/community/cypher/cypher/src/test/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/ir/CodeGenSugar.scala b/community/cypher/cypher/src/test/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/ir/CodeGenSugar.scala index 18ecd922cb488..2a67460c512a5 100644 --- a/community/cypher/cypher/src/test/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/ir/CodeGenSugar.scala +++ b/community/cypher/cypher/src/test/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/ir/CodeGenSugar.scala @@ -20,6 +20,7 @@ package org.neo4j.cypher.internal.compiler.v3_0.codegen.ir import java.util.concurrent.atomic.AtomicInteger +import java.util.function.Supplier import org.mockito.Mockito._ import org.neo4j.cypher.internal.compiler.v3_0.codegen.{Namer, _} @@ -31,7 +32,6 @@ import org.neo4j.cypher.internal.compiler.v3_0.spi.{GraphStatistics, PlanContext import org.neo4j.cypher.internal.compiler.v3_0.{CostBasedPlannerName, ExecutionMode, NormalMode, TaskCloser} import org.neo4j.cypher.internal.frontend.v3_0.SemanticTable import org.neo4j.cypher.internal.spi.v3_0.GeneratedQueryStructure -import org.neo4j.function.Supplier import org.neo4j.graphdb.GraphDatabaseService import org.neo4j.graphdb.Result.{ResultRow, ResultVisitor} import org.neo4j.helpers.Clock diff --git a/community/cypher/cypher/src/test/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/ir/CompiledProfilingTest.scala b/community/cypher/cypher/src/test/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/ir/CompiledProfilingTest.scala index a3a92100fadcb..7d6ff279ae1f8 100644 --- a/community/cypher/cypher/src/test/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/ir/CompiledProfilingTest.scala +++ b/community/cypher/cypher/src/test/scala/org/neo4j/cypher/internal/compiler/v3_0/codegen/ir/CompiledProfilingTest.scala @@ -19,6 +19,8 @@ */ package org.neo4j.cypher.internal.compiler.v3_0.codegen.ir +import java.util.function.Supplier + import org.mockito.Matchers._ import org.mockito.Mockito._ import org.neo4j.collection.primitive.PrimitiveLongIterator @@ -33,11 +35,10 @@ import org.neo4j.cypher.internal.compiler.v3_0.planner.{CardinalityEstimation, P import org.neo4j.cypher.internal.frontend.v3_0.ast.SignedDecimalIntegerLiteral import org.neo4j.cypher.internal.frontend.v3_0.symbols import org.neo4j.cypher.internal.frontend.v3_0.test_helpers.CypherFunSuite -import org.neo4j.function.Supplier import org.neo4j.kernel.GraphDatabaseAPI import org.neo4j.kernel.api._ import org.neo4j.kernel.impl.core.{NodeManager, NodeProxy} -import org.neo4j.test.{TestGraphDatabaseFactory, ImpermanentGraphDatabase} +import org.neo4j.test.TestGraphDatabaseFactory class CompiledProfilingTest extends CypherFunSuite with CodeGenSugar { diff --git a/community/function/src/main/java/org/neo4j/function/Functions.java b/community/function/src/main/java/org/neo4j/function/Functions.java index a4371f9738c90..cff3a5042334f 100644 --- a/community/function/src/main/java/org/neo4j/function/Functions.java +++ b/community/function/src/main/java/org/neo4j/function/Functions.java @@ -20,6 +20,7 @@ package org.neo4j.function; import java.util.Map; +import java.util.function.Supplier; /** * Constructors for basic {@link Function} and {@link BiFunction} types @@ -197,36 +198,4 @@ public T apply( Void t ) } }; } - - /** - * @deprecated use {@link Consumers#noop()} - * @param the type of object to swallow - * @param type the type to swallow - * @return return the consumer of the type object - */ - @Deprecated - @SuppressWarnings( "unchecked" ) - public static Consumer swallow( @SuppressWarnings( "UnusedParameters" ) Class type ) - { - return Consumers.noop(); - } - - /** - * @deprecated use {@link Suppliers#singleton(Object)} - * @param the type of the item object - * @param item the constant item - * @return return a factory object - */ - @Deprecated - public static Factory constantly( final T item ) - { - return new Factory() - { - @Override - public T newInstance() - { - return item; - } - }; - } } diff --git a/community/function/src/main/java/org/neo4j/function/Predicates.java b/community/function/src/main/java/org/neo4j/function/Predicates.java index 72d180655772c..3540f7332943f 100644 --- a/community/function/src/main/java/org/neo4j/function/Predicates.java +++ b/community/function/src/main/java/org/neo4j/function/Predicates.java @@ -24,6 +24,8 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import java.util.function.BooleanSupplier; +import java.util.function.Supplier; /** * Constructors for basic {@link Predicate} types @@ -221,12 +223,12 @@ public static void await( Supplier condition, long timeout, TimeUnit un } - public static void awaitForever( Supplier condition, long checkInterval, TimeUnit unit ) throws InterruptedException + public static void awaitForever( BooleanSupplier condition, long checkInterval, TimeUnit unit ) throws InterruptedException { long sleep = unit.toMillis( checkInterval ); do { - if ( condition.get() ) + if ( condition.getAsBoolean() ) { return; } diff --git a/community/function/src/main/java/org/neo4j/function/Supplier.java b/community/function/src/main/java/org/neo4j/function/Supplier.java deleted file mode 100644 index 17e27b9ffe284..0000000000000 --- a/community/function/src/main/java/org/neo4j/function/Supplier.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2002-2015 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.neo4j.function; - -/** - * Represents a supplier of results. - * - * @param the type of results supplied by this supplier - * @deprecated Usages will be replaced by corresponding {@code java.util.function} interface and classes in 3.0. - */ -public interface Supplier extends ThrowingSupplier -{ - /** - * Gets a result. - * - * @return A result - */ - T get(); -} diff --git a/community/function/src/main/java/org/neo4j/function/Suppliers.java b/community/function/src/main/java/org/neo4j/function/Suppliers.java index e6120981d2823..cf738951a2756 100644 --- a/community/function/src/main/java/org/neo4j/function/Suppliers.java +++ b/community/function/src/main/java/org/neo4j/function/Suppliers.java @@ -19,6 +19,8 @@ */ package org.neo4j.function; +import java.util.function.Supplier; + /** * Constructors for basic {@link Supplier} types */ @@ -33,14 +35,7 @@ public final class Suppliers */ public static Supplier singleton( final T instance ) { - return new Supplier() - { - @Override - public T get() - { - return instance; - } - }; + return () -> instance; } /** @@ -119,13 +114,6 @@ public T get() public static Supplier compose( final Supplier input, final Predicate predicate ) { - return new Supplier() - { - @Override - public Boolean get() - { - return predicate.test( input.get() ); - } - }; + return () -> predicate.test( input.get() ); } } diff --git a/community/function/src/test/java/org/neo4j/function/SuppliersTest.java b/community/function/src/test/java/org/neo4j/function/SuppliersTest.java index 50fe192aa421b..eb3118625fd5e 100644 --- a/community/function/src/test/java/org/neo4j/function/SuppliersTest.java +++ b/community/function/src/test/java/org/neo4j/function/SuppliersTest.java @@ -21,8 +21,10 @@ import org.junit.Test; +import java.util.function.Supplier; + import static org.hamcrest.Matchers.sameInstance; -import static org.junit.Assert.*; +import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; diff --git a/community/kernel/src/main/java/org/neo4j/graphdb/DependencyResolver.java b/community/kernel/src/main/java/org/neo4j/graphdb/DependencyResolver.java index 95f1af00b60cf..a1df39c831bf6 100644 --- a/community/kernel/src/main/java/org/neo4j/graphdb/DependencyResolver.java +++ b/community/kernel/src/main/java/org/neo4j/graphdb/DependencyResolver.java @@ -20,8 +20,7 @@ package org.neo4j.graphdb; import java.util.Iterator; - -import org.neo4j.function.Supplier; +import java.util.function.Supplier; /** * Find a dependency given a type. This can be the exact type or a super type of @@ -105,26 +104,12 @@ public T resolveDependency( Class type ) throws IllegalArgumentException public Supplier provideDependency( final Class type, final SelectionStrategy selector) { - return new Supplier() - { - @Override - public T get() - { - return resolveDependency( type, selector ); - } - }; + return () -> resolveDependency( type, selector ); } public Supplier provideDependency( final Class type ) { - return new Supplier() - { - @Override - public T get() - { - return resolveDependency( type ); - } - }; + return () -> resolveDependency( type ); } } } diff --git a/community/kernel/src/main/java/org/neo4j/helpers/ConcurrentTransfer.java b/community/kernel/src/main/java/org/neo4j/helpers/ConcurrentTransfer.java index 7c7f40e6d927b..29665af1ba747 100644 --- a/community/kernel/src/main/java/org/neo4j/helpers/ConcurrentTransfer.java +++ b/community/kernel/src/main/java/org/neo4j/helpers/ConcurrentTransfer.java @@ -20,9 +20,9 @@ package org.neo4j.helpers; import java.util.concurrent.CountDownLatch; +import java.util.function.Supplier; import org.neo4j.function.Consumer; -import org.neo4j.function.Supplier; /** * Abstracts a meeting point between two threads, where a reference can change hands. It is essentially diff --git a/community/kernel/src/main/java/org/neo4j/helpers/FutureAdapter.java b/community/kernel/src/main/java/org/neo4j/helpers/FutureAdapter.java index fdad290a650ce..b287f8ee05780 100644 --- a/community/kernel/src/main/java/org/neo4j/helpers/FutureAdapter.java +++ b/community/kernel/src/main/java/org/neo4j/helpers/FutureAdapter.java @@ -27,8 +27,7 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; - -import org.neo4j.function.Supplier; +import java.util.function.Supplier; public abstract class FutureAdapter implements Future { @@ -91,13 +90,8 @@ public static Present present( T value ) public static Future latchGuardedValue( final ValueGetter value, final CountDownLatch guardedByLatch, final String jobDescription ) { - return latchGuardedValue( new Supplier() - { - @Override - public T get() - { - return value.get(); - } + return latchGuardedValue( (Supplier) () -> { + return value.get(); }, guardedByLatch, jobDescription ); } diff --git a/community/kernel/src/main/java/org/neo4j/helpers/Predicates.java b/community/kernel/src/main/java/org/neo4j/helpers/Predicates.java index 78dc12a33e3c2..d451ac78f3893 100644 --- a/community/kernel/src/main/java/org/neo4j/helpers/Predicates.java +++ b/community/kernel/src/main/java/org/neo4j/helpers/Predicates.java @@ -23,8 +23,8 @@ import java.util.Collection; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.helpers.collection.Iterables; /** @@ -181,13 +181,8 @@ public boolean accept( FROM item ) public static void await( final Provider provider, Predicate predicate, long timeout, TimeUnit unit ) throws TimeoutException, InterruptedException { - await( new Supplier() - { - @Override - public TYPE get() - { - return provider.instance(); - } + await( (Supplier) () -> { + return provider.instance(); }, predicate, timeout, unit ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/NodeState.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/NodeState.java index 6b4ac64a653c3..8ace61218b609 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/NodeState.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/NodeState.java @@ -23,13 +23,13 @@ import java.util.IdentityHashMap; import java.util.Iterator; import java.util.Set; +import java.util.function.Supplier; import org.neo4j.collection.primitive.Primitive; import org.neo4j.collection.primitive.PrimitiveIntCollections; import org.neo4j.collection.primitive.PrimitiveIntIterator; import org.neo4j.collection.primitive.PrimitiveLongIterator; import org.neo4j.cursor.Cursor; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.Direction; import org.neo4j.helpers.collection.IteratorUtil; import org.neo4j.kernel.api.EntityType; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/PropertyContainerState.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/PropertyContainerState.java index db5ab52b50258..44b578a3df7d3 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/PropertyContainerState.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/PropertyContainerState.java @@ -20,10 +20,10 @@ package org.neo4j.kernel.impl.api.state; import java.util.Iterator; +import java.util.function.Supplier; import org.neo4j.cursor.Cursor; import org.neo4j.function.Predicate; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.ResourceIterator; import org.neo4j.helpers.collection.CombiningIterator; import org.neo4j.helpers.collection.FilteringIterator; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/RelationshipState.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/RelationshipState.java index ca608982bddfd..3dfceeec44b36 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/RelationshipState.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/state/RelationshipState.java @@ -20,9 +20,9 @@ package org.neo4j.kernel.impl.api.state; import java.util.Iterator; +import java.util.function.Supplier; import org.neo4j.cursor.Cursor; -import org.neo4j.function.Supplier; import org.neo4j.helpers.collection.IteratorUtil; import org.neo4j.kernel.api.EntityType; import org.neo4j.kernel.api.cursor.PropertyItem; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/PropertyBlockCursor.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/PropertyBlockCursor.java index f877771d76e16..418088eff4a33 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/PropertyBlockCursor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/PropertyBlockCursor.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.impl.api.store; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.function.Suppliers; import org.neo4j.kernel.api.properties.DefinedProperty; import org.neo4j.kernel.impl.store.PropertyStore; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultLabelIdCreator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultLabelIdCreator.java index 94e5c73915c18..bce48a26fab4a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultLabelIdCreator.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultLabelIdCreator.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.impl.core; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.IdGeneratorFactory; import org.neo4j.kernel.IdType; import org.neo4j.kernel.api.KernelAPI; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultPropertyTokenCreator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultPropertyTokenCreator.java index e41ccefe8b34e..318c08ac0c806 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultPropertyTokenCreator.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultPropertyTokenCreator.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.impl.core; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.IdGeneratorFactory; import org.neo4j.kernel.IdType; import org.neo4j.kernel.api.KernelAPI; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultRelationshipTypeCreator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultRelationshipTypeCreator.java index 8de394419452f..9b2abaa586a45 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultRelationshipTypeCreator.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/DefaultRelationshipTypeCreator.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.impl.core; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.IdGeneratorFactory; import org.neo4j.kernel.IdType; import org.neo4j.kernel.api.KernelAPI; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/IsolatedTransactionTokenCreator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/IsolatedTransactionTokenCreator.java index 73d239cb0c150..a7da67a868d0d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/IsolatedTransactionTokenCreator.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/IsolatedTransactionTokenCreator.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.impl.core; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.IdGeneratorFactory; import org.neo4j.kernel.api.KernelAPI; import org.neo4j.kernel.api.KernelTransaction; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/ThreadToStatementContextBridge.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/ThreadToStatementContextBridge.java index 4b19de47cecd2..f5671b97b526e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/ThreadToStatementContextBridge.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/ThreadToStatementContextBridge.java @@ -19,11 +19,12 @@ */ package org.neo4j.kernel.impl.core; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.graphdb.DatabaseShutdownException; import org.neo4j.graphdb.NotInTransactionException; -import org.neo4j.kernel.TopLevelTransaction; import org.neo4j.graphdb.TransactionTerminatedException; +import org.neo4j.kernel.TopLevelTransaction; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.lifecycle.LifecycleAdapter; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/PropertyContainerLocker.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/PropertyContainerLocker.java index a8d21add32c75..803a69ed24593 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/PropertyContainerLocker.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/PropertyContainerLocker.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.impl.coreapi; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.graphdb.Lock; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.PropertyContainer; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/DataSourceModule.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/DataSourceModule.java index 2e07d24a021ba..09df49fe49173 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/DataSourceModule.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/DataSourceModule.java @@ -21,8 +21,8 @@ import java.io.File; import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.NotFoundException; @@ -36,7 +36,6 @@ import org.neo4j.kernel.AvailabilityGuard; import org.neo4j.kernel.DatabaseAvailability; import org.neo4j.kernel.KernelEventHandlers; -import org.neo4j.kernel.internal.DatabaseHealth; import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.TransactionEventHandlers; import org.neo4j.kernel.api.KernelAPI; @@ -69,6 +68,7 @@ import org.neo4j.kernel.impl.transaction.log.PhysicalLogFile; import org.neo4j.kernel.impl.transaction.state.DataSourceManager; import org.neo4j.kernel.info.DiagnosticsManager; +import org.neo4j.kernel.internal.DatabaseHealth; import org.neo4j.kernel.lifecycle.LifeSupport; import org.neo4j.kernel.lifecycle.LifecycleAdapter; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java index 736cb6be700dc..f9a68cc068588 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java @@ -23,11 +23,11 @@ import java.net.URL; import java.util.Collections; import java.util.Map; +import java.util.function.Supplier; import org.neo4j.collection.primitive.PrimitiveLongCollections; import org.neo4j.collection.primitive.PrimitiveLongIterator; import org.neo4j.function.LongFunction; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.ConstraintViolationException; import org.neo4j.graphdb.DependencyResolver; import org.neo4j.graphdb.Label; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/PlatformModule.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/PlatformModule.java index dc4459d3e464d..fa32b5f1e56a5 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/PlatformModule.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/PlatformModule.java @@ -23,11 +23,12 @@ import java.io.IOException; import java.util.List; import java.util.Map; +import java.util.function.Supplier; import org.neo4j.function.Consumer; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.DependencyResolver; import org.neo4j.graphdb.factory.GraphDatabaseSettings; +import org.neo4j.graphdb.security.URLAccessRule; import org.neo4j.helpers.Clock; import org.neo4j.helpers.collection.Iterables; import org.neo4j.io.fs.FileSystemAbstraction; @@ -57,7 +58,6 @@ import org.neo4j.kernel.lifecycle.LifeSupport; import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.kernel.monitoring.tracing.Tracers; -import org.neo4j.graphdb.security.URLAccessRule; import org.neo4j.logging.Level; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/PropertyType.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/PropertyType.java index 2c2e4001b308f..5f152a3da02c9 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/PropertyType.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/PropertyType.java @@ -20,9 +20,8 @@ package org.neo4j.kernel.impl.store; import java.util.Arrays; -import java.util.concurrent.Callable; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.kernel.api.properties.DefinedProperty; import org.neo4j.kernel.api.properties.Property; import org.neo4j.kernel.impl.store.record.PropertyBlock; @@ -193,14 +192,7 @@ public int calculateNumberOfBlocksUsed( long firstBlock ) public DefinedProperty readProperty( int propertyKeyId, final PropertyBlock block, final Supplier store ) { - return Property.lazyStringProperty(propertyKeyId, new Callable() - { - @Override - public String call() throws Exception - { - return getValue( block, store.get() ); - } - }); + return Property.lazyStringProperty(propertyKeyId, () -> getValue( block, store.get() ) ); } @Override @@ -224,14 +216,7 @@ public byte[] readDynamicRecordHeader( byte[] recordBytes ) @Override public DefinedProperty readProperty( int propertyKeyId, final PropertyBlock block, final Supplier store ) { - return Property.lazyArrayProperty(propertyKeyId, new Callable() - { - @Override - public Object call() throws Exception - { - return getValue( block, store.get() ); - } - }); + return Property.lazyArrayProperty(propertyKeyId, () -> getValue( block, store.get() ) ); } @Override diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/record/PropertyBlock.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/record/PropertyBlock.java index 00e4f0007168f..33bf4b3217096 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/record/PropertyBlock.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/record/PropertyBlock.java @@ -25,8 +25,8 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; import org.neo4j.kernel.api.properties.DefinedProperty; import org.neo4j.kernel.impl.store.PropertyStore; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointScheduler.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointScheduler.java index b5cb6fdfef8b9..41106acacdf97 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointScheduler.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointScheduler.java @@ -20,9 +20,10 @@ package org.neo4j.kernel.impl.transaction.log.checkpoint; import java.io.IOException; +import java.util.function.BooleanSupplier; +import java.util.function.Supplier; import org.neo4j.function.Predicates; -import org.neo4j.function.Supplier; import org.neo4j.kernel.impl.store.UnderlyingStorageException; import org.neo4j.kernel.impl.util.JobScheduler; import org.neo4j.kernel.lifecycle.LifecycleAdapter; @@ -70,10 +71,10 @@ public void run() private volatile JobScheduler.JobHandle handle; private volatile boolean stopped; private volatile boolean checkPointing; - private final Supplier checkPointingCondition = new Supplier() + private final BooleanSupplier checkPointingCondition = new BooleanSupplier() { @Override - public Boolean get() + public boolean getAsBoolean() { return !checkPointing; } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DataSourceManager.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DataSourceManager.java index a9e9822832bec..067642408f6d6 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DataSourceManager.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DataSourceManager.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.impl.transaction.state; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.helpers.Listeners; import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.api.KernelAPI; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/NeoStoresSupplier.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/NeoStoresSupplier.java index 98fcbecf14d73..0a652bd72d709 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/NeoStoresSupplier.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/NeoStoresSupplier.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.impl.transaction.state; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.impl.store.NeoStores; /** diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/traversal/BidirectionalTraversalDescriptionImpl.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/traversal/BidirectionalTraversalDescriptionImpl.java index ec884d3fb978e..1e369a3e05737 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/traversal/BidirectionalTraversalDescriptionImpl.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/traversal/BidirectionalTraversalDescriptionImpl.java @@ -20,8 +20,8 @@ package org.neo4j.kernel.impl.traversal; import java.util.Arrays; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Resource; import org.neo4j.graphdb.traversal.BidirectionalTraversalDescription; @@ -79,7 +79,7 @@ public BidirectionalTraversalDescriptionImpl() { this( NO_STATEMENT ); } - + @Override public BidirectionalTraversalDescription startSide( TraversalDescription startSideDescription ) { @@ -97,7 +97,7 @@ public BidirectionalTraversalDescription endSide( TraversalDescription endSideDe (MonoDirectionalTraversalDescription)endSideDescription, this.collisionPolicy, this.collisionEvaluator, this.sideSelector, statementFactory, this.maxDepth ); } - + @Override public BidirectionalTraversalDescription mirroredSides( TraversalDescription sideDescription ) { @@ -130,7 +130,7 @@ public BidirectionalTraversalDescription collisionEvaluator( PathEvaluator colli return new BidirectionalTraversalDescriptionImpl( this.start, this.end, this.collisionPolicy, addEvaluator( this.collisionEvaluator, collisionEvaluator ), this.sideSelector, statementFactory, maxDepth ); } - + @Override public BidirectionalTraversalDescription collisionEvaluator( Evaluator collisionEvaluator ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/traversal/MonoDirectionalTraversalDescription.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/traversal/MonoDirectionalTraversalDescription.java index be2e4f1b0ad94..47af2bf671bab 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/traversal/MonoDirectionalTraversalDescription.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/traversal/MonoDirectionalTraversalDescription.java @@ -23,8 +23,8 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.Expander; import org.neo4j.graphdb.Node; @@ -50,14 +50,7 @@ public final class MonoDirectionalTraversalDescription implements TraversalDescription { - final static Supplier NO_STATEMENT = new Supplier() - { - @Override - public Resource get() - { - return Resource.EMPTY; - } - }; + final static Supplier NO_STATEMENT = () -> Resource.EMPTY; final PathExpander expander; final InitialBranchState initialState; @@ -156,12 +149,12 @@ public TraversalDescription uniqueness( UniquenessFactory uniqueness, return new MonoDirectionalTraversalDescription( expander, uniqueness, parameter, evaluator, initialState, branchOrdering, sorting, endNodes, statementSupplier ); } - + public TraversalDescription evaluator( Evaluator evaluator ) { return evaluator( new Evaluator.AsPathEvaluator( evaluator) ); } - + public TraversalDescription evaluator( PathEvaluator evaluator ) { if ( this.evaluator == evaluator ) @@ -173,7 +166,7 @@ public TraversalDescription evaluator( PathEvaluator evaluator ) addEvaluator( this.evaluator, evaluator ), initialState, branchOrdering, sorting, endNodes, statementSupplier ); } - + protected static PathEvaluator addEvaluator( PathEvaluator existing, PathEvaluator toAdd ) { if ( existing instanceof MultiEvaluator ) @@ -186,7 +179,7 @@ protected static PathEvaluator addEvaluator( PathEvaluator existing, PathEvaluat new MultiEvaluator( new PathEvaluator[] { existing, toAdd } ); } } - + protected static void nullCheck( T parameter, Class parameterType, String defaultName ) { if ( parameter == null ) @@ -240,7 +233,7 @@ public TraversalDescription relationships( RelationshipType type, return expand( ((Expander)expander).add( type, direction ) ); throw new IllegalStateException( "The current expander cannot be added to" ); } - + public TraversalDescription expand( RelationshipExpander expander ) { return expand( StandardExpander.toPathExpander( expander ) ); @@ -255,27 +248,27 @@ public TraversalDescription expand( PathExpander expander ) return new MonoDirectionalTraversalDescription( expander, uniqueness, uniquenessParameter, evaluator, initialState, branchOrdering, sorting, endNodes, statementSupplier ); } - + public TraversalDescription expand( PathExpander expander, InitialBranchState initialState ) { return new MonoDirectionalTraversalDescription( expander, uniqueness, uniquenessParameter, evaluator, initialState, branchOrdering, sorting, endNodes, statementSupplier ); } - + public TraversalDescription expand( PathExpander expander, InitialStateFactory initialState ) { return new MonoDirectionalTraversalDescription( expander, uniqueness, uniquenessParameter, evaluator, new InitialStateFactory.AsInitialBranchState<>( initialState ), branchOrdering, sorting, endNodes, statementSupplier ); } - + @Override public TraversalDescription sort( Comparator sorting ) { return new MonoDirectionalTraversalDescription( expander, uniqueness, uniquenessParameter, evaluator, initialState, branchOrdering, sorting, endNodes, statementSupplier ); } - + @Override public TraversalDescription reverse() { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/Dependencies.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/Dependencies.java index c26f613a239c8..e777d4af30b48 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/Dependencies.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/Dependencies.java @@ -23,8 +23,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.DependencyResolver; @SuppressWarnings( "rawtypes" ) @@ -40,14 +40,7 @@ public Dependencies() public Dependencies( final DependencyResolver parent ) { - this.parent = new Supplier() - { - @Override - public DependencyResolver get() - { - return parent; - } - }; + this.parent = () -> parent; } public Dependencies( Supplier parent ) @@ -80,26 +73,12 @@ public T resolveDependency( Class type, SelectionStrategy selector ) public Supplier provideDependency( final Class type, final SelectionStrategy selector) { - return new Supplier() - { - @Override - public T get() - { - return resolveDependency( type, selector ); - } - }; + return () -> resolveDependency( type, selector ); } public Supplier provideDependency( final Class type ) { - return new Supplier() - { - @Override - public T get() - { - return resolveDependency( type ); - } - }; + return () -> resolveDependency( type ); } @Override diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/DependenciesProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/DependenciesProxy.java index 058c92d266821..69fdd74a01313 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/DependenciesProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/DependenciesProxy.java @@ -23,8 +23,8 @@ import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Proxy; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.DependencyResolver; /** @@ -69,7 +69,8 @@ public Object invoke( Object proxy, Method method, Object[] args ) throws Throwa if (method.getReturnType().equals( Supplier.class )) { return dependencyResolver.provideDependency( (Class)((ParameterizedType) method.getGenericReturnType()).getActualTypeArguments()[0] ); - } else + } + else { return dependencyResolver.resolveDependency( method.getReturnType() ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/InstanceCache.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/InstanceCache.java index 91925e5d052d3..8952deddb51db 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/InstanceCache.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/InstanceCache.java @@ -19,8 +19,9 @@ */ package org.neo4j.kernel.impl.util; +import java.util.function.Supplier; + import org.neo4j.function.Consumer; -import org.neo4j.function.Supplier; /** * Caches single instances. This is meant to be used within a single thread, where diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/LazySingleReference.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/LazySingleReference.java index 68ac523aa9c2b..716dac6a6b68a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/LazySingleReference.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/LazySingleReference.java @@ -19,7 +19,7 @@ */ package org.neo4j.kernel.impl.util; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; /** * Manages a lazy initialized single reference that can be {@link #invalidate() invalidated}. @@ -28,7 +28,7 @@ public abstract class LazySingleReference implements Supplier { private volatile T reference; - + /** * @return whether or not the managed reference has been initialized, i.e {@link #get() evaluated} * for the first time, or after {@link #invalidate() invalidated}. @@ -37,7 +37,7 @@ public boolean isCreated() { return reference != null; } - + /** * Returns the reference, initializing it if need be. */ @@ -57,7 +57,7 @@ public T get() } return result; } - + /** * Invalidates any initialized reference. A future call to {@link #get()} will have it initialized again. */ @@ -65,7 +65,7 @@ public synchronized void invalidate() { reference = null; } - + /** * Provides a reference to manage. */ diff --git a/community/kernel/src/main/java/org/neo4j/udc/UsageDataKey.java b/community/kernel/src/main/java/org/neo4j/udc/UsageDataKey.java index 313f11d670eb0..432bd37542d8b 100644 --- a/community/kernel/src/main/java/org/neo4j/udc/UsageDataKey.java +++ b/community/kernel/src/main/java/org/neo4j/udc/UsageDataKey.java @@ -19,7 +19,7 @@ */ package org.neo4j.udc; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; import static org.neo4j.function.Suppliers.singleton; diff --git a/community/kernel/src/main/java/org/neo4j/udc/UsageDataKeys.java b/community/kernel/src/main/java/org/neo4j/udc/UsageDataKeys.java index 1f38e461c46e2..c93db94a30957 100644 --- a/community/kernel/src/main/java/org/neo4j/udc/UsageDataKeys.java +++ b/community/kernel/src/main/java/org/neo4j/udc/UsageDataKeys.java @@ -19,8 +19,9 @@ */ package org.neo4j.udc; +import java.util.function.Supplier; + import org.neo4j.concurrent.RecentK; -import org.neo4j.function.Supplier; import static org.neo4j.udc.UsageDataKey.key; @@ -44,14 +45,8 @@ public class UsageDataKeys public static final UsageDataKey operationalMode = key( "neo4j.opMode", OperationalMode.unknown ); /** Self-reported names of clients connecting to us. */ - public static final UsageDataKey> clientNames = key( "neo4j.clientNames", new Supplier>() - { - @Override - public RecentK get() - { - return new RecentK<>( 10 ); - } - } ); + public static final UsageDataKey> clientNames = key( "neo4j.clientNames", + (Supplier>) () -> new RecentK<>( 10 ) ); /** Cluster server ID */ public static final UsageDataKey serverId = key( "neo4j.serverId" ); diff --git a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/executor/DynamicTaskExecutor.java b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/executor/DynamicTaskExecutor.java index d92f0e5d8505d..1399719bcfb57 100644 --- a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/executor/DynamicTaskExecutor.java +++ b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/executor/DynamicTaskExecutor.java @@ -24,12 +24,11 @@ import java.util.Arrays; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; import static java.lang.Math.min; - import static org.neo4j.helpers.Exceptions.launderedException; /** diff --git a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/csv/DataFactories.java b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/csv/DataFactories.java index 92106724a6874..ef9886c4a423f 100644 --- a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/csv/DataFactories.java +++ b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/csv/DataFactories.java @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Supplier; import org.neo4j.csv.reader.CharReadable; import org.neo4j.csv.reader.CharSeeker; @@ -34,7 +35,6 @@ import org.neo4j.csv.reader.Mark; import org.neo4j.function.Factory; import org.neo4j.function.Function; -import org.neo4j.function.Supplier; import org.neo4j.helpers.collection.Iterables; import org.neo4j.unsafe.impl.batchimport.input.DuplicateHeaderException; import org.neo4j.unsafe.impl.batchimport.input.HeaderException; @@ -67,32 +67,25 @@ public static DataFactory data( final Funct throw new IllegalArgumentException( "No files specified" ); } - return new DataFactory() + return config -> new Data() { @Override - public Data create( final Configuration config ) + public CharSeeker stream() { - return new Data() + try { - @Override - public CharSeeker stream() - { - try - { - return charSeeker( files( charset, files ), config, true ); - } - catch ( IOException e ) - { - throw new InputException( e.getMessage(), e ); - } - } + return charSeeker( files( charset, files ), config, true ); + } + catch ( IOException e ) + { + throw new InputException( e.getMessage(), e ); + } + } - @Override - public Function decorator() - { - return decorator; - } - }; + @Override + public Function decorator() + { + return decorator; } }; } @@ -105,25 +98,18 @@ public Function decorator() public static DataFactory data( final Function decorator, final Supplier readable ) { - return new DataFactory() + return config -> new Data() { @Override - public Data create( final Configuration config ) + public CharSeeker stream() { - return new Data() - { - @Override - public CharSeeker stream() - { - return charSeeker( readable.get(), config, true ); - } + return charSeeker( readable.get(), config, true ); + } - @Override - public Function decorator() - { - return decorator; - } - }; + @Override + public Function decorator() + { + return decorator; } }; } diff --git a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/ProcessorStep.java b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/ProcessorStep.java index bdd692d67c609..c71b1e8c9d00d 100644 --- a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/ProcessorStep.java +++ b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/ProcessorStep.java @@ -22,15 +22,12 @@ import java.util.concurrent.atomic.AtomicLong; import org.neo4j.function.LongPredicate; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.Resource; import org.neo4j.unsafe.impl.batchimport.executor.DynamicTaskExecutor; -import org.neo4j.unsafe.impl.batchimport.executor.Task; import org.neo4j.unsafe.impl.batchimport.executor.TaskExecutor; import org.neo4j.unsafe.impl.batchimport.stats.StatsProvider; import static java.lang.System.currentTimeMillis; - import static org.neo4j.unsafe.impl.batchimport.executor.DynamicTaskExecutor.DEFAULT_PARK_STRATEGY; /** @@ -81,14 +78,7 @@ public void start( int orderingGuarantees ) { super.start( orderingGuarantees ); this.executor = new DynamicTaskExecutor<>( initialProcessorCount, maxProcessors, workAheadSize, - DEFAULT_PARK_STRATEGY, name(), new Supplier() - { - @Override - public ProcessorStep.Sender get() - { - return new Sender(); - } - } ); + DEFAULT_PARK_STRATEGY, name(), () -> new Sender() ); } @Override @@ -98,42 +88,37 @@ public long receive( final long ticket, final T batch ) long idleTime = await( catchUp, workAheadSize ); incrementQueue(); - executor.submit( new Task() - { - @Override - public void run( Sender sender ) + executor.submit( sender -> { + assertHealthy(); + sender.initialize( ticket ); + try { - assertHealthy(); - sender.initialize( ticket ); - try + // If we're ordering tickets we will force calls to #permit to be ordered by ticket + // since grabbing a permit may include locking. + if ( guarantees( ORDER_PROCESS ) ) { - // If we're ordering tickets we will force calls to #permit to be ordered by ticket - // since grabbing a permit may include locking. - if ( guarantees( ORDER_PROCESS ) ) - { - await( rightBeginTicket, ticket ); - } - try ( Resource precondition = permit( batch ) ) - { - begunBatches.incrementAndGet(); - long startTime = currentTimeMillis(); - process( batch, sender ); - if ( downstream == null ) - { - // No batches were emmitted so we couldn't track done batches in that way. - // We can see that we're the last step so increment here instead - doneBatches.incrementAndGet(); - } - totalProcessingTime.add( currentTimeMillis()-startTime-sender.sendTime ); - } - - decrementQueue(); - checkNotifyEndDownstream(); + await( rightBeginTicket, ticket ); } - catch ( Throwable e ) + try ( Resource precondition = permit( batch ) ) { - issuePanic( e ); + begunBatches.incrementAndGet(); + long startTime1 = currentTimeMillis(); + process( batch, sender ); + if ( downstream == null ) + { + // No batches were emmitted so we couldn't track done batches in that way. + // We can see that we're the last step so increment here instead + doneBatches.incrementAndGet(); + } + totalProcessingTime.add( currentTimeMillis() - startTime1 - sender.sendTime ); } + + decrementQueue(); + checkNotifyEndDownstream(); + } + catch ( Throwable e ) + { + issuePanic( e ); } } ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/DummyExtensionFactory.java b/community/kernel/src/test/java/org/neo4j/kernel/DummyExtensionFactory.java index 0300b47f432b6..6c970b6200c45 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/DummyExtensionFactory.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/DummyExtensionFactory.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.extension.KernelExtensionFactory; import org.neo4j.kernel.lifecycle.Lifecycle; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/counts/CompositeCountsTest.java b/community/kernel/src/test/java/org/neo4j/kernel/counts/CompositeCountsTest.java index a0f5e92a763c9..10e89b08f0101 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/counts/CompositeCountsTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/counts/CompositeCountsTest.java @@ -23,7 +23,8 @@ import org.junit.Rule; import org.junit.Test; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.graphdb.Label; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Relationship; @@ -36,7 +37,6 @@ import org.neo4j.test.ImpermanentDatabaseRule; import static org.junit.Assert.assertEquals; - import static org.neo4j.graphdb.Label.label; import static org.neo4j.graphdb.RelationshipType.withName; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/counts/LabelCountsTest.java b/community/kernel/src/test/java/org/neo4j/kernel/counts/LabelCountsTest.java index 62e5088113f21..41b7bc676b563 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/counts/LabelCountsTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/counts/LabelCountsTest.java @@ -23,7 +23,8 @@ import org.junit.Rule; import org.junit.Test; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Label; import org.neo4j.graphdb.Node; @@ -35,7 +36,6 @@ import org.neo4j.test.ImpermanentDatabaseRule; import static org.junit.Assert.assertEquals; - import static org.neo4j.graphdb.Label.label; public class LabelCountsTest diff --git a/community/kernel/src/test/java/org/neo4j/kernel/counts/NodeCountsTest.java b/community/kernel/src/test/java/org/neo4j/kernel/counts/NodeCountsTest.java index 76d6c5ed63e4f..2f6a6f904458c 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/counts/NodeCountsTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/counts/NodeCountsTest.java @@ -19,13 +19,13 @@ */ package org.neo4j.kernel.counts; -import java.util.concurrent.Future; - import org.junit.Before; import org.junit.Rule; import org.junit.Test; -import org.neo4j.function.Supplier; +import java.util.concurrent.Future; +import java.util.function.Supplier; + import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Transaction; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/counts/RelationshipCountsTest.java b/community/kernel/src/test/java/org/neo4j/kernel/counts/RelationshipCountsTest.java index 235692e5185f4..781aa2c4dc5f4 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/counts/RelationshipCountsTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/counts/RelationshipCountsTest.java @@ -24,8 +24,8 @@ import org.junit.Test; import java.util.concurrent.Future; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Label; import org.neo4j.graphdb.Node; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/NodeStoreScanTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/NodeStoreScanTest.java index 735091c483790..8bdab080d0cad 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/NodeStoreScanTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/NodeStoreScanTest.java @@ -22,7 +22,8 @@ import org.junit.Test; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.impl.api.index.StoreScan; import org.neo4j.kernel.impl.locking.LockService; import org.neo4j.kernel.impl.store.NodeStore; diff --git a/community/kernel/src/test/java/org/neo4j/test/DatabaseRule.java b/community/kernel/src/test/java/org/neo4j/test/DatabaseRule.java index d22021baebcfc..9b521ec3ed4a3 100644 --- a/community/kernel/src/test/java/org/neo4j/test/DatabaseRule.java +++ b/community/kernel/src/test/java/org/neo4j/test/DatabaseRule.java @@ -23,11 +23,11 @@ import java.io.IOException; import java.net.URL; import java.util.Map; +import java.util.function.Supplier; import org.neo4j.function.Consumer; import org.neo4j.function.Function; import org.neo4j.function.Functions; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.DependencyResolver; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Label; @@ -279,17 +279,12 @@ public synchronized void ensureStarted() } } - public static interface RestartAction + public interface RestartAction { void run( FileSystemAbstraction fs, File storeDirectory ) throws IOException; - public static RestartAction EMPTY = new RestartAction() - { - @Override - public void run( FileSystemAbstraction fs, File storeDirectory ) - { - // duh - } + RestartAction EMPTY = ( fs, storeDirectory ) -> { + // duh }; } diff --git a/community/kernel/src/test/java/org/neo4j/test/EphemeralFileSystemRule.java b/community/kernel/src/test/java/org/neo4j/test/EphemeralFileSystemRule.java index fea1cca2dc957..5d0bd7a9577f1 100644 --- a/community/kernel/src/test/java/org/neo4j/test/EphemeralFileSystemRule.java +++ b/community/kernel/src/test/java/org/neo4j/test/EphemeralFileSystemRule.java @@ -21,7 +21,8 @@ import org.junit.rules.ExternalResource; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.mockfs.EphemeralFileSystemAbstraction; import org.neo4j.io.fs.FileSystemAbstraction; @@ -56,7 +57,7 @@ public EphemeralFileSystemAbstraction snapshot( Runnable action ) } return fs; } - + public void clear() { fs.shutdown(); @@ -65,13 +66,6 @@ public void clear() public static Runnable shutdownDbAction( final GraphDatabaseService db ) { - return new Runnable() - { - @Override - public void run() - { - db.shutdown(); - } - }; + return () -> db.shutdown(); } } diff --git a/community/kernel/src/test/java/org/neo4j/test/ResourceRule.java b/community/kernel/src/test/java/org/neo4j/test/ResourceRule.java index 9917f316e2cf9..2d923fa345560 100644 --- a/community/kernel/src/test/java/org/neo4j/test/ResourceRule.java +++ b/community/kernel/src/test/java/org/neo4j/test/ResourceRule.java @@ -24,8 +24,8 @@ import org.junit.runners.model.Statement; import java.io.File; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.pagecache.PageCache; diff --git a/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/DataFactoriesTest.java b/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/DataFactoriesTest.java index ec122442f5299..a875cc884c17d 100644 --- a/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/DataFactoriesTest.java +++ b/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/DataFactoriesTest.java @@ -26,12 +26,10 @@ import java.io.StringReader; import org.neo4j.csv.reader.BufferedCharSeeker; -import org.neo4j.csv.reader.CharReadable; import org.neo4j.csv.reader.CharSeeker; import org.neo4j.csv.reader.Extractor; import org.neo4j.csv.reader.Extractors; import org.neo4j.function.Functions; -import org.neo4j.function.Supplier; import org.neo4j.unsafe.impl.batchimport.input.DuplicateHeaderException; import org.neo4j.unsafe.impl.batchimport.input.InputException; import org.neo4j.unsafe.impl.batchimport.input.InputNode; @@ -205,19 +203,14 @@ public void shouldParseHeaderFromFirstLineOfFirstInputFile() throws Exception // GIVEN final Reader firstSource = new StringReader( "id:ID\tname:String\tbirth_date:long" ); final Reader secondSource = new StringReader( "0\tThe node\t123456789" ); - DataFactory dataFactory = data( Functions.identity(), new Supplier() - { - @Override - public CharReadable get() + DataFactory dataFactory = data( Functions.identity(), () -> { + try + { + return sources( firstSource, secondSource ); + } + catch ( IOException e ) { - try - { - return sources( firstSource, secondSource ); - } - catch ( IOException e ) - { - throw new RuntimeException( e ); - } + throw new RuntimeException( e ); } } ); Header.Factory headerFactory = defaultFormatNodeFileHeader(); diff --git a/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/ExternalPropertiesDecoratorTest.java b/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/ExternalPropertiesDecoratorTest.java index 98d7172e665c7..4944b701b250b 100644 --- a/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/ExternalPropertiesDecoratorTest.java +++ b/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/ExternalPropertiesDecoratorTest.java @@ -23,11 +23,11 @@ import java.io.StringReader; import java.util.Map; +import java.util.function.Supplier; import org.neo4j.csv.reader.CharReadable; import org.neo4j.csv.reader.Readables; import org.neo4j.function.Function; -import org.neo4j.function.Supplier; import org.neo4j.unsafe.impl.batchimport.input.InputEntity; import org.neo4j.unsafe.impl.batchimport.input.InputNode; import org.neo4j.unsafe.impl.batchimport.input.UpdateBehaviour; @@ -36,7 +36,6 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; - import static org.neo4j.helpers.collection.MapUtil.map; import static org.neo4j.unsafe.impl.batchimport.input.Collectors.silentBadCollector; import static org.neo4j.unsafe.impl.batchimport.input.InputEntityDecorators.NO_NODE_DECORATOR; @@ -129,14 +128,7 @@ private InputNode node( Object id, Object... props ) private Supplier readable( final String data ) { - return new Supplier() - { - @Override - public CharReadable get() - { - return Readables.wrap( new StringReader( data ) ); - } - }; + return () -> Readables.wrap( new StringReader( data ) ); } private Overriden config() diff --git a/community/logging/src/main/java/org/neo4j/logging/AbstractLogProvider.java b/community/logging/src/main/java/org/neo4j/logging/AbstractLogProvider.java index e2a3323c37f5a..11b09472005ee 100644 --- a/community/logging/src/main/java/org/neo4j/logging/AbstractLogProvider.java +++ b/community/logging/src/main/java/org/neo4j/logging/AbstractLogProvider.java @@ -19,10 +19,9 @@ */ package org.neo4j.logging; -import org.neo4j.function.Supplier; - import java.util.Collection; import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Supplier; /** * An abstract {@link LogProvider} implementation, which ensures {@link Log}s are cached and reused. @@ -34,27 +33,13 @@ public abstract class AbstractLogProvider implements LogProvider @Override public T getLog( final Class loggingClass ) { - return getLog( loggingClass.getName(), new Supplier() - { - @Override - public T get() - { - return buildLog( loggingClass ); - } - } ); + return getLog( loggingClass.getName(), () -> buildLog( loggingClass ) ); } @Override public T getLog( final String name ) { - return getLog( name, new Supplier() - { - @Override - public T get() - { - return buildLog( name ); - } - } ); + return getLog( name, () -> buildLog( name ) ); } private T getLog( String name, Supplier logSupplier ) diff --git a/community/logging/src/main/java/org/neo4j/logging/AbstractPrintWriterLogger.java b/community/logging/src/main/java/org/neo4j/logging/AbstractPrintWriterLogger.java index 3720bcffc1eff..0fb10e9ef51c6 100644 --- a/community/logging/src/main/java/org/neo4j/logging/AbstractPrintWriterLogger.java +++ b/community/logging/src/main/java/org/neo4j/logging/AbstractPrintWriterLogger.java @@ -19,12 +19,12 @@ */ package org.neo4j.logging; -import org.neo4j.function.Consumer; -import org.neo4j.function.Supplier; - import java.io.PrintWriter; +import java.util.function.Supplier; + +import org.neo4j.function.Consumer; -import static java.util.Objects.*; +import static java.util.Objects.requireNonNull; /** * An abstract {@link Logger} implementation, which takes care of locking and flushing. diff --git a/community/logging/src/main/java/org/neo4j/logging/FormattedLog.java b/community/logging/src/main/java/org/neo4j/logging/FormattedLog.java index 5bc10371231ea..69d3e925881f7 100644 --- a/community/logging/src/main/java/org/neo4j/logging/FormattedLog.java +++ b/community/logging/src/main/java/org/neo4j/logging/FormattedLog.java @@ -29,10 +29,10 @@ import java.util.Date; import java.util.TimeZone; import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; import org.neo4j.function.Consumer; import org.neo4j.function.Function; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; /** @@ -40,14 +40,7 @@ */ public class FormattedLog extends AbstractLog { - static final Supplier DEFAULT_CURRENT_DATE_SUPPLIER = new Supplier() - { - @Override - public Date get() - { - return new Date(); - } - }; + static final Supplier DEFAULT_CURRENT_DATE_SUPPLIER = Date::new; static final Function OUTPUT_STREAM_CONVERTER = new Function() { @Override diff --git a/community/logging/src/main/java/org/neo4j/logging/FormattedLogProvider.java b/community/logging/src/main/java/org/neo4j/logging/FormattedLogProvider.java index 7e2f906d51ab2..348fe2b5258e4 100644 --- a/community/logging/src/main/java/org/neo4j/logging/FormattedLogProvider.java +++ b/community/logging/src/main/java/org/neo4j/logging/FormattedLogProvider.java @@ -26,9 +26,9 @@ import java.util.HashMap; import java.util.Map; import java.util.TimeZone; +import java.util.function.Supplier; import java.util.regex.Pattern; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; import static org.neo4j.logging.FormattedLog.DEFAULT_CURRENT_DATE_SUPPLIER; diff --git a/community/logging/src/main/java/org/neo4j/logging/RotatingFileOutputStreamSupplier.java b/community/logging/src/main/java/org/neo4j/logging/RotatingFileOutputStreamSupplier.java index 68c8d611ab81d..f5b4ffa400739 100644 --- a/community/logging/src/main/java/org/neo4j/logging/RotatingFileOutputStreamSupplier.java +++ b/community/logging/src/main/java/org/neo4j/logging/RotatingFileOutputStreamSupplier.java @@ -31,9 +31,9 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; import org.neo4j.function.LongSupplier; -import org.neo4j.function.Supplier; import org.neo4j.io.fs.FileSystemAbstraction; import static org.neo4j.io.file.Files.createOrOpenAsOuputStream; @@ -197,45 +197,40 @@ private void rotate() return; } - Runnable runnable = new Runnable() - { - @Override - public void run() + Runnable runnable = () -> { + OutputStream newStream; + try { - OutputStream newStream; - try - { - if ( fileSystem.fileExists( outputFile ) ) - { - shiftArchivedOutputFiles(); - fileSystem.renameFile( outputFile, archivedOutputFile( 1 ) ); - } - newStream = openOutputFile(); - } - catch ( Exception e ) + if ( fileSystem.fileExists( outputFile ) ) { - rotationListener.rotationError( e, outRef.get() ); - rotating.set( false ); - return; - } - OutputStream oldStream = outRef.get(); - rotationListener.outputFileCreated( newStream, oldStream ); - synchronized ( outRef ) - { - if ( !closed.get() ) - { - outRef.set( newStream ); - removeCollectedReferences( archivedStreams ); - archivedStreams.add( new WeakReference<>( oldStream ) ); - } + shiftArchivedOutputFiles(); + fileSystem.renameFile( outputFile, archivedOutputFile( 1 ) ); } - if ( rotationDelay > 0 ) + newStream = openOutputFile(); + } + catch ( Exception e ) + { + rotationListener.rotationError( e, outRef.get() ); + rotating.set( false ); + return; + } + OutputStream oldStream = outRef.get(); + rotationListener.outputFileCreated( newStream, oldStream ); + synchronized ( outRef ) + { + if ( !closed.get() ) { - earliestRotationTimeRef.set( currentTimeSupplier.getAsLong() + rotationDelay ); + outRef.set( newStream ); + removeCollectedReferences( archivedStreams ); + archivedStreams.add( new WeakReference<>( oldStream ) ); } - rotationListener.rotationCompleted( newStream, oldStream ); - rotating.set( false ); } + if ( rotationDelay > 0 ) + { + earliestRotationTimeRef.set( currentTimeSupplier.getAsLong() + rotationDelay ); + } + rotationListener.rotationCompleted( newStream, oldStream ); + rotating.set( false ); }; try diff --git a/community/logging/src/test/java/org/neo4j/logging/RotatingFileOutputStreamSupplierTest.java b/community/logging/src/test/java/org/neo4j/logging/RotatingFileOutputStreamSupplierTest.java index f28ac7e6366a0..e88cbead2347b 100644 --- a/community/logging/src/test/java/org/neo4j/logging/RotatingFileOutputStreamSupplierTest.java +++ b/community/logging/src/test/java/org/neo4j/logging/RotatingFileOutputStreamSupplierTest.java @@ -34,13 +34,13 @@ import java.util.concurrent.Executors; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Supplier; import org.neo4j.adversaries.Adversary; import org.neo4j.adversaries.RandomAdversary; import org.neo4j.adversaries.fs.AdversarialFileSystemAbstraction; import org.neo4j.adversaries.fs.AdversarialOutputStream; import org.neo4j.function.LongSupplier; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; import org.neo4j.graphdb.mockfs.DelegatingFileSystemAbstraction; import org.neo4j.graphdb.mockfs.EphemeralFileSystemAbstraction; @@ -63,14 +63,7 @@ public class RotatingFileOutputStreamSupplierTest { - private static final java.util.concurrent.Executor DIRECT_EXECUTOR = new Executor() - { - @Override - public void execute( Runnable task ) - { - task.run(); - } - }; + private static final java.util.concurrent.Executor DIRECT_EXECUTOR = task -> task.run(); private FileSystemAbstraction fileSystem = new EphemeralFileSystemAbstraction(); private File logFile = new File( "/tmp/logfile.log" ); diff --git a/community/lucene-index/src/test/java/org/neo4j/concurrencytest/ConstraintIndexConcurrencyTest.java b/community/lucene-index/src/test/java/org/neo4j/concurrencytest/ConstraintIndexConcurrencyTest.java index 860e45abd7fa4..c748297903acc 100644 --- a/community/lucene-index/src/test/java/org/neo4j/concurrencytest/ConstraintIndexConcurrencyTest.java +++ b/community/lucene-index/src/test/java/org/neo4j/concurrencytest/ConstraintIndexConcurrencyTest.java @@ -22,8 +22,9 @@ import org.junit.Rule; import org.junit.Test; +import java.util.function.Supplier; + import org.neo4j.function.Function; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Label; import org.neo4j.graphdb.Transaction; diff --git a/community/primitive-collections/src/main/java/org/neo4j/cursor/Cursor.java b/community/primitive-collections/src/main/java/org/neo4j/cursor/Cursor.java index 4d9155ea2de25..ab8149ae9346d 100644 --- a/community/primitive-collections/src/main/java/org/neo4j/cursor/Cursor.java +++ b/community/primitive-collections/src/main/java/org/neo4j/cursor/Cursor.java @@ -19,7 +19,7 @@ */ package org.neo4j.cursor; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; /** * A cursor is an object that moves to point to different locations in a data structure. diff --git a/community/server/src/main/java/org/neo4j/server/AbstractNeoServer.java b/community/server/src/main/java/org/neo4j/server/AbstractNeoServer.java index 4c0bfac8a18c8..90087765b8d9c 100644 --- a/community/server/src/main/java/org/neo4j/server/AbstractNeoServer.java +++ b/community/server/src/main/java/org/neo4j/server/AbstractNeoServer.java @@ -28,11 +28,11 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.function.Supplier; import java.util.regex.Pattern; import javax.servlet.Filter; import org.neo4j.function.Function; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.DependencyResolver; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.helpers.Clock; @@ -239,15 +239,9 @@ private TransactionFacade createTransactionalActions() // ensure that this is > 0 long runEvery = round( timeoutMillis / 2.0 ); - resolveDependency( JobScheduler.class ).scheduleRecurring( serverTransactionTimeout, new - Runnable() - { - @Override - public void run() - { - long maxAge = clock.currentTimeMillis() - timeoutMillis; - transactionRegistry.rollbackSuspendedTransactionsIdleSince( maxAge ); - } + resolveDependency( JobScheduler.class ).scheduleRecurring( serverTransactionTimeout, () -> { + long maxAge = clock.currentTimeMillis() - timeoutMillis; + transactionRegistry.rollbackSuspendedTransactionsIdleSince( maxAge ); }, runEvery, MILLISECONDS ); return new TransactionFacade( @@ -291,14 +285,7 @@ private void stopModules() @Override public Runnable apply( final ServerModule module ) { - return new Runnable() - { - @Override - public void run() - { - module.stop(); - } - }; + return () -> module.stop(); } }, serverModules ) ) .run(); @@ -483,27 +470,9 @@ public void stop() { // TODO: All components should be moved over to the LifeSupport instance, life, in here. new RunCarefully( - new Runnable() { - @Override - public void run() - { - stopWebServer(); - } - }, - new Runnable() { - @Override - public void run() - { - stopModules(); - } - }, - new Runnable() { - @Override - public void run() - { - life.stop(); - } - } + this::stopWebServer, + this::stopModules, + life::stop ).run(); //noinspection deprecation @@ -629,7 +598,7 @@ protected T resolveDependency( Class type ) return dependencyResolver.resolveDependency( type ); } - private final Dependencies dependencyResolver = new Dependencies(new Supplier() + private final Dependencies dependencyResolver = new Dependencies( new Supplier() { @Override public DependencyResolver get() @@ -637,5 +606,5 @@ public DependencyResolver get() Database db = dependencyResolver.resolveDependency( Database.class ); return db.getGraph().getDependencyResolver(); } - }); + } ); } diff --git a/enterprise/backup/src/main/java/org/neo4j/backup/BackupImpl.java b/enterprise/backup/src/main/java/org/neo4j/backup/BackupImpl.java index 2668d0e9425d1..f839a30d26c30 100644 --- a/enterprise/backup/src/main/java/org/neo4j/backup/BackupImpl.java +++ b/enterprise/backup/src/main/java/org/neo4j/backup/BackupImpl.java @@ -19,12 +19,13 @@ */ package org.neo4j.backup; +import java.util.function.Supplier; + import org.neo4j.com.RequestContext; import org.neo4j.com.Response; import org.neo4j.com.storecopy.ResponsePacker; import org.neo4j.com.storecopy.StoreCopyServer; import org.neo4j.com.storecopy.StoreWriter; -import org.neo4j.function.Supplier; import org.neo4j.kernel.impl.store.StoreId; import org.neo4j.kernel.impl.transaction.log.LogFileInformation; import org.neo4j.kernel.impl.transaction.log.LogicalTransactionStore; diff --git a/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupExtensionFactory.java b/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupExtensionFactory.java index fd37bfd2d48c6..ed652bbad3781 100644 --- a/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupExtensionFactory.java +++ b/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupExtensionFactory.java @@ -19,7 +19,8 @@ */ package org.neo4j.backup; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.helpers.Service; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.GraphDatabaseAPI; diff --git a/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupKernelExtension.java b/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupKernelExtension.java index 844398773bf31..d39536d365508 100644 --- a/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupKernelExtension.java +++ b/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupKernelExtension.java @@ -21,6 +21,7 @@ import java.io.File; import java.net.URI; +import java.util.function.Supplier; import org.neo4j.cluster.BindingListener; import org.neo4j.cluster.InstanceId; @@ -32,7 +33,6 @@ import org.neo4j.com.ServerUtil; import org.neo4j.com.monitor.RequestMonitor; import org.neo4j.com.storecopy.StoreCopyServer; -import org.neo4j.function.Supplier; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.GraphDatabaseAPI; import org.neo4j.kernel.NeoStoreDataSource; @@ -82,27 +82,22 @@ public OnlineBackupKernelExtension( Config config, final GraphDatabaseAPI graphD final Supplier logFileInformationSupplier, final FileSystemAbstraction fileSystemAbstraction) { - this( config, graphDatabaseAPI, new BackupProvider() - { - @Override - public TheBackupInterface newBackup() - { - TransactionIdStore transactionIdStore = transactionIdStoreSupplier.get(); - StoreCopyServer copier = new StoreCopyServer( neoStoreDataSource, checkPointerSupplier.get(), - fileSystemAbstraction, new File( graphDatabaseAPI.getStoreDir() ), - monitors.newMonitor( StoreCopyServer.Monitor.class ) ); - LogicalTransactionStore logicalTransactionStore = logicalTransactionStoreSupplier.get(); - LogFileInformation logFileInformation = logFileInformationSupplier.get(); - return new BackupImpl( copier, monitors, - logicalTransactionStore, transactionIdStore, logFileInformation, new Supplier() + this( config, graphDatabaseAPI, () -> { + TransactionIdStore transactionIdStore = transactionIdStoreSupplier.get(); + StoreCopyServer copier = new StoreCopyServer( neoStoreDataSource, checkPointerSupplier.get(), + fileSystemAbstraction, new File( graphDatabaseAPI.getStoreDir() ), + monitors.newMonitor( StoreCopyServer.Monitor.class ) ); + LogicalTransactionStore logicalTransactionStore = logicalTransactionStoreSupplier.get(); + LogFileInformation logFileInformation = logFileInformationSupplier.get(); + return new BackupImpl( copier, monitors, + logicalTransactionStore, transactionIdStore, logFileInformation, new Supplier() + { + @Override + public StoreId get() { - @Override - public StoreId get() - { - return graphDatabaseAPI.storeId(); - } - } ); - } + return graphDatabaseAPI.storeId(); + } + } ); }, monitors, logProvider ); } @@ -140,14 +135,7 @@ public void start() throws Throwable graphDatabaseAPI.getDependencyResolver().resolveDependency( ClusterMemberEvents.class).addClusterMemberListener( (ClusterMemberListener) startBindingListener ); - bindingListener = new BindingListener() - { - @Override - public void listeningAt( URI myUri ) - { - me = myUri; - } - }; + bindingListener = (BindingListener) myUri -> me = myUri; graphDatabaseAPI.getDependencyResolver().resolveDependency( BindingNotifier.class ).addBindingListener( (BindingListener) bindingListener ); } diff --git a/enterprise/backup/src/main/java/org/neo4j/backup/StoreCopyResponsePacker.java b/enterprise/backup/src/main/java/org/neo4j/backup/StoreCopyResponsePacker.java index d7f570b9e863b..f628f14a6a0d9 100644 --- a/enterprise/backup/src/main/java/org/neo4j/backup/StoreCopyResponsePacker.java +++ b/enterprise/backup/src/main/java/org/neo4j/backup/StoreCopyResponsePacker.java @@ -19,6 +19,8 @@ */ package org.neo4j.backup; +import java.util.function.Supplier; + import org.neo4j.com.RequestContext; import org.neo4j.com.ResourceReleaser; import org.neo4j.com.Response; @@ -27,7 +29,6 @@ import org.neo4j.com.storecopy.ResponsePacker; import org.neo4j.com.storecopy.StoreCopyServer; import org.neo4j.com.storecopy.StoreCopyServer.Monitor; -import org.neo4j.function.Supplier; import org.neo4j.helpers.collection.Visitor; import org.neo4j.kernel.impl.store.StoreId; import org.neo4j.kernel.impl.transaction.CommittedTransactionRepresentation; @@ -67,18 +68,13 @@ public Response packTransactionStreamResponse( RequestContext context, T { final long toStartFrom = mandatoryStartTransactionId; final long toEndAt = transactionIdStore.getLastCommittedTransactionId(); - TransactionStream transactions = new TransactionStream() - { - @Override - public void accept( Visitor visitor ) throws Exception + TransactionStream transactions = visitor -> { + // Check so that it's even worth thinking about extracting any transactions at all + if ( toStartFrom > BASE_TX_ID && toStartFrom <= toEndAt ) { - // Check so that it's even worth thinking about extracting any transactions at all - if ( toStartFrom > BASE_TX_ID && toStartFrom <= toEndAt ) - { - monitor.startStreamingTransactions( toStartFrom ); - extractTransactions( toStartFrom, filterVisitor( visitor, toEndAt ) ); - monitor.finishStreamingTransactions( toEndAt ); - } + monitor.startStreamingTransactions( toStartFrom ); + extractTransactions( toStartFrom, filterVisitor( visitor, toEndAt ) ); + monitor.finishStreamingTransactions( toEndAt ); } }; return new TransactionStreamResponse<>( response, storeId.get(), transactions, ResourceReleaser.NO_OP ); diff --git a/enterprise/com/src/main/java/org/neo4j/com/storecopy/ResponsePacker.java b/enterprise/com/src/main/java/org/neo4j/com/storecopy/ResponsePacker.java index 7c1bae5a075ed..03bcfa23d1949 100644 --- a/enterprise/com/src/main/java/org/neo4j/com/storecopy/ResponsePacker.java +++ b/enterprise/com/src/main/java/org/neo4j/com/storecopy/ResponsePacker.java @@ -19,13 +19,14 @@ */ package org.neo4j.com.storecopy; +import java.util.function.Supplier; + import org.neo4j.com.RequestContext; import org.neo4j.com.ResourceReleaser; import org.neo4j.com.Response; import org.neo4j.com.TransactionObligationResponse; import org.neo4j.com.TransactionStream; import org.neo4j.com.TransactionStreamResponse; -import org.neo4j.function.Supplier; import org.neo4j.helpers.collection.Visitor; import org.neo4j.kernel.impl.store.StoreId; import org.neo4j.kernel.impl.transaction.CommittedTransactionRepresentation; @@ -53,16 +54,11 @@ public Response packTransactionStreamResponse( RequestContext context, T { final long toStartFrom = context.lastAppliedTransaction() + 1; final long toEndAt = transactionIdStore.getLastCommittedTransactionId(); - TransactionStream transactions = new TransactionStream() - { - @Override - public void accept( Visitor visitor ) throws Exception + TransactionStream transactions = visitor -> { + // Check so that it's even worth thinking about extracting any transactions at all + if ( toStartFrom > BASE_TX_ID && toStartFrom <= toEndAt ) { - // Check so that it's even worth thinking about extracting any transactions at all - if ( toStartFrom > BASE_TX_ID && toStartFrom <= toEndAt ) - { - extractTransactions( toStartFrom, filterVisitor( visitor, toEndAt ) ); - } + extractTransactions( toStartFrom, filterVisitor( visitor, toEndAt ) ); } }; return new TransactionStreamResponse<>( response, storeId.get(), transactions, ResourceReleaser.NO_OP ); @@ -90,17 +86,12 @@ public Response packEmptyResponse( T response ) protected Visitor filterVisitor( final Visitor delegate, final long txToEndAt ) { - return new Visitor() - { - @Override - public boolean visit( CommittedTransactionRepresentation element ) throws Exception + return element -> { + if ( element.getCommitEntry().getTxId() > txToEndAt ) { - if ( element.getCommitEntry().getTxId() > txToEndAt ) - { - return false; - } - return delegate.visit( element ); + return false; } + return delegate.visit( element ); }; } diff --git a/enterprise/com/src/test/java/org/neo4j/com/storecopy/StoreCopyClientTest.java b/enterprise/com/src/test/java/org/neo4j/com/storecopy/StoreCopyClientTest.java index c400c2579423b..73bdb0c535e3f 100644 --- a/enterprise/com/src/test/java/org/neo4j/com/storecopy/StoreCopyClientTest.java +++ b/enterprise/com/src/test/java/org/neo4j/com/storecopy/StoreCopyClientTest.java @@ -30,7 +30,6 @@ import org.neo4j.com.RequestContext; import org.neo4j.com.Response; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Transaction; import org.neo4j.helpers.CancellationRequest; @@ -61,7 +60,6 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; - import static org.neo4j.graphdb.DynamicLabel.label; public class StoreCopyClientTest @@ -82,14 +80,7 @@ public void shouldCopyStoreFilesAcrossIfACancellationRequestHappensAfterTheTempS final File originalDir = new File( testDir.directory(), "original" ); final AtomicBoolean cancelStoreCopy = new AtomicBoolean( false ); - CancellationRequest cancellationRequest = new CancellationRequest() - { - @Override - public boolean cancellationRequested() - { - return cancelStoreCopy.get(); - } - }; + CancellationRequest cancellationRequest = () -> cancelStoreCopy.get(); StoreCopyClient.Monitor storeCopyMonitor = new StoreCopyClient.Monitor.Adapter() { @@ -152,14 +143,7 @@ public void shouldEndUpWithAnEmptyStoreIfCancellationRequestIssuedJustBeforeReco final File originalDir = new File( testDir.directory(), "original" ); final AtomicBoolean cancelStoreCopy = new AtomicBoolean( false ); - CancellationRequest cancellationRequest = new CancellationRequest() - { - @Override - public boolean cancellationRequested() - { - return cancelStoreCopy.get(); - } - }; + CancellationRequest cancellationRequest = () -> cancelStoreCopy.get(); StoreCopyClient.Monitor storeCopyMonitor = new StoreCopyClient.Monitor.Adapter() { @@ -237,14 +221,7 @@ public void shouldResetNeoStoreLastTransactionOffsetForNonForensicCopy() throws StoreCopyClient copier = new StoreCopyClient( backupStore, new Config(), loadKernelExtensions(), NullLogProvider .getInstance(), fs, pageCache, new StoreCopyClient.Monitor.Adapter(), false ); - CancellationRequest falseCancellationRequest = new CancellationRequest() - { - @Override - public boolean cancellationRequested() - { - return false; - } - }; + CancellationRequest falseCancellationRequest = () -> false; StoreCopyClient.StoreCopyRequester storeCopyRequest = storeCopyRequest( initialStore, (GraphDatabaseAPI) initialDatabase ); @@ -303,14 +280,7 @@ checkPointer, fs, originalDir, new Monitors().newMonitor( StoreCopyServer.Monito .getMetaDataStore().getStoreId(); ResponsePacker responsePacker = new ResponsePacker( logicalTransactionStore, - transactionIdStore, new Supplier() - { - @Override - public StoreId get() - { - return storeId; - } - } ); + transactionIdStore, () -> storeId ); response = spy(responsePacker.packTransactionStreamResponse( requestContext, null )); diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/CatchupServer.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/CatchupServer.java index a7f85179fdd7f..e0339b1c5e65c 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/CatchupServer.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/CatchupServer.java @@ -32,18 +32,18 @@ import io.netty.handler.stream.ChunkedWriteHandler; import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; +import org.neo4j.coreedge.catchup.storecopy.FileHeaderEncoder; import org.neo4j.coreedge.catchup.storecopy.core.GetStoreRequestHandler; import org.neo4j.coreedge.catchup.storecopy.core.StoreCopyFinishedResponseEncoder; +import org.neo4j.coreedge.catchup.storecopy.edge.GetStoreRequestDecoder; import org.neo4j.coreedge.catchup.tx.core.TxPullRequestDecoder; import org.neo4j.coreedge.catchup.tx.core.TxPullRequestHandler; import org.neo4j.coreedge.catchup.tx.core.TxPullResponseEncoder; +import org.neo4j.coreedge.catchup.tx.edge.TxStreamFinishedResponseEncoder; import org.neo4j.coreedge.server.ListenSocketAddress; -import org.neo4j.coreedge.catchup.storecopy.edge.GetStoreRequestDecoder; import org.neo4j.coreedge.server.logging.ExceptionLoggingHandler; -import org.neo4j.coreedge.catchup.tx.edge.TxStreamFinishedResponseEncoder; -import org.neo4j.coreedge.catchup.storecopy.FileHeaderEncoder; -import org.neo4j.function.Supplier; import org.neo4j.helpers.NamedThreadFactory; import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.impl.store.StoreId; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/CheckpointerSupplier.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/CheckpointerSupplier.java index 75c03343f271d..4ec854bf65888 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/CheckpointerSupplier.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/CheckpointerSupplier.java @@ -19,7 +19,8 @@ */ package org.neo4j.coreedge.catchup; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer; import org.neo4j.kernel.impl.util.Dependencies; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/DataSourceSupplier.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/DataSourceSupplier.java index 594e6cbe79a05..49b5c221059ff 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/DataSourceSupplier.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/DataSourceSupplier.java @@ -19,7 +19,8 @@ */ package org.neo4j.coreedge.catchup; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.impl.factory.PlatformModule; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/StoreIdSupplier.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/StoreIdSupplier.java index 2bb3c84748581..b30cb7ff6e46a 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/StoreIdSupplier.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/StoreIdSupplier.java @@ -19,7 +19,8 @@ */ package org.neo4j.coreedge.catchup; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.impl.factory.PlatformModule; import org.neo4j.kernel.impl.store.StoreId; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/storecopy/LocalDatabase.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/storecopy/LocalDatabase.java index 2e354f4f8df94..2f3020b65a87c 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/storecopy/LocalDatabase.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/storecopy/LocalDatabase.java @@ -21,11 +21,11 @@ import java.io.File; import java.io.IOException; +import java.util.function.Supplier; -import org.neo4j.coreedge.server.AdvertisedSocketAddress; import org.neo4j.coreedge.catchup.storecopy.edge.CopiedStoreRecovery; import org.neo4j.coreedge.catchup.storecopy.edge.StoreFetcher; -import org.neo4j.function.Supplier; +import org.neo4j.coreedge.server.AdvertisedSocketAddress; import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.impl.store.StoreId; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/storecopy/core/GetStoreRequestHandler.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/storecopy/core/GetStoreRequestHandler.java index 2fcdadb1a4b07..32485f78cc8ec 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/storecopy/core/GetStoreRequestHandler.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/storecopy/core/GetStoreRequestHandler.java @@ -19,21 +19,21 @@ */ package org.neo4j.coreedge.catchup.storecopy.core; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import io.netty.handler.stream.ChunkedNioStream; + import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.util.function.Supplier; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; -import io.netty.handler.stream.ChunkedNioStream; - -import org.neo4j.coreedge.catchup.ResponseMessageType; import org.neo4j.coreedge.catchup.CatchupServerProtocol; -import org.neo4j.coreedge.catchup.storecopy.edge.GetStoreRequest; +import org.neo4j.coreedge.catchup.ResponseMessageType; import org.neo4j.coreedge.catchup.storecopy.FileHeader; import org.neo4j.coreedge.catchup.storecopy.StoreCopyFinishedResponse; -import org.neo4j.function.Supplier; +import org.neo4j.coreedge.catchup.storecopy.edge.GetStoreRequest; import org.neo4j.graphdb.ResourceIterator; import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/core/TxPullRequestHandler.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/core/TxPullRequestHandler.java index 2b199c24a08e2..f3f5517791a04 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/core/TxPullRequestHandler.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/core/TxPullRequestHandler.java @@ -22,11 +22,12 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; -import org.neo4j.coreedge.catchup.ResponseMessageType; +import java.util.function.Supplier; + import org.neo4j.coreedge.catchup.CatchupServerProtocol; +import org.neo4j.coreedge.catchup.ResponseMessageType; import org.neo4j.coreedge.catchup.tx.edge.TxPullRequest; import org.neo4j.coreedge.catchup.tx.edge.TxPullResponse; -import org.neo4j.function.Supplier; import org.neo4j.kernel.impl.store.StoreId; import org.neo4j.kernel.impl.transaction.CommittedTransactionRepresentation; import org.neo4j.kernel.impl.transaction.log.IOCursor; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/ApplyPulledTransactions.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/ApplyPulledTransactions.java index 2e11f9c9eb618..27b4b65cf51ca 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/ApplyPulledTransactions.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/ApplyPulledTransactions.java @@ -19,7 +19,8 @@ */ package org.neo4j.coreedge.catchup.tx.edge; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.api.exceptions.TransactionFailureException; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/TxPollingClient.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/TxPollingClient.java index 7034e0a66472d..3d435d99d3211 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/TxPollingClient.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/TxPollingClient.java @@ -19,15 +19,15 @@ */ package org.neo4j.coreedge.catchup.tx.edge; +import java.util.function.Supplier; + import org.neo4j.coreedge.catchup.storecopy.edge.CoreClient; import org.neo4j.coreedge.discovery.EdgeDiscoveryService; -import org.neo4j.function.Supplier; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; import org.neo4j.kernel.impl.util.JobScheduler; import org.neo4j.kernel.lifecycle.LifecycleAdapter; import static java.util.concurrent.TimeUnit.MILLISECONDS; - import static org.neo4j.helpers.collection.IteratorUtil.first; import static org.neo4j.kernel.impl.util.JobScheduler.Groups.pullUpdates; @@ -59,15 +59,10 @@ public void startPolling() { coreClient.addTxPullResponseListener( txPullResponseListener ); final TransactionIdStore transactionIdStore = transactionIdStoreSupplier.get(); - jobScheduler.scheduleRecurring( pullUpdates, new Runnable() - { - @Override - public void run() - { - coreClient.pollForTransactions( first( edgeDiscoveryService.currentTopology().getMembers() ) - .getCoreAddress(), transactionIdStore.getLastCommittedTransactionId() ); - } - }, pollingInterval, MILLISECONDS ); + jobScheduler.scheduleRecurring( pullUpdates, + () -> coreClient.pollForTransactions( + first( edgeDiscoveryService.currentTopology().getMembers() ).getCoreAddress(), + transactionIdStore.getLastCommittedTransactionId() ), pollingInterval, MILLISECONDS ); } @Override diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java index 6bbc238cd1385..447ed2aa42b7a 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java @@ -20,6 +20,7 @@ package org.neo4j.coreedge.server.edge; import java.io.File; +import java.util.function.Supplier; import org.neo4j.coreedge.catchup.storecopy.LocalDatabase; import org.neo4j.coreedge.catchup.storecopy.StoreFiles; @@ -36,7 +37,6 @@ import org.neo4j.coreedge.discovery.EdgeDiscoveryService; import org.neo4j.coreedge.server.Expiration; import org.neo4j.coreedge.server.ExpiryScheduler; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.DependencyResolver; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.io.fs.DefaultFileSystemAbstraction; diff --git a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/ConcurrentLockingIT.java b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/ConcurrentLockingIT.java index ebfc669e823fe..b51e7686a00fa 100644 --- a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/ConcurrentLockingIT.java +++ b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/ConcurrentLockingIT.java @@ -19,6 +19,11 @@ */ package org.neo4j.coreedge.scenarios; +import org.junit.After; +import org.junit.Ignore; +import org.junit.Rule; +import org.junit.Test; + import java.io.File; import java.util.ArrayList; import java.util.List; @@ -30,27 +35,18 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.LockSupport; -import org.junit.After; -import org.junit.Ignore; -import org.junit.Rule; -import org.junit.Test; - import org.neo4j.coreedge.discovery.Cluster; import org.neo4j.coreedge.server.core.CoreGraphDatabase; -import org.neo4j.coreedge.raft.NoLeaderTimeoutException; -import org.neo4j.function.Supplier; +import org.neo4j.function.ThrowingSupplier; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Transaction; import org.neo4j.test.TargetDirectory; -import org.neo4j.tooling.GlobalGraphOperations; import static java.util.concurrent.TimeUnit.SECONDS; - import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; - import static org.neo4j.helpers.collection.Iterables.count; import static org.neo4j.test.Assert.assertEventually; @@ -157,7 +153,7 @@ public Long call() throws Exception executor.awaitTermination( durationMillis + 5_000, TimeUnit.MILLISECONDS ); } - public void createNodes( long nodeCount ) throws NoLeaderTimeoutException + public void createNodes( long nodeCount ) throws Exception { GraphDatabaseService coreServer = cluster.findLeader( 5000 ); try ( Transaction tx = coreServer.beginTx() ) @@ -173,7 +169,7 @@ public void createNodes( long nodeCount ) throws NoLeaderTimeoutException { try ( Transaction tx = db.beginTx() ) { - Supplier actualNodeCount = () -> count( GlobalGraphOperations.at( db ).getAllNodes() ); + ThrowingSupplier actualNodeCount = () -> count( db.getAllNodes() ); assertEventually( "nodes to appear", actualNodeCount, is( nodeCount ), 10, SECONDS ); tx.success(); diff --git a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/CoreServerReplicationIT.java b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/CoreServerReplicationIT.java index c915993476318..46bbe4b6712bd 100644 --- a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/CoreServerReplicationIT.java +++ b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/CoreServerReplicationIT.java @@ -19,22 +19,22 @@ */ package org.neo4j.coreedge.scenarios; +import org.junit.After; +import org.junit.Ignore; +import org.junit.Rule; +import org.junit.Test; + import java.io.File; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import org.junit.After; -import org.junit.Ignore; -import org.junit.Rule; -import org.junit.Test; - import org.neo4j.cluster.InstanceId; import org.neo4j.coreedge.discovery.Cluster; import org.neo4j.coreedge.server.CoreEdgeClusterSettings; import org.neo4j.coreedge.server.core.CoreGraphDatabase; -import org.neo4j.function.Supplier; +import org.neo4j.function.ThrowingSupplier; import org.neo4j.graphdb.DependencyResolver; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.GraphDatabaseService; @@ -50,14 +50,13 @@ import static java.util.Collections.singletonList; import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.SECONDS; - import static junit.framework.TestCase.fail; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertEquals; - import static org.neo4j.cluster.ClusterSettings.server_id; +import static org.neo4j.coreedge.server.CoreEdgeClusterSettings.raft_advertised_address; import static org.neo4j.graphdb.Label.label; import static org.neo4j.graphdb.RelationshipType.withName; import static org.neo4j.helpers.collection.Iterables.count; @@ -102,13 +101,12 @@ public void shouldReplicateTransactionToCoreServers() throws Exception { try ( Transaction tx = db.beginTx() ) { - Supplier nodeCount = () -> count( GlobalGraphOperations.at( db ).getAllNodes() ); + ThrowingSupplier nodeCount = () -> count( db.getAllNodes() ); Config config = db.getDependencyResolver().resolveDependency( Config.class ); - assertEventually( "node to appear on core server " + config.get( CoreEdgeClusterSettings - .raft_advertised_address ), nodeCount, - greaterThan( 0L ), 15, SECONDS ); + assertEventually( "node to appear on core server " + config.get( raft_advertised_address ), nodeCount, + greaterThan( 0L ), 15, SECONDS ); for ( Node node : GlobalGraphOperations.at( db ).getAllNodes() ) { @@ -155,7 +153,7 @@ public void shouldReplicateTransactionToCoreServersAddedAfterInitialStartUp() th { try ( Transaction tx = db.beginTx() ) { - Supplier nodeCount = () -> count( GlobalGraphOperations.at( db ).getAllNodes() ); + ThrowingSupplier nodeCount = () -> count( db.getAllNodes() ); Config config = db.getDependencyResolver().resolveDependency( Config.class ); @@ -187,7 +185,7 @@ public void shouldReplicateTransactionAfterOneOriginalServerRemovedFromCluster() cluster.removeCoreServer( leader ); final GraphDatabaseService newLeader = cluster.findLeader( 5000 ); - Supplier creationSuccess = () -> { + ThrowingSupplier creationSuccess = () -> { try ( Transaction tx = newLeader.beginTx() ) { Node node = newLeader.createNode(); @@ -210,7 +208,7 @@ public void shouldReplicateTransactionAfterOneOriginalServerRemovedFromCluster() { try ( Transaction tx = db.beginTx() ) { - Supplier nodeCount = () -> count( GlobalGraphOperations.at( db ).getAllNodes() ); + ThrowingSupplier nodeCount = () -> count( db.getAllNodes() ); Config config = db.getDependencyResolver().resolveDependency( Config.class ); @@ -255,7 +253,7 @@ public void shouldReplicateToCoreServersAddedAfterInitialTransactions() throws E { try ( Transaction tx = db.beginTx() ) { - Supplier nodeCount = () -> count( GlobalGraphOperations.at( db ).getAllNodes() ); + ThrowingSupplier nodeCount = () -> count( db.getAllNodes() ); Config config = db.getDependencyResolver().resolveDependency( Config.class ); @@ -313,7 +311,7 @@ public void shouldReplicateTransactionFromAnyCoreServer() throws Exception { try ( Transaction tx = db.beginTx() ) { - Supplier nodeCount = () -> count( GlobalGraphOperations.at( db ).getAllNodes() ); + ThrowingSupplier nodeCount = () -> count( db.getAllNodes() ); Config config = db.getDependencyResolver().resolveDependency( Config.class ); assertEventually( "node to appear on core server " + diff --git a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/EdgeServerReplicationIT.java b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/EdgeServerReplicationIT.java index ee776140e8599..7b48158d5f3cf 100644 --- a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/EdgeServerReplicationIT.java +++ b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/EdgeServerReplicationIT.java @@ -19,16 +19,16 @@ */ package org.neo4j.coreedge.scenarios; -import java.io.File; -import java.util.Set; - import org.junit.After; import org.junit.Rule; import org.junit.Test; +import java.io.File; +import java.util.Set; + import org.neo4j.coreedge.discovery.Cluster; import org.neo4j.coreedge.server.edge.EdgeGraphDatabase; -import org.neo4j.function.Supplier; +import org.neo4j.function.ThrowingSupplier; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Label; import org.neo4j.graphdb.Node; @@ -42,12 +42,10 @@ import static java.io.File.pathSeparator; import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.SECONDS; - import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; - import static org.neo4j.test.Assert.assertEventually; public class EdgeServerReplicationIT @@ -101,7 +99,7 @@ public void allServersBecomeAvailable() throws Exception // then for ( final EdgeGraphDatabase edgeGraphDatabase : cluster.edgeServers() ) { - Supplier availability = () -> edgeGraphDatabase.isAvailable( 0 ); + ThrowingSupplier availability = () -> edgeGraphDatabase.isAvailable( 0 ); assertEventually( "edge server becomes available", availability, is( true ), 10, SECONDS ); } } @@ -141,7 +139,7 @@ public void shouldEventuallyPullTransactionDownToAllEdgeServers() throws Excepti { try ( Transaction tx = edgeDB.beginTx() ) { - Supplier nodeCount = () -> Iterables.count( GlobalGraphOperations.at( edgeDB ).getAllNodes() ); + ThrowingSupplier nodeCount = () -> Iterables.count( edgeDB.getAllNodes() ); assertEventually( "node to appear on edge server", nodeCount, is( nodesBeforeEdgeServerStarts + 1l ), 2, MINUTES ); diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/UpdatePullingTransactionObligationFulfiller.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/UpdatePullingTransactionObligationFulfiller.java index c93dc3ef06fe9..670edaaf672a0 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/UpdatePullingTransactionObligationFulfiller.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/UpdatePullingTransactionObligationFulfiller.java @@ -19,10 +19,10 @@ */ package org.neo4j.kernel.ha; +import java.util.function.Supplier; + import org.neo4j.cluster.InstanceId; import org.neo4j.com.storecopy.TransactionObligationFulfiller; -import org.neo4j.function.Supplier; -import org.neo4j.kernel.ha.UpdatePuller.Condition; import org.neo4j.kernel.ha.cluster.HighAvailabilityMemberChangeEvent; import org.neo4j.kernel.ha.cluster.HighAvailabilityMemberListener; import org.neo4j.kernel.ha.cluster.HighAvailabilityMemberStateMachine; @@ -60,19 +60,14 @@ public UpdatePullingTransactionObligationFulfiller( UpdatePuller updatePuller, @Override public void fulfill( final long toTxId ) throws InterruptedException { - updatePuller.pullUpdates( new Condition() - { - @Override - public boolean evaluate( int currentTicket, int targetTicket ) - { - /* - * We need to await last *closed* transaction id, not last *committed* transaction id since - * right after leaving this method we might read records off of disk, and they had better - * be up to date, otherwise we read stale data. - */ - return transactionIdStore != null && - transactionIdStore.getLastClosedTransactionId() >= toTxId; - } + updatePuller.pullUpdates( ( currentTicket, targetTicket ) -> { + /* + * We need to await last *closed* transaction id, not last *committed* transaction id since + * right after leaving this method we might read records off of disk, and they had better + * be up to date, otherwise we read stale data. + */ + return transactionIdStore != null && + transactionIdStore.getLastClosedTransactionId() >= toTxId; }, true /*We strictly need the update puller to be and remain active while we wait*/ ); } diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/DefaultMasterImplSPI.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/DefaultMasterImplSPI.java index fd0b7099fe228..18579f8999737 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/DefaultMasterImplSPI.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/DefaultMasterImplSPI.java @@ -27,7 +27,6 @@ import org.neo4j.com.storecopy.ResponsePacker; import org.neo4j.com.storecopy.StoreCopyServer; import org.neo4j.com.storecopy.StoreWriter; -import org.neo4j.function.Supplier; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.GraphDatabaseAPI; import org.neo4j.kernel.IdGeneratorFactory; @@ -96,14 +95,7 @@ public DefaultMasterImplSPI( final GraphDatabaseAPI graphDb, this.neoStoreDataSource = neoStoreDataSource; this.storeDir = new File( graphDb.getStoreDir() ); this.txChecksumLookup = new TransactionChecksumLookup( transactionIdStore, logicalTransactionStore ); - this.responsePacker = new ResponsePacker( logicalTransactionStore, transactionIdStore, new Supplier() - { - @Override - public StoreId get() - { - return graphDb.storeId(); - } - } ); + this.responsePacker = new ResponsePacker( logicalTransactionStore, transactionIdStore, graphDb::storeId ); this.monitors = monitors; } diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/SwitchToMaster.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/SwitchToMaster.java index fa14d583cf47d..0dfc2036ba56b 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/SwitchToMaster.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/SwitchToMaster.java @@ -20,6 +20,7 @@ package org.neo4j.kernel.ha.cluster; import java.net.URI; +import java.util.function.Supplier; import org.neo4j.cluster.ClusterSettings; import org.neo4j.cluster.InstanceId; @@ -27,7 +28,6 @@ import org.neo4j.com.ServerUtil; import org.neo4j.function.BiFunction; import org.neo4j.function.Factory; -import org.neo4j.function.Supplier; import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.ha.DelegateInvocationHandler; diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/SwitchToSlave.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/SwitchToSlave.java index 00d56ae9cdded..1d9fe492cb94f 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/SwitchToSlave.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/SwitchToSlave.java @@ -22,6 +22,7 @@ import java.io.File; import java.io.IOException; import java.net.URI; +import java.util.function.Supplier; import org.neo4j.backup.OnlineBackupKernelExtension; import org.neo4j.cluster.ClusterSettings; @@ -36,7 +37,6 @@ import org.neo4j.com.storecopy.TransactionCommittingResponseUnpacker; import org.neo4j.com.storecopy.TransactionObligationFulfiller; import org.neo4j.function.Function; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.DependencyResolver; import org.neo4j.helpers.CancellationRequest; import org.neo4j.io.fs.FileSystemAbstraction; diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/HighAvailabilityModeSwitcher.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/HighAvailabilityModeSwitcher.java index c973be71866f5..e9f8d0cccff22 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/HighAvailabilityModeSwitcher.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/HighAvailabilityModeSwitcher.java @@ -26,13 +26,13 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Supplier; import org.neo4j.cluster.BindingListener; import org.neo4j.cluster.InstanceId; import org.neo4j.cluster.client.ClusterClient; import org.neo4j.cluster.member.ClusterMemberAvailability; import org.neo4j.cluster.protocol.election.Election; -import org.neo4j.function.Supplier; import org.neo4j.helpers.CancellationRequest; import org.neo4j.helpers.Functions; import org.neo4j.kernel.ha.cluster.HighAvailabilityMemberChangeEvent; @@ -206,7 +206,7 @@ public void instanceStops( HighAvailabilityMemberChangeEvent event ) { stateChanged( event ); } - + public void forceElections() { if ( canAskForElections.compareAndSet( true, false ) ) @@ -260,45 +260,40 @@ private void stateChanged( HighAvailabilityMemberChangeEvent event ) private void switchToMaster() { final CancellationHandle cancellationHandle = new CancellationHandle(); - startModeSwitching( new Runnable() - { - @Override - public void run() + startModeSwitching( () -> { + if ( currentTargetState != HighAvailabilityMemberState.TO_MASTER ) { - if ( currentTargetState != HighAvailabilityMemberState.TO_MASTER ) - { - return; - } + return; + } - // We just got scheduled. Maybe we are already obsolete - test - if ( cancellationHandle.cancellationRequested() ) - { - msgLog.info( "Switch to master cancelled on start." ); - return; - } + // We just got scheduled. Maybe we are already obsolete - test + if ( cancellationHandle.cancellationRequested() ) + { + msgLog.info( "Switch to master cancelled on start." ); + return; + } - componentSwitcher.switchToMaster(); + componentSwitcher.switchToMaster(); - if ( cancellationHandle.cancellationRequested() ) - { - msgLog.info( "Switch to master cancelled before ha communication started." ); - return; - } + if ( cancellationHandle.cancellationRequested() ) + { + msgLog.info( "Switch to master cancelled before ha communication started." ); + return; + } - haCommunicationLife.shutdown(); - haCommunicationLife = new LifeSupport(); + haCommunicationLife.shutdown(); + haCommunicationLife = new LifeSupport(); - try - { - masterHaURI = switchToMaster.switchToMaster( haCommunicationLife, me ); - canAskForElections.set( true ); - } - catch ( Throwable e ) - { - msgLog.error( "Failed to switch to master", e ); - // Since this master switch failed, elect someone else - election.demote( instanceId ); - } + try + { + masterHaURI = switchToMaster.switchToMaster( haCommunicationLife, me ); + canAskForElections.set( true ); + } + catch ( Throwable e ) + { + msgLog.error( "Failed to switch to master", e ); + // Since this master switch failed, elect someone else + election.demote( instanceId ); } }, cancellationHandle ); } @@ -414,38 +409,33 @@ private void switchToPending( final HighAvailabilityMemberState oldState ) { msgLog.info( "I am %s, moving to pending", instanceId ); - startModeSwitching( new Runnable() - { - @Override - public void run() + startModeSwitching( () -> { + if ( cancellationHandle.cancellationRequested() ) { - if ( cancellationHandle.cancellationRequested() ) - { - msgLog.info( "Switch to pending cancelled on start." ); - return; - } - - if ( oldState.equals( HighAvailabilityMemberState.SLAVE ) ) - { - clusterMemberAvailability.memberIsUnavailable( SLAVE ); - } - else if ( oldState.equals( HighAvailabilityMemberState.MASTER ) ) - { - clusterMemberAvailability.memberIsUnavailable( MASTER ); - } + msgLog.info( "Switch to pending cancelled on start." ); + return; + } - componentSwitcher.switchToPending(); - neoStoreDataSourceSupplier.getDataSource().beforeModeSwitch(); + if ( oldState.equals( HighAvailabilityMemberState.SLAVE ) ) + { + clusterMemberAvailability.memberIsUnavailable( SLAVE ); + } + else if ( oldState.equals( HighAvailabilityMemberState.MASTER ) ) + { + clusterMemberAvailability.memberIsUnavailable( MASTER ); + } - if ( cancellationHandle.cancellationRequested() ) - { - msgLog.info( "Switch to pending cancelled before ha communication shutdown." ); - return; - } + componentSwitcher.switchToPending(); + neoStoreDataSourceSupplier.getDataSource().beforeModeSwitch(); - haCommunicationLife.shutdown(); - haCommunicationLife = new LifeSupport(); + if ( cancellationHandle.cancellationRequested() ) + { + msgLog.info( "Switch to pending cancelled before ha communication shutdown." ); + return; } + + haCommunicationLife.shutdown(); + haCommunicationLife = new LifeSupport(); }, new CancellationHandle() ); try diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/LabelTokenCreatorSwitcher.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/LabelTokenCreatorSwitcher.java index d9f6e0e05486d..0e86800f74159 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/LabelTokenCreatorSwitcher.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/LabelTokenCreatorSwitcher.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.ha.cluster.modeswitch; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.IdGeneratorFactory; import org.neo4j.kernel.api.KernelAPI; import org.neo4j.kernel.ha.DelegateInvocationHandler; diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/PropertyKeyCreatorSwitcher.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/PropertyKeyCreatorSwitcher.java index 67619a611c5cc..b0ffa9f0797da 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/PropertyKeyCreatorSwitcher.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/PropertyKeyCreatorSwitcher.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.ha.cluster.modeswitch; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.IdGeneratorFactory; import org.neo4j.kernel.api.KernelAPI; import org.neo4j.kernel.ha.DelegateInvocationHandler; diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/RelationshipTypeCreatorSwitcher.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/RelationshipTypeCreatorSwitcher.java index c3f9849a493eb..07d431eef9ec9 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/RelationshipTypeCreatorSwitcher.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/modeswitch/RelationshipTypeCreatorSwitcher.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.ha.cluster.modeswitch; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.IdGeneratorFactory; import org.neo4j.kernel.api.KernelAPI; import org.neo4j.kernel.ha.DelegateInvocationHandler; diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/RequestContextFactory.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/RequestContextFactory.java index 4de1a88c90252..e480f91400772 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/RequestContextFactory.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/RequestContextFactory.java @@ -19,8 +19,9 @@ */ package org.neo4j.kernel.ha.com; +import java.util.function.Supplier; + import org.neo4j.com.RequestContext; -import org.neo4j.function.Supplier; import org.neo4j.kernel.impl.store.TransactionId; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; import org.neo4j.kernel.lifecycle.LifecycleAdapter; diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java index 9998de3b9092f..f1882f4cec9cb 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java @@ -25,6 +25,7 @@ import java.lang.reflect.Proxy; import java.net.URI; import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; import org.neo4j.cluster.ClusterSettings; import org.neo4j.cluster.InstanceId; @@ -48,7 +49,6 @@ import org.neo4j.function.BiFunction; import org.neo4j.function.Factory; import org.neo4j.function.Function; -import org.neo4j.function.Supplier; import org.neo4j.graphdb.DependencyResolver; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.helpers.HostnamePort; @@ -231,14 +231,7 @@ public HighlyAvailableEditionModule( final PlatformModule platformModule ) new DefaultElectionCredentialsProvider( config.get( ClusterSettings.server_id ), new OnDiskLastTxIdGetter( platformModule.dependencies.provideDependency( NeoStores.class ) ), - new HighAvailabilityMemberInfoProvider() - { - @Override - public HighAvailabilityMemberState getHighAvailabilityMemberState() - { - return electionProviderRef.get().getCurrentState(); - } - } + () -> electionProviderRef.get().getCurrentState() ); @@ -340,14 +333,7 @@ public void elected( String role, InstanceId instanceId, URI electedMember ) // TODO There's a cyclical dependency here that should be fixed final AtomicReference exceptionHandlerRef = new AtomicReference<>(); - InvalidEpochExceptionHandler invalidEpochHandler = new InvalidEpochExceptionHandler() - { - @Override - public void handle() - { - exceptionHandlerRef.get().forceElections(); - } - }; + InvalidEpochExceptionHandler invalidEpochHandler = () -> exceptionHandlerRef.get().forceElections(); MasterClientResolver masterClientResolver = new MasterClientResolver( logging.getInternalLogProvider(), responseUnpacker, @@ -395,12 +381,8 @@ public SlaveServer apply( Slave slave ) throws RuntimeException slaveServerFactory, updatePullerProxy, platformModule.pageCache, monitors, platformModule.transactionMonitor ); - final Factory masterSPIFactory = new Factory() - { - @Override - public MasterImpl.SPI newInstance() - { - return new DefaultMasterImplSPI( platformModule.graphDatabaseFacade, platformModule.fileSystem, + final Factory masterSPIFactory = + () -> new DefaultMasterImplSPI( platformModule.graphDatabaseFacade, platformModule.fileSystem, platformModule.monitors, labelTokenHolder, propertyKeyTokenHolder, relationshipTypeTokenHolder, idGeneratorFactory, platformModule.dependencies.resolveDependency( TransactionCommitProcess.class ), @@ -408,26 +390,11 @@ public MasterImpl.SPI newInstance() platformModule.dependencies.resolveDependency( TransactionIdStore.class ), platformModule.dependencies.resolveDependency( LogicalTransactionStore.class ), platformModule.dependencies.resolveDependency( NeoStoreDataSource.class )); - } - }; - - final Factory conversationSPIFactory = new Factory() - { - @Override - public ConversationSPI newInstance() - { - return new DefaultConversationSPI( lockManager, platformModule.jobScheduler ); - } - }; - Factory conversationManagerFactory = new Factory() - { - @Override - public ConversationManager newInstance() - { - return new ConversationManager( conversationSPIFactory.newInstance(), config ); - } - }; + final Factory conversationSPIFactory = + () -> new DefaultConversationSPI( lockManager, platformModule.jobScheduler ); + Factory conversationManagerFactory = + () -> new ConversationManager( conversationSPIFactory.newInstance(), config ); BiFunction masterFactory = new BiFunction() { @@ -515,19 +482,14 @@ public MasterServer apply( final Master master, ConversationManager conversation headerInformationFactory = createHeaderInformationFactory( memberContext ); - schemaWriteGuard = new SchemaWriteGuard() - { - @Override - public void assertSchemaWritesAllowed() throws InvalidTransactionTypeKernelException + schemaWriteGuard = () -> { + if ( !memberStateMachine.isMaster() ) { - if ( !memberStateMachine.isMaster() ) - { - throw new InvalidTransactionTypeKernelException( - "Modifying the database schema can only be done on the master server, " + - "this server is a slave. Please issue schema modification commands directly to " + - "the master." - ); - } + throw new InvalidTransactionTypeKernelException( + "Modifying the database schema can only be done on the master server, " + + "this server is a slave. Please issue schema modification commands directly to " + + "the master." + ); } }; diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/transaction/OnDiskLastTxIdGetter.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/transaction/OnDiskLastTxIdGetter.java index ceb997fa336b5..ee48e4da49a6d 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/transaction/OnDiskLastTxIdGetter.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/transaction/OnDiskLastTxIdGetter.java @@ -19,7 +19,8 @@ */ package org.neo4j.kernel.ha.transaction; -import org.neo4j.function.Supplier; +import java.util.function.Supplier; + import org.neo4j.kernel.impl.core.LastTxIdGetter; import org.neo4j.kernel.impl.store.NeoStores; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/OnDiskLastTxIdGetterTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/OnDiskLastTxIdGetterTest.java index 38a6723b2348b..8eb56a3aa862d 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/OnDiskLastTxIdGetterTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/OnDiskLastTxIdGetterTest.java @@ -23,8 +23,8 @@ import org.junit.Test; import java.io.File; +import java.util.function.Supplier; -import org.neo4j.function.Supplier; import org.neo4j.kernel.ha.transaction.OnDiskLastTxIdGetter; import org.neo4j.kernel.impl.store.MetaDataStore; import org.neo4j.kernel.impl.store.NeoStores; @@ -70,14 +70,7 @@ public void lastTransactionIdIsBaseTxIdWhileNeoStoresAreStopped() final NeoStores neoStores = storeFactory.openAllNeoStores( true ); neoStores.close(); - Supplier neoStoresSupplier = new NeoStoresSupplier() - { - @Override - public NeoStores get() - { - return neoStores; - } - }; + Supplier neoStoresSupplier = () -> neoStores; OnDiskLastTxIdGetter diskLastTxIdGetter = new OnDiskLastTxIdGetter( neoStoresSupplier ); assertEquals( TransactionIdStore.BASE_TX_ID, diskLastTxIdGetter.getLastTxId() ); } diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/UpdatePullingTransactionObligationFulfillerTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/UpdatePullingTransactionObligationFulfillerTest.java index 8fd0ef2eeee60..b942d55062edb 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/UpdatePullingTransactionObligationFulfillerTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/UpdatePullingTransactionObligationFulfillerTest.java @@ -21,11 +21,10 @@ import org.junit.Before; import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; + +import java.util.function.Supplier; import org.neo4j.cluster.InstanceId; -import org.neo4j.function.Supplier; import org.neo4j.function.Suppliers; import org.neo4j.kernel.ha.cluster.HighAvailabilityMemberChangeEvent; import org.neo4j.kernel.ha.cluster.HighAvailabilityMemberListener; @@ -49,16 +48,7 @@ public class UpdatePullingTransactionObligationFulfillerTest @Before public void setup() throws Throwable { - doAnswer( - new Answer() - { - - @Override - public Boolean answer( InvocationOnMock invocation ) throws Throwable - { - return ((UpdatePuller.Condition) invocation.getArguments()[0]).evaluate( 33, 34 ); - } - } + doAnswer( invocation -> ((UpdatePuller.Condition) invocation.getArguments()[0]).evaluate( 33, 34 ) ).when( updatePuller ).pullUpdates( any( UpdatePuller.Condition.class ), anyBoolean() ); } @@ -87,28 +77,18 @@ public void shouldUpdateTransactionIdStoreCorrectly() throws Throwable Supplier supplier = mock( Supplier.class ); when( supplier.get() ).thenReturn( store1, store2 ); - doAnswer( new Answer() - { - @Override - public Void answer( InvocationOnMock invocation ) throws Throwable - { - ((HighAvailabilityMemberListener) invocation.getArguments()[0]).slaveIsAvailable( - new HighAvailabilityMemberChangeEvent( null, null, serverId, null ) - ); - return null; - } + doAnswer( invocation -> { + ((HighAvailabilityMemberListener) invocation.getArguments()[0]).slaveIsAvailable( + new HighAvailabilityMemberChangeEvent( null, null, serverId, null ) + ); + return null; } ).when( machine ).addHighAvailabilityMemberListener( any( HighAvailabilityMemberListener.class ) ); - doAnswer( new Answer() - { - @Override - public Void answer( InvocationOnMock invocation ) throws Throwable - { - ((HighAvailabilityMemberListener) invocation.getArguments()[0]).instanceStops( - new HighAvailabilityMemberChangeEvent( null, null, serverId, null ) - ); - return null; - } + doAnswer( invocation -> { + ((HighAvailabilityMemberListener) invocation.getArguments()[0]).instanceStops( + new HighAvailabilityMemberChangeEvent( null, null, serverId, null ) + ); + return null; } ).when( machine ).removeHighAvailabilityMemberListener( any( HighAvailabilityMemberListener.class ) ); UpdatePullingTransactionObligationFulfiller fulfiller = diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/modeswitch/HighAvailabilityModeSwitcherTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/modeswitch/HighAvailabilityModeSwitcherTest.java index 79aba3d374594..6e4b62d7b36ef 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/modeswitch/HighAvailabilityModeSwitcherTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/modeswitch/HighAvailabilityModeSwitcherTest.java @@ -21,7 +21,6 @@ import org.junit.Test; import org.mockito.InOrder; -import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import java.net.URI; @@ -34,13 +33,13 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Supplier; import org.neo4j.cluster.InstanceId; import org.neo4j.cluster.client.ClusterClient; import org.neo4j.cluster.member.ClusterMemberAvailability; import org.neo4j.cluster.protocol.election.Election; import org.neo4j.com.ComException; -import org.neo4j.function.Supplier; import org.neo4j.helpers.CancellationRequest; import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.ha.cluster.HighAvailabilityMemberChangeEvent; @@ -166,25 +165,20 @@ public void shouldReswitchToSlaveIfNewMasterBecameElectedAndAvailableDuringSwitc SwitchToMaster switchToMaster = mock( SwitchToMaster.class ); when( switchToSlave.switchToSlave( any( LifeSupport.class ), any( URI.class ), any( URI.class ), - any( CancellationRequest.class ) ) ).thenAnswer( new Answer() - { - @Override - public URI answer( InvocationOnMock invocationOnMock ) throws Throwable - { - switching.countDown(); - CancellationRequest cancel = (CancellationRequest) invocationOnMock.getArguments()[3]; - if ( firstSwitch.get() ) - { - while ( !cancel.cancellationRequested() ) + any( CancellationRequest.class ) ) ).thenAnswer( invocationOnMock -> { + switching.countDown(); + CancellationRequest cancel = (CancellationRequest) invocationOnMock.getArguments()[3]; + if ( firstSwitch.get() ) { - Thread.sleep( 1 ); + while ( !cancel.cancellationRequested() ) + { + Thread.sleep( 1 ); + } + firstSwitch.set( false ); } - firstSwitch.set( false ); - } - slaveAvailable.countDown(); - return URI.create( "ha://slave" ); - } - } ); + slaveAvailable.countDown(); + return URI.create( "ha://slave" ); + } ); HighAvailabilityModeSwitcher toTest = new HighAvailabilityModeSwitcher( switchToSlave, switchToMaster, mock( Election.class ), availability, mock( ClusterClient.class ), storeSupplierMock(), @@ -238,45 +232,24 @@ ScheduledExecutorService createExecutor() final ScheduledExecutorService executor = mock( ScheduledExecutorService.class ); final ExecutorService realExecutor = Executors.newSingleThreadExecutor(); - when( executor.submit( any( Runnable.class ) ) ).thenAnswer( new Answer>() - { - @Override - public Future answer( final InvocationOnMock invocation ) throws Throwable - { - return realExecutor.submit( new Runnable() - { - @Override - public void run() - { - ((Runnable) invocation.getArguments()[0]).run(); - } - } ); - } - } ); + when( executor.submit( any( Runnable.class ) ) ).thenAnswer( + (Answer>) invocation -> + realExecutor.submit( (Runnable) () -> + ((Runnable) invocation.getArguments()[0]).run() ) ); when( executor.schedule( any( Runnable.class ), anyLong(), any( TimeUnit.class ) ) ).thenAnswer( - new Answer>() - { - @Override - public Future answer( final InvocationOnMock invocation ) throws Throwable - { - realExecutor.submit( new Callable() - { - @Override - public Void call() throws Exception - { - firstMasterAvailableHandled.countDown(); - - // wait until the second masterIsAvailable comes and then call switchToSlave - // method - secondMasterAvailableComes.await(); - ((Runnable) invocation.getArguments()[0]).run(); - secondMasterAvailableHandled.countDown(); - return null; - } - } ); - return mock( ScheduledFuture.class ); - } + (Answer>) invocation -> { + realExecutor.submit( (Callable) () -> { + firstMasterAvailableHandled.countDown(); + + // wait until the second masterIsAvailable comes and then call switchToSlave + // method + secondMasterAvailableComes.await(); + ((Runnable) invocation.getArguments()[0]).run(); + secondMasterAvailableHandled.countDown(); + return null; + } ); + return mock( ScheduledFuture.class ); } ); return executor; } @@ -344,27 +317,14 @@ public void shouldNotResetAvailableMasterURIIfElectionResultReceived() throws Th toTest.listeningAt( URI.create( "ha://server3?serverId=3" ) ); when( switchToSlave.switchToSlave( any( LifeSupport.class ), any( URI.class ), any( URI.class ), any( - CancellationRequest.class ) ) ).thenAnswer( new Answer() - - { - // The first time around it must "fail" so as to cause a rerun, then wait for the mIE to come through - @Override - public URI answer( InvocationOnMock invocation ) throws Throwable - { - firstCallMade.countDown(); - waitForSecondMessage.await(); - throw new MismatchingStoreIdException( StoreId.DEFAULT, StoreId.DEFAULT ); - } - } ).thenAnswer( new Answer() - { - // The second time around it can finish normally, it doesn't really matter. Just let the test continue. - @Override - public URI answer( InvocationOnMock invocation ) throws Throwable - { - secondCallMade.countDown(); - return URI.create( "ha://server3" ); - } - } ); + CancellationRequest.class ) ) ).thenAnswer( invocation -> { + firstCallMade.countDown(); + waitForSecondMessage.await(); + throw new MismatchingStoreIdException( StoreId.DEFAULT, StoreId.DEFAULT ); + } ).thenAnswer( invocation -> { + secondCallMade.countDown(); + return URI.create( "ha://server3" ); + } ); // When @@ -492,15 +452,10 @@ ScheduledExecutorService createExecutor() { ScheduledExecutorService executor = mock( ScheduledExecutorService.class ); - doAnswer( new Answer>() - { - @Override - public Future answer( InvocationOnMock invocation ) throws Throwable - { - ((Runnable) invocation.getArguments()[0]).run(); - modeSwitchHappened.countDown(); - return mock( Future.class ); - } + doAnswer( invocation -> { + ((Runnable) invocation.getArguments()[0]).run(); + modeSwitchHappened.countDown(); + return mock( Future.class ); } ).when( executor ).submit( any( Runnable.class ) ); return executor;