Skip to content

Content of file F8.java.html

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>F8.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">blueHour - Model</a> &gt; <a href="index.source.html" class="el_package">it.tidalwave.util</a> &gt; <span class="el_source">F8.java</span></div><h1>F8.java</h1><pre class="source lang-java linenums">/*
 * #%L
 * *********************************************************************************************************************
 *
 * blueHour
 * http://bluehour.tidalwave.it - git clone git@bitbucket.org:tidalwave/bluehour-src.git
 * %%
 * Copyright (C) 2013 - 2021 Tidalwave s.a.s. (http://tidalwave.it)
 * %%
 * *********************************************************************************************************************
 *
 * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations under the License.
 *
 * *********************************************************************************************************************
 *
 * $Id$
 *
 * *********************************************************************************************************************
 * #L%
 */
package it.tidalwave.util;

import javax.annotation.Nonnull;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import it.tidalwave.util.spi.ExtendedFinder8Support;

/***********************************************************************************************************************
 *
 * @author  Fabrizio Giudici (Fabrizio.Giudici@tidalwave.it)
 * @version $Id$
 *
 **********************************************************************************************************************/
// TODO: merge to Finder8
merge to Finder8
public interface F8&lt;TYPE, EXTENDED_FINDER extends Finder8&lt;TYPE&gt;&gt; extends ExtendedFinder8Support&lt;TYPE, EXTENDED_FINDER&gt; { static class LambdaFinder&lt;TYPE, EXTENDED_FINDER extends Finder8&lt;TYPE&gt;&gt; extends Finder8Support&lt;TYPE, EXTENDED_FINDER&gt; implements F8&lt;TYPE, EXTENDED_FINDER&gt; { private static final long serialVersionUID = 2688397754942922706L; @Nonnull private final Optional&lt;Function&lt;F8&lt;? extends TYPE, EXTENDED_FINDER&gt;, List&lt;TYPE&gt;&gt;&gt; computeResults; @Nonnull private final Optional&lt;Function&lt;F8&lt;? extends TYPE, EXTENDED_FINDER&gt;, List&lt;TYPE&gt;&gt;&gt; computeNeededResults; private LambdaFinder (final @Nonnull Optional&lt;Function&lt;F8&lt;? extends TYPE, EXTENDED_FINDER&gt;, List&lt;TYPE&gt;&gt;&gt; computeResults, final @Nonnull Optional&lt;Function&lt;F8&lt;? extends TYPE, EXTENDED_FINDER&gt;, List&lt;TYPE&gt;&gt;&gt; computeNeededResults) <span class="nc" id="L59"> {</span> <span class="nc" id="L60"> this.computeResults = computeResults;</span> <span class="nc" id="L61"> this.computeNeededResults = computeNeededResults;</span> <span class="nc bnc" id="L63" title="All 4 branches missed."> if (!this.computeResults.isPresent() &amp;&amp; !this.computeNeededResults.isPresent())</span> { <span class="nc" id="L65"> throw new ExceptionInInitializerError(&quot;One of computeResults or computeNeededResults must be present&quot;);</span> } <span class="nc" id="L67"> }</span> public LambdaFinder (final @Nonnull LambdaFinder&lt;TYPE, EXTENDED_FINDER&gt; other, final @Nonnull Object override) { <span class="nc" id="L71"> super(other, override);</span> <span class="nc" id="L72"> final LambdaFinder&lt;TYPE, EXTENDED_FINDER&gt; source = getSource(LambdaFinder.class, other, override);</span> <span class="nc" id="L73"> this.computeResults = source.computeResults;</span> <span class="nc" id="L74"> this.computeNeededResults = source.computeNeededResults;</span> <span class="nc" id="L75"> }</span> @Override @Nonnull protected final List&lt;? extends TYPE&gt; computeResults() { <span class="nc bnc" id="L80" title="All 2 branches missed."> return computeResults.isPresent() ? computeResults.get().apply(this) : super.computeResults();</span> // return computeResults.flatMap(f -&gt; f.apply(this)).orElse((List)super.computeResults()); } @Override @Nonnull protected final List&lt;? extends TYPE&gt; computeNeededResults() { <span class="nc bnc" id="L87" title="All 2 branches missed."> return computeNeededResults.isPresent() ? computeNeededResults.get().apply(this) : super.computeNeededResults();</span> // return computeNeededResults.map(f -&gt; f.apply(this)).orElse((List)super.computeNeededResults()); } } @Nonnull public static &lt;TYPE, EXTENDED_FINDER extends Finder8&lt;TYPE&gt;&gt; F8&lt;TYPE, EXTENDED_FINDER&gt; ofComputeResults ( final @Nonnull Function&lt;F8&lt;? extends TYPE, EXTENDED_FINDER&gt;, List&lt;TYPE&gt;&gt; computeResults) { <span class="nc" id="L96"> return new LambdaFinder(Optional.of(computeResults), Optional.empty());</span> } @Nonnull public static &lt;TYPE, EXTENDED_FINDER extends Finder8&lt;TYPE&gt;&gt; F8&lt;TYPE, EXTENDED_FINDER&gt; ofComputeNeededResults ( final @Nonnull Function&lt;F8&lt;? extends TYPE, EXTENDED_FINDER&gt;, List&lt;TYPE&gt;&gt; computeNeededResults) { <span class="nc" id="L103"> return new LambdaFinder(Optional.empty(), Optional.of(computeNeededResults));</span> } } </pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>