Skip to content

Commit 062cce3

Browse files
committed
refactor: introduce DefaultResourceConfiguration class
1 parent 42bfa47 commit 062cce3

File tree

3 files changed

+145
-58
lines changed

3 files changed

+145
-58
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,25 @@
11
package io.javaoperatorsdk.operator.api.config;
22

3-
import java.util.Collections;
43
import java.util.Set;
54

65
import io.fabric8.kubernetes.api.model.HasMetadata;
76
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventFilter;
87

98
public class DefaultControllerConfiguration<R extends HasMetadata>
9+
extends DefaultResourceConfiguration<R, ControllerConfiguration<R>>
1010
implements ControllerConfiguration<R> {
1111

1212
private final String associatedControllerClassName;
1313
private final String name;
14-
private final String crdName;
1514
private final String finalizer;
16-
private final boolean generationAware;
17-
private final Set<String> namespaces;
18-
private final boolean watchAllNamespaces;
1915
private final RetryConfiguration retryConfiguration;
20-
private final String labelSelector;
2116
private final ResourceEventFilter<R, ControllerConfiguration<R>> resourceEventFilter;
22-
private final Class<R> resourceClass;
23-
private ConfigurationService service;
17+
private final boolean generationAware;
2418

2519
public DefaultControllerConfiguration(
2620
String associatedControllerClassName,
2721
String name,
28-
String crdName,
22+
String resourceName,
2923
String finalizer,
3024
boolean generationAware,
3125
Set<String> namespaces,
@@ -34,92 +28,50 @@ public DefaultControllerConfiguration(
3428
ResourceEventFilter<R, ControllerConfiguration<R>> resourceEventFilter,
3529
Class<R> resourceClass,
3630
ConfigurationService service) {
31+
super(resourceName, resourceClass, namespaces, labelSelector, service);
3732
this.associatedControllerClassName = associatedControllerClassName;
3833
this.name = name;
39-
this.crdName = crdName;
4034
this.finalizer = finalizer;
4135
this.generationAware = generationAware;
42-
this.namespaces =
43-
namespaces != null ? Collections.unmodifiableSet(namespaces) : Collections.emptySet();
44-
this.watchAllNamespaces = this.namespaces.isEmpty();
4536
this.retryConfiguration =
4637
retryConfiguration == null
4738
? ControllerConfiguration.super.getRetryConfiguration()
4839
: retryConfiguration;
49-
this.labelSelector = labelSelector;
5040
this.resourceEventFilter = resourceEventFilter;
51-
this.resourceClass =
52-
resourceClass == null ? ControllerConfiguration.super.getResourceClass()
53-
: resourceClass;
54-
setConfigurationService(service);
5541
}
5642

5743
@Override
5844
public String getName() {
5945
return name;
6046
}
6147

62-
@Override
63-
public String getResourceTypeName() {
64-
return crdName;
65-
}
66-
6748
@Override
6849
public String getFinalizer() {
6950
return finalizer;
7051
}
7152

72-
@Override
73-
public boolean isGenerationAware() {
74-
return generationAware;
75-
}
76-
7753
@Override
7854
public String getAssociatedReconcilerClassName() {
7955
return associatedControllerClassName;
8056
}
8157

82-
@Override
83-
public Set<String> getNamespaces() {
84-
return namespaces;
85-
}
86-
87-
@Override
88-
public boolean watchAllNamespaces() {
89-
return watchAllNamespaces;
90-
}
91-
9258
@Override
9359
public RetryConfiguration getRetryConfiguration() {
9460
return retryConfiguration;
9561
}
9662

9763
@Override
98-
public ConfigurationService getConfigurationService() {
99-
return service;
100-
}
101-
102-
@Override
103-
public void setConfigurationService(ConfigurationService service) {
104-
if (this.service != null) {
105-
throw new RuntimeException("A ConfigurationService is already associated with '" + name
106-
+ "' ControllerConfiguration. Cannot change it once set!");
107-
}
108-
this.service = service;
109-
}
110-
111-
@Override
112-
public String getLabelSelector() {
113-
return labelSelector;
64+
public boolean isGenerationAware() {
65+
return generationAware;
11466
}
11567

11668
@Override
117-
public Class<R> getResourceClass() {
118-
return resourceClass;
69+
public ResourceEventFilter<R, ControllerConfiguration<R>> getEventFilter() {
70+
return resourceEventFilter;
11971
}
12072

12173
@Override
122-
public ResourceEventFilter<R, ControllerConfiguration<R>> getEventFilter() {
123-
return resourceEventFilter;
74+
protected String identifierForException() {
75+
return "'" + name + "' ControllerConfiguration";
12476
}
12577
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package io.javaoperatorsdk.operator.api.config;
2+
3+
import java.util.Set;
4+
import java.util.function.Function;
5+
6+
import io.fabric8.kubernetes.api.model.HasMetadata;
7+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
8+
9+
public class DefaultDependentResourceConfiguration<R extends HasMetadata>
10+
extends DefaultResourceConfiguration<R, DependentResourceConfiguration<R>>
11+
implements DependentResourceConfiguration<R> {
12+
private final boolean creatable;
13+
private final boolean updatable;
14+
private final boolean owned;
15+
private final Function<R, Set<ResourceID>> secondaryToPrimariesMapper;
16+
private final Function<HasMetadata, R> primaryToSecondaryMapper;
17+
private final boolean skipUpdateIfUnchanged;
18+
19+
public DefaultDependentResourceConfiguration(String crdName, Class<R> resourceClass,
20+
Set<String> namespaces, String labelSelector,
21+
ConfigurationService service, boolean creatable, boolean updatable, boolean owned,
22+
Function<R, Set<ResourceID>> secondaryToPrimariesMapper,
23+
Function<HasMetadata, R> primaryToSecondaryMapper, boolean skipUpdateIfUnchanged) {
24+
super(crdName, resourceClass, namespaces, labelSelector, service);
25+
this.creatable = creatable;
26+
this.updatable = updatable;
27+
this.owned = owned;
28+
this.secondaryToPrimariesMapper = secondaryToPrimariesMapper;
29+
this.primaryToSecondaryMapper = primaryToSecondaryMapper;
30+
this.skipUpdateIfUnchanged = skipUpdateIfUnchanged;
31+
}
32+
33+
@Override
34+
public boolean creatable() {
35+
return creatable;
36+
}
37+
38+
@Override
39+
public boolean updatable() {
40+
return updatable;
41+
}
42+
43+
@Override
44+
public boolean owned() {
45+
return owned;
46+
}
47+
48+
@Override
49+
public Function<R, Set<ResourceID>> getSecondaryToPrimaryResourcesMapper() {
50+
return secondaryToPrimariesMapper;
51+
}
52+
53+
@Override
54+
public Function<HasMetadata, R> getSecondaryResourceAssociatedWithPrimaryMapper() {
55+
return primaryToSecondaryMapper;
56+
}
57+
58+
@Override
59+
public boolean skipUpdateIfUnchanged() {
60+
return skipUpdateIfUnchanged;
61+
}
62+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package io.javaoperatorsdk.operator.api.config;
2+
3+
import java.util.Collections;
4+
import java.util.Set;
5+
6+
import io.fabric8.kubernetes.api.model.HasMetadata;
7+
8+
public class DefaultResourceConfiguration<R extends HasMetadata, T extends ResourceConfiguration<R, T>>
9+
implements ResourceConfiguration<R, T> {
10+
11+
private final String labelSelector;
12+
private final Class<R> resourceClass;
13+
private final String resourceName;
14+
private final Set<String> namespaces;
15+
private final boolean watchAllNamespaces;
16+
private ConfigurationService service;
17+
18+
public DefaultResourceConfiguration(String resourceName, Class<R> resourceClass,
19+
Set<String> namespaces, String labelSelector, ConfigurationService service) {
20+
this.resourceName = resourceName;
21+
this.namespaces =
22+
namespaces != null ? Collections.unmodifiableSet(namespaces) : Collections.emptySet();
23+
this.watchAllNamespaces = this.namespaces.isEmpty();
24+
this.labelSelector = labelSelector;
25+
this.resourceClass =
26+
resourceClass == null ? ResourceConfiguration.super.getResourceClass()
27+
: resourceClass;
28+
setConfigurationService(service);
29+
}
30+
31+
@Override
32+
public String getResourceTypeName() {
33+
return resourceName;
34+
}
35+
36+
@Override
37+
public Set<String> getNamespaces() {
38+
return namespaces;
39+
}
40+
41+
@Override
42+
public boolean watchAllNamespaces() {
43+
return watchAllNamespaces;
44+
}
45+
46+
@Override
47+
public ConfigurationService getConfigurationService() {
48+
return service;
49+
}
50+
51+
@Override
52+
public void setConfigurationService(ConfigurationService service) {
53+
if (this.service != null) {
54+
throw new RuntimeException("A ConfigurationService is already associated with "
55+
+ identifierForException() + ". Cannot change it once set!");
56+
}
57+
this.service = service;
58+
}
59+
60+
protected String identifierForException() {
61+
return getClass().getName();
62+
}
63+
64+
@Override
65+
public String getLabelSelector() {
66+
return labelSelector;
67+
}
68+
69+
@Override
70+
public Class<R> getResourceClass() {
71+
return resourceClass;
72+
}
73+
}

0 commit comments

Comments
 (0)