All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.microbean.bean.ReferenceSelector Maven / Gradle / Ivy

The newest version!
/* -*- mode: Java; c-basic-offset: 2; indent-tabs-mode: nil; coding: utf-8-unix -*-
 *
 * Copyright © 2023–2024 microBean™.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); 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 "AS IS" 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.
 */
package org.microbean.bean;

interface ReferenceSelector {


  /*
   * Abstract methods.
   */


  // Yes, this is needed. Consider: the beanSelectionCriteria actually selects two beans. If you want a reference, you
  // have to say which one of the matched beans you want to use. You can't just use Id because you're going to need the
  // Factory eventually.
  //
  // bean can be null, in which case the implementation has to use beanSelectionCriteria to find it.
  //
  // Must throw an exception if bean != null && !beanSelectionCriteria.selects(bean)
  public  R reference(final BeanSelectionCriteria beanSelectionCriteria, final Bean bean, final Creation creation);

  /*
   * Default methods.
   */

  public default  R reference(final BeanReduction beanReduction, final Creation creation) {
    return this.reference(beanReduction.beanSelectionCriteria(), beanReduction.bean(), creation);
  }

  public default  R reference(final BeanSelectionCriteria beanSelectionCriteria, final Creation creation) {
    return this.reference(beanSelectionCriteria, null, creation);
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy