001/*
002 * JDrupes Builder
003 * Copyright (C) 2025 Michael N. Lipp
004 * 
005 * This program is free software: you can redistribute it and/or modify
006 * it under the terms of the GNU Affero General Public License as
007 * published by the Free Software Foundation, either version 3 of the
008 * License, or (at your option) any later version.
009 *
010 * This program is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013 * GNU Affero General Public License for more details.
014 *
015 * You should have received a copy of the GNU Affero General Public License
016 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
017 */
018
019package org.jdrupes.builder.api;
020
021/// Attributes the relationship between a [Project] ("this project")
022/// and an associated [ResourceProvider].
023/// 
024/// @see Project
025///
026@SuppressWarnings("PMD.FieldNamingConventions")
027public enum Intent {
028    
029    /// The project consumes the resources from the associated
030    /// provider, but in its role as provider does never provide
031    /// them to others.
032    Consume,
033    
034    /// The project consumes the resources from the associated
035    /// provider. It provides them upon request.
036    Reveal,
037    
038    /// The resources from the associated provider are genuinely
039    /// provided by this project, i.e. supplied by this project.
040    /// This is the default relationship between a project and its
041    /// generators. It implies that the resources obtained through
042    /// this dependency are provided to projects that have this
043    /// project as a dependency.
044    Supply,
045    
046    /// The project consumes the resources from the associated
047    /// provider and makes them available to other projects that
048    /// have this project as a dependency.
049    /// 
050    Expose,
051    
052    /// The resources from the provider are forwarded to other
053    /// projects that have this project as a dependency but
054    /// are not used (consumed) by this project.
055    Forward;
056}