1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.commons.math4.legacy.ode.sampling;
19
20 /**
21 * This class is a step handler that does nothing.
22
23 * <p>This class is provided as a convenience for users who are only
24 * interested in the final state of an integration and not in the
25 * intermediate steps. Its handleStep method does nothing.</p>
26 *
27 * <p>Since this class has no internal state, it is implemented using
28 * the Singleton design pattern. This means that only one instance is
29 * ever created, which can be retrieved using the getInstance
30 * method. This explains why there is no public constructor.</p>
31 *
32 * @see StepHandler
33 * @since 1.2
34 */
35
36 public final class DummyStepHandler implements StepHandler {
37
38 /** Private constructor.
39 * The constructor is private to prevent users from creating
40 * instances (Singleton design-pattern).
41 */
42 private DummyStepHandler() {
43 }
44
45 /** Get the only instance.
46 * @return the only instance
47 */
48 public static DummyStepHandler getInstance() {
49 return LazyHolder.INSTANCE;
50 }
51
52 /** {@inheritDoc} */
53 @Override
54 public void init(double t0, double[] y0, double t) {
55 }
56
57 /**
58 * Handle the last accepted step.
59 * This method does nothing in this class.
60 * @param interpolator interpolator for the last accepted step. For
61 * efficiency purposes, the various integrators reuse the same
62 * object on each call, so if the instance wants to keep it across
63 * all calls (for example to provide at the end of the integration a
64 * continuous model valid throughout the integration range), it
65 * should build a local copy using the clone method and store this
66 * copy.
67 * @param isLast true if the step is the last one
68 */
69 @Override
70 public void handleStep(final StepInterpolator interpolator, final boolean isLast) {
71 }
72
73 // CHECKSTYLE: stop HideUtilityClassConstructor
74 /** Holder for the instance.
75 * <p>We use here the Initialization On Demand Holder Idiom.</p>
76 */
77 private static final class LazyHolder {
78 /** Cached field instance. */
79 private static final DummyStepHandler INSTANCE = new DummyStepHandler();
80 }
81 // CHECKSTYLE: resume HideUtilityClassConstructor
82
83 /** Handle deserialization of the singleton.
84 * @return the singleton instance
85 */
86 private Object readResolve() {
87 // return the singleton instance
88 return LazyHolder.INSTANCE;
89 }
90 }