1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.framework.ioc;
35
36 import info.magnolia.ui.api.ioc.SubApp;
37 import info.magnolia.ui.api.ioc.SubAppScoped;
38 import info.magnolia.ui.api.ioc.SubAppScopedEager;
39
40 import java.io.Serializable;
41 import java.lang.annotation.Annotation;
42
43 import org.apache.commons.lang3.StringUtils;
44
45
46
47
48
49
50 class SubAppImpl implements SubApp, Serializable, UiContextAnnotation {
51 private final String appName;
52 private String name;
53
54 SubAppImpl() {
55 this("", "");
56 }
57
58 SubAppImpl(String appName, String name) {
59 this.appName = appName;
60 this.name = name;
61 }
62
63 @Override
64 public boolean isGeneric() {
65 return StringUtils.isBlank(appName) && StringUtils.isBlank(name);
66 }
67
68 @Override
69 public Class<? extends Annotation> getRelatedScopeAnnotation(boolean isEager) {
70 return isEager ? SubAppScopedEager.class : SubAppScoped.class;
71 }
72
73 @Override
74 public String appName() {
75 return this.appName;
76 }
77
78 @Override
79 public String name() {
80 return this.name;
81 }
82
83 @Override
84 public Class<? extends Annotation> annotationType() {
85 return SubApp.class;
86 }
87
88 @Override
89 public boolean equals(Object o) {
90 if (this == o) return true;
91 if (!(o instanceof SubApp)) return false;
92
93 SubApp subApp = (SubApp) o;
94
95 if (!appName.equals(subApp.appName())) return false;
96 return name.equals(subApp.name());
97 }
98
99 @Override
100 public int hashCode() {
101 int result = appName.hashCode();
102 result = 31 * result + name.hashCode();
103 return result;
104 }
105 }