Skip to content

Commit 30efe92

Browse files
committed
ResourceSet configurator requirement parameter
1 parent 6298dc5 commit 30efe92

File tree

5 files changed

+28
-11
lines changed

5 files changed

+28
-11
lines changed

capability/src/main/java/org/nasdanika/capability/emf/ResourceSetCapabilityFactory.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.concurrent.CompletionStage;
44
import java.util.function.BiFunction;
5+
import java.util.function.Consumer;
56
import java.util.function.Predicate;
67

78
import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -45,6 +46,10 @@ protected ResourceSet contribute(
4546
for (CapabilityProvider<Object> cp: contributorProviders) {
4647
cp.getPublisher().subscribe(contributor -> ((ResourceSetContributor) contributor).contribute(resourceSet, progressMonitor));
4748
}
49+
Consumer<ResourceSet> configurator = requirement.configurator();
50+
if (configurator != null) {
51+
configurator.accept(resourceSet);
52+
}
4853

4954
return resourceSet;
5055
}
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.nasdanika.capability.emf;
22

3+
import java.util.function.Consumer;
34
import java.util.function.Predicate;
45

56
import org.eclipse.emf.ecore.EPackage;
@@ -8,8 +9,12 @@
89
/**
910
* Requirement for a {@link ResourceSet}.
1011
* @param resourceSet an optional instance of {@link ResourceSet} to configure.
12+
* @param configurator resource set is passed to the configurator if the configurator is not null.
1113
* @param contributorPredicate allows to filter contributors, e.g. register only certain {@link EPackage}s.
1214
*/
13-
public record ResourceSetRequirement(ResourceSet resourceSet, Predicate<ResourceSetContributor> contributorPredicate) {
15+
public record ResourceSetRequirement(
16+
ResourceSet resourceSet,
17+
Consumer<ResourceSet> configurator,
18+
Predicate<ResourceSetContributor> contributorPredicate) {
1419

1520
}

capability/src/test/java/org/nasdanika/capability/CapabilityTests.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,16 @@ public void testResourceSetCapabilityFactory() {
3131
CapabilityLoader capabilityLoader = new CapabilityLoader();
3232
ProgressMonitor progressMonitor = new PrintStreamProgressMonitor();
3333

34-
ResourceSetRequirement serviceRequirement = new ResourceSetRequirement(null, contributor -> {
35-
System.out.println(contributor);
36-
return true;
37-
});
34+
ResourceSetRequirement serviceRequirement = new ResourceSetRequirement(
35+
null,
36+
resourceSet -> {
37+
System.out.println(resourceSet);
38+
},
39+
contributor -> {
40+
System.out.println(contributor);
41+
return true;
42+
}
43+
);
3844

3945
Requirement<ResourceSetRequirement, ResourceSet> requirement = ServiceCapabilityFactory.createRequirement(ResourceSet.class, null, serviceRequirement);
4046
for (CapabilityProvider<?> cp: capabilityLoader.load(requirement, progressMonitor)) {

cli/src/main/java/org/nasdanika/cli/ResourceSetMixIn.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,18 @@ public class ResourceSetMixIn {
4141

4242
public ResourceSet createResourceSet(ProgressMonitor progressMonitor) {
4343
CapabilityLoader capabilityLoader = getCapabilityLoader();
44-
ResourceSetRequirement serviceRequirement = new ResourceSetRequirement(createRequirementResourceSet(), this::testContributor);
44+
ResourceSetRequirement serviceRequirement = new ResourceSetRequirement(createRequirementResourceSet(), this::configureResourceSet, this::testContributor);
4545
Requirement<ResourceSetRequirement, ResourceSet> requirement = ServiceCapabilityFactory.createRequirement(ResourceSet.class, this::testFactory, serviceRequirement);
4646
for (CapabilityProvider<?> cp: capabilityLoader.load(requirement, progressMonitor)) {
47-
return configureResourceSet((ResourceSet) cp.getPublisher().blockFirst());
47+
return (ResourceSet) cp.getPublisher().blockFirst();
4848
}
4949

50-
return configureResourceSet(createDefaultResourceSet()); // Fall-back if there are no capability providers.
50+
ResourceSetImpl defaultResourceSet = createDefaultResourceSet();
51+
configureResourceSet(defaultResourceSet);
52+
return defaultResourceSet; // Fall-back if there are no capability providers.
5153
}
5254

53-
protected ResourceSet configureResourceSet(ResourceSet resourceSet) {
55+
protected void configureResourceSet(ResourceSet resourceSet) {
5456
if (extensionResourceFactories != null) {
5557
Map<String, Object> extensionToFactoryMap = resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap();
5658
for (Entry<String, Class<?>> ee: extensionResourceFactories.entrySet()) {
@@ -81,7 +83,6 @@ protected ResourceSet configureResourceSet(ResourceSet resourceSet) {
8183
}
8284
}
8385
}
84-
return resourceSet;
8586
}
8687

8788
protected ResourceSetImpl createDefaultResourceSet() {

emf/src/main/java/org/nasdanika/emf/persistence/EObjectCapabilityFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ protected EObject load(EObjectRequirement requirement, ResourceSet resourceSet,
3636
@Override
3737
protected ResourceSetRequirement getResourceSetRequirement(EObjectRequirement serviceRequirement) {
3838
ResourceSetRequirement resourceSetRequirement = serviceRequirement.resourceSetRequirement();
39-
return resourceSetRequirement == null ? new ResourceSetRequirement(new NcoreResourceSet(), null) : resourceSetRequirement;
39+
return resourceSetRequirement == null ? new ResourceSetRequirement(new NcoreResourceSet(), null, null) : resourceSetRequirement;
4040
}
4141

4242
}

0 commit comments

Comments
 (0)