GroovyAddon.java
01 /*
02  * SPDX-License-Identifier: Apache-2.0
03  *
04  * Copyright 2008-2017 the original author or authors.
05  *
06  * Licensed under the Apache License, Version 2.0 (the "License");
07  * you may not use this file except in compliance with the License.
08  * You may obtain a copy of the License at
09  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 package org.codehaus.griffon.runtime.groovy;
19 
20 import griffon.core.GriffonApplication;
21 import griffon.core.artifact.GriffonController;
22 import griffon.core.controller.Action;
23 import griffon.core.controller.ActionManager;
24 import griffon.core.mvc.MVCGroup;
25 import griffon.core.mvc.MVCGroupConfiguration;
26 import groovy.util.FactoryBuilderSupport;
27 import org.codehaus.griffon.runtime.core.addon.AbstractGriffonAddon;
28 
29 import javax.annotation.Nonnull;
30 import javax.inject.Named;
31 import java.util.Map;
32 
33 /**
34  @author Andres Almiray
35  @since 2.0.0
36  */
37 @Named("groovy")
38 public class GroovyAddon extends AbstractGriffonAddon {
39     private GriffonApplication application;
40 
41     @Override
42     public void init(@Nonnull GriffonApplication application) {
43         this.application = application;
44     }
45 
46     public void onInitializeMVCGroup(@Nonnull MVCGroupConfiguration configuration, @Nonnull MVCGroup group) {
47         GriffonController controller = group.getController();
48         if (controller == nullreturn;
49         FactoryBuilderSupport builder = (FactoryBuilderSupportgroup.getMember("builder");
50         if (builder == nullreturn;
51         Map<String, Action> actions = application.getActionManager().actionsFor(controller);
52         for (Map.Entry<String, Action> action : actions.entrySet()) {
53             String actionKey = application.getActionManager().normalizeName(action.getKey()) + ActionManager.ACTION;
54             getLog().trace("Adding action {} to {}:{}:builder", actionKey, configuration.getMvcType(), group.getMvcId());
55             builder.setVariable(actionKey, action.getValue().getToolkitAction());
56         }
57     }
58 }