View Javadoc
1   package pk.lucidxpo.ynami.controller.sample;
2   
3   import org.springframework.beans.factory.annotation.Autowired;
4   import org.springframework.stereotype.Controller;
5   import org.springframework.ui.Model;
6   import org.springframework.web.bind.annotation.GetMapping;
7   import org.springframework.web.bind.annotation.RequestMapping;
8   import org.springframework.web.bind.annotation.ResponseBody;
9   import pk.lucidxpo.ynami.service.sample.ToggleableService;
10  import pk.lucidxpo.ynami.spring.aspect.FeatureAssociation;
11  import pk.lucidxpo.ynami.spring.features.FeatureManagerWrappable;
12  
13  import static pk.lucidxpo.ynami.spring.features.FeatureToggles.CONDITIONAL_STATEMENTS_EXECUTION;
14  import static pk.lucidxpo.ynami.spring.features.FeatureToggles.METHOD_EXECUTION;
15  
16  @Controller
17  public class SampleFeatureController {
18      private final ToggleableService toggleableService;
19      private final FeatureManagerWrappable featureManager;
20  
21      @Autowired
22      public SampleFeatureController(final ToggleableService toggleableService,
23                                     final FeatureManagerWrappable featureManager) {
24          this.featureManager = featureManager;
25          this.toggleableService = toggleableService;
26      }
27  
28      @RequestMapping("/feature-test")
29      @FeatureAssociation(value = METHOD_EXECUTION)
30      public String welcome(Model model) {
31          if (featureManager.isActive(CONDITIONAL_STATEMENTS_EXECUTION)) {
32              model.addAttribute("message", CONDITIONAL_STATEMENTS_EXECUTION.name() + " is enabled.");
33          } else {
34              model.addAttribute("message", CONDITIONAL_STATEMENTS_EXECUTION.name() + " is disabled.");
35          }
36          return "welcome";
37      }
38  
39      @ResponseBody
40      @GetMapping(value = "/some-service")
41      public String getToggleableService() {
42          return toggleableService.getSomeValue();
43      }
44  }