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@SuppressWarnings("PMD.FieldNamingConventions")
025public enum Intent {
026    
027    /// The project consumes the resources from the associated
028    /// provider, but in its role as provider does never provide
029    /// them to others.
030    Consume,
031    
032    /// The project consumes the resources from the associated
033    /// provider. It provides them upon request.
034    Reveal,
035    
036    /// The resources from the associated provider are genuinely
037    /// provided by this project, i.e. supplied by this project.
038    /// This is the default relationship between a project and its
039    /// generators. It implies that the resources obtained through
040    /// this dependency are provided to projects that have this
041    /// project as a dependency.
042    Supply,
043    
044    /// The project consumes the resources from the associated
045    /// provider and makes them available to other projects that
046    /// have this project as a dependency.
047    /// 
048    Expose,
049    
050    /// The resources from the provider are forwarded to other
051    /// projects that have this project as a dependency but
052    /// are not used (consumed) by this project.
053    Forward;
054}