Skip to content

Commit 138bff8

Browse files
committed
Add settings compilation class support
1 parent 0f6e3d4 commit 138bff8

5 files changed

Lines changed: 285 additions & 20 deletions

File tree

testar/build.gradle

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,6 @@ sourceSets {
1818
excludes = ['settings/']
1919
}
2020
}
21-
22-
oracle {
23-
java {
24-
srcDirs =['resources/settings']
25-
}
26-
27-
compileClasspath += main.output
28-
compileClasspath += main.compileClasspath
29-
}
3021
}
3122

3223
/**
@@ -103,11 +94,6 @@ task prepareSUTs(type: Copy) {
10394
into 'target/scripts/suts'
10495
}
10596

106-
task prepareOracles(type: Copy) {
107-
from 'target/classes/java/oracle'
108-
into 'target/scripts/settings'
109-
}
110-
11197
task prepareOutputFolder(type: Copy) {
11298
from 'resources/output'
11399
into 'target/scripts/output'
@@ -146,8 +132,6 @@ applicationDistribution.from("../webdriver/resources/web-extension.xpi") {
146132
into "/"
147133
}
148134

149-
prepareOracles.dependsOn(oracleClasses)
150-
151135
/**
152136
* Set the arguments of the jvm in the start scripts.
153137
* To debug build TESTAR with the -DDEBUG=true.

testar/src/org/testar/scriptless/ScriptlessFactory.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,7 @@ private static TestingServices webdriverTestingServices(PlatformServices platfor
350350

351351
systemService = ScriptlessCompositionLoader.loadDelegateWrapper(
352352
compositionDescriptor.systemServiceClass(),
353+
compositionDescriptor.customCompositionResource(),
353354
SystemService.class,
354355
systemService,
355356
new Object[]{runtimeContext},
@@ -358,6 +359,7 @@ private static TestingServices webdriverTestingServices(PlatformServices platfor
358359
);
359360
stateService = ScriptlessCompositionLoader.loadDelegateWrapper(
360361
compositionDescriptor.stateServiceClass(),
362+
compositionDescriptor.customCompositionResource(),
361363
StateService.class,
362364
stateService,
363365
new Object[]{runtimeContext},
@@ -366,6 +368,7 @@ private static TestingServices webdriverTestingServices(PlatformServices platfor
366368
);
367369
actionDerivationService = ScriptlessCompositionLoader.loadDelegateWrapper(
368370
compositionDescriptor.actionDerivationServiceClass(),
371+
compositionDescriptor.customCompositionResource(),
369372
ActionDerivationService.class,
370373
actionDerivationService,
371374
new Object[]{runtimeContext},
@@ -374,6 +377,7 @@ private static TestingServices webdriverTestingServices(PlatformServices platfor
374377
);
375378
actionSelectorService = ScriptlessCompositionLoader.loadDelegateWrapper(
376379
compositionDescriptor.actionSelectorServiceClass(),
380+
compositionDescriptor.customCompositionResource(),
377381
ActionSelectorService.class,
378382
actionSelectorService,
379383
new Object[]{stateModelManager},
@@ -383,6 +387,7 @@ private static TestingServices webdriverTestingServices(PlatformServices platfor
383387
);
384388
actionExecutionService = ScriptlessCompositionLoader.loadDelegateWrapper(
385389
compositionDescriptor.actionExecutionServiceClass(),
390+
compositionDescriptor.customCompositionResource(),
386391
ActionExecutionService.class,
387392
actionExecutionService,
388393
new Object[]{runtimeContext},
@@ -425,6 +430,7 @@ private static ScriptlessCapabilities webdriverCapabilities(RuntimeContext runti
425430

426431
settingsCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
427432
compositionDescriptor.settingsCapabilityClass(),
433+
compositionDescriptor.customCompositionResource(),
428434
SettingsCapability.class,
429435
settingsCapability,
430436
new Object[]{runtimeContext.settings()},
@@ -433,6 +439,7 @@ private static ScriptlessCapabilities webdriverCapabilities(RuntimeContext runti
433439
);
434440
testSessionCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
435441
compositionDescriptor.testSessionCapabilityClass(),
442+
compositionDescriptor.customCompositionResource(),
436443
TestSessionCapability.class,
437444
testSessionCapability,
438445
new Object[]{runtimeContext},
@@ -441,6 +448,7 @@ private static ScriptlessCapabilities webdriverCapabilities(RuntimeContext runti
441448
);
442449
testSequenceCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
443450
compositionDescriptor.testSequenceCapabilityClass(),
451+
compositionDescriptor.customCompositionResource(),
444452
TestSequenceCapability.class,
445453
testSequenceCapability,
446454
new Object[]{runtimeContext},
@@ -449,6 +457,7 @@ private static ScriptlessCapabilities webdriverCapabilities(RuntimeContext runti
449457
);
450458
scriptlessOracleComposer = ScriptlessCompositionLoader.loadDelegateWrapper(
451459
compositionDescriptor.oracleComposerClass(),
460+
compositionDescriptor.customCompositionResource(),
452461
ScriptlessOracleComposer.class,
453462
scriptlessOracleComposer,
454463
new Object[]{runtimeContext.settings()},
@@ -457,6 +466,7 @@ private static ScriptlessCapabilities webdriverCapabilities(RuntimeContext runti
457466
);
458467
stopCriteriaCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
459468
compositionDescriptor.stopCriteriaCapabilityClass(),
469+
compositionDescriptor.customCompositionResource(),
460470
StopCriteriaCapability.class,
461471
stopCriteriaCapability,
462472
new Object[]{runtimeContext},
@@ -498,6 +508,7 @@ private static TestingServices windowsTestingServices(PlatformServices platformS
498508

499509
systemService = ScriptlessCompositionLoader.loadDelegateWrapper(
500510
compositionDescriptor.systemServiceClass(),
511+
compositionDescriptor.customCompositionResource(),
501512
SystemService.class,
502513
systemService,
503514
new Object[]{runtimeContext},
@@ -506,6 +517,7 @@ private static TestingServices windowsTestingServices(PlatformServices platformS
506517
);
507518
stateService = ScriptlessCompositionLoader.loadDelegateWrapper(
508519
compositionDescriptor.stateServiceClass(),
520+
compositionDescriptor.customCompositionResource(),
509521
StateService.class,
510522
stateService,
511523
new Object[]{runtimeContext},
@@ -514,6 +526,7 @@ private static TestingServices windowsTestingServices(PlatformServices platformS
514526
);
515527
actionDerivationService = ScriptlessCompositionLoader.loadDelegateWrapper(
516528
compositionDescriptor.actionDerivationServiceClass(),
529+
compositionDescriptor.customCompositionResource(),
517530
ActionDerivationService.class,
518531
actionDerivationService,
519532
new Object[]{runtimeContext},
@@ -522,6 +535,7 @@ private static TestingServices windowsTestingServices(PlatformServices platformS
522535
);
523536
actionSelectorService = ScriptlessCompositionLoader.loadDelegateWrapper(
524537
compositionDescriptor.actionSelectorServiceClass(),
538+
compositionDescriptor.customCompositionResource(),
525539
ActionSelectorService.class,
526540
actionSelectorService,
527541
new Object[]{stateModelManager},
@@ -531,6 +545,7 @@ private static TestingServices windowsTestingServices(PlatformServices platformS
531545
);
532546
actionExecutionService = ScriptlessCompositionLoader.loadDelegateWrapper(
533547
compositionDescriptor.actionExecutionServiceClass(),
548+
compositionDescriptor.customCompositionResource(),
534549
ActionExecutionService.class,
535550
actionExecutionService,
536551
new Object[]{runtimeContext},
@@ -578,6 +593,7 @@ private static TestingServices androidTestingServices(PlatformServices platformS
578593

579594
systemService = ScriptlessCompositionLoader.loadDelegateWrapper(
580595
compositionDescriptor.systemServiceClass(),
596+
compositionDescriptor.customCompositionResource(),
581597
SystemService.class,
582598
systemService,
583599
new Object[]{runtimeContext},
@@ -586,6 +602,7 @@ private static TestingServices androidTestingServices(PlatformServices platformS
586602
);
587603
stateService = ScriptlessCompositionLoader.loadDelegateWrapper(
588604
compositionDescriptor.stateServiceClass(),
605+
compositionDescriptor.customCompositionResource(),
589606
StateService.class,
590607
stateService,
591608
new Object[]{runtimeContext},
@@ -594,6 +611,7 @@ private static TestingServices androidTestingServices(PlatformServices platformS
594611
);
595612
actionDerivationService = ScriptlessCompositionLoader.loadDelegateWrapper(
596613
compositionDescriptor.actionDerivationServiceClass(),
614+
compositionDescriptor.customCompositionResource(),
597615
ActionDerivationService.class,
598616
actionDerivationService,
599617
new Object[]{runtimeContext},
@@ -602,6 +620,7 @@ private static TestingServices androidTestingServices(PlatformServices platformS
602620
);
603621
actionSelectorService = ScriptlessCompositionLoader.loadDelegateWrapper(
604622
compositionDescriptor.actionSelectorServiceClass(),
623+
compositionDescriptor.customCompositionResource(),
605624
ActionSelectorService.class,
606625
actionSelectorService,
607626
new Object[]{stateModelManager},
@@ -611,6 +630,7 @@ private static TestingServices androidTestingServices(PlatformServices platformS
611630
);
612631
actionExecutionService = ScriptlessCompositionLoader.loadDelegateWrapper(
613632
compositionDescriptor.actionExecutionServiceClass(),
633+
compositionDescriptor.customCompositionResource(),
614634
ActionExecutionService.class,
615635
actionExecutionService,
616636
new Object[]{runtimeContext},
@@ -652,6 +672,7 @@ private static ScriptlessCapabilities windowsCapabilities(RuntimeContext runtime
652672

653673
settingsCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
654674
compositionDescriptor.settingsCapabilityClass(),
675+
compositionDescriptor.customCompositionResource(),
655676
SettingsCapability.class,
656677
settingsCapability,
657678
new Object[]{runtimeContext.settings()},
@@ -660,6 +681,7 @@ private static ScriptlessCapabilities windowsCapabilities(RuntimeContext runtime
660681
);
661682
testSessionCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
662683
compositionDescriptor.testSessionCapabilityClass(),
684+
compositionDescriptor.customCompositionResource(),
663685
TestSessionCapability.class,
664686
testSessionCapability,
665687
new Object[]{runtimeContext},
@@ -668,6 +690,7 @@ private static ScriptlessCapabilities windowsCapabilities(RuntimeContext runtime
668690
);
669691
testSequenceCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
670692
compositionDescriptor.testSequenceCapabilityClass(),
693+
compositionDescriptor.customCompositionResource(),
671694
TestSequenceCapability.class,
672695
testSequenceCapability,
673696
new Object[]{runtimeContext},
@@ -676,6 +699,7 @@ private static ScriptlessCapabilities windowsCapabilities(RuntimeContext runtime
676699
);
677700
scriptlessOracleComposer = ScriptlessCompositionLoader.loadDelegateWrapper(
678701
compositionDescriptor.oracleComposerClass(),
702+
compositionDescriptor.customCompositionResource(),
679703
ScriptlessOracleComposer.class,
680704
scriptlessOracleComposer,
681705
new Object[]{runtimeContext.settings()},
@@ -684,6 +708,7 @@ private static ScriptlessCapabilities windowsCapabilities(RuntimeContext runtime
684708
);
685709
stopCriteriaCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
686710
compositionDescriptor.stopCriteriaCapabilityClass(),
711+
compositionDescriptor.customCompositionResource(),
687712
StopCriteriaCapability.class,
688713
stopCriteriaCapability,
689714
new Object[]{runtimeContext},
@@ -721,6 +746,7 @@ private static ScriptlessCapabilities androidCapabilities(RuntimeContext runtime
721746

722747
settingsCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
723748
compositionDescriptor.settingsCapabilityClass(),
749+
compositionDescriptor.customCompositionResource(),
724750
SettingsCapability.class,
725751
settingsCapability,
726752
new Object[]{runtimeContext.settings()},
@@ -729,6 +755,7 @@ private static ScriptlessCapabilities androidCapabilities(RuntimeContext runtime
729755
);
730756
testSessionCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
731757
compositionDescriptor.testSessionCapabilityClass(),
758+
compositionDescriptor.customCompositionResource(),
732759
TestSessionCapability.class,
733760
testSessionCapability,
734761
new Object[]{runtimeContext},
@@ -737,6 +764,7 @@ private static ScriptlessCapabilities androidCapabilities(RuntimeContext runtime
737764
);
738765
testSequenceCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
739766
compositionDescriptor.testSequenceCapabilityClass(),
767+
compositionDescriptor.customCompositionResource(),
740768
TestSequenceCapability.class,
741769
testSequenceCapability,
742770
new Object[]{runtimeContext},
@@ -745,6 +773,7 @@ private static ScriptlessCapabilities androidCapabilities(RuntimeContext runtime
745773
);
746774
scriptlessOracleComposer = ScriptlessCompositionLoader.loadDelegateWrapper(
747775
compositionDescriptor.oracleComposerClass(),
776+
compositionDescriptor.customCompositionResource(),
748777
ScriptlessOracleComposer.class,
749778
scriptlessOracleComposer,
750779
new Object[]{runtimeContext.settings()},
@@ -753,6 +782,7 @@ private static ScriptlessCapabilities androidCapabilities(RuntimeContext runtime
753782
);
754783
stopCriteriaCapability = ScriptlessCompositionLoader.loadDelegateWrapper(
755784
compositionDescriptor.stopCriteriaCapabilityClass(),
785+
compositionDescriptor.customCompositionResource(),
756786
StopCriteriaCapability.class,
757787
stopCriteriaCapability,
758788
new Object[]{runtimeContext},

testar/src/org/testar/scriptless/composition/ScriptlessCompositionLoader.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.testar.config.ConfigTags;
1818
import org.testar.config.settings.Settings;
1919
import org.testar.core.Assert;
20+
import org.testar.scriptless.util.ExternalJavaClassSupport;
2021

2122
public final class ScriptlessCompositionLoader {
2223

@@ -72,10 +73,12 @@ public static ScriptlessCompositionDescriptor loadDescriptor(Settings settings)
7273
}
7374

7475
public static <T> T loadDelegateWrapper(Optional<String> wrapperClassName,
76+
Optional<String> customCompositionResourcePath,
7577
Class<T> expectedType,
7678
T delegate,
7779
Object[]... extraArgumentOptions) {
7880
Assert.notNull(wrapperClassName);
81+
Assert.notNull(customCompositionResourcePath);
7982
Assert.notNull(expectedType);
8083
Assert.notNull(delegate);
8184
Assert.notNull(extraArgumentOptions);
@@ -86,7 +89,7 @@ public static <T> T loadDelegateWrapper(Optional<String> wrapperClassName,
8689

8790
String className = wrapperClassName.get();
8891
try {
89-
Class<?> wrapperClass = Class.forName(className);
92+
Class<?> wrapperClass = ExternalJavaClassSupport.loadClass(className, customCompositionResourcePath);
9093

9194
for (Object[] extraArguments : extraArgumentOptions) {
9295
Object[] constructorArguments = prepend(delegate, extraArguments);

testar/src/org/testar/scriptless/policy/ScriptlessPolicyLoader.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.testar.config.settings.Settings;
2121
import org.testar.core.Assert;
2222
import org.testar.core.policy.Policy;
23+
import org.testar.scriptless.util.ExternalJavaClassSupport;
2324

2425
public final class ScriptlessPolicyLoader {
2526

@@ -86,17 +87,19 @@ public static <T extends Policy> List<T> loadPolicies(List<String> policyClassNa
8687
}
8788

8889
List<T> policies = new ArrayList<>();
90+
Optional<String> resourcePath = optionalValue(settings.get(ConfigTags.CustomPoliciesResource, "").trim());
8991
for (String className : policyClassNames) {
90-
policies.add(loadPolicy(className, expectedType, settings));
92+
policies.add(loadPolicy(className, expectedType, settings, resourcePath));
9193
}
9294
return Collections.unmodifiableList(policies);
9395
}
9496

9597
private static <T extends Policy> T loadPolicy(String className,
9698
Class<T> expectedType,
97-
Settings settings) {
99+
Settings settings,
100+
Optional<String> resourcePath) {
98101
try {
99-
Class<?> policyClass = Class.forName(className);
102+
Class<?> policyClass = ExternalJavaClassSupport.loadClass(className, resourcePath);
100103

101104
if (!expectedType.isAssignableFrom(policyClass)) {
102105
throw new IllegalStateException(

0 commit comments

Comments
 (0)