Skip to content

Commit d8c158a

Browse files
authored
Merge pull request #269 from rubenporras/master
Allow parallel setup of languages in the standalone setup
2 parents ca1a007 + 683328a commit d8c158a

File tree

3 files changed

+33
-26
lines changed

3 files changed

+33
-26
lines changed

com.avaloq.tools.ddk.xtext.generator/src/com/avaloq/tools/ddk/xtext/generator/builder/StandaloneBuilderIntegrationFragment.xpt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class
4242
);
4343

4444
public Injector doSetup(Module overrideModule, Module... additionalModules) {
45-
return new �name.toSimpleName()�StandaloneBuildSetupGenerated(overrideModule, additionalModules).createInjectorAndDoEMFRegistration();
45+
return new �name.toSimpleName()�StandaloneBuildSetupGenerated(SETUP_LOCK, overrideModule, additionalModules).createInjectorAndDoEMFRegistration();
4646
}
4747

4848
@Override
@@ -78,8 +78,16 @@ public class
7878

7979
private final Module overrideModule;
8080
private final Module[] additionalModules;
81+
private final Object lock;
82+
83+
public �name.toSimpleName()�StandaloneBuildSetupGenerated(final Object lock, final Module overrideModule, Module... additionalModules) {
84+
this.lock = lock;
85+
this.overrideModule = overrideModule;
86+
this.additionalModules = additionalModules;
87+
}
8188

8289
public �name.toSimpleName()�StandaloneBuildSetupGenerated(final Module overrideModule, Module... additionalModules) {
90+
this.lock = null;
8391
this.overrideModule = overrideModule;
8492
this.additionalModules = additionalModules;
8593
}
@@ -88,7 +96,13 @@ public class
8896
public Injector createInjectorAndDoEMFRegistration() {
8997
registerEPackages();
9098
Injector injector = createInjector();
91-
register(injector);
99+
if (lock != null) {
100+
synchronized (lock) {
101+
register(injector);
102+
}
103+
} else {
104+
register(injector);
105+
}
92106
return injector;
93107
}
94108

com.avaloq.tools.ddk.xtext.generator/src/com/avaloq/tools/ddk/xtext/generator/builder/StandaloneBuilderIntegrationFragment2.xtend

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class StandaloneBuilderIntegrationFragment2 extends AbstractXtextGeneratorFragme
8080
);
8181
8282
public Injector doSetup(Module overrideModule, Module... additionalModules) {
83-
return new «grammar.simpleName»StandaloneBuildSetupGenerated(overrideModule, additionalModules).createInjectorAndDoEMFRegistration();
83+
return new «grammar.simpleName»StandaloneBuildSetupGenerated(SETUP_LOCK, overrideModule, additionalModules).createInjectorAndDoEMFRegistration();
8484
}
8585
8686
@Override
@@ -114,8 +114,16 @@ class StandaloneBuilderIntegrationFragment2 extends AbstractXtextGeneratorFragme
114114
115115
private final Module overrideModule;
116116
private final Module[] additionalModules;
117+
private final Object lock;
118+
119+
public «standaloneBuildSetupGeneratedClass.simpleName»(final Object lock, final Module overrideModule, Module... additionalModules) {
120+
this.lock = lock;
121+
this.overrideModule = overrideModule;
122+
this.additionalModules = additionalModules;
123+
}
117124
118125
public «standaloneBuildSetupGeneratedClass.simpleName»(final Module overrideModule, Module... additionalModules) {
126+
this.lock = null;
119127
this.overrideModule = overrideModule;
120128
this.additionalModules = additionalModules;
121129
}
@@ -124,7 +132,13 @@ class StandaloneBuilderIntegrationFragment2 extends AbstractXtextGeneratorFragme
124132
public Injector createInjectorAndDoEMFRegistration() {
125133
registerEPackages();
126134
Injector injector = createInjector();
127-
register(injector);
135+
if (lock != null) {
136+
synchronized (lock) {
137+
register(injector);
138+
}
139+
} else {
140+
register(injector);
141+
}
128142
return injector;
129143
}
130144

com.avaloq.tools.ddk.xtext/src/com/avaloq/tools/ddk/xtext/build/AbstractDynamicSetupService.java

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,34 +12,13 @@
1212

1313
import java.util.List;
1414

15-
import com.google.inject.Injector;
16-
import com.google.inject.Module;
17-
1815

1916
/**
2017
* Support for comparing dynamic setup services.
2118
*/
2219
public abstract class AbstractDynamicSetupService implements IDynamicSetupService {
2320

24-
/**
25-
* This method only exists for backward compatibility for langauges which have not yet been regenerated.
26-
*
27-
* @param overrideModule
28-
* override module for the runtime module
29-
* @return created injector
30-
*/
31-
@Deprecated
32-
protected Injector doSetup(final Module overrideModule) {
33-
// this method can be removed once all subclasses have been regenerated using DDK 4.0.0
34-
throw new UnsupportedOperationException();
35-
}
36-
37-
@Override
38-
public Injector doSetup(final Module overrideModule, final Module... additionalModules) {
39-
// this implementation can be removed once all subclasses have been regenerated using DDK 4.0.0
40-
// until then it is required for backwards compatibility
41-
return doSetup(overrideModule);
42-
}
21+
public static final Object SETUP_LOCK = new Object();
4322

4423
/**
4524
* {@inheritDoc} Child languages are always > than their parent languages.

0 commit comments

Comments
 (0)