| 
01 /*02  * Copyright 2008-2015 the original author or authors.
 03  *
 04  * Licensed under the Apache License, Version 2.0 (the "License");
 05  * you may not use this file except in compliance with the License.
 06  * You may obtain a copy of the License at
 07  *
 08  *     http://www.apache.org/licenses/LICENSE-2.0
 09  *
 10  * Unless required by applicable law or agreed to in writing, software
 11  * distributed under the License is distributed on an "AS IS" BASIS,
 12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  * See the License for the specific language governing permissions and
 14  * limitations under the License.
 15  */
 16 package griffon.core.mvc;
 17
 18 import javax.annotation.Nonnull;
 19 import javax.annotation.Nullable;
 20 import java.util.Map;
 21
 22 /**
 23  * Holds the configuration of an MVC group
 24  *
 25  * @author Andres Almiray
 26  * @since 2.0.0
 27  */
 28 public interface MVCGroupConfiguration {
 29     /**
 30      * Returns the type of this group.
 31      *
 32      * @return the type of the group.
 33      */
 34     @Nonnull
 35     String getMvcType();
 36
 37     /**
 38      * Returns a Map with the names of all members keyed by type.
 39      *
 40      * @return a Map of all configured members as defined by the application's configuration or and addon contribution.
 41      */
 42     @Nonnull
 43     Map<String, String> getMembers();
 44
 45     /**
 46      * Returns a Map with additional configuration for this group.
 47      *
 48      * @return a Map with additional configuration for this group.
 49      */
 50     @Nonnull
 51     Map<String, Object> getConfig();
 52
 53     /**
 54      * Creates a new MVCGroup instance based in this configuration.
 55      * The group's id will should be set to the group's type and an empty Map should be used as the additional arguments.
 56      *
 57      * @return a newly instantiated MVCGroup
 58      */
 59     @Nonnull
 60     MVCGroup create();
 61
 62     /**
 63      * Creates a new MVCGroup instance based in this configuration.
 64      * An empty Map should be used as the additional arguments.
 65      *
 66      * @param mvcId the id to assign to this group
 67      * @return a newly instantiated MVCGroup
 68      */
 69     @Nonnull
 70     MVCGroup create(@Nullable String mvcId);
 71
 72     /**
 73      * Creates a new MVCGroup instance based in this configuration.
 74      * The group's id will should be set to the group's type.
 75      *
 76      * @param args additional arguments sent to each member when initializing
 77      * @return a newly instantiated MVCGroup
 78      */
 79     @Nonnull
 80     MVCGroup create(@Nonnull Map<String, Object> args);
 81
 82     /**
 83      * Creates a new MVCGroup instance based in this configuration.
 84      *
 85      * @param mvcId the id to assign to this group
 86      * @param args  additional arguments sent to each member when initializing
 87      * @return a newly instantiated MVCGroup
 88      */
 89     @Nonnull
 90     MVCGroup create(@Nullable String mvcId, @Nonnull Map<String, Object> args);
 91 }
 |