From 596873bff5c28c7027f3fdfe719259795ad00103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Galland?= Date: Thu, 20 Aug 2020 11:35:46 +0200 Subject: [PATCH] [api][sre] Move the naming API from Janus to the general SARL API. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit see #972 Signed-off-by: Stéphane Galland --- .../io.sarl.api.naming/META-INF/MANIFEST.MF | 14 + .../OSGI-INF/l10n/bundle.properties | 3 + .../io.sarl.api.naming/build.properties | 10 + main/apiplugins/io.sarl.api.naming/pom.xml | 160 ++ .../sarl/api/naming/name/.AgentName.sarlbin | Bin 0 -> 3737 bytes .../api/naming/name/.BehaviorName.sarlbin | Bin 0 -> 4541 bytes .../sarl/api/naming/name/.ContextName.sarlbin | Bin 0 -> 3395 bytes .../io/sarl/api/naming/name/.SarlName.sarlbin | Bin 0 -> 6013 bytes .../sarl/api/naming/name/.ServiceName.sarlbin | Bin 0 -> 3840 bytes .../sarl/api/naming/name/.SkillName.sarlbin | Bin 0 -> 4369 bytes .../sarl/api/naming/name/.SpaceName.sarlbin | Bin 0 -> 3573 bytes .../io/sarl/api/naming/name/AgentName.java | 132 ++ .../io/sarl/api/naming/name/BehaviorName.java | 156 ++ .../io/sarl/api/naming/name/ContextName.java | 106 ++ .../io/sarl/api/naming/name/SarlName.java | 181 +++ .../io/sarl/api/naming/name/ServiceName.java | 94 ++ .../io/sarl/api/naming/name/SkillName.java | 143 ++ .../io/sarl/api/naming/name/SpaceName.java | 119 ++ .../.AbstractNamespaceService.sarlbin | Bin 0 -> 7139 bytes .../api/naming/namespace/.FieldAccess.sarlbin | Bin 0 -> 5359 bytes .../.FinderBasedNamespaceService.sarlbin | Bin 0 -> 5336 bytes .../namespace/.INamespaceFinder.sarlbin | Bin 0 -> 3284 bytes .../namespace/.NamespaceService.sarlbin | Bin 0 -> 4917 bytes .../namespace/AbstractNamespaceService.java | 210 +++ .../api/naming/namespace/FieldAccess.java | 155 ++ .../FinderBasedNamespaceService.java | 120 ++ .../naming/namespace/INamespaceFinder.java | 61 + .../naming/namespace/NamespaceService.java | 118 ++ .../parser/.AbstractSchemeNameParser.sarlbin | Bin 0 -> 7308 bytes .../parser/.AgentSchemeNameParser.sarlbin | Bin 0 -> 4659 bytes .../parser/.BehaviorSchemeNameParser.sarlbin | Bin 0 -> 6022 bytes .../parser/.ContextSchemeNameParser.sarlbin | Bin 0 -> 4460 bytes .../api/naming/parser/.INameParser.sarlbin | Bin 0 -> 4404 bytes .../naming/parser/.ISchemeNameParser.sarlbin | Bin 0 -> 3284 bytes .../parser/.ServiceSchemeNameParser.sarlbin | Bin 0 -> 4808 bytes .../parser/.SkillSchemeNameParser.sarlbin | Bin 0 -> 5200 bytes .../parser/.SpaceSchemeNameParser.sarlbin | Bin 0 -> 4525 bytes .../naming/parser/.UriBasedNameParser.sarlbin | Bin 0 -> 6581 bytes .../parser/AbstractSchemeNameParser.java | 259 ++++ .../naming/parser/AgentSchemeNameParser.java | 119 ++ .../parser/BehaviorSchemeNameParser.java | 172 +++ .../parser/ContextSchemeNameParser.java | 102 ++ .../sarl/api/naming/parser/INameParser.java | 102 ++ .../api/naming/parser/ISchemeNameParser.java | 61 + .../parser/ServiceSchemeNameParser.java | 108 ++ .../naming/parser/SkillSchemeNameParser.java | 135 ++ .../naming/parser/SpaceSchemeNameParser.java | 107 ++ .../api/naming/parser/UriBasedNameParser.java | 190 +++ .../api/naming/scheme/.NameScheme.sarlbin | Bin 0 -> 2157 bytes .../api/naming/scheme/.NameSchemes.sarlbin | Bin 0 -> 2913 bytes .../io/sarl/api/naming/scheme/NameScheme.java | 50 + .../sarl/api/naming/scheme/NameSchemes.java | 60 + .../io/sarl/api/naming/name}/AgentName.sarl | 8 +- .../sarl/api/naming/name}/BehaviorName.sarl | 8 +- .../io/sarl/api/naming/name}/ContextName.sarl | 8 +- .../io/sarl/api/naming/name}/SarlName.sarl | 8 +- .../io/sarl/api/naming/name}/ServiceName.sarl | 8 +- .../io/sarl/api/naming/name}/SkillName.sarl | 8 +- .../io/sarl/api/naming/name}/SpaceName.sarl | 8 +- .../namespace/AbstractNamespaceService.sarl | 50 +- .../api/naming}/namespace/FieldAccess.sarl | 6 +- .../FinderBasedNamespaceService.sarl | 23 +- .../naming}/namespace/INamespaceFinder.sarl | 13 +- .../naming}/namespace/NamespaceService.sarl | 8 +- .../parser}/AbstractSchemeNameParser.sarl | 6 +- .../naming/parser}/AgentSchemeNameParser.sarl | 6 +- .../parser}/BehaviorSchemeNameParser.sarl | 8 +- .../parser}/ContextSchemeNameParser.sarl | 6 +- .../sarl/api/naming/parser}/INameParser.sarl | 20 +- .../api/naming/parser}/ISchemeNameParser.sarl | 6 +- .../parser}/ServiceSchemeNameParser.sarl | 8 +- .../naming/parser}/SkillSchemeNameParser.sarl | 8 +- .../naming/parser}/SpaceSchemeNameParser.sarl | 6 +- .../api/naming/parser/UriBasedNameParser.sarl | 30 +- .../sarl/api/naming/scheme}/NameScheme.sarl | 4 +- .../sarl/api/naming/scheme/NameSchemes.sarl | 51 + main/apiplugins/pom.xml | 1 + main/externalmaven/io.sarl.maven.sdk/pom.xml | 4 + main/features/io.sarl.lib/feature.xml | 8 +- pom.xml | 5 + .../buildpath/janus-bundles.properties | 2 +- .../META-INF/MANIFEST.MF | 3 +- .../internal/naming/NameParserModule.sarl | 28 +- .../naming/SchemeNameParserModule.sarl | 14 +- .../services/NamespaceFinderModule.sarl | 2 +- .../services/NamespaceServiceModule.sarl | 28 +- .../internal/services/ProbeServiceModule.sarl | 6 +- .../namespace/AbstractNamespaceFinder.sarl | 3 +- .../namespace/AgentNamespaceFinder.sarl | 4 +- .../namespace/BehaviorNamespaceFinder.sarl | 4 +- .../namespace/ContextNamespaceFinder.sarl | 4 +- .../namespace/ServiceNamespaceFinder.sarl | 7 +- .../namespace/SkillNamespaceFinder.sarl | 4 +- .../namespace/SpaceNamespaceFinder.sarl | 4 +- .../services/probing/AbstractFieldProbe.sarl | 4 +- .../probing/AbstractProbeService.sarl | 12 +- .../probing/AsynchronousProbeService.sarl | 8 +- .../sarl/sre/services/probing/FieldProbe.sarl | 2 +- .../sre/services/probing/ProbeService.sarl | 2 +- .../probing/SynchronousProbeService.sarl | 8 +- .../AbstractNamespaceServiceTest.sarl | 2 +- .../FinderBasedNamespaceServiceTest.sarl | 2 +- .../naming/BehaviorSchemeNameParserTest.sarl | 1353 ----------------- .../namespace/AgentNamespaceFinderTest.sarl | 6 +- .../BehaviorNamespaceFinderTest.sarl | 4 +- .../namespace/ContextNamespaceFinderTest.sarl | 4 +- .../namespace/ServiceNamespaceFinderTest.sarl | 4 +- .../namespace/SkillNamespaceFinderTest.sarl | 4 +- .../namespace/SpaceNamespaceFinderTest.sarl | 4 +- .../probing/AsynchronousProbeServiceTest.sarl | 16 +- .../services/probing/FieldProbeTest.sarl | 6 +- .../probing/SynchronousProbeServiceTest.sarl | 16 +- tests/io.sarl.api.naming.tests/pom.xml | 75 + .../api/naming/tests}/mocks/BehaviorMock.sarl | 2 +- .../api/naming/tests}/mocks/CapacityMock.sarl | 2 +- .../api/naming/tests/mocks/ContextMock.sarl | 34 + .../api/naming/tests/mocks/ServiceMock.sarl | 34 + .../api/naming/tests}/mocks/SkillMock.sarl | 2 +- .../api/naming/tests/name}/AgentNameTest.sarl | 19 +- .../naming/tests/name}/BehaviorNameTest.sarl | 23 +- .../naming/tests/name}/ContextNameTest.sarl | 23 +- .../api/naming/tests/name}/SarlNameTest.sarl | 28 +- .../naming/tests/name}/ServiceNameTest.sarl | 25 +- .../api/naming/tests/name}/SkillNameTest.sarl | 23 +- .../api/naming/tests/name}/SpaceNameTest.sarl | 19 +- .../tests}/namespace/FieldAccessTest.sarl | 16 +- .../FinderBasedNamespaceServiceTest.sarl | 133 +- .../tests/namespace/mocks/MyContext.sarl | 75 + .../AbstractBehaviorSchemeNameParserTest.sarl | 157 ++ .../tests/parser/AbstractNameParserTest.sarl | 34 +- .../parser}/AgentSchemeNameParserTest.sarl | 28 +- ...aviorSchemeNameParserDecodeStringTest.sarl | 222 +++ ...BehaviorSchemeNameParserDecodeURITest.sarl | 212 +++ ...aviorSchemeNameParserNormalizeURITest.sarl | 218 +++ .../parser}/ContextSchemeNameParserTest.sarl | 24 +- .../parser}/ServiceSchemeNameParserTest.sarl | 30 +- .../parser}/SkillSchemeNameParserTest.sarl | 28 +- .../parser}/SpaceSchemeNameParserTest.sarl | 24 +- .../naming/tests/scheme/NameSchemesTest.sarl | 29 +- tests/pom.xml | 1 + 140 files changed, 4859 insertions(+), 1831 deletions(-) create mode 100644 main/apiplugins/io.sarl.api.naming/META-INF/MANIFEST.MF create mode 100644 main/apiplugins/io.sarl.api.naming/OSGI-INF/l10n/bundle.properties create mode 100644 main/apiplugins/io.sarl.api.naming/build.properties create mode 100644 main/apiplugins/io.sarl.api.naming/pom.xml create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.AgentName.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.BehaviorName.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.ContextName.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.SarlName.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.ServiceName.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.SkillName.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.SpaceName.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/AgentName.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/BehaviorName.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/ContextName.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SarlName.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/ServiceName.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SkillName.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SpaceName.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.AbstractNamespaceService.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.FieldAccess.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.FinderBasedNamespaceService.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.INamespaceFinder.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.NamespaceService.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/AbstractNamespaceService.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/FieldAccess.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/FinderBasedNamespaceService.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/INamespaceFinder.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/NamespaceService.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.AbstractSchemeNameParser.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.AgentSchemeNameParser.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.BehaviorSchemeNameParser.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.ContextSchemeNameParser.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.INameParser.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.ISchemeNameParser.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.ServiceSchemeNameParser.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.SkillSchemeNameParser.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.SpaceSchemeNameParser.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.UriBasedNameParser.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/AbstractSchemeNameParser.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/AgentSchemeNameParser.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/BehaviorSchemeNameParser.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ContextSchemeNameParser.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/INameParser.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ISchemeNameParser.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ServiceSchemeNameParser.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/SkillSchemeNameParser.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/SpaceSchemeNameParser.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/UriBasedNameParser.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/.NameScheme.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/.NameSchemes.sarlbin create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/NameScheme.java create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/NameSchemes.java rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name}/AgentName.sarl (89%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name}/BehaviorName.sarl (91%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name}/ContextName.sarl (89%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name}/SarlName.sarl (92%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name}/ServiceName.sarl (89%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name}/SkillName.sarl (88%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name}/SpaceName.sarl (89%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming}/namespace/AbstractNamespaceService.sarl (72%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming}/namespace/FieldAccess.sarl (96%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming}/namespace/FinderBasedNamespaceService.sarl (76%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming}/namespace/INamespaceFinder.sarl (76%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming}/namespace/NamespaceService.sarl (95%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser}/AbstractSchemeNameParser.sarl (96%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser}/AgentSchemeNameParser.sarl (94%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser}/BehaviorSchemeNameParser.sarl (96%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser}/ContextSchemeNameParser.sarl (92%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser}/INameParser.sarl (89%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser}/ISchemeNameParser.sarl (91%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser}/ServiceSchemeNameParser.sarl (93%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser}/SkillSchemeNameParser.sarl (95%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser}/SpaceSchemeNameParser.sarl (93%) rename sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/NameParser.sarl => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/UriBasedNameParser.sarl (75%) rename {sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming => main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/scheme}/NameScheme.sarl (95%) create mode 100644 main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/scheme/NameSchemes.sarl delete mode 100644 sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/BehaviorSchemeNameParserTest.sarl create mode 100644 tests/io.sarl.api.naming.tests/pom.xml rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests}/mocks/BehaviorMock.sarl (95%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests}/mocks/CapacityMock.sarl (95%) create mode 100644 tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/ContextMock.sarl create mode 100644 tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/ServiceMock.sarl rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests}/mocks/SkillMock.sarl (95%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name}/AgentNameTest.sarl (83%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name}/BehaviorNameTest.sarl (82%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name}/ContextNameTest.sarl (78%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name}/SarlNameTest.sarl (75%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name}/ServiceNameTest.sarl (77%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name}/SkillNameTest.sarl (81%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name}/SpaceNameTest.sarl (82%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests}/namespace/FieldAccessTest.sarl (88%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests}/namespace/FinderBasedNamespaceServiceTest.sarl (79%) create mode 100644 tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/namespace/mocks/MyContext.sarl create mode 100644 tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AbstractBehaviorSchemeNameParserTest.sarl rename sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/NameParserTest.sarl => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AbstractNameParserTest.sarl (79%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser}/AgentSchemeNameParserTest.sarl (95%) create mode 100644 tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserDecodeStringTest.sarl create mode 100644 tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserDecodeURITest.sarl create mode 100644 tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserNormalizeURITest.sarl rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser}/ContextSchemeNameParserTest.sarl (94%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser}/ServiceSchemeNameParserTest.sarl (93%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser}/SkillSchemeNameParserTest.sarl (97%) rename {sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser}/SpaceSchemeNameParserTest.sarl (95%) rename sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/INameParserTest.sarl => tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/scheme/NameSchemesTest.sarl (67%) diff --git a/main/apiplugins/io.sarl.api.naming/META-INF/MANIFEST.MF b/main/apiplugins/io.sarl.api.naming/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..43388cdd60 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/META-INF/MANIFEST.MF @@ -0,0 +1,14 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: io.sarl.api.naming;singleton:=true +Automatic-Module-Name: io.sarl.api.naming +Bundle-Version: 0.12.0.qualifier +Bundle-Vendor: %Bundle-Vendor +Bundle-Name: %Bundle-Name +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Require-Bundle: io.sarl.lang.core;bundle-version="0.12.0", + org.eclipse.xtend.lib;bundle-version="2.22.0" +Export-Package: io.sarl.api.naming.name, + io.sarl.api.naming.namespace, + io.sarl.api.naming.parser, + io.sarl.api.naming.scheme diff --git a/main/apiplugins/io.sarl.api.naming/OSGI-INF/l10n/bundle.properties b/main/apiplugins/io.sarl.api.naming/OSGI-INF/l10n/bundle.properties new file mode 100644 index 0000000000..637173e195 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/OSGI-INF/l10n/bundle.properties @@ -0,0 +1,3 @@ +#Properties file for io.sarl.core +Bundle-Vendor = SARL.io +Bundle-Name = SARL Naming API \ No newline at end of file diff --git a/main/apiplugins/io.sarl.api.naming/build.properties b/main/apiplugins/io.sarl.api.naming/build.properties new file mode 100644 index 0000000000..e71f88b2b5 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/build.properties @@ -0,0 +1,10 @@ +source.. = src/main/sarl,\ + src/main/generated-sources/sarl +src.excludes = **/*.sarlbin +bin.includes = META-INF/,\ + OSGI-INF/,\ + . +bin.excludes = **/*.java._trace,\ + **/*.sarlbin,\ + **/*.sarl +jre.compilation.profile = JavaSE-1.8 diff --git a/main/apiplugins/io.sarl.api.naming/pom.xml b/main/apiplugins/io.sarl.api.naming/pom.xml new file mode 100644 index 0000000000..4a40977005 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/pom.xml @@ -0,0 +1,160 @@ + + 4.0.0 + + io.sarl + io.sarl.plugins.api + 0.12.0-SNAPSHOT + + io.sarl.api.naming + eclipse-plugin + SARL Naming API + + + + + com.google.code.maven-replacer-plugin + replacer + + + prepare-eclipse-buildproperties + process-resources + + replace + + + ${project.build.sourceEncoding} + ${project.basedir}/build.properties + MULTILINE + + + ^(jre\.compilation\.profile *= *)(.*)$ + $1${sarl-dsl.min.jre.environment} + + + + + + prepare-eclipse-manifestmf + process-resources + + replace + + + ${project.build.sourceEncoding} + ${project.basedir}/META-INF/MANIFEST.MF + MULTILINE + + + ^(Bundle-RequiredExecutionEnvironment: *)(.*)$ + $1${user.min.jre.environment} + + + + + + + + io.sarl.maven + sarl-maven-plugin + + + + sarl-compiler-init + initialize + + initialize + + + + sarl-compiler-compile + compile + + compile + + + + sarl-compiler-clean + clean + + clean + + + + + true + ${sarl-dsl.min.jdk.version} + ${sarl-dsl.min.jdk.version} + ${project.build.sourceEncoding} + true + true + true + true + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + src/main/sarl + + + + + + + + + + + + default-profile + + true + + + + + org.eclipse.tycho + tycho-source-plugin + + + + + + maven-release-of-core-plugin + + + publicSarlApiModuleSet + true + + + + + + + org.arakhne.afc.maven + tag-replacer + + + ${project.basedir}/src/main/sarl + ${project.basedir}/src/main/generated-sources/sarl + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + ${project.build.directory}/generated-sources/java + + + + + + + + + diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.AgentName.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.AgentName.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..88aa048492168857783a4e37af184c6b4c866d1e GIT binary patch literal 3737 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 Us}qy_sZaQO)c#%vss3dD1Ac(S@&Et; literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.BehaviorName.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.BehaviorName.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..dbb4098c1c7188aa984ca4e64b712d242aa745da GIT binary patch literal 4541 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 literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.ContextName.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.ContextName.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..36f9ad6fbbf6d829049f3a9360d8ac2073080cb3 GIT binary patch literal 3395 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 literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.SarlName.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.SarlName.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..83007fb4e2da114f56835449f5d67e3bac4ea46e GIT binary patch literal 6013 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 V2mz;}{u7_#_p1MWLK*+u{srQQ@(cg~ literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.SkillName.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/.SkillName.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..d8ce0945f953a597bc7c16685641bc95ce428753 GIT binary patch literal 4369 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 Rf8x{qUJbu@an?V#{{x>MTS5Q; literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/AgentName.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/AgentName.java new file mode 100644 index 0000000000..111e53f3f4 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/AgentName.java @@ -0,0 +1,132 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.name; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.lang.annotation.PrivateAPI; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.net.URI; +import java.util.Objects; +import java.util.UUID; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * This class represents a space name. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class AgentName extends SarlName { + @Accessors + private final UUID contextId; + + @Accessors + private final UUID spaceId; + + @Accessors + private final UUID agentId; + + /** + * Constructor. + * + * @param uri the uri of the context. + * @param contextId the identifier of the context. + * @param spaceId the identifier of the space. + * @param agentId the identifier of the agent. + */ + @PrivateAPI + public AgentName(final URI uri, final UUID contextId, final UUID spaceId, final UUID agentId) { + super(uri); + this.contextId = contextId; + this.spaceId = spaceId; + this.agentId = agentId; + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + AgentName other = (AgentName) obj; + if (!Objects.equals(this.contextId, other.contextId)) + return false; + if (!Objects.equals(this.spaceId, other.spaceId)) + return false; + if (!Objects.equals(this.agentId, other.agentId)) + return false; + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + final int prime = 31; + result = prime * result + Objects.hashCode(this.contextId); + result = prime * result + Objects.hashCode(this.spaceId); + result = prime * result + Objects.hashCode(this.agentId); + return result; + } + + @Override + @Pure + @SyntheticMember + public AgentName clone() { + try { + return (AgentName) super.clone(); + } catch (Throwable exception) { + throw new Error(exception); + } + } + + @SyntheticMember + private static final long serialVersionUID = -2495352890L; + + @Pure + public UUID getContextId() { + return this.contextId; + } + + @Pure + public UUID getSpaceId() { + return this.spaceId; + } + + @Pure + public UUID getAgentId() { + return this.agentId; + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/BehaviorName.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/BehaviorName.java new file mode 100644 index 0000000000..72a8faf7c9 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/BehaviorName.java @@ -0,0 +1,156 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.name; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.lang.annotation.PrivateAPI; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import io.sarl.lang.core.Behavior; +import java.net.URI; +import java.util.Objects; +import java.util.UUID; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * This class represents a behavior name. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class BehaviorName extends SarlName { + @Accessors + private final UUID contextId; + + @Accessors + private final UUID spaceId; + + @Accessors + private final UUID agentId; + + @Accessors + private final Class behaviorType; + + @Accessors + private final int behaviorIndex; + + /** + * Constructor. + * + * @param uri the uri of the context. + * @param contextId the identifier of the context. + * @param spaceId the identifier of the space. + * @param agentId the identifier of the agent. + * @param behaviorType the type of the behavior. + * @param behaviorIndex the index of the behavior in the list of behaviors. + */ + @PrivateAPI + public BehaviorName(final URI uri, final UUID contextId, final UUID spaceId, final UUID agentId, final Class behaviorType, final int behaviorIndex) { + super(uri); + this.contextId = contextId; + this.spaceId = spaceId; + this.agentId = agentId; + this.behaviorType = behaviorType; + this.behaviorIndex = behaviorIndex; + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + BehaviorName other = (BehaviorName) obj; + if (!Objects.equals(this.contextId, other.contextId)) + return false; + if (!Objects.equals(this.spaceId, other.spaceId)) + return false; + if (!Objects.equals(this.agentId, other.agentId)) + return false; + if (other.behaviorIndex != this.behaviorIndex) + return false; + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + final int prime = 31; + result = prime * result + Objects.hashCode(this.contextId); + result = prime * result + Objects.hashCode(this.spaceId); + result = prime * result + Objects.hashCode(this.agentId); + result = prime * result + Integer.hashCode(this.behaviorIndex); + return result; + } + + @Override + @Pure + @SyntheticMember + public BehaviorName clone() { + try { + return (BehaviorName) super.clone(); + } catch (Throwable exception) { + throw new Error(exception); + } + } + + @SyntheticMember + private static final long serialVersionUID = -885412560L; + + @Pure + public UUID getContextId() { + return this.contextId; + } + + @Pure + public UUID getSpaceId() { + return this.spaceId; + } + + @Pure + public UUID getAgentId() { + return this.agentId; + } + + @Pure + public Class getBehaviorType() { + return this.behaviorType; + } + + @Pure + public int getBehaviorIndex() { + return this.behaviorIndex; + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/ContextName.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/ContextName.java new file mode 100644 index 0000000000..1895ec7dea --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/ContextName.java @@ -0,0 +1,106 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.name; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.lang.annotation.PrivateAPI; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.net.URI; +import java.util.Objects; +import java.util.UUID; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * This class represents a context name. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class ContextName extends SarlName { + @Accessors + private final UUID contextId; + + /** + * Constructor. + * + * @param uri the uri of the context. + * @param contextId the identifier of the context. + */ + @PrivateAPI + public ContextName(final URI uri, final UUID contextId) { + super(uri); + this.contextId = contextId; + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ContextName other = (ContextName) obj; + if (!Objects.equals(this.contextId, other.contextId)) + return false; + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + final int prime = 31; + result = prime * result + Objects.hashCode(this.contextId); + return result; + } + + @Override + @Pure + @SyntheticMember + public ContextName clone() { + try { + return (ContextName) super.clone(); + } catch (Throwable exception) { + throw new Error(exception); + } + } + + @SyntheticMember + private static final long serialVersionUID = 601933167L; + + @Pure + public UUID getContextId() { + return this.contextId; + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SarlName.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SarlName.java new file mode 100644 index 0000000000..3c6bfd8df4 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SarlName.java @@ -0,0 +1,181 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.name; + +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.api.naming.scheme.NameSchemes; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.io.Serializable; +import java.lang.ref.WeakReference; +import java.net.URI; +import org.eclipse.xtext.xbase.lib.Pure; +import org.eclipse.xtext.xbase.lib.StringExtensions; + +/** + * This class represents a component name. Each component in a name is an atomic name. + * + *

The components of a name are numbered. The indexes of a + * name with N components range from 0 up to, but not including, N. + * An empty compound name has no components. + * + *

Multithreaded Access

+ * A {@code SName} instance is not synchronized against concurrent + * multithreaded access. Multiple threads trying to access and modify a + * {@code SName} should lock the object. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public abstract class SarlName implements Cloneable, Serializable, Comparable { + private transient WeakReference associatedObject; + + private final URI uri; + + private NameScheme scheme; + + protected SarlName(final URI uri) { + class $AssertEvaluator$ { + final boolean $$result; + $AssertEvaluator$() { + this.$$result = (uri != null); + } + } + assert new $AssertEvaluator$().$$result; + this.uri = uri; + } + + @Override + @Pure + public String toString() { + return this.uri.toString(); + } + + /** + * Replies the scheme of this name. + */ + @Pure + public NameScheme getScheme() { + if ((this.scheme == null)) { + this.scheme = NameSchemes.getSchemeObject(this.toURI().getScheme()); + } + return this.scheme; + } + + @Pure + @Override + public int compareTo(final SarlName name) { + int _xifexpression = (int) 0; + if ((name == null)) { + _xifexpression = 1; + } else { + _xifexpression = this.uri.compareTo(name.uri); + } + return _xifexpression; + } + + /** + * Replies the URI associated to this name. + */ + @Pure + public URI toURI() { + return this.uri; + } + + /** + * Replies the name of the fragment. + */ + @Pure + public String getFragment() { + return this.uri.getFragment(); + } + + /** + * Replies if this name has a fragment associated to it. + */ + @Pure + public boolean hasFragment() { + boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(this.uri.getFragment()); + return (!_isNullOrEmpty); + } + + /** + * Replies the associated object. + */ + @Pure + public final Object getAssociatedObject() { + WeakReference _associatedObject = this.associatedObject; + Object _get = null; + if (_associatedObject!=null) { + _get=_associatedObject.get(); + } + return _get; + } + + /** + * Change the associated object. + */ + public final void setAssociatedObject(final Object obj) { + WeakReference _xifexpression = null; + if ((obj == null)) { + _xifexpression = null; + } else { + _xifexpression = new WeakReference(obj); + } + this.associatedObject = _xifexpression; + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + return result; + } + + @Override + @Pure + @SyntheticMember + public SarlName clone() { + try { + return (SarlName) super.clone(); + } catch (Throwable exception) { + throw new Error(exception); + } + } + + @SyntheticMember + private static final long serialVersionUID = -4780923653L; +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/ServiceName.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/ServiceName.java new file mode 100644 index 0000000000..35eaac0bcf --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/ServiceName.java @@ -0,0 +1,94 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.name; + +import com.google.common.util.concurrent.Service; +import io.sarl.api.naming.name.SarlName; +import io.sarl.lang.annotation.PrivateAPI; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.net.URI; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * This class represents a service name. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class ServiceName extends SarlName { + @Accessors + private final Class serviceType; + + /** + * Constructor. + * + * @param uri the uri of the context. + * @param service the type of service. + */ + @PrivateAPI + public ServiceName(final URI uri, final Class service) { + super(uri); + this.serviceType = service; + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + return result; + } + + @Override + @Pure + @SyntheticMember + public ServiceName clone() { + try { + return (ServiceName) super.clone(); + } catch (Throwable exception) { + throw new Error(exception); + } + } + + @SyntheticMember + private static final long serialVersionUID = -105695148L; + + @Pure + public Class getServiceType() { + return this.serviceType; + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SkillName.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SkillName.java new file mode 100644 index 0000000000..1209c61f9a --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SkillName.java @@ -0,0 +1,143 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.name; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.lang.annotation.PrivateAPI; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import io.sarl.lang.core.Capacity; +import java.net.URI; +import java.util.Objects; +import java.util.UUID; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * This class represents a skill name. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class SkillName extends SarlName { + @Accessors + private final UUID contextId; + + @Accessors + private final UUID spaceId; + + @Accessors + private final UUID agentId; + + @Accessors + private final Class capacity; + + /** + * Constructor. + * + * @param uri the uri of the context. + * @param contextId the identifier of the context. + * @param spaceId the identifier of the space. + * @param agentId the identifier of the agent. + * @param capacity the name of the capacity implemented by the skill. + */ + @PrivateAPI + public SkillName(final URI uri, final UUID contextId, final UUID spaceId, final UUID agentId, final Class capacity) { + super(uri); + this.contextId = contextId; + this.spaceId = spaceId; + this.agentId = agentId; + this.capacity = capacity; + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + SkillName other = (SkillName) obj; + if (!Objects.equals(this.contextId, other.contextId)) + return false; + if (!Objects.equals(this.spaceId, other.spaceId)) + return false; + if (!Objects.equals(this.agentId, other.agentId)) + return false; + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + final int prime = 31; + result = prime * result + Objects.hashCode(this.contextId); + result = prime * result + Objects.hashCode(this.spaceId); + result = prime * result + Objects.hashCode(this.agentId); + return result; + } + + @Override + @Pure + @SyntheticMember + public SkillName clone() { + try { + return (SkillName) super.clone(); + } catch (Throwable exception) { + throw new Error(exception); + } + } + + @SyntheticMember + private static final long serialVersionUID = -4868198054L; + + @Pure + public UUID getContextId() { + return this.contextId; + } + + @Pure + public UUID getSpaceId() { + return this.spaceId; + } + + @Pure + public UUID getAgentId() { + return this.agentId; + } + + @Pure + public Class getCapacity() { + return this.capacity; + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SpaceName.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SpaceName.java new file mode 100644 index 0000000000..7db4c47d6e --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/name/SpaceName.java @@ -0,0 +1,119 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.name; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.lang.annotation.PrivateAPI; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.net.URI; +import java.util.Objects; +import java.util.UUID; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * This class represents a space name. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class SpaceName extends SarlName { + @Accessors + private final UUID contextId; + + @Accessors + private final UUID spaceId; + + /** + * Constructor. + * + * @param uri the uri of the context. + * @param contextId the identifier of the context. + * @param spaceId the identifier of the context. + */ + @PrivateAPI + public SpaceName(final URI uri, final UUID contextId, final UUID spaceId) { + super(uri); + this.contextId = contextId; + this.spaceId = spaceId; + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + SpaceName other = (SpaceName) obj; + if (!Objects.equals(this.contextId, other.contextId)) + return false; + if (!Objects.equals(this.spaceId, other.spaceId)) + return false; + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + final int prime = 31; + result = prime * result + Objects.hashCode(this.contextId); + result = prime * result + Objects.hashCode(this.spaceId); + return result; + } + + @Override + @Pure + @SyntheticMember + public SpaceName clone() { + try { + return (SpaceName) super.clone(); + } catch (Throwable exception) { + throw new Error(exception); + } + } + + @SyntheticMember + private static final long serialVersionUID = -1080609974L; + + @Pure + public UUID getContextId() { + return this.contextId; + } + + @Pure + public UUID getSpaceId() { + return this.spaceId; + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.AbstractNamespaceService.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.AbstractNamespaceService.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..f377d834707bdb293c4243c50184afd4e235f064 GIT binary patch literal 7139 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 bKX(t1{-@0Kv~Y0$&d2)G4S!Dde=YnUmt**d literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.FinderBasedNamespaceService.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.FinderBasedNamespaceService.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..78f4cf27eb2f02fecc5dfce5e15d29f352c791b2 GIT binary patch literal 5336 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 Hr{KQ;$GYBI literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.INamespaceFinder.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.INamespaceFinder.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..c8e8e849699ce8d3deb75dbf104dfcf366a2c422 GIT binary patch literal 3284 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 literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.NamespaceService.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/.NamespaceService.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..55545b5396c97de9974e312dc82547b139d8de50 GIT binary patch literal 4917 zcmaJ_Ra_L@x1C{>#t{iA>4qVsOFD-XNeSuh4oT^j5D*!1kU_e;ySpWZ4ryt)`hU6K zcYpWZwI9xY+54RHu+~{;t3p9f@B!%P=l~97d^Ny7fc+;ovonX7IM}SA~- z_TbW&QOYH}pwp>Q?{x~AQnqPiW)!eXA1G-|qG@!tn

}v09*iUPo&b3_uAGTt_H< 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 BHwpj% literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/AbstractNamespaceService.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/AbstractNamespaceService.java new file mode 100644 index 0000000000..cf93c1db7e --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/AbstractNamespaceService.java @@ -0,0 +1,210 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.namespace; + +import com.google.common.base.Objects; +import com.google.common.util.concurrent.AbstractService; +import io.sarl.api.naming.name.SarlName; +import io.sarl.api.naming.namespace.FieldAccess; +import io.sarl.api.naming.namespace.NamespaceService; +import io.sarl.api.naming.parser.INameParser; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.lang.reflect.Field; +import javax.inject.Inject; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * Abstract implementation of a service that manages name spaces into the SRE. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public abstract class AbstractNamespaceService extends AbstractService implements NamespaceService { + private INameParser nameParser; + + @Override + protected final void doStart() { + try { + this.onStart(); + this.notifyStarted(); + } catch (final Throwable _t) { + if (_t instanceof Throwable) { + final Throwable exception = (Throwable)_t; + this.notifyFailed(exception); + } else { + throw Exceptions.sneakyThrow(_t); + } + } + } + + /** + * Do something when starting the service. + * + *

This function is called from {@link #doStart()} + */ + protected void onStart() { + } + + @Override + protected final void doStop() { + try { + this.onStop(); + this.notifyStopped(); + } catch (final Throwable _t) { + if (_t instanceof Throwable) { + final Throwable exception = (Throwable)_t; + this.notifyFailed(exception); + } else { + throw Exceptions.sneakyThrow(_t); + } + } + } + + /** + * Do something when stopping the service. + * + *

This function is called from {@link #doStop()} + */ + protected void onStop() { + } + + @Pure + @Override + public INameParser getNameParser() { + return this.nameParser; + } + + /** + * Change the name parser used by this service. + * + * @param parser the name parser, never {@code null} + * @since 0.11 + */ + @Inject + public void setNameParser(final INameParser parser) { + this.nameParser = parser; + } + + @Override + @Pure + public final T findObject(final SarlName name, final Class type) { + class $AssertEvaluator$ { + final boolean $$result; + $AssertEvaluator$() { + this.$$result = (type != null); + } + } + assert new $AssertEvaluator$().$$result; + Object obj = this.findObject(name); + if (((obj != null) && type.isInstance(obj))) { + return type.cast(obj); + } + return null; + } + + @Override + @Pure + public final Object findObject(final SarlName name) { + if ((name == null)) { + return null; + } + Object associatedObject = name.getAssociatedObject(); + if ((associatedObject == null)) { + Object obj = this.findObjectWithoutFragment(name); + if (((obj != null) && name.hasFragment())) { + FieldAccess field = AbstractNamespaceService.getDeclaredField(obj, name); + if ((field != null)) { + associatedObject = field; + } + return field; + } else { + try { + associatedObject = obj; + } catch (final Throwable _t) { + if (_t instanceof ClassCastException) { + } else { + throw Exceptions.sneakyThrow(_t); + } + } + } + } + return associatedObject; + } + + @Pure + private static FieldAccess getDeclaredField(final Object obj, final SarlName name) { + Class type = obj.getClass(); + while (((type != null) && (!Objects.equal(Object.class, type)))) { + { + try { + Field field = type.getDeclaredField(name.getFragment()); + if ((field != null)) { + return new FieldAccess(name, field, obj); + } + } catch (final Throwable _t) { + if (_t instanceof Throwable) { + } else { + throw Exceptions.sneakyThrow(_t); + } + } + type = type.getSuperclass(); + } + } + return null; + } + + /** + * Find an object with the given name, but ignoring the fragment. + * + * @param name the name of the object, never {@code null}. + * @return the object, or {@code null} if the object was not found. + */ + protected abstract Object findObjectWithoutFragment(final SarlName name); + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + return result; + } + + @SyntheticMember + public AbstractNamespaceService() { + super(); + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/FieldAccess.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/FieldAccess.java new file mode 100644 index 0000000000..4c467ea9ab --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/FieldAccess.java @@ -0,0 +1,155 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.namespace; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import org.eclipse.xtend.lib.annotations.AccessorType; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * Accessor to a field. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class FieldAccess { + @Accessors(AccessorType.PUBLIC_GETTER) + private final SarlName name; + + @Accessors(AccessorType.PUBLIC_GETTER) + private final Field field; + + @Accessors(AccessorType.PUBLIC_GETTER) + private final Object instance; + + /** + * Constructor. + * + * @param name the name of the field. + * @param field the field declaration. + * @param instance the object to have access to. + */ + public FieldAccess(final SarlName name, final Field field, final Object instance) { + class $AssertEvaluator$ { + final boolean $$result; + $AssertEvaluator$() { + boolean _isStatic = Modifier.isStatic(field.getModifiers()); + this.$$result = (!_isStatic); + } + } + assert new $AssertEvaluator$().$$result; + this.name = name; + this.field = field; + this.instance = instance; + this.field.setAccessible(true); + } + + /** + * Replies the value of the field. + * + * @return the field's value. + */ + @Pure + public Object get() { + try { + return this.field.get(this.instance); + } catch (final Throwable _t) { + if (_t instanceof Throwable) { + } else { + throw Exceptions.sneakyThrow(_t); + } + } + return null; + } + + /** + * Change the value of the field. + * + * @param value the field's value. + * @return the value before setting. + * @throws IllegalArgumentException if the given value cannot be assigned to the field. + */ + public Object set(final Object value) throws IllegalArgumentException { + try { + final Object oldValue = this.field.get(this.instance); + this.field.set(this.instance, value); + return oldValue; + } catch (final Throwable _t) { + if (_t instanceof IllegalArgumentException) { + final IllegalArgumentException ex = (IllegalArgumentException)_t; + throw ex; + } else if (_t instanceof Throwable) { + } else { + throw Exceptions.sneakyThrow(_t); + } + } + return null; + } + + @Pure + @Override + public String toString() { + return this.field.getName(); + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + return result; + } + + @Pure + public SarlName getName() { + return this.name; + } + + @Pure + public Field getField() { + return this.field; + } + + @Pure + public Object getInstance() { + return this.instance; + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/FinderBasedNamespaceService.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/FinderBasedNamespaceService.java new file mode 100644 index 0000000000..f02bb7999c --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/FinderBasedNamespaceService.java @@ -0,0 +1,120 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.namespace; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.api.naming.namespace.AbstractNamespaceService; +import io.sarl.api.naming.namespace.INamespaceFinder; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.util.Set; +import java.util.TreeMap; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * Implementation of a namespace service that uses the namespace finders. + * The finders are in charge of finding a specific type of element. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class FinderBasedNamespaceService extends AbstractNamespaceService { + @SuppressWarnings("raw_type") + private final TreeMap finders = CollectionLiterals.newTreeMap(null); + + /** + * Change the set of namespace finders that is used by this service. + * + *

This function could be overridden and annotated in subtypes in order to be used by the Guice injector. + * + * @param finders the set of finders. + */ + @SuppressWarnings("raw_type") + public void setNamespaceFinders(final Set finders) { + if ((finders != null)) { + this.finders.clear(); + for (final INamespaceFinder finder : finders) { + this.addNamespaceFinder(finder); + } + } + } + + /** + * Add a namespace finder. + * + * @param finder the namespace finder to add. + */ + public void addNamespaceFinder(final INamespaceFinder finder) { + this.finders.put(finder.getScheme(), finder); + } + + /** + * Remove a namespace finder. + * + * @param scheme the scheme of the finder to remove. + */ + public void removeNamespaceFinder(final NameScheme scheme) { + this.finders.remove(scheme); + } + + /** + * Find an object by ignoring the fragment component of the given name + * + * @param name the name of the element to search for. + * @return the element with the given name, or {@code null} it is was not found. + */ + public Object findObjectWithoutFragment(final SarlName name) { + final INamespaceFinder finder = this.finders.get(name.getScheme()); + if ((finder != null)) { + return finder.find(name); + } + return null; + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + return result; + } + + @SyntheticMember + public FinderBasedNamespaceService() { + super(); + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/INamespaceFinder.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/INamespaceFinder.java new file mode 100644 index 0000000000..25d3cebb26 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/INamespaceFinder.java @@ -0,0 +1,61 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.namespace; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * A tool that is able to find a specific type of object from a name into the SRE. + * Each type of element (agent, behavior, etc.) has a specific and dediciated implementation + * of finder. Of course, the finder's implementation depends strongly on the SRE implementation + * itself. + * + * @param the type of name that is supported by this finder. + * @param the type of object that is searching for. + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(11) +@SuppressWarnings("all") +public interface INamespaceFinder { + /** + * Replies the name scheme supported by this finder. + */ + @Pure + NameScheme getScheme(); + + /** + * Find and replies the object with the given name. + * + * @param name the name of the object to search for. + * @return the object, or {@code null} if the object is not found. + */ + @Pure + O find(final N name); +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/NamespaceService.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/NamespaceService.java new file mode 100644 index 0000000000..9a5e138702 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/namespace/NamespaceService.java @@ -0,0 +1,118 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.namespace; + +import com.google.common.util.concurrent.Service; +import io.sarl.api.naming.name.SarlName; +import io.sarl.api.naming.parser.INameParser; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import java.net.URI; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * This service enables to manage the name spaces into the SRE. + * + *

Each object within the SRE may be identified by a name, stored into an {@link SarlName}. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(11) +@SuppressWarnings("all") +public interface NamespaceService extends Service { + /** + * Replies the name parser that is used by this service. + * + * @return The name parser + * @since 0.11 + */ + @Pure + INameParser getNameParser(); + + /** + * Finds and replies the object with the given name and of the given type. + * + * @param name the name of the object. See the documentation of {@link NamespaceService} + * for details. + * @return the root context. A {@code null} value is replied if the object is not found. + */ + @Pure + T findObject(final SarlName name, final Class type); + + /** + * Finds and replies the object with the given name and of the given type. + * + * @param name the name of the object. See the documentation of {@link NamespaceService} + * for details. + * @return the object with the given name. A {@code null} value is replied if the object is not found. + */ + @Pure + Object findObject(final SarlName name); + + /** + * Finds and replies the object with the given name and of the given type. + * + * @param name the name of the object. See the documentation of {@link NamespaceService} + * for details. + * @return the root context. A {@code null} value is replied if the object is not found. + * @since 0.11 + */ + @Pure + default T findObject(final String name, final Class type) { + INameParser parser = this.getNameParser(); + URI nameURI = parser.decode(name); + if ((nameURI == null)) { + return null; + } + SarlName sarlName = parser.decode(nameURI); + if ((sarlName == null)) { + return null; + } + return this.findObject(sarlName, type); + } + + /** + * Finds and replies the object with the given name and of the given type. + * + * @param name the name of the object. See the documentation of {@link NamespaceService} + * for details. + * @return the object with the given name. A {@code null} value is replied if the object is not found. + * @since 0.11 + */ + @Pure + default Object findObject(final String name) { + INameParser parser = this.getNameParser(); + URI nameURI = parser.decode(name); + if ((nameURI == null)) { + return null; + } + SarlName sarlName = parser.decode(nameURI); + if ((sarlName == null)) { + return null; + } + return this.findObject(sarlName); + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.AbstractSchemeNameParser.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.AbstractSchemeNameParser.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..a8d7f7efb3a1a47a8c10f0bb845ddad223a0ce58 GIT binary patch literal 7308 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 literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.INameParser.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.INameParser.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..c16cbfe178e2f1cd295dc188630325bab1207da5 GIT binary patch literal 4404 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 P$N#+=fA20-e{TN=+G|N9 literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.ISchemeNameParser.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.ISchemeNameParser.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..0ff08d5b3efdd7afa281094e2e4462b98a46fd90 GIT binary patch literal 3284 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 literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.ServiceSchemeNameParser.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.ServiceSchemeNameParser.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..8d4192aa53e940d4ca4e8c74f0ff6e351c849bce GIT binary patch literal 4808 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 literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.SpaceSchemeNameParser.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.SpaceSchemeNameParser.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..fa9ab43dac7143952faf69ff049c6861a7a554e1 GIT binary patch literal 4525 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 literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.UriBasedNameParser.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/.UriBasedNameParser.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..a1696fd4b2471da0f127c91cb6da271a47f33dc7 GIT binary patch literal 6581 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 G+kXKqYFFa` literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/AbstractSchemeNameParser.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/AbstractSchemeNameParser.java new file mode 100644 index 0000000000..49d04cae70 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/AbstractSchemeNameParser.java @@ -0,0 +1,259 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.parser; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.api.naming.parser.ISchemeNameParser; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.lang.annotation.DefaultValue; +import io.sarl.lang.annotation.DefaultValueSource; +import io.sarl.lang.annotation.DefaultValueUse; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSourceCode; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.net.URI; +import java.util.StringTokenizer; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.IntegerRange; +import org.eclipse.xtext.xbase.lib.Pure; +import org.eclipse.xtext.xbase.lib.StringExtensions; + +/** + * Abstact implementation of a parser of names that is accepting URI-based syntax for a specific scheme + * + * @param the type of the name that is the result of the decoding. + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public abstract class AbstractSchemeNameParser implements ISchemeNameParser { + @Accessors + private final NameScheme scheme; + + /** + * Constructor. + * + * @param scheme the scheme that is supported by this name parser. + */ + protected AbstractSchemeNameParser(final NameScheme scheme) { + class $AssertEvaluator$ { + final boolean $$result; + $AssertEvaluator$() { + this.$$result = (scheme != null); + } + } + assert new $AssertEvaluator$().$$result; + this.scheme = scheme; + } + + /** + * Refactors the URI. + * + * @param uri the URI to refactor. + * @param minElements is the expected minimum number of path components. + * @param maxElements is the expected maximum number of path components. + * @param lastIsInteger indicates if the last component could be an integer. In this case, + * the expected number of not-integer components becomes [{@code minElements}, {@code maxElements - 1}]. + * @return the new URI. + */ + @DefaultValueSource + protected URI refactor(final URI uri, final int minElements, final int maxElements, @DefaultValue("io.sarl.api.naming.parser.AbstractSchemeNameParser#REFACTOR_0") final boolean lastIsInteger) { + try { + final StringBuilder newPath = new StringBuilder(); + boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(uri.getHost()); + if ((!_isNullOrEmpty)) { + newPath.append("/").append(uri.getHost()); + } + boolean _isNullOrEmpty_1 = StringExtensions.isNullOrEmpty(uri.getPath()); + if ((!_isNullOrEmpty_1)) { + boolean _startsWith = uri.getPath().startsWith("/"); + if ((!_startsWith)) { + newPath.append("/"); + } + newPath.append(uri.getPath()); + } + int _length = newPath.length(); + if ((_length == 0)) { + boolean _isNullOrEmpty_2 = StringExtensions.isNullOrEmpty(uri.getSchemeSpecificPart()); + if ((!_isNullOrEmpty_2)) { + boolean _startsWith_1 = uri.getSchemeSpecificPart().startsWith("/"); + if ((!_startsWith_1)) { + newPath.append("/"); + } + newPath.append(uri.getSchemeSpecificPart()); + } + } + final String path = newPath.toString(); + boolean _isEmpty = path.isEmpty(); + if ((!_isEmpty)) { + final String validatedPath = this.validatePath(path, minElements, maxElements, lastIsInteger); + boolean _isNullOrEmpty_3 = StringExtensions.isNullOrEmpty(validatedPath); + if ((!_isNullOrEmpty_3)) { + String _scheme = uri.getScheme(); + String _string = validatedPath.toString(); + String _fragment = uri.getFragment(); + return new URI(_scheme, null, _string, _fragment); + } + } + return null; + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + /** + * Default value for the parameter lastIsInteger + */ + @SyntheticMember + @SarlSourceCode("false") + private static final boolean $DEFAULT_VALUE$REFACTOR_0 = false; + + /** + * Validate the path. + * + * @param path the path to validate. + * @param minElements is the expected minimum number of path components. + * @param maxElements is the expected maximum number of path components. + * @param lastIsInteger indicates if the last component could be an integer. In this case, + * the expected number of not-integer components becomes [{@code minElements}, {@code maxElements - 1}]. + * @return the validated path. + */ + @DefaultValueSource + protected String validatePath(final String path, final int minElements, final int maxElements, @DefaultValue("io.sarl.api.naming.parser.AbstractSchemeNameParser#VALIDATEPATH_0") final boolean lastIsInteger) { + boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(path); + if (_isNullOrEmpty) { + String _xifexpression = null; + boolean _contains = new IntegerRange(minElements, maxElements).contains(0); + if (_contains) { + _xifexpression = ""; + } else { + _xifexpression = null; + } + return _xifexpression; + } + StringTokenizer tokenizer = new StringTokenizer(path, "/"); + StringBuilder buffer = new StringBuilder(); + String lastComponent = null; + int nb = 0; + while (tokenizer.hasMoreTokens()) { + { + String token = tokenizer.nextToken(); + boolean _isNullOrEmpty_1 = StringExtensions.isNullOrEmpty(token); + if (_isNullOrEmpty_1) { + return null; + } + buffer.append("/").append(token); + lastComponent = token; + nb++; + } + } + if (lastIsInteger) { + try { + Integer.parseUnsignedInt(lastComponent, 10); + boolean _contains_1 = new IntegerRange((minElements + 1), maxElements).contains(nb); + if (_contains_1) { + return buffer.toString(); + } + } catch (final Throwable _t) { + if (_t instanceof Throwable) { + boolean _contains_2 = new IntegerRange(minElements, (maxElements - 1)).contains(nb); + if (_contains_2) { + return buffer.toString(); + } + } else { + throw Exceptions.sneakyThrow(_t); + } + } + } else { + boolean _contains_1 = new IntegerRange(minElements, maxElements).contains(nb); + if (_contains_1) { + return buffer.toString(); + } + } + return null; + } + + /** + * Default value for the parameter lastIsInteger + */ + @SyntheticMember + @SarlSourceCode("false") + private static final boolean $DEFAULT_VALUE$VALIDATEPATH_0 = false; + + /** + * Refactors the URI. + * + * @param uri the URI to refactor. + * @param minElements is the expected minimum number of path components. + * @param maxElements is the expected maximum number of path components. + * @optionalparam lastIsInteger indicates if the last component could be an integer. In this case, + * the expected number of not-integer components becomes [{@code minElements}, {@code maxElements - 1}]. + * @return the new URI. + */ + @DefaultValueUse("java.net.URI,int,int,boolean") + @SyntheticMember + protected final URI refactor(final URI uri, final int minElements, final int maxElements) { + return refactor(uri, minElements, maxElements, $DEFAULT_VALUE$REFACTOR_0); + } + + /** + * Validate the path. + * + * @param path the path to validate. + * @param minElements is the expected minimum number of path components. + * @param maxElements is the expected maximum number of path components. + * @optionalparam lastIsInteger indicates if the last component could be an integer. In this case, + * the expected number of not-integer components becomes [{@code minElements}, {@code maxElements - 1}]. + * @return the validated path. + */ + @DefaultValueUse("java.lang.String,int,int,boolean") + @SyntheticMember + protected final String validatePath(final String path, final int minElements, final int maxElements) { + return validatePath(path, minElements, maxElements, $DEFAULT_VALUE$VALIDATEPATH_0); + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + return result; + } + + @Pure + public NameScheme getScheme() { + return this.scheme; + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/AgentSchemeNameParser.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/AgentSchemeNameParser.java new file mode 100644 index 0000000000..387a399378 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/AgentSchemeNameParser.java @@ -0,0 +1,119 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.parser; + +import io.sarl.api.naming.name.AgentName; +import io.sarl.api.naming.parser.AbstractSchemeNameParser; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.lang.annotation.DefaultValue; +import io.sarl.lang.annotation.DefaultValueSource; +import io.sarl.lang.annotation.DefaultValueUse; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSourceCode; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.net.URI; +import java.util.StringTokenizer; +import java.util.UUID; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * Parser of agent names that is accepting URI-based syntax. + * + *

The different types of names are:

+ * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class AgentSchemeNameParser extends AbstractSchemeNameParser { + /** + * Constructor. + * + * @param scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.AGENT}. + */ + @DefaultValueSource + public AgentSchemeNameParser(@DefaultValue("io.sarl.api.naming.parser.AgentSchemeNameParser#NEW_0") final NameScheme scheme) { + super(scheme); + } + + /** + * Default value for the parameter scheme + */ + @SyntheticMember + @SarlSourceCode("NameScheme::AGENT") + private static final NameScheme $DEFAULT_VALUE$NEW_0 = NameScheme.AGENT; + + @Pure + @Override + public URI refactor(final URI name) { + return this.refactor(name, 1, 3); + } + + @Pure + @Override + public AgentName decode(final URI name) { + String _path = name.getPath(); + final StringTokenizer tokenizer = new StringTokenizer(_path, "/"); + boolean _hasMoreTokens = tokenizer.hasMoreTokens(); + if (_hasMoreTokens) { + final String token0 = tokenizer.nextToken(); + boolean _hasMoreTokens_1 = tokenizer.hasMoreTokens(); + if (_hasMoreTokens_1) { + final String token1 = tokenizer.nextToken(); + boolean _hasMoreTokens_2 = tokenizer.hasMoreTokens(); + if (_hasMoreTokens_2) { + final String token2 = tokenizer.nextToken(); + UUID _fromString = UUID.fromString(token0); + UUID _fromString_1 = UUID.fromString(token1); + UUID _fromString_2 = UUID.fromString(token2); + return new AgentName(name, _fromString, _fromString_1, _fromString_2); + } + UUID _fromString_3 = UUID.fromString(token0); + UUID _fromString_4 = UUID.fromString(token1); + return new AgentName(name, _fromString_3, null, _fromString_4); + } + UUID _fromString_5 = UUID.fromString(token0); + return new AgentName(name, null, null, _fromString_5); + } + return null; + } + + /** + * Constructor. + * + * @optionalparam scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.AGENT}. + */ + @DefaultValueUse("io.sarl.api.naming.scheme.NameScheme") + @SyntheticMember + public AgentSchemeNameParser() { + this($DEFAULT_VALUE$NEW_0); + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/BehaviorSchemeNameParser.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/BehaviorSchemeNameParser.java new file mode 100644 index 0000000000..b3d3b5c487 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/BehaviorSchemeNameParser.java @@ -0,0 +1,172 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.parser; + +import io.sarl.api.naming.name.BehaviorName; +import io.sarl.api.naming.parser.AbstractSchemeNameParser; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.bootstrap.SREClassLoader; +import io.sarl.lang.annotation.DefaultValue; +import io.sarl.lang.annotation.DefaultValueSource; +import io.sarl.lang.annotation.DefaultValueUse; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSourceCode; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import io.sarl.lang.core.Behavior; +import java.net.URI; +import java.util.StringTokenizer; +import java.util.UUID; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * Parser of behavior names that is accepting URI-based syntax. + * + *

The different types of names are:

    + *
  • {@code "behavior:[/]{0-2}agentId/behaviorName[/behaviorIndex][#fragmentName]"}
  • + *
  • {@code "behavior:[/]{0-2}contextId/agentId/behaviorName[/behaviorIndex][#fragmentName]"}
  • + *
  • {@code "behavior:[/]{0-2}contextId/spaceId/agentId/behaviorName[/behaviorIndex][#fragmentName]"}
  • + *
+ * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class BehaviorSchemeNameParser extends AbstractSchemeNameParser { + /** + * Constructor. + * + * @param scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.BEHAVIOR}. + */ + @DefaultValueSource + public BehaviorSchemeNameParser(@DefaultValue("io.sarl.api.naming.parser.BehaviorSchemeNameParser#NEW_0") final NameScheme scheme) { + super(scheme); + } + + /** + * Default value for the parameter scheme + */ + @SyntheticMember + @SarlSourceCode("NameScheme::BEHAVIOR") + private static final NameScheme $DEFAULT_VALUE$NEW_0 = NameScheme.BEHAVIOR; + + @Pure + @Override + public URI refactor(final URI name) { + return this.refactor(name, 2, 5, true); + } + + @Pure + @Override + public BehaviorName decode(final URI name) { + try { + String _path = name.getPath(); + final StringTokenizer tokenizer = new StringTokenizer(_path, "/"); + boolean _hasMoreTokens = tokenizer.hasMoreTokens(); + if (_hasMoreTokens) { + final String token0 = tokenizer.nextToken(); + boolean _hasMoreTokens_1 = tokenizer.hasMoreTokens(); + if (_hasMoreTokens_1) { + final String token1 = tokenizer.nextToken(); + boolean _hasMoreTokens_2 = tokenizer.hasMoreTokens(); + if (_hasMoreTokens_2) { + final String token2 = tokenizer.nextToken(); + boolean _hasMoreTokens_3 = tokenizer.hasMoreTokens(); + if (_hasMoreTokens_3) { + final String token3 = tokenizer.nextToken(); + boolean _hasMoreTokens_4 = tokenizer.hasMoreTokens(); + if (_hasMoreTokens_4) { + final String token4 = tokenizer.nextToken(); + UUID _fromString = UUID.fromString(token0); + UUID _fromString_1 = UUID.fromString(token1); + UUID _fromString_2 = UUID.fromString(token2); + Class _loadClass = SREClassLoader.loadClass(token3, true, this.getClass().getClassLoader()); + int _parseUnsignedInt = Integer.parseUnsignedInt(token4, 10); + return new BehaviorName(name, _fromString, _fromString_1, _fromString_2, + ((Class) _loadClass), _parseUnsignedInt); + } + try { + Class _forName = Class.forName(token2); + Class beh = ((Class) _forName); + UUID _fromString_3 = UUID.fromString(token0); + UUID _fromString_4 = UUID.fromString(token1); + int _parseUnsignedInt_1 = Integer.parseUnsignedInt(token3, 10); + return new BehaviorName(name, _fromString_3, null, _fromString_4, beh, _parseUnsignedInt_1); + } catch (final Throwable _t) { + if (_t instanceof Throwable) { + UUID _fromString_5 = UUID.fromString(token0); + UUID _fromString_6 = UUID.fromString(token1); + UUID _fromString_7 = UUID.fromString(token2); + Class _forName_1 = Class.forName(token3); + return new BehaviorName(name, _fromString_5, _fromString_6, _fromString_7, ((Class) _forName_1), + (-1)); + } else { + throw Exceptions.sneakyThrow(_t); + } + } + } + try { + Class _forName = Class.forName(token1); + Class beh = ((Class) _forName); + UUID _fromString_3 = UUID.fromString(token0); + int _parseUnsignedInt_1 = Integer.parseUnsignedInt(token2, 10); + return new BehaviorName(name, null, null, _fromString_3, beh, _parseUnsignedInt_1); + } catch (final Throwable _t) { + if (_t instanceof Throwable) { + UUID _fromString_4 = UUID.fromString(token0); + UUID _fromString_5 = UUID.fromString(token1); + Class _forName_1 = Class.forName(token2); + return new BehaviorName(name, _fromString_4, null, _fromString_5, ((Class) _forName_1), + (-1)); + } else { + throw Exceptions.sneakyThrow(_t); + } + } + } + UUID _fromString_3 = UUID.fromString(token0); + Class _forName = Class.forName(token1); + return new BehaviorName(name, null, null, _fromString_3, + ((Class) _forName), (-1)); + } + } + return null; + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + /** + * Constructor. + * + * @optionalparam scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.BEHAVIOR}. + */ + @DefaultValueUse("io.sarl.api.naming.scheme.NameScheme") + @SyntheticMember + public BehaviorSchemeNameParser() { + this($DEFAULT_VALUE$NEW_0); + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ContextSchemeNameParser.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ContextSchemeNameParser.java new file mode 100644 index 0000000000..503ad7b723 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ContextSchemeNameParser.java @@ -0,0 +1,102 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.parser; + +import io.sarl.api.naming.name.ContextName; +import io.sarl.api.naming.parser.AbstractSchemeNameParser; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.lang.annotation.DefaultValue; +import io.sarl.lang.annotation.DefaultValueSource; +import io.sarl.lang.annotation.DefaultValueUse; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSourceCode; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.net.URI; +import java.util.StringTokenizer; +import java.util.UUID; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * Parser of context names that is accepting URI-based syntax. + * + *

The different types of names are:

    + *
  • {@code "context:[/]{0-2}contextId[#fragmentName]"}
  • + *
+ * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class ContextSchemeNameParser extends AbstractSchemeNameParser { + /** + * Constructor. + * + * @param scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.CONTEXT}. + */ + @DefaultValueSource + public ContextSchemeNameParser(@DefaultValue("io.sarl.api.naming.parser.ContextSchemeNameParser#NEW_0") final NameScheme scheme) { + super(scheme); + } + + /** + * Default value for the parameter scheme + */ + @SyntheticMember + @SarlSourceCode("NameScheme::CONTEXT") + private static final NameScheme $DEFAULT_VALUE$NEW_0 = NameScheme.CONTEXT; + + @Pure + @Override + public URI refactor(final URI name) { + return this.refactor(name, 1, 1); + } + + @Pure + @Override + public ContextName decode(final URI name) { + String _path = name.getPath(); + final StringTokenizer tokenizer = new StringTokenizer(_path, "/"); + boolean _hasMoreTokens = tokenizer.hasMoreTokens(); + if (_hasMoreTokens) { + final String token = tokenizer.nextToken(); + UUID _fromString = UUID.fromString(token); + return new ContextName(name, _fromString); + } + return null; + } + + /** + * Constructor. + * + * @optionalparam scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.CONTEXT}. + */ + @DefaultValueUse("io.sarl.api.naming.scheme.NameScheme") + @SyntheticMember + public ContextSchemeNameParser() { + this($DEFAULT_VALUE$NEW_0); + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/INameParser.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/INameParser.java new file mode 100644 index 0000000000..dfc7ad3883 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/INameParser.java @@ -0,0 +1,102 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.parser; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.api.naming.parser.ISchemeNameParser; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import java.net.URI; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Pure; +import org.eclipse.xtext.xbase.lib.StringExtensions; + +/** + * Parser of names + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(11) +@SuppressWarnings("all") +public interface INameParser { + /** + * Parse the string representation of the name, and create the URI representation. + * + * @param name the string representation of the name. + * @return the URI representation of the given name, or {@code null} if the given string cannot be parsed. + */ + @Pure + default URI decode(final String name) { + boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(name); + if ((!_isNullOrEmpty)) { + try { + URI uri = URI.create(name); + return this.normalize(uri); + } catch (final Throwable _t) { + if (_t instanceof Throwable) { + } else { + throw Exceptions.sneakyThrow(_t); + } + } + } + return null; + } + + /** + * Parse the string representation of the name, and create the URI representation. + * + * @param name the string representation of the name. + * @return the URI representation of the given name, or {@code null} if the given string cannot be parsed. + */ + @Pure + URI normalize(final URI name); + + /** + * Parse the URI of the name, and create the name object. + * The argument must be a normalized URI that is computed by {@link #normalize(URI)}. + * + * @param name the normalized URI representation of the name. See {@link #normalize(URI)}. + * @return the name, or {@code null} if the given URI cannot be parsed. + */ + @Pure + SarlName decode(final URI name); + + /** + * Register a name parser for a specific scheme. + * + * @param parser the name parser, never {@code null}. + */ + void addSchemeNameParser(final ISchemeNameParser parser); + + /** + * Unregister a name parser for a specific scheme. + * + * @param scheme the associated scheme, never {@code null}. + * @return the name parser that was associated to the name protocol. + */ + ISchemeNameParser removeSchemeNameParser(final NameScheme scheme); +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ISchemeNameParser.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ISchemeNameParser.java new file mode 100644 index 0000000000..915f71c87e --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ISchemeNameParser.java @@ -0,0 +1,61 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.parser; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import java.net.URI; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * A parser of names that is accepting URI-based syntax for a specific scheme. + * + * @param the type of the name that is the result of the decoding. + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(11) +@SuppressWarnings("all") +public interface ISchemeNameParser { + /** + * Replies the name scheme that is supported by this parser. + */ + @Pure + NameScheme getScheme(); + + /** + * Refactor the given URI in order to fit the name specification. + */ + @Pure + URI refactor(final URI name); + + /** + * Decode the name. + */ + @Pure + N decode(final URI name); +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ServiceSchemeNameParser.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ServiceSchemeNameParser.java new file mode 100644 index 0000000000..1d38555019 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/ServiceSchemeNameParser.java @@ -0,0 +1,108 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.parser; + +import com.google.common.util.concurrent.Service; +import io.sarl.api.naming.name.ServiceName; +import io.sarl.api.naming.parser.AbstractSchemeNameParser; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.bootstrap.SREClassLoader; +import io.sarl.lang.annotation.DefaultValue; +import io.sarl.lang.annotation.DefaultValueSource; +import io.sarl.lang.annotation.DefaultValueUse; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSourceCode; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.net.URI; +import java.util.StringTokenizer; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * Parser of service names that is accepting URI-based syntax. + * + *

The different types of names are:

    + *
  • {@code "service:[/]{0-2}serviceName][#fragmentName]"}
  • + *
+ * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class ServiceSchemeNameParser extends AbstractSchemeNameParser { + /** + * Constructor. + * + * @param scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.SERVICE}. + */ + @DefaultValueSource + public ServiceSchemeNameParser(@DefaultValue("io.sarl.api.naming.parser.ServiceSchemeNameParser#NEW_0") final NameScheme scheme) { + super(scheme); + } + + /** + * Default value for the parameter scheme + */ + @SyntheticMember + @SarlSourceCode("NameScheme::SERVICE") + private static final NameScheme $DEFAULT_VALUE$NEW_0 = NameScheme.SERVICE; + + @Pure + @Override + public URI refactor(final URI name) { + return this.refactor(name, 1, 1); + } + + @Pure + @Override + public ServiceName decode(final URI name) { + try { + String _path = name.getPath(); + final StringTokenizer tokenizer = new StringTokenizer(_path, "/"); + boolean _hasMoreTokens = tokenizer.hasMoreTokens(); + if (_hasMoreTokens) { + final String token = tokenizer.nextToken(); + Class _loadClass = SREClassLoader.loadClass(token, true, this.getClass().getClassLoader()); + return new ServiceName(name, ((Class) _loadClass)); + } + return null; + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + /** + * Constructor. + * + * @optionalparam scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.SERVICE}. + */ + @DefaultValueUse("io.sarl.api.naming.scheme.NameScheme") + @SyntheticMember + public ServiceSchemeNameParser() { + this($DEFAULT_VALUE$NEW_0); + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/SkillSchemeNameParser.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/SkillSchemeNameParser.java new file mode 100644 index 0000000000..59d7d36201 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/SkillSchemeNameParser.java @@ -0,0 +1,135 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.parser; + +import io.sarl.api.naming.name.SkillName; +import io.sarl.api.naming.parser.AbstractSchemeNameParser; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.bootstrap.SREClassLoader; +import io.sarl.lang.annotation.DefaultValue; +import io.sarl.lang.annotation.DefaultValueSource; +import io.sarl.lang.annotation.DefaultValueUse; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSourceCode; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import io.sarl.lang.core.Capacity; +import java.net.URI; +import java.util.StringTokenizer; +import java.util.UUID; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * Parser of skill names that is accepting URI-based syntax. + * + *

The different types of names are:

    + *
  • {@code "skill:[/]{0-2}agentId/capacityName[#fragmentName]"}
  • + *
  • {@code "skill:[/]{0-2}contextId/agentId/capacityName[#fragmentName]"}
  • + *
  • {@code "skill:[/]{0-2}contextId/spaceId/agentId/capacityName[#fragmentName]"}
  • + *
+ * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class SkillSchemeNameParser extends AbstractSchemeNameParser { + /** + * Constructor. + * + * @param scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.SKILL}. + */ + @DefaultValueSource + public SkillSchemeNameParser(@DefaultValue("io.sarl.api.naming.parser.SkillSchemeNameParser#NEW_0") final NameScheme scheme) { + super(scheme); + } + + /** + * Default value for the parameter scheme + */ + @SyntheticMember + @SarlSourceCode("NameScheme::SKILL") + private static final NameScheme $DEFAULT_VALUE$NEW_0 = NameScheme.SKILL; + + @Pure + @Override + public URI refactor(final URI name) { + return this.refactor(name, 2, 4); + } + + @Pure + @Override + public SkillName decode(final URI name) { + try { + String _path = name.getPath(); + final StringTokenizer tokenizer = new StringTokenizer(_path, "/"); + boolean _hasMoreTokens = tokenizer.hasMoreTokens(); + if (_hasMoreTokens) { + final String token0 = tokenizer.nextToken(); + boolean _hasMoreTokens_1 = tokenizer.hasMoreTokens(); + if (_hasMoreTokens_1) { + final String token1 = tokenizer.nextToken(); + boolean _hasMoreTokens_2 = tokenizer.hasMoreTokens(); + if (_hasMoreTokens_2) { + final String token2 = tokenizer.nextToken(); + boolean _hasMoreTokens_3 = tokenizer.hasMoreTokens(); + if (_hasMoreTokens_3) { + final String token3 = tokenizer.nextToken(); + UUID _fromString = UUID.fromString(token0); + UUID _fromString_1 = UUID.fromString(token1); + UUID _fromString_2 = UUID.fromString(token2); + Class _loadClass = SREClassLoader.loadClass(token3, true, this.getClass().getClassLoader()); + return new SkillName(name, _fromString, _fromString_1, _fromString_2, ((Class) _loadClass)); + } + UUID _fromString_3 = UUID.fromString(token0); + UUID _fromString_4 = UUID.fromString(token1); + Class _forName = Class.forName(token2); + return new SkillName(name, _fromString_3, null, _fromString_4, + ((Class) _forName)); + } + UUID _fromString_5 = UUID.fromString(token0); + Class _forName_1 = Class.forName(token1); + return new SkillName(name, null, null, _fromString_5, + ((Class) _forName_1)); + } + } + return null; + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + /** + * Constructor. + * + * @optionalparam scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.SKILL}. + */ + @DefaultValueUse("io.sarl.api.naming.scheme.NameScheme") + @SyntheticMember + public SkillSchemeNameParser() { + this($DEFAULT_VALUE$NEW_0); + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/SpaceSchemeNameParser.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/SpaceSchemeNameParser.java new file mode 100644 index 0000000000..52688cf61a --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/SpaceSchemeNameParser.java @@ -0,0 +1,107 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.parser; + +import io.sarl.api.naming.name.SpaceName; +import io.sarl.api.naming.parser.AbstractSchemeNameParser; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.lang.annotation.DefaultValue; +import io.sarl.lang.annotation.DefaultValueSource; +import io.sarl.lang.annotation.DefaultValueUse; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSourceCode; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.net.URI; +import java.util.StringTokenizer; +import java.util.UUID; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * Parser of space names that is accepting URI-based syntax. + * + *

The different types of names are:

    + *
  • {@code "space:[/]{0-2}contextId/spaceId[#fragmentName]"}
  • + *
+ * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class SpaceSchemeNameParser extends AbstractSchemeNameParser { + /** + * Constructor. + * + * @param scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.SPACE}. + */ + @DefaultValueSource + public SpaceSchemeNameParser(@DefaultValue("io.sarl.api.naming.parser.SpaceSchemeNameParser#NEW_0") final NameScheme scheme) { + super(scheme); + } + + /** + * Default value for the parameter scheme + */ + @SyntheticMember + @SarlSourceCode("NameScheme::SPACE") + private static final NameScheme $DEFAULT_VALUE$NEW_0 = NameScheme.SPACE; + + @Pure + @Override + public URI refactor(final URI name) { + return this.refactor(name, 2, 2); + } + + @Pure + @Override + public SpaceName decode(final URI name) { + String _path = name.getPath(); + final StringTokenizer tokenizer = new StringTokenizer(_path, "/"); + boolean _hasMoreTokens = tokenizer.hasMoreTokens(); + if (_hasMoreTokens) { + final String token0 = tokenizer.nextToken(); + boolean _hasMoreTokens_1 = tokenizer.hasMoreTokens(); + if (_hasMoreTokens_1) { + final String token1 = tokenizer.nextToken(); + UUID _fromString = UUID.fromString(token0); + UUID _fromString_1 = UUID.fromString(token1); + return new SpaceName(name, _fromString, _fromString_1); + } + } + return null; + } + + /** + * Constructor. + * + * @optionalparam scheme the name scheme that is supported by this parser. By default it is {@link NameScheme.SPACE}. + */ + @DefaultValueUse("io.sarl.api.naming.scheme.NameScheme") + @SyntheticMember + public SpaceSchemeNameParser() { + this($DEFAULT_VALUE$NEW_0); + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/UriBasedNameParser.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/UriBasedNameParser.java new file mode 100644 index 0000000000..acd768c337 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/parser/UriBasedNameParser.java @@ -0,0 +1,190 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.parser; + +import io.sarl.api.naming.name.SarlName; +import io.sarl.api.naming.parser.INameParser; +import io.sarl.api.naming.parser.ISchemeNameParser; +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.api.naming.scheme.NameSchemes; +import io.sarl.lang.annotation.DefaultValue; +import io.sarl.lang.annotation.DefaultValueSource; +import io.sarl.lang.annotation.DefaultValueUse; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSourceCode; +import io.sarl.lang.annotation.SarlSpecification; +import io.sarl.lang.annotation.SyntheticMember; +import java.net.URI; +import java.util.Set; +import java.util.TreeMap; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Pure; +import org.eclipse.xtext.xbase.lib.StringExtensions; + +/** + * Default implementation of a parser of names that is accepting URI-based syntax. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public class UriBasedNameParser implements INameParser { + private final TreeMap> schemeNameParser = CollectionLiterals.>newTreeMap(null); + + /** + * Construct a name parser based on the given scheme parsers. + * + * @param parsers the set of scheme name parsers. + */ + @DefaultValueSource + @SuppressWarnings("raw_type") + public UriBasedNameParser(@DefaultValue("io.sarl.api.naming.parser.UriBasedNameParser#NEW_0") final Set parsers) { + if (((parsers != null) && (!parsers.isEmpty()))) { + this.setSchemeNameParsers(parsers); + } + } + + /** + * Default value for the parameter parsers + */ + @SyntheticMember + @SarlSourceCode("null") + private static final Set $DEFAULT_VALUE$NEW_0 = null; + + /** + * Change the set of scheme name parsers that is used by this base name parser. + * + *

This function could be overridden and annotated in subtypes in order to be used by the Guice injector. + * + * @param parsers the set of scheme name parsers. + */ + @SuppressWarnings("raw_type") + public void setSchemeNameParsers(final Set parsers) { + if ((parsers != null)) { + this.schemeNameParser.clear(); + for (final ISchemeNameParser parser : parsers) { + this.addSchemeNameParser(parser); + } + } + } + + @Override + public void addSchemeNameParser(final ISchemeNameParser parser) { + class $AssertEvaluator$ { + final boolean $$result; + $AssertEvaluator$() { + this.$$result = (parser != null); + } + } + assert new $AssertEvaluator$().$$result; + this.schemeNameParser.put(parser.getScheme(), parser); + } + + @Override + public ISchemeNameParser removeSchemeNameParser(final NameScheme scheme) { + ISchemeNameParser _xblockexpression = null; + { + class $AssertEvaluator$ { + final boolean $$result; + $AssertEvaluator$() { + this.$$result = (scheme != null); + } + } + assert new $AssertEvaluator$().$$result; + _xblockexpression = this.schemeNameParser.remove(scheme); + } + return _xblockexpression; + } + + @Pure + public URI normalize(final URI name) { + try { + final String scheme = name.getScheme(); + final NameScheme schemeObj = NameSchemes.getSchemeObject(scheme); + if (((((schemeObj != null) && StringExtensions.isNullOrEmpty(name.getQuery())) && StringExtensions.isNullOrEmpty(name.getUserInfo())) && (name.getPort() == (-1)))) { + ISchemeNameParser parser = this.schemeNameParser.get(schemeObj); + if ((parser != null)) { + return parser.refactor(name); + } + } + } catch (final Throwable _t) { + if (_t instanceof Throwable) { + } else { + throw Exceptions.sneakyThrow(_t); + } + } + return null; + } + + @Pure + @Override + public SarlName decode(final URI name) { + try { + if ((((name != null) && (name.getPath() != null)) && name.getPath().startsWith("/"))) { + NameScheme scheme = NameSchemes.getSchemeObject(name.getScheme()); + if ((scheme != null)) { + ISchemeNameParser parser = this.schemeNameParser.get(scheme); + if ((parser != null)) { + return parser.decode(name); + } + } + } + } catch (final Throwable _t) { + if (_t instanceof Throwable) { + } else { + throw Exceptions.sneakyThrow(_t); + } + } + return null; + } + + /** + * Construct a name parser based on the given scheme parsers. + * + * @optionalparam parsers the set of scheme name parsers. + */ + @DefaultValueUse("java.util.Set") + @SyntheticMember + public UriBasedNameParser() { + this($DEFAULT_VALUE$NEW_0); + } + + @Override + @Pure + @SyntheticMember + public boolean equals(final Object obj) { + return super.equals(obj); + } + + @Override + @Pure + @SyntheticMember + public int hashCode() { + int result = super.hashCode(); + return result; + } +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/.NameScheme.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/.NameScheme.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..a748219c18043d10ca6ec2c9be8c0f668d83e3c5 GIT binary patch literal 2157 zcmaJ?c{tQ-8~(+lp=nZP%B~t2+hkQ|J1=?|%Py-{-xq_kEu0dhYwVt?;}c7yt%?0kkE|8u$s2 zoioYnGRn=z+mGb!N9nV}Q`qW)GW;BDPhxiNbZB~5ht-wppCkX-L?!R9?dB23o0>7Mnf!-y{}AN_FMf=knLOA;(c=~SbU!`XnvTvET!QH~&fbyEwL53x zYsx4bl5xD+S8x~>OPSkT`N)0pZJg)c1#??E^n+H*CI7S&TFBAgnu)`z$iGMs2_wI|GuQnJn5^r-< zWc{4fcxfYK~%yeZrSQTSvPMQ~UH=3%72Bdc9WGh%t@&@;bPkmfwHs**xtkMy6^m zN`NjIW_J+#ob%j*4olHf%O;5+^|xr6ytxxY)YPDFhsqL2lN$YhW#un)7UiU==6|WA zu76|STw+Y{XSyqEj+zU#2$jbz>$vM0^nC)xAwBZP<7K%@Pk!@)A2~JCo1u>?ZYjJY zf0*$ikbA$n>l{*deO36cX?UtGTzBMQ9wD(*&y-nGW?92+s!rn_z%-}??wzL^Z%b{u z3fQB?sz#q`=AunD76QsOB&R{wkT)y`lMBk@?tNd6apX2P>CPltlBMC#%k4d1&Ue%AXaIfy; zCuyi-yv9Df?aHgT-W!wCW6~iVnMc&Y`M-X7*2zbrSFQHDjlrL-59x^BP6NcZCtIyh z^*{2p9viLKY_&QSAHP`Xe}JW=$50xmhpXIaUO&H48ge(A&vqDFSy&zb8^rN?!`A!< zCJk8(N%!GajQv^|^wU>r`Lr6bvfZX~mOGX_bR%}|XEz&yVszBB z-{1qoC#O}zxLw71REiwEMH=0%V5`DWs${7Ixdbnd-HkFcY8(l<qeMuA_e_uBe%AG`U^YtM6dH8rYC1E{< zu&@^A#QZ)%(4iWBeIH4xNk?K&EIiXC_Wa8U90-||HlIB7V6G!qn{G9GRInBt?xYiZ z^!|xirW2?xLaIK?=S;;MF1%Lb)=*2<_Tu(-Rz}FS5QnAj%)TC}Z#sz_dk8`!$$N=CPb=-Y!Y`5H`C&U>UveD~KX;%1JHUOfy05 z;ejFhpc%&b?k>4h-wb8%TNhf6}T~i^y%#{Y}Me+|y(M;kYiz~3I z_hnlk!1i`=0JQ8s-`_$7Liy$yFPt%<8=psE^ZUhr7{4U-hp)X0E^oJg_^E&lYBxJ8 za^ZJ7M@%!iTH`uCKQ0a5BXbvqKbLHI z9gr7$`EhCwpFtKgT?tlx>)D?VH)UIP=BCh zb&UhX-y(thnH*p<(n*=Q%JRkBJUvi~O=~7!By87t;@SDytIs2s#dcZLTYi!P;sF4C z(Enr6u0aqf6dyMa;x2h87gtkh6^z?h9feXw>ylT}D#jm>DoWaFO^8yB#xte$Q(?|= zXIZo{b4Z*uWF)4ot*EK#2TraC2ggCe!5FK);`u75+!icBj+O=sB@e z^fE_`qdk>BBa?Ro{yF3EN~eOEaBla5hF8I3M!(a z@s1!xR1DrxToDz4cN9?Uj2UwyF!B_HcT~F%EYu9kFxmqEt2;`z!tddM0smO^&kEn| zz_0k(u>bw?=dSKffPcW=$@Aal!M}g_xvpPxALsj(3s(5OJ2wEpyR#~H_Q(5nqrU++ C2(fwq literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/.NameSchemes.sarlbin b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/.NameSchemes.sarlbin new file mode 100644 index 0000000000000000000000000000000000000000..711810ed2d090c6621c482b07961186b68f60e51 GIT binary patch literal 2913 zcmaKuS5y&*lo&xkN+fiU5}E-?P&AYv z(xe=Tgr-O@p(tId^ovhN&${>Sd6;>bJ+s#S|8M=4CO{AmfSH*Y05<2b0{m92$7k4` zTXG%&{s@>q0{+>-8P2WBvt?}m?uVQzGXsmPcuHjNC`ht+ISwjtT9NM3iK2%KlD7x> z76~$gk%y19w<z{I6h8LBmWXt(Akl zZDPL9#M;-B-u>I`&P@07(#}%Lgqmk@d29MpA7eeOwl||APejVv+811)SCK@K-vzS1qe=iyW(>)FDdLxYuAUK3bB$>6+d2<*1*#tp_n(e`B5Sm?^il! z1uExFerjwm$$A!eM$2k3vbnrnt$cFYK(|EiX4`jJOSGlkUKox_sd<&0g28(RN9CNC z;-)v3n;`5=SQLc>nlh|w%CGFCgl4Iz0259A;kia;BH# ztDgJ0=$$7_dy^`xzD?KY^og+k%(m&HXD)=BBpU4|6iWRbBU0Z@Kr91MuA4iOemQH- zj;mv6Btb*U|UHMsb|hZmaylOm+cU&h}Fp zy@Nto$WVQG7W4WIHV^zI#GTzqyJl0Hb9L=_P(Tpcm$Tp2Qt}{t3mM-lmPPdhV$7l%?fP89XU7)X>~XFRz%R)HA^p(iR;Rhr*l#D;&_2jc zPz3~OK~pMf(gtgIVv8N$RG(LZ$8CC6RSKehgXK7Bay2T z($HyTZ!9KO3p-DuTwi~2BvtH3lh~jPTtH?;z z*v%?=Akol#6_F{6f4h9G`ofTIO!gviX*ebSS2I5oC3H z-`RvAnmw>;G-t1@AXQu}pz(n`hjN3Q-HiCP1BiXAOxc)&g6>Tk7nxD{jcC_aQm4|L zp#w>KWj;T+z21)*js81>O2bj*C4{#eJBdX)s*Ue~TQUQ)q}S4)cE1dZ&rjMnNFs19|+-L+d@n za~DnAq2`d61JZBIuhD4WZm)6=>PtxE^Dsf4m89Ncn}Jybw!pY#`?77x?oY&=*~mBl zPFv`K62)tFIa67=p^Xrt|M<+vy!`8nKyAGg*5b6O-VVuAsVvEin3Qgne8Oc7&7o10 z6t?u*SFJ)3v8$S%_k{CF=hQj)#|BmK%fK=wRM~swZ7wvU&Gb$}$titlVi&*EI7e)P zl~t1UVD-dhwJEgdI;xYS_&~K`k(BrB=>(2kztmMH~|>G>w=y5a6# zz)u}ZFlcE~ykWX8x(|G}6I|tIGJJ>5Y@}rwF}Yg>oB8fX9+nYtUb6p_kBg5ujp<0m+?LK{hmoR0fA^|9?tq*1I|mBxRnfUe7Pq*O zEOKe2Eq*ZZv#)}t>r*zp#TetONMx#Ca`bJE;P5gD@QqR8NP$Qy%b;$qz_=Kfg$RihL5PgR^4H_wDC@6a@h}6gEjT z()Ftk=_(JR8wB!QAIaSM^bBsbg7mx+8%12fQKjVg5-?9>6Z6>n6S-M+XsMFXW(ast?p9J_hT3ZVH`effoti zqOa93Om?v}OTQWY)&5-k>2r>4jP@6}i%cbi1{B?RU+N{(VmeJ7&jh~=c}y$WymX5Z zOfnJ`#TPB&Jhj`gGTE*Rg*bo3V881&_cvndHJ%44oRNVfzxFgcoa&erR9Vh9-eaGu zQ(O#%u%DuGXL-+CvkM~0dLd`c+UBzy>%&JGmR7GU*x-6z7+^Hh{y}lxkmQ{S?wvxZzz8S zFSW>s_7%i9)dZnq!&^uAeTOz&7*F&GxH}aWTR91RV{ieQK9^_~Q@>%Oi~~}}a;lxS z-@Nhzn0D!}wiB|Kms%c3N!EKo!0AN7BW=BWQ1NbMF{*KFE)BCf252^pY`MV;1;q;$EALIAG!S&xA fe*f2>Zx1s6sUu4h2F73gfyb-rcuzf6Apr0nQmj0D literal 0 HcmV?d00001 diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/NameScheme.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/NameScheme.java new file mode 100644 index 0000000000..c05c66698c --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/NameScheme.java @@ -0,0 +1,50 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.scheme; + +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; + +/** + * Name of a scheme that is supported for names' specification. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(12) +@SuppressWarnings("all") +public enum NameScheme { + CONTEXT, + + SPACE, + + AGENT, + + SKILL, + + BEHAVIOR, + + SERVICE; +} diff --git a/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/NameSchemes.java b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/NameSchemes.java new file mode 100644 index 0000000000..02d21fd000 --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/generated-sources/sarl/io/sarl/api/naming/scheme/NameSchemes.java @@ -0,0 +1,60 @@ +/** + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.scheme; + +import io.sarl.api.naming.scheme.NameScheme; +import io.sarl.lang.annotation.SarlElementType; +import io.sarl.lang.annotation.SarlSpecification; +import org.eclipse.xtext.xbase.lib.Pure; + +/** + * Utilities for name schemes. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +@SarlSpecification("0.12") +@SarlElementType(10) +@SuppressWarnings("all") +public final class NameSchemes { + private NameSchemes() { + } + + /** + * Parse the scheme for a named object. + */ + @Pure + public static NameScheme getSchemeObject(final String scheme) { + if ((scheme != null)) { + NameScheme[] _values = NameScheme.values(); + for (final NameScheme s : _values) { + boolean _equalsIgnoreCase = scheme.equalsIgnoreCase(s.name()); + if (_equalsIgnoreCase) { + return s; + } + } + } + return null; + } +} diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/AgentName.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/AgentName.sarl similarity index 89% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/AgentName.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/AgentName.sarl index 36bdf96884..cd417d74b3 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/AgentName.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/AgentName.sarl @@ -18,11 +18,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.name import java.net.URI import java.util.UUID import org.eclipse.xtend.lib.annotations.Accessors +import io.sarl.lang.annotation.PrivateAPI /** * This class represents a space name. @@ -31,7 +32,7 @@ import org.eclipse.xtend.lib.annotations.Accessors * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class AgentName extends SarlName { @@ -51,7 +52,8 @@ class AgentName extends SarlName { * @param spaceId the identifier of the space. * @param agentId the identifier of the agent. */ - protected new (uri : URI, contextId : UUID, spaceId : UUID, agentId : UUID) { + @PrivateAPI + new (uri : URI, contextId : UUID, spaceId : UUID, agentId : UUID) { super(uri) this.contextId = contextId this.spaceId = spaceId diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/BehaviorName.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/BehaviorName.sarl similarity index 91% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/BehaviorName.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/BehaviorName.sarl index e8fa8face8..3b3018a0c4 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/BehaviorName.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/BehaviorName.sarl @@ -18,12 +18,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.name import io.sarl.lang.core.Behavior import java.net.URI import java.util.UUID import org.eclipse.xtend.lib.annotations.Accessors +import io.sarl.lang.annotation.PrivateAPI /** * This class represents a behavior name. @@ -32,7 +33,7 @@ import org.eclipse.xtend.lib.annotations.Accessors * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class BehaviorName extends SarlName { @@ -60,7 +61,8 @@ class BehaviorName extends SarlName { * @param behaviorType the type of the behavior. * @param behaviorIndex the index of the behavior in the list of behaviors. */ - protected new (uri : URI, contextId : UUID, spaceId : UUID, agentId : UUID, + @PrivateAPI + new (uri : URI, contextId : UUID, spaceId : UUID, agentId : UUID, behaviorType : Class, behaviorIndex : int) { super(uri) this.contextId = contextId diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ContextName.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/ContextName.sarl similarity index 89% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ContextName.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/ContextName.sarl index a452a388c9..08cf952ae6 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ContextName.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/ContextName.sarl @@ -18,11 +18,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.name import java.net.URI import java.util.UUID import org.eclipse.xtend.lib.annotations.Accessors +import io.sarl.lang.annotation.PrivateAPI /** * This class represents a context name. @@ -31,7 +32,7 @@ import org.eclipse.xtend.lib.annotations.Accessors * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class ContextName extends SarlName { @@ -43,7 +44,8 @@ class ContextName extends SarlName { * @param uri the uri of the context. * @param contextId the identifier of the context. */ - protected new (uri : URI, contextId : UUID) { + @PrivateAPI + new (uri : URI, contextId : UUID) { super(uri) this.contextId = contextId } diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SarlName.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/SarlName.sarl similarity index 92% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SarlName.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/SarlName.sarl index 8207bdb2ee..78d0ecac2d 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SarlName.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/SarlName.sarl @@ -18,8 +18,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.name +import io.sarl.api.naming.scheme.NameScheme +import io.sarl.api.naming.scheme.NameSchemes import java.io.Serializable import java.lang.ref.WeakReference import java.net.URI @@ -40,7 +42,7 @@ import java.net.URI * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ abstract class SarlName implements Cloneable, Serializable, Comparable { @@ -63,7 +65,7 @@ abstract class SarlName implements Cloneable, Serializable, Comparable */ def getScheme : NameScheme { if (this.scheme === null) { - this.scheme = INameParser::getSchemeObject(toURI.scheme) + this.scheme = NameSchemes::getSchemeObject(toURI.scheme) } return this.scheme } diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ServiceName.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/ServiceName.sarl similarity index 89% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ServiceName.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/ServiceName.sarl index f5c6d3bb5f..1af22871ca 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ServiceName.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/ServiceName.sarl @@ -18,11 +18,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.name import com.google.common.util.concurrent.Service import java.net.URI import org.eclipse.xtend.lib.annotations.Accessors +import io.sarl.lang.annotation.PrivateAPI /** * This class represents a service name. @@ -31,7 +32,7 @@ import org.eclipse.xtend.lib.annotations.Accessors * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class ServiceName extends SarlName { @@ -43,7 +44,8 @@ class ServiceName extends SarlName { * @param uri the uri of the context. * @param service the type of service. */ - protected new (uri : URI, service : Class) { + @PrivateAPI + new (uri : URI, service : Class) { super(uri) this.serviceType = service } diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SkillName.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/SkillName.sarl similarity index 88% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SkillName.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/SkillName.sarl index 2faa0173ed..520df6c2f2 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SkillName.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/SkillName.sarl @@ -18,12 +18,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.name import io.sarl.lang.core.Capacity import java.net.URI import java.util.UUID import org.eclipse.xtend.lib.annotations.Accessors +import io.sarl.lang.annotation.PrivateAPI /** * This class represents a skill name. @@ -32,7 +33,7 @@ import org.eclipse.xtend.lib.annotations.Accessors * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class SkillName extends SarlName { @@ -56,7 +57,8 @@ class SkillName extends SarlName { * @param agentId the identifier of the agent. * @param capacity the name of the capacity implemented by the skill. */ - protected new (uri : URI, contextId : UUID, spaceId : UUID, agentId : UUID, ^capacity : Class) { + @PrivateAPI + new (uri : URI, contextId : UUID, spaceId : UUID, agentId : UUID, ^capacity : Class) { super(uri) this.contextId = contextId this.spaceId = spaceId diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SpaceName.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/SpaceName.sarl similarity index 89% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SpaceName.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/SpaceName.sarl index a75ffbb22b..964ef3a257 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SpaceName.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/name/SpaceName.sarl @@ -18,11 +18,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.name import java.net.URI import java.util.UUID import org.eclipse.xtend.lib.annotations.Accessors +import io.sarl.lang.annotation.PrivateAPI /** * This class represents a space name. @@ -31,7 +32,7 @@ import org.eclipse.xtend.lib.annotations.Accessors * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class SpaceName extends SarlName { @@ -47,7 +48,8 @@ class SpaceName extends SarlName { * @param contextId the identifier of the context. * @param spaceId the identifier of the context. */ - protected new (uri : URI, contextId : UUID, spaceId : UUID) { + @PrivateAPI + new (uri : URI, contextId : UUID, spaceId : UUID) { super(uri) this.contextId = contextId this.spaceId = spaceId diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AbstractNamespaceService.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/AbstractNamespaceService.sarl similarity index 72% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AbstractNamespaceService.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/AbstractNamespaceService.sarl index 9a547a8c80..36b7a8a33b 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AbstractNamespaceService.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/AbstractNamespaceService.sarl @@ -18,12 +18,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.services.namespace +package io.sarl.api.naming.namespace -import io.sarl.sre.naming.SarlName -import io.sarl.sre.services.AbstractSreService -import io.sarl.sre.naming.INameParser +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.namespace.FieldAccess +import io.sarl.api.naming.namespace.NamespaceService +import io.sarl.api.naming.parser.INameParser import javax.inject.Inject +import com.google.common.util.concurrent.AbstractService /** * Abstract implementation of a service that manages name spaces into the SRE. @@ -32,12 +34,46 @@ import javax.inject.Inject * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ -abstract class AbstractNamespaceService extends AbstractSreService implements NamespaceService { +abstract class AbstractNamespaceService extends AbstractService implements NamespaceService { var nameParser : INameParser + protected final override doStart { + try { + onStart + notifyStarted + } catch (exception : Throwable) { + notifyFailed(exception) + } + } + + /** Do something when starting the service. + * + *

This function is called from {@link #doStart()} + */ + protected def onStart { + // + } + + protected final override doStop { + try { + onStop + notifyStopped + } catch (exception : Throwable) { + notifyFailed(exception) + } + } + + /** Do something when stopping the service. + * + *

This function is called from {@link #doStop()} + */ + protected def onStop { + // + } + @Pure override getNameParser : INameParser { this.nameParser @@ -89,7 +125,7 @@ abstract class AbstractNamespaceService extends AbstractSreService implements Na private static def getDeclaredField(obj : Object, name : SarlName) : FieldAccess { var type = obj.class - while (type !== null && typeof(Object) != type) { + while (type !== null && ( typeof(Object) != type )) { try { var field = type.getDeclaredField(name.fragment) if (field !== null) { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/FieldAccess.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/FieldAccess.sarl similarity index 96% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/FieldAccess.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/FieldAccess.sarl index 97e28ae635..f51d17dcbf 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/FieldAccess.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/FieldAccess.sarl @@ -18,9 +18,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.services.namespace +package io.sarl.api.naming.namespace -import io.sarl.sre.naming.SarlName +import io.sarl.api.naming.name.SarlName import java.lang.reflect.Field import java.lang.reflect.Modifier import org.eclipse.xtend.lib.annotations.Accessors @@ -32,7 +32,7 @@ import org.eclipse.xtend.lib.annotations.Accessors * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class FieldAccess { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/FinderBasedNamespaceService.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/FinderBasedNamespaceService.sarl similarity index 76% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/FinderBasedNamespaceService.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/FinderBasedNamespaceService.sarl index 30bf9ce847..8b7f79c574 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/FinderBasedNamespaceService.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/FinderBasedNamespaceService.sarl @@ -18,22 +18,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.services.namespace +package io.sarl.api.naming.namespace -import io.sarl.sre.boot.internal.services.NamespaceFinders -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SarlName +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.scheme.NameScheme import java.util.Set -import javax.inject.Inject /** * Implementation of a namespace service that uses the namespace finders. + * The finders are in charge of finding a specific type of element. * * @author $Author: sgalland$ * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class FinderBasedNamespaceService extends AbstractNamespaceService { @@ -41,14 +40,13 @@ class FinderBasedNamespaceService extends AbstractNamespaceService { val finders = newTreeMap(null) /** Change the set of namespace finders that is used by this service. - * - *

This function is annoted in order to be used by the Guice injector. + * + *

This function could be overridden and annotated in subtypes in order to be used by the Guice injector. * * @param finders the set of finders. */ @SuppressWarnings("raw_type") - @Inject - def setNamespaceFinders(@NamespaceFinders finders : Set) { + def setNamespaceFinders(finders : Set) { if (finders !== null) { this.finders.clear for (finder : finders) { @@ -73,6 +71,11 @@ class FinderBasedNamespaceService extends AbstractNamespaceService { this.finders.remove(scheme) } + /** Find an object by ignoring the fragment component of the given name + * + * @param name the name of the element to search for. + * @return the element with the given name, or {@code null} it is was not found. + */ def findObjectWithoutFragment(name : SarlName) : Object { val finder = this.finders.get(name.scheme) if (finder !== null) { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/INamespaceFinder.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/INamespaceFinder.sarl similarity index 76% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/INamespaceFinder.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/INamespaceFinder.sarl index bdcdbb2db3..200dd821e2 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/INamespaceFinder.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/INamespaceFinder.sarl @@ -18,13 +18,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.services.namespace +package io.sarl.api.naming.namespace -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SarlName +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.scheme.NameScheme /** - * An object that is able to find a specific type of obtain from a name. + * A tool that is able to find a specific type of object from a name into the SRE. + * Each type of element (agent, behavior, etc.) has a specific and dediciated implementation + * of finder. Of course, the finder's implementation depends strongly on the SRE implementation + * itself. * * @param the type of name that is supported by this finder. * @param the type of object that is searching for. @@ -32,7 +35,7 @@ import io.sarl.sre.naming.SarlName * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ interface INamespaceFinder { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/NamespaceService.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/NamespaceService.sarl similarity index 95% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/NamespaceService.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/NamespaceService.sarl index 6d97b4a09e..06966ca968 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/NamespaceService.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/namespace/NamespaceService.sarl @@ -18,11 +18,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.services.namespace +package io.sarl.api.naming.namespace import com.google.common.util.concurrent.Service -import io.sarl.sre.naming.SarlName -import io.sarl.sre.naming.INameParser +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.parser.INameParser /** * This service enables to manage the name spaces into the SRE. @@ -33,7 +33,7 @@ import io.sarl.sre.naming.INameParser * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ interface NamespaceService extends Service { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/AbstractSchemeNameParser.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/AbstractSchemeNameParser.sarl similarity index 96% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/AbstractSchemeNameParser.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/AbstractSchemeNameParser.sarl index f6e494599d..2b0e8c10b5 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/AbstractSchemeNameParser.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/AbstractSchemeNameParser.sarl @@ -18,8 +18,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.parser +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.scheme.NameScheme import java.net.URI import java.util.StringTokenizer import org.eclipse.xtend.lib.annotations.Accessors @@ -32,7 +34,7 @@ import org.eclipse.xtend.lib.annotations.Accessors * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ abstract class AbstractSchemeNameParser implements ISchemeNameParser { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/AgentSchemeNameParser.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/AgentSchemeNameParser.sarl similarity index 94% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/AgentSchemeNameParser.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/AgentSchemeNameParser.sarl index 57700b7534..067f02975d 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/AgentSchemeNameParser.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/AgentSchemeNameParser.sarl @@ -18,8 +18,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.parser +import io.sarl.api.naming.name.AgentName +import io.sarl.api.naming.scheme.NameScheme import java.net.URI import java.util.StringTokenizer import java.util.UUID @@ -37,7 +39,7 @@ import java.util.UUID * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class AgentSchemeNameParser extends AbstractSchemeNameParser { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/BehaviorSchemeNameParser.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/BehaviorSchemeNameParser.sarl similarity index 96% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/BehaviorSchemeNameParser.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/BehaviorSchemeNameParser.sarl index 1b5c7d9e42..ac02ff1524 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/BehaviorSchemeNameParser.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/BehaviorSchemeNameParser.sarl @@ -18,13 +18,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.parser +import io.sarl.bootstrap.SREClassLoader +import io.sarl.api.naming.name.BehaviorName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.lang.core.Behavior import java.net.URI import java.util.StringTokenizer import java.util.UUID -import io.sarl.bootstrap.SREClassLoader /** * Parser of behavior names that is accepting URI-based syntax. @@ -39,7 +41,7 @@ import io.sarl.bootstrap.SREClassLoader * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class BehaviorSchemeNameParser extends AbstractSchemeNameParser { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ContextSchemeNameParser.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/ContextSchemeNameParser.sarl similarity index 92% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ContextSchemeNameParser.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/ContextSchemeNameParser.sarl index 5c93bc3f28..a8fe278344 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ContextSchemeNameParser.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/ContextSchemeNameParser.sarl @@ -18,8 +18,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.parser +import io.sarl.api.naming.name.ContextName +import io.sarl.api.naming.scheme.NameScheme import java.net.URI import java.util.StringTokenizer import java.util.UUID @@ -35,7 +37,7 @@ import java.util.UUID * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class ContextSchemeNameParser extends AbstractSchemeNameParser { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/INameParser.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/INameParser.sarl similarity index 89% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/INameParser.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/INameParser.sarl index 2c9851ebbc..4bc5c6e7a9 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/INameParser.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/INameParser.sarl @@ -18,8 +18,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.parser +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.scheme.NameScheme import java.net.URI /** @@ -29,24 +31,10 @@ import java.net.URI * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ interface INameParser { - /** Parse the scheme for a named object. - */ - @Pure - static def getSchemeObject(scheme : String) : NameScheme { - if (scheme !== null) { - for (s : NameScheme::values) { - if (scheme.equalsIgnoreCase(s.name)) { - return s - } - } - } - return null - } - /** * Parse the string representation of the name, and create the URI representation. * diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ISchemeNameParser.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/ISchemeNameParser.sarl similarity index 91% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ISchemeNameParser.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/ISchemeNameParser.sarl index d81f09505f..ddd37d2b42 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ISchemeNameParser.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/ISchemeNameParser.sarl @@ -18,8 +18,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.parser +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.scheme.NameScheme import java.net.URI /** @@ -30,7 +32,7 @@ import java.net.URI * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ interface ISchemeNameParser { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ServiceSchemeNameParser.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/ServiceSchemeNameParser.sarl similarity index 93% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ServiceSchemeNameParser.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/ServiceSchemeNameParser.sarl index 54a5f528ff..6b715a0a13 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/ServiceSchemeNameParser.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/ServiceSchemeNameParser.sarl @@ -18,12 +18,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.parser import com.google.common.util.concurrent.Service +import io.sarl.bootstrap.SREClassLoader +import io.sarl.api.naming.name.ServiceName +import io.sarl.api.naming.scheme.NameScheme import java.net.URI import java.util.StringTokenizer -import io.sarl.bootstrap.SREClassLoader /** * Parser of service names that is accepting URI-based syntax. @@ -36,7 +38,7 @@ import io.sarl.bootstrap.SREClassLoader * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class ServiceSchemeNameParser extends AbstractSchemeNameParser { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SkillSchemeNameParser.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/SkillSchemeNameParser.sarl similarity index 95% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SkillSchemeNameParser.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/SkillSchemeNameParser.sarl index 202af80eb7..cb005e6721 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SkillSchemeNameParser.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/SkillSchemeNameParser.sarl @@ -18,13 +18,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.parser +import io.sarl.bootstrap.SREClassLoader +import io.sarl.api.naming.name.SkillName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.lang.core.Capacity import java.net.URI import java.util.StringTokenizer import java.util.UUID -import io.sarl.bootstrap.SREClassLoader /** * Parser of skill names that is accepting URI-based syntax. @@ -39,7 +41,7 @@ import io.sarl.bootstrap.SREClassLoader * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class SkillSchemeNameParser extends AbstractSchemeNameParser { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SpaceSchemeNameParser.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/SpaceSchemeNameParser.sarl similarity index 93% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SpaceSchemeNameParser.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/SpaceSchemeNameParser.sarl index c827fd37d7..a1b9602408 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/SpaceSchemeNameParser.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/SpaceSchemeNameParser.sarl @@ -18,8 +18,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.parser +import io.sarl.api.naming.name.SpaceName +import io.sarl.api.naming.scheme.NameScheme import java.net.URI import java.util.StringTokenizer import java.util.UUID @@ -35,7 +37,7 @@ import java.util.UUID * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ class SpaceSchemeNameParser extends AbstractSchemeNameParser { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/NameParser.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/UriBasedNameParser.sarl similarity index 75% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/NameParser.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/UriBasedNameParser.sarl index ce48a61476..d0f207a903 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/NameParser.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/parser/UriBasedNameParser.sarl @@ -18,35 +18,47 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.parser -import io.sarl.sre.boot.internal.naming.SchemeNameParsers +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.scheme.NameScheme import java.net.URI import java.util.Set -import javax.inject.Inject + +import static extension io.sarl.api.naming.scheme.NameSchemes.* /** - * Parser of names that is accepting URI-based syntax. + * Default implementation of a parser of names that is accepting URI-based syntax. * * @author $Author: sgalland$ * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ -class NameParser implements INameParser { +class UriBasedNameParser implements INameParser { val schemeNameParser = >newTreeMap(null) + /** Construct a name parser based on the given scheme parsers. + * + * @param parsers the set of scheme name parsers. + */ + @SuppressWarnings("raw_type") + new (parsers : Set = null) { + if (parsers !== null && !parsers.isEmpty) { + setSchemeNameParsers(parsers); + } + } + /** Change the set of scheme name parsers that is used by this base name parser. * - *

This function is annotated in order to be used by the Guice injector. + *

This function could be overridden and annotated in subtypes in order to be used by the Guice injector. * * @param parsers the set of scheme name parsers. */ @SuppressWarnings("raw_type") - @Inject - def setSchemeNameParsers(@SchemeNameParsers parsers : Set) { + def setSchemeNameParsers(parsers : Set) { if (parsers !== null) { this.schemeNameParser.clear for (parser : parsers) { diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/NameScheme.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/scheme/NameScheme.sarl similarity index 95% rename from sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/NameScheme.sarl rename to main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/scheme/NameScheme.sarl index f1a9c52c99..52687d2a8d 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/naming/NameScheme.sarl +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/scheme/NameScheme.sarl @@ -18,7 +18,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.sarl.sre.naming +package io.sarl.api.naming.scheme /** * Name of a scheme that is supported for names' specification. @@ -27,7 +27,7 @@ package io.sarl.sre.naming * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ - * @since 0.10 + * @since 0.12 */ enum NameScheme { CONTEXT, SPACE, AGENT, SKILL, BEHAVIOR, SERVICE diff --git a/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/scheme/NameSchemes.sarl b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/scheme/NameSchemes.sarl new file mode 100644 index 0000000000..d7cdb9accc --- /dev/null +++ b/main/apiplugins/io.sarl.api.naming/src/main/sarl/io/sarl/api/naming/scheme/NameSchemes.sarl @@ -0,0 +1,51 @@ +/* + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.sarl.api.naming.scheme + +/** + * Utilities for name schemes. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ +final class NameSchemes { + + private new { + } + + /** Parse the scheme for a named object. + */ + @Pure + static def getSchemeObject(scheme : String) : NameScheme { + if (scheme !== null) { + for (s : NameScheme::values) { + if (scheme.equalsIgnoreCase(s.name)) { + return s + } + } + } + return null + } + +} diff --git a/main/apiplugins/pom.xml b/main/apiplugins/pom.xml index 17b4631c59..1308d0e092 100644 --- a/main/apiplugins/pom.xml +++ b/main/apiplugins/pom.xml @@ -22,6 +22,7 @@ io.sarl.util io.sarl.core + io.sarl.api.naming io.sarl.api.bootiquebase diff --git a/main/externalmaven/io.sarl.maven.sdk/pom.xml b/main/externalmaven/io.sarl.maven.sdk/pom.xml index 8892f3e1a3..961aba6e69 100644 --- a/main/externalmaven/io.sarl.maven.sdk/pom.xml +++ b/main/externalmaven/io.sarl.maven.sdk/pom.xml @@ -26,6 +26,10 @@ io.sarl io.sarl.util + + io.sarl + io.sarl.api.naming + diff --git a/main/features/io.sarl.lib/feature.xml b/main/features/io.sarl.lib/feature.xml index 43a8d8365e..7f42a72c3a 100644 --- a/main/features/io.sarl.lib/feature.xml +++ b/main/features/io.sarl.lib/feature.xml @@ -224,10 +224,10 @@ + - @@ -267,4 +267,10 @@ version="0.0.0" unpack="false"/> + + diff --git a/pom.xml b/pom.xml index 14581d53cb..88d98fd28e 100644 --- a/pom.xml +++ b/pom.xml @@ -342,6 +342,11 @@ io.sarl.util ${sarl.version} + + io.sarl + io.sarl.api.naming + ${sarl.version} + io.sarl io.sarl.api.bootiquebase diff --git a/sre/io.janusproject/io.janusproject.eclipse/src/io/sarl/sre/eclipse/buildpath/janus-bundles.properties b/sre/io.janusproject/io.janusproject.eclipse/src/io/sarl/sre/eclipse/buildpath/janus-bundles.properties index 79fbcadae3..ed970120d4 100644 --- a/sre/io.janusproject/io.janusproject.eclipse/src/io/sarl/sre/eclipse/buildpath/janus-bundles.properties +++ b/sre/io.janusproject/io.janusproject.eclipse/src/io/sarl/sre/eclipse/buildpath/janus-bundles.properties @@ -1,3 +1,3 @@ # This file is automatically generated by Maven. Please do not edit manually. -JANUS_BUNDLES = io.janusproject.plugin, io.sarl.core, io.sarl.util, io.sarl.api.bootiquebase, io.bootique, org.arakhne.afc.bootique.variables, com.google.inject, javax.inject, org.eclipse.osgi, org.eclipse.xtend.lib, org.arakhne.afc.core.util, org.arakhne.afc.core.inputoutput, com.fasterxml.jackson.core.jackson-annotations +JANUS_BUNDLES = io.janusproject.plugin, io.sarl.core, io.sarl.util, io.sarl.api.naming, io.sarl.api.bootiquebase, io.bootique, org.arakhne.afc.bootique.variables, com.google.inject, javax.inject, org.eclipse.osgi, org.eclipse.xtend.lib, org.arakhne.afc.core.util, org.arakhne.afc.core.inputoutput, com.fasterxml.jackson.core.jackson-annotations JANUS_ECLIPSE_BUNDLES = io.sarl.eclipse, org.eclipse.jdt.core, org.eclipse.core.runtime, org.eclipse.ui.workbench, org.eclipse.jdt.ui, org.eclipse.jface, org.eclipse.swt, org.eclipse.jdt.launching, com.fasterxml.jackson.core.jackson-core, com.fasterxml.jackson.core.jackson-databind, com.fasterxml.jackson.dataformat.jackson-dataformat-yaml diff --git a/sre/io.janusproject/io.janusproject.plugin/META-INF/MANIFEST.MF b/sre/io.janusproject/io.janusproject.plugin/META-INF/MANIFEST.MF index 9654777a9c..f8955d1d20 100644 --- a/sre/io.janusproject/io.janusproject.plugin/META-INF/MANIFEST.MF +++ b/sre/io.janusproject/io.janusproject.plugin/META-INF/MANIFEST.MF @@ -9,6 +9,7 @@ Bundle-ActivationPolicy: lazy Bundle-Vendor: %Bundle-Vendor Require-Bundle: io.sarl.core;bundle-version="0.12.0", io.sarl.util;bundle-version="0.12.0", + io.sarl.api.naming;bundle-version="0.12.0", io.sarl.api.bootiquebase;bundle-version="0.12.0", io.bootique;bundle-version="1.1.0", org.arakhne.afc.bootique.variables;bundle-version="16.0.0", @@ -80,7 +81,6 @@ Export-Package: io.sarl.sre; com.google.inject, org.eclipse.osgi.util, io.sarl.sre.services.executor, - io.sarl.sre.naming, org.arakhne.afc.bootique.log4j.configs, javax.inject", io.sarl.sre.boot.internal.skills; @@ -102,7 +102,6 @@ Export-Package: io.sarl.sre; org.arakhne.afc.util, io.sarl.sre.services.lifecycle", io.sarl.sre.internal.eventguard, - io.sarl.sre.naming, io.sarl.sre.services; uses:="io.sarl.sre.boot.configs, org.eclipse.osgi.util, diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/naming/NameParserModule.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/naming/NameParserModule.sarl index a28c63af69..355a3b4ce1 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/naming/NameParserModule.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/naming/NameParserModule.sarl @@ -24,8 +24,11 @@ import com.google.inject.AbstractModule import com.google.inject.Module import io.bootique.BQModule import io.bootique.BQModuleProvider -import io.sarl.sre.naming.INameParser -import io.sarl.sre.naming.NameParser +import io.sarl.api.naming.parser.UriBasedNameParser +import io.sarl.api.naming.parser.INameParser +import io.sarl.api.naming.parser.ISchemeNameParser +import java.util.Set +import javax.inject.Inject import javax.inject.Singleton /** @@ -40,7 +43,26 @@ import javax.inject.Singleton class NameParserModule extends AbstractModule { protected override configure { - typeof(INameParser).bind.to(typeof(NameParser)).in(typeof(Singleton)) + typeof(INameParser).bind.to(typeof(InjectedNameParser)).in(typeof(Singleton)) + } + + /** + * Injectable implementation of the name parser. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ + static class InjectedNameParser extends UriBasedNameParser { + + @SuppressWarnings("raw_type") + @Inject + override setSchemeNameParsers(@SchemeNameParsers parsers : Set) { + super.setSchemeNameParsers(parsers) + } + } } diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/naming/SchemeNameParserModule.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/naming/SchemeNameParserModule.sarl index a6479c9f0a..937a91e76d 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/naming/SchemeNameParserModule.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/naming/SchemeNameParserModule.sarl @@ -25,13 +25,13 @@ import com.google.inject.BindingAnnotation import com.google.inject.Module import io.bootique.BQModule import io.bootique.BQModuleProvider -import io.sarl.sre.naming.AgentSchemeNameParser -import io.sarl.sre.naming.BehaviorSchemeNameParser -import io.sarl.sre.naming.ContextSchemeNameParser -import io.sarl.sre.naming.ISchemeNameParser -import io.sarl.sre.naming.ServiceSchemeNameParser -import io.sarl.sre.naming.SkillSchemeNameParser -import io.sarl.sre.naming.SpaceSchemeNameParser +import io.sarl.api.naming.parser.AgentSchemeNameParser +import io.sarl.api.naming.parser.BehaviorSchemeNameParser +import io.sarl.api.naming.parser.ContextSchemeNameParser +import io.sarl.api.naming.parser.ISchemeNameParser +import io.sarl.api.naming.parser.ServiceSchemeNameParser +import io.sarl.api.naming.parser.SkillSchemeNameParser +import io.sarl.api.naming.parser.SpaceSchemeNameParser import java.lang.annotation.Retention import java.lang.annotation.Target diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/NamespaceFinderModule.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/NamespaceFinderModule.sarl index dbe00a81d2..794b365563 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/NamespaceFinderModule.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/NamespaceFinderModule.sarl @@ -25,10 +25,10 @@ import com.google.inject.BindingAnnotation import com.google.inject.Module import io.bootique.BQModule import io.bootique.BQModuleProvider +import io.sarl.api.naming.namespace.INamespaceFinder import io.sarl.sre.services.namespace.AgentNamespaceFinder import io.sarl.sre.services.namespace.BehaviorNamespaceFinder import io.sarl.sre.services.namespace.ContextNamespaceFinder -import io.sarl.sre.services.namespace.INamespaceFinder import io.sarl.sre.services.namespace.ServiceNamespaceFinder import io.sarl.sre.services.namespace.SkillNamespaceFinder import io.sarl.sre.services.namespace.SpaceNamespaceFinder diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/NamespaceServiceModule.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/NamespaceServiceModule.sarl index f613ab6a2c..e723ff6cbc 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/NamespaceServiceModule.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/NamespaceServiceModule.sarl @@ -25,8 +25,11 @@ import com.google.inject.AbstractModule import com.google.inject.Module import io.bootique.BQModule import io.bootique.BQModuleProvider -import io.sarl.sre.services.namespace.FinderBasedNamespaceService -import io.sarl.sre.services.namespace.NamespaceService +import io.sarl.api.naming.namespace.FinderBasedNamespaceService +import io.sarl.api.naming.namespace.INamespaceFinder +import io.sarl.api.naming.namespace.NamespaceService +import java.util.Set +import javax.inject.Inject import javax.inject.Singleton import static extension com.google.inject.multibindings.Multibinder.* @@ -43,11 +46,30 @@ import static extension com.google.inject.multibindings.Multibinder.* class NamespaceServiceModule extends AbstractModule { protected override configure { - typeof(NamespaceService).bind.to(typeof(FinderBasedNamespaceService)).in(typeof(Singleton)) + typeof(NamespaceService).bind.to(typeof(InjectedFinderBasedNamespaceService)).in(typeof(Singleton)) binder.newSetBinder(typeof(Service), typeof(SreServices)).addBinding.to(typeof(NamespaceService)) } + /** + * Injectable implementation of the name space service. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + * @since 0.12 + */ + static class InjectedFinderBasedNamespaceService extends FinderBasedNamespaceService { + + @SuppressWarnings("raw_type") + @Inject + def setNamespaceFinders(finders : Set) { + super.setNamespaceFinders(finders) + } + + } + } /** Provider of the module for the namespace services. diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/ProbeServiceModule.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/ProbeServiceModule.sarl index 24c933dd45..b38578398f 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/ProbeServiceModule.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/boot/internal/services/ProbeServiceModule.sarl @@ -27,11 +27,11 @@ import com.google.inject.Module import com.google.inject.Provides import io.bootique.BQModule import io.bootique.BQModuleProvider +import io.sarl.api.naming.namespace.NamespaceService +import io.sarl.api.naming.parser.INameParser import io.sarl.sre.boot.configs.SreConfig import io.sarl.sre.internal.SmartListenerCollection -import io.sarl.sre.naming.NameParser import io.sarl.sre.services.executor.ExecutorService -import io.sarl.sre.services.namespace.NamespaceService import io.sarl.sre.services.probing.AsynchronousProbeService import io.sarl.sre.services.probing.ProbeService import io.sarl.sre.services.probing.SynchronousProbeService @@ -66,7 +66,7 @@ class ProbeServiceModule extends AbstractModule { @Provides def providesProbeService(sreConfig : Provider, injector : Injector, service : Provider, namespaceService : Provider, - nameParser : Provider, + nameParser : Provider, listenerCollectionProvider : Provider>) : ProbeService { var ps : ProbeService var cfgInstance = sreConfig.get diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AbstractNamespaceFinder.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AbstractNamespaceFinder.sarl index 2e7883f11d..903e051e89 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AbstractNamespaceFinder.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AbstractNamespaceFinder.sarl @@ -20,11 +20,12 @@ */ package io.sarl.sre.services.namespace +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.namespace.INamespaceFinder import io.sarl.lang.annotation.PrivateAPI import io.sarl.lang.core.Agent import io.sarl.lang.core.Space import io.sarl.sre.capacities.InformedEventListener -import io.sarl.sre.naming.SarlName import io.sarl.sre.services.context.Context import io.sarl.sre.services.context.ContextService import io.sarl.sre.spaces.SpaceWithParticipants diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AgentNamespaceFinder.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AgentNamespaceFinder.sarl index 7fef3ad641..751ae44670 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AgentNamespaceFinder.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/AgentNamespaceFinder.sarl @@ -20,9 +20,9 @@ */ package io.sarl.sre.services.namespace +import io.sarl.api.naming.name.AgentName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.lang.core.Agent -import io.sarl.sre.naming.AgentName -import io.sarl.sre.naming.NameScheme import io.sarl.sre.services.context.ContextService import javax.inject.Inject import javax.inject.Singleton diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/BehaviorNamespaceFinder.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/BehaviorNamespaceFinder.sarl index 72c9446e8d..91b043f850 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/BehaviorNamespaceFinder.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/BehaviorNamespaceFinder.sarl @@ -20,12 +20,12 @@ */ package io.sarl.sre.services.namespace +import io.sarl.api.naming.name.BehaviorName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.core.Behaviors import io.sarl.lang.annotation.PrivateAPI import io.sarl.lang.core.Behavior import io.sarl.lang.core.SREutils -import io.sarl.sre.naming.BehaviorName -import io.sarl.sre.naming.NameScheme import io.sarl.sre.services.context.ContextService import javax.inject.Inject import javax.inject.Singleton diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/ContextNamespaceFinder.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/ContextNamespaceFinder.sarl index 9076cf8925..668ca2bc7e 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/ContextNamespaceFinder.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/ContextNamespaceFinder.sarl @@ -20,8 +20,8 @@ */ package io.sarl.sre.services.namespace -import io.sarl.sre.naming.ContextName -import io.sarl.sre.naming.NameScheme +import io.sarl.api.naming.name.ContextName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.sre.services.context.Context import io.sarl.sre.services.context.ContextService import javax.inject.Inject diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/ServiceNamespaceFinder.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/ServiceNamespaceFinder.sarl index 5a0a991b5b..c050a34234 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/ServiceNamespaceFinder.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/ServiceNamespaceFinder.sarl @@ -22,10 +22,11 @@ package io.sarl.sre.services.namespace import com.google.common.util.concurrent.Service import com.google.inject.Injector -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.ServiceName -import org.eclipse.xtend.lib.annotations.Accessors +import io.sarl.api.naming.name.ServiceName +import io.sarl.api.naming.namespace.INamespaceFinder +import io.sarl.api.naming.scheme.NameScheme import javax.inject.Inject +import org.eclipse.xtend.lib.annotations.Accessors /** * Implementation of a finder of service into the namespaces. diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/SkillNamespaceFinder.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/SkillNamespaceFinder.sarl index fc77d2335f..0d6ac43e49 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/SkillNamespaceFinder.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/SkillNamespaceFinder.sarl @@ -20,12 +20,12 @@ */ package io.sarl.sre.services.namespace +import io.sarl.api.naming.name.SkillName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.lang.annotation.PrivateAPI import io.sarl.lang.core.SREutils import io.sarl.lang.core.Skill import io.sarl.lang.core.UnimplementedCapacityException -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SkillName import io.sarl.sre.services.context.ContextService import javax.inject.Inject import javax.inject.Singleton diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/SpaceNamespaceFinder.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/SpaceNamespaceFinder.sarl index 1b8f00cc53..f144f30cf1 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/SpaceNamespaceFinder.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/namespace/SpaceNamespaceFinder.sarl @@ -20,9 +20,9 @@ */ package io.sarl.sre.services.namespace +import io.sarl.api.naming.name.SpaceName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.lang.core.Space -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SpaceName import io.sarl.sre.services.context.Context import io.sarl.sre.services.context.ContextService import javax.inject.Inject diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AbstractFieldProbe.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AbstractFieldProbe.sarl index 8e341df7fd..d1fd9ba1e1 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AbstractFieldProbe.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AbstractFieldProbe.sarl @@ -21,14 +21,14 @@ package io.sarl.sre.services.probing import com.google.common.util.concurrent.Service +import io.sarl.api.naming.namespace.FieldAccess +import io.sarl.api.naming.scheme.NameScheme import io.sarl.lang.core.Agent import io.sarl.lang.core.AgentTrait import io.sarl.lang.core.Behavior import io.sarl.sre.internal.SmartListenerCollection -import io.sarl.sre.naming.NameScheme import io.sarl.sre.services.lifecycle.AgentLife import io.sarl.sre.services.lifecycle.BehaviorLife -import io.sarl.sre.services.namespace.FieldAccess import java.net.URI import javax.inject.Provider import org.eclipse.xtend.lib.annotations.Accessors diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AbstractProbeService.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AbstractProbeService.sarl index 928ec7118b..76c2389775 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AbstractProbeService.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AbstractProbeService.sarl @@ -20,18 +20,18 @@ */ package io.sarl.sre.services.probing +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.namespace.FieldAccess +import io.sarl.api.naming.parser.INameParser import io.sarl.sre.internal.SmartListenerCollection -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.SarlName import io.sarl.sre.services.AbstractSreService -import io.sarl.sre.services.namespace.FieldAccess -import io.sarl.sre.services.namespace.NamespaceService import java.net.URI import java.util.Collection import java.util.Map import java.util.UUID import java.util.concurrent.ConcurrentLinkedDeque import javax.inject.Provider +import io.sarl.api.naming.namespace.NamespaceService /** * This class is the standard implementation of a probe service. @@ -46,7 +46,7 @@ abstract class AbstractProbeService extends AbstractSreService implements ProbeS val namespace : NamespaceService - val nameParser : NameParser + val nameParser : INameParser val probes : Map> @@ -60,7 +60,7 @@ abstract class AbstractProbeService extends AbstractSreService implements ProbeS * @param listenerCollectionProvider the provider of listener collections. * @param lockProvider the provider of synchronization locks. */ - protected new (internalStructure : Map>, namespaceService : NamespaceService, nameParser : NameParser, + protected new (internalStructure : Map>, namespaceService : NamespaceService, nameParser : INameParser, listenerCollectionProvider : Provider>) { this.probes = internalStructure this.namespace = namespaceService diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AsynchronousProbeService.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AsynchronousProbeService.sarl index 78de235921..5d02f1333c 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AsynchronousProbeService.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/AsynchronousProbeService.sarl @@ -21,15 +21,15 @@ package io.sarl.sre.services.probing import io.sarl.sre.internal.SmartListenerCollection -import io.sarl.sre.naming.NameParser import io.sarl.sre.services.executor.ExecutorService import io.sarl.sre.services.executor.Runnables -import io.sarl.sre.services.namespace.NamespaceService +import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.atomic.AtomicBoolean import javax.inject.Inject import javax.inject.Provider import org.eclipse.xtend.lib.annotations.Accessors -import java.util.concurrent.ConcurrentHashMap +import io.sarl.api.naming.parser.INameParser +import io.sarl.api.naming.namespace.NamespaceService /** * This class is the implementation of a probe service that is updating the values asynchronously. @@ -62,7 +62,7 @@ class AsynchronousProbeService extends AbstractProbeService { * @param lockProvider the provider of synchronization locks. */ @Inject - new (service : ExecutorService, namespaceService : NamespaceService, nameParser : NameParser, + new (service : ExecutorService, namespaceService : NamespaceService, nameParser : INameParser, listenerCollectionProvider : Provider>) { super(new ConcurrentHashMap, namespaceService, nameParser, listenerCollectionProvider) this.executor = service diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/FieldProbe.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/FieldProbe.sarl index 836f5cf1ed..e13b3fc0f5 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/FieldProbe.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/FieldProbe.sarl @@ -20,8 +20,8 @@ */ package io.sarl.sre.services.probing +import io.sarl.api.naming.namespace.FieldAccess import io.sarl.sre.internal.SmartListenerCollection -import io.sarl.sre.services.namespace.FieldAccess import java.net.URI import javax.inject.Provider diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/ProbeService.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/ProbeService.sarl index c2db0edbeb..aeee57973f 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/ProbeService.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/ProbeService.sarl @@ -21,7 +21,7 @@ package io.sarl.sre.services.probing import com.google.common.util.concurrent.Service -import io.sarl.sre.naming.SarlName +import io.sarl.api.naming.name.SarlName import java.net.URI import java.util.Collection diff --git a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/SynchronousProbeService.sarl b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/SynchronousProbeService.sarl index 1797ac271d..61f81ce354 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/SynchronousProbeService.sarl +++ b/sre/io.janusproject/io.janusproject.plugin/src/main/sarl/io/sarl/sre/services/probing/SynchronousProbeService.sarl @@ -20,14 +20,14 @@ */ package io.sarl.sre.services.probing +import io.sarl.api.naming.parser.INameParser import io.sarl.sre.internal.SmartListenerCollection -import io.sarl.sre.naming.NameParser -import io.sarl.sre.services.namespace.NamespaceService import java.net.URI import java.util.HashMap import java.util.Map import javax.inject.Inject import javax.inject.Provider +import io.sarl.api.naming.namespace.NamespaceService /** * This class is the implementation of a probe service that is updating the values synchronously. @@ -50,7 +50,7 @@ class SynchronousProbeService extends AbstractProbeService { * @param lockProvider the provider of synchronization locks. */ @Inject - new (namespaceService : NamespaceService, nameParser : NameParser, + new (namespaceService : NamespaceService, nameParser : INameParser, listenerCollectionProvider : Provider>) { this(new HashMap, namespaceService, nameParser, listenerCollectionProvider) } @@ -63,7 +63,7 @@ class SynchronousProbeService extends AbstractProbeService { * @param listenerCollectionProvider the provider of listener collections. * @param lockProvider the provider of synchronization locks. */ - new (internalStructure : Map>, namespaceService : NamespaceService, nameParser : NameParser, + new (internalStructure : Map>, namespaceService : NamespaceService, nameParser : INameParser, listenerCollectionProvider : Provider>) { super(internalStructure, namespaceService, nameParser, listenerCollectionProvider) } diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/runtime/services/namespace/AbstractNamespaceServiceTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/runtime/services/namespace/AbstractNamespaceServiceTest.sarl index ba5251b681..3064ab0d38 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/runtime/services/namespace/AbstractNamespaceServiceTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/runtime/services/namespace/AbstractNamespaceServiceTest.sarl @@ -21,7 +21,7 @@ package io.sarl.sre.tests.runtime.services.namespace -import io.sarl.sre.services.namespace.NamespaceService +import io.sarl.api.naming.namespace.NamespaceService import io.sarl.sre.test.framework.context.SreRunContext import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension import io.sarl.sre.test.framework.^extension.SreRunExtension diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/runtime/services/namespace/FinderBasedNamespaceServiceTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/runtime/services/namespace/FinderBasedNamespaceServiceTest.sarl index 8dadcdfc55..d7d7c4abf6 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/runtime/services/namespace/FinderBasedNamespaceServiceTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/runtime/services/namespace/FinderBasedNamespaceServiceTest.sarl @@ -21,7 +21,7 @@ package io.sarl.sre.tests.runtime.services.namespace -import io.sarl.sre.services.namespace.FieldAccess +import io.sarl.api.naming.namespace.FieldAccess import io.sarl.sre.test.framework.context.SreRunContext import java.util.UUID import org.junit.jupiter.api.DisplayName diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/BehaviorSchemeNameParserTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/BehaviorSchemeNameParserTest.sarl deleted file mode 100644 index b1e64d2615..0000000000 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/BehaviorSchemeNameParserTest.sarl +++ /dev/null @@ -1,1353 +0,0 @@ -/* - * $Id$ - * - * SARL is an general-purpose agent programming language. - * More details on http://www.sarl.io - * - * Copyright (C) 2014-2020 the original authors or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.sarl.sre.tests.units.naming - -import io.sarl.sre.naming.BehaviorName -import io.sarl.sre.naming.BehaviorSchemeNameParser -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.SarlName -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension -import io.sarl.sre.tests.units.naming.mocks.BehaviorMock -import io.sarl.sre.tests.units.naming.mocks.CapacityMock -import io.sarl.tests.api.Nullable -import io.sarl.tests.api.extensions.ContextInitExtension -import io.sarl.tests.api.extensions.JavaVersionCheckExtension -import java.net.URI -import java.util.UUID -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.DisplayName -import org.junit.jupiter.api.Tag -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.^extension.ExtendWith - -import static extension io.sarl.tests.api.tools.TestAssertions.assertNullOrEmpty -import static extension org.junit.jupiter.api.Assertions.assertEquals -import static extension org.junit.jupiter.api.Assertions.assertNotNull -import static extension org.junit.jupiter.api.Assertions.assertNull - -/** - * @author $Author: sgalland$ - * @version $FullVersion$ - * @mavengroupid $GroupId$ - * @mavenartifactid $ArtifactId$ - */ -@ExtendWith(#[ - typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) -]) -@DisplayName("unit: behavior NameParser test") -@Tag("unit") -@Tag("janus") -@Tag("sre-unit") -class BehaviorSchemeNameParserTest { - - protected static val CONTEXT_ID = "2a2c6de4-8327-431b-a916-97a05caafe14" - - protected static val SPACE_ID = "bb0d92be-1730-4453-a284-bd66d31b853f" - - protected static val AGENT_ID = "a0875b30-cff3-4461-9b96-f501e6c6a788" - - protected static val SKILL_ID = typeof(CapacityMock).name - - protected static val BEHAVIOR_ID = typeof(BehaviorMock).name - - protected static val BEHAVIOR_IDX = 8 - - @Nullable - var parser : NameParser - - @BeforeEach - def setUp : void { - this.parser = new NameParser - this.parser.addSchemeNameParser(new BehaviorSchemeNameParser) - } - - protected static def createURI(value : String) : URI { - URI::create(value) - } - - protected def createNormalizedURI(value : String) : URI { - this.parser.normalize(value.createURI) - } - - private static def toUUID(s : String) : UUID { - UUID::fromString(s) - } - - private static def m(index : int, e : String*) : String{ - val b = new StringBuilder - for (elt : e) { - if (!elt.isNullOrEmpty) { - b.append("/").append(elt) - } - } - if (index >= 0) { - b.append("/").append(index) - } - return b.toString - } - - protected static def assertValid(uri : URI, s : String, fragment : String = null, kindex : int, elements : String*) : void { - uri.assertNotNull - s.assertEquals(uri.scheme) - m(kindex, elements).assertEquals(uri.path) - if (fragment.isNullOrEmpty) { - uri.fragment.assertNullOrEmpty - } else { - fragment.assertEquals(uri.fragment) - } - uri.host.assertNullOrEmpty - uri.port.assertEquals(-1) - uri.query.assertNullOrEmpty - uri.userInfo.assertNullOrEmpty - } - - protected static def assertValid(name : SarlName, s : String, fragment : String = null, kindex : int, elements : String*) : void { - name.assertNotNull - name.toURI.assertValid(s, fragment, kindex, elements) - if (fragment.isNullOrEmpty) { - name.fragment.assertNullOrEmpty - } else { - fragment.assertEquals(name.fragment) - } - val n = name as BehaviorName - if (n.contextId === null) { - n.contextId.assertNull - n.spaceId.assertNull - elements.get(0).toUUID.assertEquals(n.agentId) - elements.get(1).assertEquals(n.behaviorType.name) - if (elements.length != 2) { - 3.assertEquals(elements.length) - elements.get(2).assertEquals(BEHAVIOR_IDX) - } - } else if (n.spaceId === null) { - elements.get(0).toUUID.assertEquals(n.contextId) - n.spaceId.assertNull - elements.get(1).toUUID.assertEquals(n.agentId) - elements.get(2).assertEquals(n.behaviorType.name) - if (elements.length != 3) { - 4.assertEquals(elements.length) - elements.get(3).assertEquals(BEHAVIOR_IDX) - } - } else { - elements.get(0).toUUID.assertEquals(n.contextId) - elements.get(1).toUUID.assertEquals(n.spaceId) - elements.get(2).toUUID.assertEquals(n.agentId) - elements.get(3).assertEquals(n.behaviorType.name) - if (elements.length != 4) { - 5.assertEquals(elements.length) - elements.get(4).assertEquals(BEHAVIOR_IDX) - } - } - } - - @Test - def decode_String_00 { - this.parser.decode("behavior:").assertNull - } - - @Test - def decode_String_01 { - this.parser.decode("behavior://" + BEHAVIOR_ID).assertNull - } - - @Test - def decode_String_02 { - this.parser.decode("behavior://" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).assertNull - } - - @Test - def decode_String_03 { - this.parser.decode("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID).assertValid( - "behavior", -1, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_04 { - this.parser.decode("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).assertValid("behavior", - BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_05 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).assertValid("behavior", -1, - CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_06 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX). - assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_07 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).assertValid( - "behavior", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_08 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX).assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_09 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx"). - assertNull - } - - @Test - def decode_String_10 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx").assertNull - } - - @Test - def decode_String_11 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX).assertNull - } - - @Test - def decode_String_12 { - this.parser.decode("behavior:/" + BEHAVIOR_ID).assertNull - } - - @Test - def decode_String_13 { - this.parser.decode("behavior:/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).assertNull - } - - @Test - def decode_String_14 { - this.parser.decode("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID).assertValid("behavior", -1, AGENT_ID, - BEHAVIOR_ID) - } - - @Test - def decode_String_15 { - this.parser.decode("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX). - assertValid("behavior", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_16 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).assertValid("behavior", - -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_17 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX). - assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_18 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID). - assertValid("behavior", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_19 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX).assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_20 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx").assertNull - } - - @Test - def decode_String_21 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx").assertNull - } - - @Test - def decode_String_22 { - this.parser.decode( - "behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX).assertNull - } - - @Test - def decode_String_23 { - this.parser.decode("behavior:" + BEHAVIOR_ID).assertNull - } - - @Test - def decode_String_24 { - this.parser.decode("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).assertNull - } - - @Test - def decode_String_25 { - this.parser.decode("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID).assertValid("behavior", -1, AGENT_ID, - BEHAVIOR_ID) - } - - @Test - def decode_String_26 { - this.parser.decode("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX). - assertValid("behavior", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_27 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).assertValid("behavior", - -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_28 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX). - assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_29 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID). - assertValid("behavior", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_30 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX).assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_31 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx").assertNull - } - - @Test - def decode_String_32 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx").assertNull - } - - @Test - def decode_String_33 { - this.parser.decode( - "behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX).assertNull - } - - @Test - def decode_String_fragment_00 { - this.parser.decode("behavior:#frag").assertNull - } - - @Test - def decode_String_fragment_01 { - this.parser.decode("behavior://" + BEHAVIOR_ID + "#frag").assertNull - } - - @Test - def decode_String_fragment_02 { - this.parser.decode("behavior://" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").assertNull - } - - @Test - def decode_String_fragment_03 { - this.parser.decode("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").assertValid("behavior", - "frag", -1, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_04 { - this.parser.decode("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag"). - assertValid("behavior", "frag", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_05 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag"). - assertValid("behavior", "frag", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_06 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX - + "#frag").assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_07 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID - + "#frag").assertValid("behavior", "frag", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_08 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "#frag").assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, - AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_09 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx#frag").assertNull - } - - @Test - def decode_String_fragment_10 { - this.parser.decode("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx#frag").assertNull - } - - @Test - def decode_String_fragment_11 { - this.parser.decode( - "behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX + "#frag").assertNull - } - - @Test - def decode_String_fragment_12 { - this.parser.decode("behavior:/" + BEHAVIOR_ID + "#frag").assertNull - } - - @Test - def decode_String_fragment_13 { - this.parser.decode("behavior:/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").assertNull - } - - @Test - def decode_String_fragment_14 { - this.parser.decode("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").assertValid("behavior", - "frag", -1, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_15 { - this.parser.decode("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").assertValid( - "behavior", "frag", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_16 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").assertValid( - "behavior", "frag", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_17 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX - + "#frag").assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_18 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag"). - assertValid("behavior", "frag", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_19 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "#frag").assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_20 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx#frag").assertNull - } - - @Test - def decode_String_fragment_21 { - this.parser.decode("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx#frag").assertNull - } - - @Test - def decode_String_fragment_22 { - this.parser.decode( - "behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX + "#frag").assertNull - } - - @Test - def decode_String_fragment_23 { - this.parser.decode("behavior:" + BEHAVIOR_ID + "#frag").assertNull - } - - @Test - def decode_String_fragment_24 { - this.parser.decode("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").assertNull - } - - @Test - def decode_String_fragment_25 { - this.parser.decode("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").assertValid("behavior", "frag", -1, - AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_26 { - this.parser.decode("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").assertValid( - "behavior", "frag", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_27 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").assertValid( - "behavior", "frag", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_28 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + - "#frag").assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_29 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag"). - assertValid("behavior", "frag", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_30 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "#frag").assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, - BEHAVIOR_ID) - } - - @Test - def decode_String_fragment_31 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx#frag").assertNull - } - - @Test - def decode_String_fragment_32 { - this.parser.decode("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx#frag").assertNull - } - - @Test - def decode_String_fragment_33 { - this.parser.decode( - "behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX + "#frag").assertNull - } - - @Test - def normalize_URI_00 { - this.parser.normalize(("behavior://" + BEHAVIOR_ID).createURI).assertNull - } - - @Test - def normalize_URI_01 { - this.parser.normalize(("behavior://" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createURI).assertNull - } - - @Test - def normalize_URI_02 { - this.parser.normalize(("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID).createURI).assertValid("behavior", -1, - AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_03 { - this.parser.normalize(("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createURI). - assertValid("behavior", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_04 { - this.parser.normalize(("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createURI). - assertValid("behavior", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_05 { - this.parser.normalize( - ("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createURI). - assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_06 { - this.parser.normalize( - ("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createURI). - assertValid("behavior", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_07 { - this.parser.normalize(("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX).createURI).assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, - BEHAVIOR_ID) - } - - @Test - def normalize_URI_08 { - this.parser.normalize(("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx").createURI).assertNull - } - - @Test - def normalize_URI_09 { - this.parser.normalize(("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx").createURI).assertNull - } - - @Test - def normalize_URI_10 { - this.parser.normalize(( - "behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX).createURI).assertNull - } - - @Test - def normalize_URI_11 { - this.parser.normalize(("behavior:/" + BEHAVIOR_ID).createURI).assertNull - } - - @Test - def normalize_URI_12 { - this.parser.normalize(("behavior:/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createURI).assertNull - } - - @Test - def normalize_URI_13 { - this.parser.normalize(("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID).createURI).assertValid("behavior", -1, - AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_14 { - this.parser.normalize(("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createURI). - assertValid("behavior", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_15 { - this.parser.normalize(("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createURI). - assertValid("behavior", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_16 { - this.parser.normalize( - ("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createURI). - assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_17 { - this.parser.normalize( - ("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createURI). - assertValid("behavior", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_18 { - this.parser.normalize(("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX).createURI).assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, - BEHAVIOR_ID) - } - - @Test - def normalize_URI_19 { - this.parser.normalize(("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx").createURI).assertNull - } - - @Test - def normalize_URI_20 { - this.parser.normalize(("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx").createURI).assertNull - } - - @Test - def normalize_URI_21 { - this.parser.normalize(( - "behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX).createURI).assertNull - } - - @Test - def normalize_URI_22 { - this.parser.normalize(("behavior:" + BEHAVIOR_ID).createURI).assertNull - } - - @Test - def normalize_URI_23 { - this.parser.normalize(("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createURI).assertNull - } - - @Test - def normalize_URI_24 { - this.parser.normalize(("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID).createURI).assertValid("behavior", -1, - AGENT_ID, - BEHAVIOR_ID) - } - - @Test - def normalize_URI_25 { - this.parser.normalize(("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createURI). - assertValid("behavior", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_26 { - this.parser.normalize(("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createURI). - assertValid("behavior", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_27 { - this.parser.normalize( - ("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createURI). - assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_28 { - this.parser.normalize( - ("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createURI). - assertValid("behavior", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_29 { - this.parser.normalize(("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX).createURI).assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, - BEHAVIOR_ID) - } - - @Test - def normalize_URI_30 { - this.parser.normalize(("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx").createURI).assertNull - } - - @Test - def normalize_URI_31 { - this.parser.normalize(("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx").createURI).assertNull - } - - @Test - def normalize_URI_32 { - this.parser.normalize(( - "behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX).createURI).assertNull - } - - @Test - def normalize_URI_fragment_00 { - this.parser.normalize(("behavior://" + BEHAVIOR_ID + "#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_01 { - this.parser.normalize(("behavior://" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_02 { - this.parser.normalize(("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createURI). - assertValid("behavior", "frag", -1, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_03 { - this.parser.normalize( - ("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createURI). - assertValid("behavior", "frag", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_04 { - this.parser.normalize( - ("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createURI). - assertValid("behavior", "frag", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_05 { - this.parser.normalize( - ("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag"). - createURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_06 { - this.parser.normalize(("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID - + "#frag").createURI).assertValid("behavior", "frag", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_07 { - this.parser.normalize(("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "#frag").createURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, - SPACE_ID, - AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_08 { - this.parser.normalize(("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_09 { - this.parser.normalize(("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_10 { - this.parser.normalize(( - "behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX + "#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_11 { - this.parser.normalize(("behavior:/" + BEHAVIOR_ID + "#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_12 { - this.parser.normalize(("behavior:/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_13 { - this.parser.normalize(("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createURI). - assertValid("behavior", "frag", -1, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_14 { - this.parser.normalize( - ("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createURI).assertValid( - "behavior", "frag", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_15 { - this.parser.normalize(("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createURI). - assertValid("behavior", "frag", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_16 { - this.parser.normalize(("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX - + "#frag").createURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_17 { - this.parser.normalize(("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "#frag").createURI).assertValid("behavior", "frag", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_18 { - this.parser.normalize(("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "#frag").createURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, - SPACE_ID, - AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_19 { - this.parser.normalize(("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_20 { - this.parser.normalize(("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_21 { - this.parser.normalize(( - "behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX + "#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_22 { - this.parser.normalize(("behavior:" + BEHAVIOR_ID + "#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_23 { - this.parser.normalize(("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_24 { - this.parser.normalize(("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createURI). - assertValid("behavior", "frag", -1, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_25 { - this.parser.normalize( - ("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createURI).assertValid( - "behavior", "frag", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_26 { - this.parser.normalize(("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createURI). - assertValid( - "behavior", "frag", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_27 { - this.parser.normalize(("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + - "#frag").createURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_28 { - this.parser.normalize(("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "#frag").createURI).assertValid("behavior", "frag", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_29 { - this.parser.normalize(("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "#frag").createURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, - SPACE_ID, - AGENT_ID, BEHAVIOR_ID) - } - - @Test - def normalize_URI_fragment_30 { - this.parser.normalize(("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_31 { - this.parser.normalize(("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx#frag").createURI).assertNull - } - - @Test - def normalize_URI_fragment_32 { - this.parser.normalize(( - "behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX + "#frag").createURI).assertNull - } - - @Test - def decode_URI_00 { - this.parser.decode(("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID).createNormalizedURI).assertValid("behavior", -1, - AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_01 { - this.parser.decode(("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createNormalizedURI). - assertValid("behavior", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_02 { - this.parser.decode(("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createNormalizedURI). - assertValid("behavior", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_03 { - this.parser.decode( - ("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createNormalizedURI). - assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_04 { - this.parser.decode( - ("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createNormalizedURI). - assertValid("behavior", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_05 { - this.parser.decode( - ("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX). - createNormalizedURI).assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_06 { - this.parser.decode(("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID).createNormalizedURI).assertValid("behavior", -1, - AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_07 { - this.parser.decode(("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createNormalizedURI). - assertValid("behavior", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_08 { - this.parser.decode(("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createNormalizedURI). - assertValid("behavior", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_09 { - this.parser.decode( - ("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createNormalizedURI). - assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_10 { - this.parser.decode( - ("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createNormalizedURI). - assertValid("behavior", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_11 { - this.parser.decode( - ("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX). - createNormalizedURI).assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_12 { - this.parser.decode(("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx").createNormalizedURI).assertNull - } - - @Test - def decode_URI_13 { - this.parser.decode( - ("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + - "/xxx").createNormalizedURI).assertNull - } - - @Test - def decode_URI_14 { - this.parser.decode(( - "behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX).createNormalizedURI).assertNull - } - - @Test - def decode_URI_15 { - this.parser.decode(("behavior:" + BEHAVIOR_ID).createNormalizedURI).assertNull - } - - @Test - def decode_URI_16 { - this.parser.decode(("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createNormalizedURI).assertNull - } - - @Test - def decode_URI_17 { - this.parser.decode(("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID).createNormalizedURI).assertValid("behavior", -1, - AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_18 { - this.parser.decode(("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createNormalizedURI). - assertValid("behavior", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_19 { - this.parser.decode(("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createNormalizedURI). - assertValid("behavior", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_20 { - this.parser.decode( - ("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX).createNormalizedURI). - assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_21 { - this.parser.decode( - ("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID).createNormalizedURI). - assertValid("behavior", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_22 { - this.parser.decode( - ("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX). - createNormalizedURI).assertValid("behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_23 { - this.parser.decode(("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx").createNormalizedURI).assertNull - } - - @Test - def decode_URI_24 { - this.parser.decode( - ("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + - "/xxx").createNormalizedURI).assertNull - } - - @Test - def decode_URI_25 { - this.parser.decode(( - "behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX).createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_00 { - this.parser.decode(("behavior://" + BEHAVIOR_ID + "#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_01 { - this.parser.decode(("behavior://" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_02 { - this.parser.decode(("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createNormalizedURI). - assertValid("behavior", "frag", -1, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_03 { - this.parser.decode( - ("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createNormalizedURI). - assertValid("behavior", "frag", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_04 { - this.parser.decode( - ("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createNormalizedURI). - assertValid("behavior", "frag", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_05 { - this.parser.decode( - ("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag"). - createNormalizedURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_06 { - this.parser.decode(("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "#frag").createNormalizedURI).assertValid("behavior", "frag", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_07 { - this.parser.decode( - ("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "#frag").createNormalizedURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, - SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_08 { - this.parser.decode(("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_09 { - this.parser.decode( - ("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + - "/xxx#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_10 { - this.parser.decode(( - "behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX + "#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_11 { - this.parser.decode(("behavior:/" + BEHAVIOR_ID + "#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_12 { - this.parser.decode(("behavior:/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_13 { - this.parser.decode(("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createNormalizedURI). - assertValid("behavior", "frag", -1, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_14 { - this.parser.decode( - ("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createNormalizedURI).assertValid( - "behavior", "frag", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_15 { - this.parser.decode(("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createNormalizedURI). - assertValid("behavior", "frag", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_16 { - this.parser.decode(("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + - "#frag").createNormalizedURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_17 { - this.parser.decode(("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "#frag").createNormalizedURI).assertValid("behavior", "frag", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_18 { - this.parser.decode( - ("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + - "#frag").createNormalizedURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, - BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_19 { - this.parser.decode(("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_20 { - this.parser.decode( - ("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + - BEHAVIOR_IDX + "/xxx#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_21 { - this.parser.decode(( - "behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX + "#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_22 { - this.parser.decode(("behavior:" + BEHAVIOR_ID + "#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_23 { - this.parser.decode(("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_24 { - this.parser.decode(("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createNormalizedURI). - assertValid("behavior", "frag", -1, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_25 { - this.parser.decode( - ("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag").createNormalizedURI).assertValid( - "behavior", "frag", BEHAVIOR_IDX, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_26 { - this.parser.decode(("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag").createNormalizedURI). - assertValid("behavior", "frag", -1, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_27 { - this.parser.decode(("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + - "#frag").createNormalizedURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_28 { - this.parser.decode(("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "#frag").createNormalizedURI).assertValid("behavior", "frag", -1, CONTEXT_ID, SPACE_ID, AGENT_ID, BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_29 { - this.parser.decode( - ("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + - "#frag").createNormalizedURI).assertValid("behavior", "frag", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID, AGENT_ID, - BEHAVIOR_ID) - } - - @Test - def decode_URI_fragment_30 { - this.parser.decode(("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + - "/xxx#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_31 { - this.parser.decode( - ("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + - "/xxx#frag").createNormalizedURI).assertNull - } - - @Test - def decode_URI_fragment_32 { - this.parser.decode(( - "behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + - BEHAVIOR_IDX + "#frag").createNormalizedURI).assertNull - } - -} diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/AgentNamespaceFinderTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/AgentNamespaceFinderTest.sarl index 8064c87996..8501e822e8 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/AgentNamespaceFinderTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/AgentNamespaceFinderTest.sarl @@ -21,12 +21,12 @@ package io.sarl.sre.tests.units.services.namespace +import io.sarl.api.naming.name.AgentName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.core.OpenEventSpace import io.sarl.lang.annotation.PrivateAPI import io.sarl.lang.core.Agent import io.sarl.sre.capacities.InformedEventListener -import io.sarl.sre.naming.AgentName -import io.sarl.sre.naming.NameScheme import io.sarl.sre.services.context.Context import io.sarl.sre.services.context.ContextService import io.sarl.sre.services.namespace.AgentNamespaceFinder @@ -47,9 +47,9 @@ import static org.mockito.ArgumentMatchers.* import static org.mockito.Mockito.* import static extension io.sarl.tests.api.tools.TestMockito.mock -import static extension org.junit.jupiter.api.Assertions.assertEquals import static extension org.junit.jupiter.api.Assertions.assertNull import static extension org.junit.jupiter.api.Assertions.assertSame +import static extension org.junit.jupiter.api.Assertions.assertEquals /** * @author $Author: sgalland$ diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/BehaviorNamespaceFinderTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/BehaviorNamespaceFinderTest.sarl index 6ef4115294..da7d665e53 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/BehaviorNamespaceFinderTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/BehaviorNamespaceFinderTest.sarl @@ -30,8 +30,6 @@ import io.sarl.lang.core.Behavior import io.sarl.lang.core.SREutils import io.sarl.lang.core.Skill import io.sarl.sre.capacities.InformedEventListener -import io.sarl.sre.naming.BehaviorName -import io.sarl.sre.naming.NameScheme import io.sarl.sre.services.context.Context import io.sarl.sre.services.context.ContextService import io.sarl.sre.services.namespace.BehaviorNamespaceFinder @@ -59,6 +57,8 @@ import static extension org.junit.jupiter.api.Assertions.assertEquals import static extension org.junit.jupiter.api.Assertions.assertNull import static extension org.junit.jupiter.api.Assertions.assertSame import static extension org.mockito.Mockito.spy +import io.sarl.api.naming.name.BehaviorName +import io.sarl.api.naming.scheme.NameScheme /** * @author $Author: sgalland$ diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/ContextNamespaceFinderTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/ContextNamespaceFinderTest.sarl index 52e6eeab0e..af39a0d2bd 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/ContextNamespaceFinderTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/ContextNamespaceFinderTest.sarl @@ -22,8 +22,6 @@ package io.sarl.sre.tests.units.services.namespace import io.sarl.lang.annotation.PrivateAPI -import io.sarl.sre.naming.ContextName -import io.sarl.sre.naming.NameScheme import io.sarl.sre.services.context.Context import io.sarl.sre.services.context.ContextService import io.sarl.sre.services.namespace.ContextNamespaceFinder @@ -45,6 +43,8 @@ import static extension io.sarl.tests.api.tools.TestMockito.mock import static extension org.junit.jupiter.api.Assertions.assertEquals import static extension org.junit.jupiter.api.Assertions.assertNull import static extension org.junit.jupiter.api.Assertions.assertSame +import io.sarl.api.naming.name.ContextName +import io.sarl.api.naming.scheme.NameScheme /** * @author $Author: sgalland$ diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/ServiceNamespaceFinderTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/ServiceNamespaceFinderTest.sarl index 98cddb90d5..e9cc2ce35c 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/ServiceNamespaceFinderTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/ServiceNamespaceFinderTest.sarl @@ -22,9 +22,9 @@ package io.sarl.sre.tests.units.services.namespace import com.google.inject.Injector +import io.sarl.api.naming.name.ServiceName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.lang.annotation.PrivateAPI -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.ServiceName import io.sarl.sre.services.lifecycle.LifecycleService import io.sarl.sre.services.logging.LoggingService import io.sarl.sre.services.namespace.ServiceNamespaceFinder diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/SkillNamespaceFinderTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/SkillNamespaceFinderTest.sarl index 0d6bf504f9..b2782f02db 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/SkillNamespaceFinderTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/SkillNamespaceFinderTest.sarl @@ -21,14 +21,14 @@ package io.sarl.sre.tests.units.services.namespace +import io.sarl.api.naming.name.SkillName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.core.OpenEventSpace import io.sarl.lang.annotation.PrivateAPI import io.sarl.lang.core.Agent import io.sarl.lang.core.Capacity import io.sarl.lang.core.Skill import io.sarl.sre.capacities.InformedEventListener -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SkillName import io.sarl.sre.services.context.Context import io.sarl.sre.services.context.ContextService import io.sarl.sre.services.namespace.SkillNamespaceFinder diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/SpaceNamespaceFinderTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/SpaceNamespaceFinderTest.sarl index f7b78fc2b3..d525feee6d 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/SpaceNamespaceFinderTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/SpaceNamespaceFinderTest.sarl @@ -21,10 +21,10 @@ package io.sarl.sre.tests.units.services.namespace +import io.sarl.api.naming.name.SpaceName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.core.OpenEventSpace import io.sarl.lang.annotation.PrivateAPI -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SpaceName import io.sarl.sre.services.context.Context import io.sarl.sre.services.context.ContextService import io.sarl.sre.services.namespace.SpaceNamespaceFinder diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/AsynchronousProbeServiceTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/AsynchronousProbeServiceTest.sarl index 2e28c7c8fa..c5f1f367fb 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/AsynchronousProbeServiceTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/AsynchronousProbeServiceTest.sarl @@ -21,15 +21,14 @@ package io.sarl.sre.tests.units.services.probing +import io.sarl.api.naming.name.ContextName +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.namespace.FieldAccess +import io.sarl.api.naming.parser.UriBasedNameParser +import io.sarl.api.naming.scheme.NameScheme import io.sarl.sre.internal.SequenceListenerNotifier import io.sarl.sre.internal.SmartListenerCollection -import io.sarl.sre.naming.ContextName -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SarlName import io.sarl.sre.services.executor.ExecutorService -import io.sarl.sre.services.namespace.FieldAccess -import io.sarl.sre.services.namespace.NamespaceService import io.sarl.sre.services.probing.AsynchronousProbeService import io.sarl.sre.services.probing.Probe import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension @@ -57,6 +56,7 @@ import static extension org.mockito.ArgumentMatchers.any import static extension org.mockito.Mockito.spy import static extension org.mockito.Mockito.times import static extension org.mockito.Mockito.verify +import io.sarl.api.naming.namespace.NamespaceService /** * @author $Author: sgalland$ @@ -82,7 +82,7 @@ class AsynchronousProbeServiceTest { var namespaceService : NamespaceService @Nullable - var nameParser : NameParser + var nameParser : UriBasedNameParser @Nullable var executorService : ExecutorService @@ -107,7 +107,7 @@ class AsynchronousProbeServiceTest { when(this.fieldAccess.name).thenReturn(this.nameObject) this.namespaceService = typeof(NamespaceService).mock when(this.namespaceService.findObject(typeof(SarlName).any)).thenReturn(this.fieldAccess) - this.nameParser = typeof(NameParser).mock + this.nameParser = typeof(UriBasedNameParser).mock when(this.nameParser.normalize(any(typeof(URI)))).thenAnswer[it.getArgument(0)] when(this.nameParser.decode(any(typeof(URI)))).thenAnswer [ if (it.getArgument(0) === this.uri0) { diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/FieldProbeTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/FieldProbeTest.sarl index 53fe1c8064..944b832e4c 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/FieldProbeTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/FieldProbeTest.sarl @@ -21,11 +21,11 @@ package io.sarl.sre.tests.units.services.probing +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.namespace.FieldAccess +import io.sarl.api.naming.scheme.NameScheme import io.sarl.sre.internal.SequenceListenerNotifier import io.sarl.sre.internal.SmartListenerCollection -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SarlName -import io.sarl.sre.services.namespace.FieldAccess import io.sarl.sre.services.probing.FieldProbe import io.sarl.sre.services.probing.IProbeListener import io.sarl.sre.services.probing.IProbeReleaseListener diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/SynchronousProbeServiceTest.sarl b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/SynchronousProbeServiceTest.sarl index 4cf66ec3a7..fd15229dfe 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/SynchronousProbeServiceTest.sarl +++ b/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/probing/SynchronousProbeServiceTest.sarl @@ -21,14 +21,13 @@ package io.sarl.sre.tests.units.services.probing +import io.sarl.api.naming.name.ContextName +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.namespace.FieldAccess +import io.sarl.api.naming.parser.UriBasedNameParser +import io.sarl.api.naming.scheme.NameScheme import io.sarl.sre.internal.SequenceListenerNotifier import io.sarl.sre.internal.SmartListenerCollection -import io.sarl.sre.naming.ContextName -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SarlName -import io.sarl.sre.services.namespace.FieldAccess -import io.sarl.sre.services.namespace.NamespaceService import io.sarl.sre.services.probing.Probe import io.sarl.sre.services.probing.SynchronousProbeService import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension @@ -56,6 +55,7 @@ import static extension org.mockito.ArgumentMatchers.any import static extension org.mockito.Mockito.spy import static extension org.mockito.Mockito.times import static extension org.mockito.Mockito.verify +import io.sarl.api.naming.namespace.NamespaceService /** * @author $Author: sgalland$ @@ -81,7 +81,7 @@ class SynchronousProbeServiceTest { var namespaceService : NamespaceService @Nullable - var nameParser : NameParser + var nameParser : UriBasedNameParser @Nullable var service : SynchronousProbeService @@ -103,7 +103,7 @@ class SynchronousProbeServiceTest { when(this.fieldAccess.name).thenReturn(this.nameObject) this.namespaceService = typeof(NamespaceService).mock when(this.namespaceService.findObject(typeof(SarlName).any)).thenReturn(this.fieldAccess) - this.nameParser = typeof(NameParser).mock + this.nameParser = typeof(UriBasedNameParser).mock when(this.nameParser.normalize(any(typeof(URI)))).thenAnswer[it.getArgument(0) as URI] when(this.nameParser.decode(any(typeof(URI)))).thenAnswer[ if (it.getArgument(0) === this.uri0) { diff --git a/tests/io.sarl.api.naming.tests/pom.xml b/tests/io.sarl.api.naming.tests/pom.xml new file mode 100644 index 0000000000..dd76ff9747 --- /dev/null +++ b/tests/io.sarl.api.naming.tests/pom.xml @@ -0,0 +1,75 @@ + + 4.0.0 + + + io.sarl + io.sarl.tests + 0.12.0-SNAPSHOT + + + io.sarl.api.naming.tests + + Naming API Tests + + + + io.sarl.lang + io.sarl.lang.core + + + io.sarl + io.sarl.tests.api + test + + + io.sarl + io.sarl.api.naming + test + + + + + + + io.sarl.maven + sarl-maven-plugin + + + + sarl-compiler-init + initialize + + initialize + + + + sarl-compiler-testCompile + test-compile + + testCompile + + + + sarl-compiler-clean + clean + + clean + + + + + ${sarl-dsl.min.jdk.version} + ${sarl-dsl.min.jdk.version} + ${project.build.sourceEncoding} + true + true + true + true + + + + + + diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/mocks/BehaviorMock.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/BehaviorMock.sarl similarity index 95% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/mocks/BehaviorMock.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/BehaviorMock.sarl index 03afd10166..a888cc567b 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/mocks/BehaviorMock.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/BehaviorMock.sarl @@ -19,7 +19,7 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming.mocks +package io.sarl.api.naming.tests.mocks import io.sarl.lang.core.Behavior diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/mocks/CapacityMock.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/CapacityMock.sarl similarity index 95% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/mocks/CapacityMock.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/CapacityMock.sarl index 55808727e4..a8e48dc76e 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/mocks/CapacityMock.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/CapacityMock.sarl @@ -19,7 +19,7 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming.mocks +package io.sarl.api.naming.tests.mocks import io.sarl.lang.core.Capacity diff --git a/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/ContextMock.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/ContextMock.sarl new file mode 100644 index 0000000000..455457fb3c --- /dev/null +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/ContextMock.sarl @@ -0,0 +1,34 @@ +/* + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.sarl.api.naming.tests.mocks + +import io.sarl.lang.core.AgentContext + +/** + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + */ +interface ContextMock extends AgentContext { + // +} diff --git a/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/ServiceMock.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/ServiceMock.sarl new file mode 100644 index 0000000000..9a2c89f869 --- /dev/null +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/ServiceMock.sarl @@ -0,0 +1,34 @@ +/* + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.sarl.api.naming.tests.mocks + +import com.google.common.util.concurrent.Service + +/** + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + */ +interface ServiceMock extends Service { + // +} diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/mocks/SkillMock.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/SkillMock.sarl similarity index 95% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/mocks/SkillMock.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/SkillMock.sarl index fe0038c299..28e7135d96 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/mocks/SkillMock.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/mocks/SkillMock.sarl @@ -19,7 +19,7 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming.mocks +package io.sarl.api.naming.tests.mocks import io.sarl.lang.core.Skill diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/AgentNameTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/AgentNameTest.sarl similarity index 83% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/AgentNameTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/AgentNameTest.sarl index 571f2625e4..839206e18e 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/AgentNameTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/AgentNameTest.sarl @@ -19,11 +19,10 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.name +import io.sarl.api.naming.name.AgentName import io.sarl.lang.core.Agent -import io.sarl.sre.naming.AgentName -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension import java.net.URI @@ -36,9 +35,8 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith import static extension io.sarl.tests.api.tools.TestMockito.mock -import static extension org.junit.jupiter.api.Assertions.assertNull -import static extension org.junit.jupiter.api.Assertions.assertSame -import static extension org.mockito.Mockito.spy +import static extension org.junit.jupiter.api.Assertions.* +import static extension org.mockito.Mockito.* /** * @author $Author: sgalland$ @@ -48,13 +46,12 @@ import static extension org.mockito.Mockito.spy */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: AgentName test") +@DisplayName("AgentName") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class AgentNameTest { @Nullable diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/BehaviorNameTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/BehaviorNameTest.sarl similarity index 82% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/BehaviorNameTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/BehaviorNameTest.sarl index 5e8b67b4da..6c902ab75e 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/BehaviorNameTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/BehaviorNameTest.sarl @@ -19,12 +19,11 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.name +import io.sarl.api.naming.tests.mocks.BehaviorMock +import io.sarl.api.naming.name.BehaviorName import io.sarl.lang.core.Behavior -import io.sarl.sre.naming.BehaviorName -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension -import io.sarl.sre.tests.units.naming.mocks.BehaviorMock import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension import java.net.URI @@ -38,9 +37,8 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith import static extension io.sarl.tests.api.tools.TestMockito.mock -import static extension org.junit.jupiter.api.Assertions.assertNull -import static extension org.junit.jupiter.api.Assertions.assertSame -import static extension org.mockito.Mockito.spy +import static extension org.junit.jupiter.api.Assertions.* +import static extension org.mockito.Mockito.* /** * @author $Author: sgalland$ @@ -50,13 +48,12 @@ import static extension org.mockito.Mockito.spy */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: BehaviorName test") +@DisplayName("BehaviorName") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class SkillNameTest { @Nullable @@ -87,7 +84,7 @@ class SkillNameTest { this.agentId = UUID::randomUUID this.^behaviorType = typeof(BehaviorMock) this.behaviorIndex = new Random().nextInt - this.name = (new BehaviorName(this.uri, this.contextId, this.spaceId, this.agentId, this.^behaviorType, + this.name = (new BehaviorName(this.uri, this.contextId, this.spaceId, this.agentId, this.behaviorType, this.behaviorIndex) { }).spy } diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ContextNameTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/ContextNameTest.sarl similarity index 78% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ContextNameTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/ContextNameTest.sarl index 59c510aeae..52394bacf2 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ContextNameTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/ContextNameTest.sarl @@ -19,11 +19,10 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.name -import io.sarl.sre.naming.ContextName -import io.sarl.sre.services.context.Context -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension +import io.sarl.api.naming.tests.mocks.ContextMock +import io.sarl.api.naming.name.ContextName import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension import java.net.URI @@ -36,9 +35,8 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith import static extension io.sarl.tests.api.tools.TestMockito.mock -import static extension org.junit.jupiter.api.Assertions.assertNull -import static extension org.junit.jupiter.api.Assertions.assertSame -import static extension org.mockito.Mockito.spy +import static extension org.junit.jupiter.api.Assertions.* +import static extension org.mockito.Mockito.* /** * @author $Author: sgalland$ @@ -48,13 +46,12 @@ import static extension org.mockito.Mockito.spy */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: ContextName test") +@DisplayName("ContextName") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class ContextNameTest { @Nullable @@ -87,7 +84,7 @@ class ContextNameTest { @Test def setAssociatedContext { - var ctx = typeof(Context).mock + var ctx = typeof(ContextMock).mock this.name.associatedObject = ctx var ref = this.name.associatedObject ctx.assertSame(ref) diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SarlNameTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/SarlNameTest.sarl similarity index 75% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SarlNameTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/SarlNameTest.sarl index 8be55e9d17..bc6458e037 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SarlNameTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/SarlNameTest.sarl @@ -19,11 +19,10 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.name -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SarlName -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.scheme.NameScheme import io.sarl.tests.api.Nullable import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension @@ -34,12 +33,10 @@ import org.junit.jupiter.api.Tag import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith -import static extension io.sarl.tests.api.tools.TestAssertions.assertStrictlyNegative -import static extension io.sarl.tests.api.tools.TestAssertions.assertStrictlyPositive -import static extension io.sarl.tests.api.tools.TestAssertions.assertZero -import static extension org.junit.jupiter.api.Assertions.assertSame -import static extension org.junit.jupiter.api.Assertions.assertTrue -import static extension org.mockito.Mockito.spy +import static extension org.junit.jupiter.api.Assertions.* +import static extension org.mockito.Mockito.* +import static extension io.sarl.tests.api.tools.TestAssertions.* + /** * @author $Author: sgalland$ @@ -49,13 +46,12 @@ import static extension org.mockito.Mockito.spy */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: SarlName test") +@DisplayName("SarlName") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class SarlNameTest { @Nullable @@ -115,4 +111,4 @@ class SarlNameTest { NameScheme::SPACE.assertSame(this.name.scheme) } -} \ No newline at end of file +} diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ServiceNameTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/ServiceNameTest.sarl similarity index 77% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ServiceNameTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/ServiceNameTest.sarl index fae4b746e9..cb4d6d012a 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ServiceNameTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/ServiceNameTest.sarl @@ -19,12 +19,11 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.name import com.google.common.util.concurrent.Service -import io.sarl.sre.naming.ServiceName -import io.sarl.sre.services.logging.LoggingService -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension +import io.sarl.api.naming.tests.mocks.ServiceMock +import io.sarl.api.naming.name.ServiceName import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension import java.net.URI @@ -36,9 +35,8 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith import static extension io.sarl.tests.api.tools.TestMockito.mock -import static extension org.junit.jupiter.api.Assertions.assertNull -import static extension org.junit.jupiter.api.Assertions.assertSame -import static extension org.mockito.Mockito.spy +import static extension org.junit.jupiter.api.Assertions.* +import static extension org.mockito.Mockito.* /** * @author $Author: sgalland$ @@ -48,14 +46,13 @@ import static extension org.mockito.Mockito.spy */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: ContextName test") +@DisplayName("ServiceName") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") -class ContextNameTest { +@Tag("api") +@Tag("api-naming") +class ServiceNameTest { @Nullable var uri : URI @@ -69,7 +66,7 @@ class ContextNameTest { @BeforeEach def setUp : void { this.uri = URI::create("http://www.sarl.io/001#fragment") - this.serviceType = typeof(LoggingService) + this.serviceType = typeof(ServiceMock) this.name = (new ServiceName(this.uri, this.serviceType) { }).spy } diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SkillNameTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/SkillNameTest.sarl similarity index 81% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SkillNameTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/SkillNameTest.sarl index 2f86e081eb..e810a35d35 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SkillNameTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/SkillNameTest.sarl @@ -19,13 +19,12 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.name +import io.sarl.api.naming.tests.mocks.CapacityMock +import io.sarl.api.naming.tests.mocks.SkillMock +import io.sarl.api.naming.name.SkillName import io.sarl.lang.core.Capacity -import io.sarl.sre.naming.SkillName -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension -import io.sarl.sre.tests.units.naming.mocks.CapacityMock -import io.sarl.sre.tests.units.naming.mocks.SkillMock import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension import java.net.URI @@ -38,9 +37,8 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith import static extension io.sarl.tests.api.tools.TestMockito.mock -import static extension org.junit.jupiter.api.Assertions.assertNull -import static extension org.junit.jupiter.api.Assertions.assertSame -import static extension org.mockito.Mockito.spy +import static extension org.junit.jupiter.api.Assertions.* +import static extension org.mockito.Mockito.* /** * @author $Author: sgalland$ @@ -50,13 +48,12 @@ import static extension org.mockito.Mockito.spy */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: SkillName test") +@DisplayName("SkillName") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class SkillNameTest { @Nullable diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SpaceNameTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/SpaceNameTest.sarl similarity index 82% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SpaceNameTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/SpaceNameTest.sarl index 4789ebfa22..5f26e8a076 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SpaceNameTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/name/SpaceNameTest.sarl @@ -19,11 +19,10 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.name +import io.sarl.api.naming.name.SpaceName import io.sarl.lang.core.Space -import io.sarl.sre.naming.SpaceName -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension import java.net.URI @@ -36,9 +35,8 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith import static extension io.sarl.tests.api.tools.TestMockito.mock -import static extension org.junit.jupiter.api.Assertions.assertNull -import static extension org.junit.jupiter.api.Assertions.assertSame -import static extension org.mockito.Mockito.spy +import static extension org.junit.jupiter.api.Assertions.* +import static extension org.mockito.Mockito.* /** * @author $Author: sgalland$ @@ -48,13 +46,12 @@ import static extension org.mockito.Mockito.spy */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: SpaceName test") +@DisplayName("SpaceName") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class SpaceNameTest { @Nullable diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/FieldAccessTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/namespace/FieldAccessTest.sarl similarity index 88% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/FieldAccessTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/namespace/FieldAccessTest.sarl index 83b13be194..1179657e12 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/FieldAccessTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/namespace/FieldAccessTest.sarl @@ -19,11 +19,10 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.services.namespace +package io.sarl.api.naming.tests.namespace -import io.sarl.sre.naming.SarlName -import io.sarl.sre.services.namespace.FieldAccess -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.namespace.FieldAccess import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension import java.lang.reflect.Field @@ -47,13 +46,12 @@ import static extension org.junit.jupiter.api.Assertions.assertSame */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: FieldAccess test") +@DisplayName("FieldAccess") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class FieldAccessTest { private static class ObjectMock { diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/FinderBasedNamespaceServiceTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/namespace/FinderBasedNamespaceServiceTest.sarl similarity index 79% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/FinderBasedNamespaceServiceTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/namespace/FinderBasedNamespaceServiceTest.sarl index b6c5de7f7a..a40f2ec26d 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/services/namespace/FinderBasedNamespaceServiceTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/namespace/FinderBasedNamespaceServiceTest.sarl @@ -19,31 +19,26 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.services.namespace - +package io.sarl.api.naming.tests.namespace + +import io.sarl.api.naming.name.ContextName +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.name.SpaceName +import io.sarl.api.naming.namespace.FieldAccess +import io.sarl.api.naming.namespace.FinderBasedNamespaceService +import io.sarl.api.naming.namespace.INamespaceFinder +import io.sarl.api.naming.parser.ContextSchemeNameParser +import io.sarl.api.naming.parser.INameParser +import io.sarl.api.naming.parser.ISchemeNameParser +import io.sarl.api.naming.parser.UriBasedNameParser +import io.sarl.api.naming.scheme.NameScheme import io.sarl.lang.annotation.PrivateAPI -import io.sarl.sre.naming.ContextName -import io.sarl.sre.naming.ContextSchemeNameParser -import io.sarl.sre.naming.INameParser -import io.sarl.sre.naming.ISchemeNameParser -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.naming.SpaceName -import io.sarl.sre.services.context.Context -import io.sarl.sre.services.context.ContextService -import io.sarl.sre.services.context.SpaceRepository -import io.sarl.sre.services.context.SpaceRepositoryListenerFactory -import io.sarl.sre.services.logging.LoggingService -import io.sarl.sre.services.namespace.ContextNamespaceFinder -import io.sarl.sre.services.namespace.FieldAccess -import io.sarl.sre.services.namespace.FinderBasedNamespaceService -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension +import io.sarl.lang.core.AgentContext import io.sarl.tests.api.Nullable import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension import java.util.Collections import java.util.UUID -import javax.inject.Provider import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Tag @@ -51,15 +46,15 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith import static io.sarl.tests.api.tools.TestAssertions.* -import static org.mockito.ArgumentMatchers.* import static org.mockito.Mockito.* import static extension io.sarl.tests.api.tools.TestMockito.mock +import static extension org.mockito.Mockito.spy import static extension org.junit.jupiter.api.Assertions.assertEquals import static extension org.junit.jupiter.api.Assertions.assertNotNull import static extension org.junit.jupiter.api.Assertions.assertNull import static extension org.junit.jupiter.api.Assertions.assertSame -import static extension org.mockito.Mockito.spy +import io.sarl.api.naming.tests.namespace.mocks.MyContext /** * @author $Author: sgalland$ @@ -69,81 +64,61 @@ import static extension org.mockito.Mockito.spy */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: FinderBasedNamespaceService test") +@DisplayName("FinderBasedNamespaceService") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class FinderBasedNamespaceServiceTest { @Nullable var service : FinderBasedNamespaceService @Nullable - var contextService : ContextService - - @Nullable - var finder : ContextNamespaceFinder - - @Nullable - var nameParser : NameParser + var nameParser : UriBasedNameParser @SuppressWarnings("raw_type") @Nullable var schemeParser : ISchemeNameParser @Nullable - var cid0 : UUID - - @Nullable - var ctx0 : Context + var finder : INamespaceFinder @Nullable - var cid1 : UUID + var cid0 : UUID @Nullable - var ctx1 : Context + var ctx0 : AgentContext @SuppressWarnings("raw_type", "use_reserved_sarl_annotation") @BeforeEach @PrivateAPI(isCallerOnly = true) def setUp : void { - this.contextService = typeof(ContextService).mock + // Default space creation + this.cid0 = UUID::randomUUID + this.ctx0 = new MyContext().spy + this.schemeParser = new ContextSchemeNameParser - this.finder = new ContextNamespaceFinder(this.contextService) - this.service = new FinderBasedNamespaceService - this.nameParser = new NameParser - this.nameParser.schemeNameParsers = Collections::singleton(this.schemeParser) - this.service.nameParser = this.nameParser - this.service.namespaceFinders = Collections::singleton(this.finder) - var spaceRepository = typeof(SpaceRepository).mock - - var logger = typeof(LoggingService).mock - - var listenerFactory = typeof(SpaceRepositoryListenerFactory).mock - + this.nameParser = new UriBasedNameParser + this.nameParser.schemeNameParsers = Collections::singleton(this.schemeParser) - // Default space creation - this.cid0 = UUID::randomUUID - this.ctx0 = new MyContext([spaceRepository], logger, listenerFactory).spy - - // Other space creation - this.cid1 = UUID::randomUUID - this.ctx1 = new MyContext([spaceRepository], logger, listenerFactory).spy - - when(this.contextService.rootContext).thenReturn(this.ctx0) - when(this.contextService.getContext(any(typeof(UUID)))).thenAnswer [ - if (it.getArgument(0) == this.cid0) { - return this.ctx0 - } else if (it.getArgument(0) == this.cid1) { - return this.ctx1 - } else { - return null + this.finder = typeof(INamespaceFinder).mock + when(this.finder.scheme).thenReturn(NameScheme::CONTEXT) + when(this.finder.find(any)).thenAnswer [ + val name : SarlName = it.getArgument(0) + if (name instanceof ContextName) { + if (name.contextId == this.cid0) { + return this.ctx0 + } } + return null ] + + this.service = new FinderBasedNamespaceService + this.service.nameParser = this.nameParser + this.service.namespaceFinders = Collections::singleton(this.finder) } @Test @@ -258,7 +233,7 @@ class FinderBasedNamespaceServiceTest { @Test def findObject_String_Class_00_Context : void { - this.ctx0.assertSame(this.service.findObject("context:" + this.cid0.toString, typeof(Context))) + this.ctx0.assertSame(this.service.findObject("context:" + this.cid0.toString, typeof(AgentContext))) } @Test @@ -276,7 +251,7 @@ class FinderBasedNamespaceServiceTest { var name = typeof(ContextName).mock when(name.scheme).thenReturn(NameScheme::CONTEXT) when(name.contextId).thenReturn(this.cid0) - this.ctx0.assertSame(this.service.findObject(name, typeof(Context))) + this.ctx0.assertSame(this.service.findObject(name, typeof(AgentContext))) } @Test @@ -302,7 +277,7 @@ class FinderBasedNamespaceServiceTest { when(name.contextId).thenReturn(this.cid0) when(name.fragment).thenReturn("myfield") when(name.hasFragment).thenReturn(true) - this.service.findObject(name, typeof(Context)).assertNull + this.service.findObject(name, typeof(AgentContext)).assertNull } @Test @@ -352,7 +327,7 @@ class FinderBasedNamespaceServiceTest { when(name.contextId).thenReturn(this.cid0) when(name.fragment).thenReturn("xyz") when(name.hasFragment).thenReturn(true) - this.service.findObject(name, typeof(Context)).assertNull + this.service.findObject(name, typeof(AgentContext)).assertNull } @Test @@ -389,7 +364,7 @@ class FinderBasedNamespaceServiceTest { def findObject_SarlName_Class_03_Context : void { var name = typeof(SpaceName).mock when(name.scheme).thenReturn(NameScheme::SPACE) - this.service.findObject(name, typeof(Context)).assertNull + this.service.findObject(name, typeof(AgentContext)).assertNull } @Test @@ -412,17 +387,5 @@ class FinderBasedNamespaceServiceTest { when(name.scheme).thenReturn(NameScheme::SPACE) this.service.findObject(name, typeof(Integer)).assertNull } - - private static class MyContext extends Context { - - @SuppressWarnings("unused_private_member") - var myfield : int = 34 - - new(spaceRepositoryProvider : Provider, logger : LoggingService, - listenerFactory : SpaceRepositoryListenerFactory) { - super(null, null, null, spaceRepositoryProvider, logger, listenerFactory) - } - - } } diff --git a/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/namespace/mocks/MyContext.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/namespace/mocks/MyContext.sarl new file mode 100644 index 0000000000..197e85ed68 --- /dev/null +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/namespace/mocks/MyContext.sarl @@ -0,0 +1,75 @@ +/* + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.sarl.api.naming.tests.namespace.mocks + +import io.sarl.lang.core.AgentContext +import io.sarl.lang.core.EventSpace +import io.sarl.lang.core.Space +import io.sarl.lang.core.SpaceSpecification +import java.util.UUID +import java.util.concurrent.ConcurrentLinkedDeque + +/** Mock of an agent context. + * + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + */ +class MyContext implements AgentContext { + + @SuppressWarnings("unused_private_member") + val myfield : int = 34 + + def createSpace(spec : Class>, spaceUUID : UUID, creationParams : Object*) : S with S extends Space { + throw new UnsupportedOperationException + } + + def getDefaultSpace : EventSpace { + throw new UnsupportedOperationException + } + + def getID : UUID { + throw new UnsupportedOperationException + } + + def getOrCreateSpaceWithID(spec : Class>, spaceUUID : UUID, creationParams : Object*) : S with S extends Space { + throw new UnsupportedOperationException + } + + def getOrCreateSpaceWithSpec(spec : Class>, spaceUUID : UUID, creationParams : Object*) : S with S extends Space { + throw new UnsupportedOperationException + } + + def getSpace(spaceUUID : UUID) : S with S extends Space { + throw new UnsupportedOperationException + } + + def getSpaces : ConcurrentLinkedDeque { + throw new UnsupportedOperationException + } + + def getSpaces(spec : Class>) : ConcurrentLinkedDeque with S extends Space { + throw new UnsupportedOperationException + } + +} diff --git a/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AbstractBehaviorSchemeNameParserTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AbstractBehaviorSchemeNameParserTest.sarl new file mode 100644 index 0000000000..16ef13d3ac --- /dev/null +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AbstractBehaviorSchemeNameParserTest.sarl @@ -0,0 +1,157 @@ +/* + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.sarl.api.naming.tests.parser + +import io.sarl.api.naming.name.BehaviorName +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.parser.BehaviorSchemeNameParser +import io.sarl.api.naming.tests.mocks.BehaviorMock +import io.sarl.tests.api.Nullable +import io.sarl.tests.api.extensions.ContextInitExtension +import io.sarl.tests.api.extensions.JavaVersionCheckExtension +import java.net.URI +import java.util.UUID +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Tag +import org.junit.jupiter.api.^extension.ExtendWith + +import static extension io.sarl.tests.api.tools.TestAssertions.assertNullOrEmpty +import static extension org.junit.jupiter.api.Assertions.assertEquals +import static extension org.junit.jupiter.api.Assertions.assertNotNull +import static extension org.junit.jupiter.api.Assertions.assertNull +import io.sarl.api.naming.parser.UriBasedNameParser + +/** + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + */ +@ExtendWith(#[ + typeof(ContextInitExtension), + typeof(JavaVersionCheckExtension) +]) +@Tag("unit") +@Tag("api") +@Tag("api-naming") +abstract class AbstractBehaviorSchemeNameParserTest { + + protected static val CONTEXT_ID = "2a2c6de4-8327-431b-a916-97a05caafe14" + + protected static val SPACE_ID = "bb0d92be-1730-4453-a284-bd66d31b853f" + + protected static val AGENT_ID = "a0875b30-cff3-4461-9b96-f501e6c6a788" + + protected static val BEHAVIOR_ID = typeof(BehaviorMock).name + + protected static val BEHAVIOR_IDX = 8 + + @Nullable + protected var parser : UriBasedNameParser + + private static def m(index : int, e : String*) : String { + val b = new StringBuilder + for (elt : e) { + if (!elt.isNullOrEmpty) { + b.append("/").append(elt) + } + } + if (index >= 0) { + b.append("/").append(index) + } + return b.toString + } + + protected static def assertValid(uri : URI, s : String, fragment : String = null, kindex : int, + elements : String*) : void { + uri.assertNotNull + s.assertEquals(uri.scheme) + m(kindex, elements).assertEquals(uri.path) + if (fragment.isNullOrEmpty) { + uri.fragment.assertNullOrEmpty + } else { + fragment.assertEquals(uri.fragment) + } + uri.host.assertNullOrEmpty + uri.port.assertEquals(-1) + uri.query.assertNullOrEmpty + uri.userInfo.assertNullOrEmpty + } + + protected static def assertValid(name : SarlName, s : String, fragment : String = null, kindex : int, elements : String*) : void { + name.assertNotNull + name.toURI.assertValid(s, fragment, kindex, elements) + if (fragment.isNullOrEmpty) { + name.fragment.assertNullOrEmpty + } else { + fragment.assertEquals(name.fragment) + } + val n = name as BehaviorName + if (n.contextId === null) { + n.contextId.assertNull + n.spaceId.assertNull + elements.get(0).toUUID.assertEquals(n.agentId) + elements.get(1).assertEquals(n.behaviorType.name) + if (elements.length != 2) { + 3.assertEquals(elements.length) + elements.get(2).assertEquals(BEHAVIOR_IDX) + } + } else if (n.spaceId === null) { + elements.get(0).toUUID.assertEquals(n.contextId) + n.spaceId.assertNull + elements.get(1).toUUID.assertEquals(n.agentId) + elements.get(2).assertEquals(n.behaviorType.name) + if (elements.length != 3) { + 4.assertEquals(elements.length) + elements.get(3).assertEquals(BEHAVIOR_IDX) + } + } else { + elements.get(0).toUUID.assertEquals(n.contextId) + elements.get(1).toUUID.assertEquals(n.spaceId) + elements.get(2).toUUID.assertEquals(n.agentId) + elements.get(3).assertEquals(n.behaviorType.name) + if (elements.length != 4) { + 5.assertEquals(elements.length) + elements.get(4).assertEquals(BEHAVIOR_IDX) + } + } + } + + private static def toUUID(s : String) : UUID { + UUID::fromString(s) + } + + protected static def createURI(value : String) : URI { + URI::create(value) + } + + protected def createNormalizedURI(value : String) : URI { + this.parser.normalize(value.createURI) + } + + @BeforeEach + def setUp : void { + this.parser = new UriBasedNameParser() + this.parser.addSchemeNameParser(new BehaviorSchemeNameParser) + } + +} diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/NameParserTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AbstractNameParserTest.sarl similarity index 79% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/NameParserTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AbstractNameParserTest.sarl index e16165c26a..a66002692c 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/NameParserTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AbstractNameParserTest.sarl @@ -19,16 +19,14 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming - -import io.sarl.sre.naming.AgentSchemeNameParser -import io.sarl.sre.naming.BehaviorSchemeNameParser -import io.sarl.sre.naming.ContextSchemeNameParser -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.ServiceSchemeNameParser -import io.sarl.sre.naming.SkillSchemeNameParser -import io.sarl.sre.naming.SpaceSchemeNameParser -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension +package io.sarl.api.naming.tests.parser + +import io.sarl.api.naming.parser.AgentSchemeNameParser +import io.sarl.api.naming.parser.BehaviorSchemeNameParser +import io.sarl.api.naming.parser.ContextSchemeNameParser +import io.sarl.api.naming.parser.ServiceSchemeNameParser +import io.sarl.api.naming.parser.SkillSchemeNameParser +import io.sarl.api.naming.parser.SpaceSchemeNameParser import io.sarl.tests.api.Nullable import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension @@ -40,7 +38,8 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith import static extension java.net.URI.create -import static extension org.junit.jupiter.api.Assertions.assertNull +import static extension org.junit.jupiter.api.Assertions.* +import io.sarl.api.naming.parser.UriBasedNameParser /** * @author $Author: sgalland$ @@ -50,21 +49,20 @@ import static extension org.junit.jupiter.api.Assertions.assertNull */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: base NameParser test") +@DisplayName("URI-based NameParser") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class NameParserTest { @Nullable - var parser : NameParser + var parser : UriBasedNameParser @BeforeEach def setUp : void { - this.parser = new NameParser + this.parser = new UriBasedNameParser() this.parser.addSchemeNameParser(new ServiceSchemeNameParser) this.parser.addSchemeNameParser(new ContextSchemeNameParser) this.parser.addSchemeNameParser(new SpaceSchemeNameParser) diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/AgentSchemeNameParserTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AgentSchemeNameParserTest.sarl similarity index 95% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/AgentSchemeNameParserTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AgentSchemeNameParserTest.sarl index 21294b6033..8968fb4e0b 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/AgentSchemeNameParserTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/AgentSchemeNameParserTest.sarl @@ -19,13 +19,11 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.parser -import io.sarl.sre.naming.AgentName -import io.sarl.sre.naming.AgentSchemeNameParser -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.SarlName -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension +import io.sarl.api.naming.name.AgentName +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.parser.AgentSchemeNameParser import io.sarl.tests.api.Nullable import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension @@ -38,9 +36,8 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith import static extension io.sarl.tests.api.tools.TestAssertions.assertNullOrEmpty -import static extension org.junit.jupiter.api.Assertions.assertEquals -import static extension org.junit.jupiter.api.Assertions.assertNotNull -import static extension org.junit.jupiter.api.Assertions.assertNull +import static extension org.junit.jupiter.api.Assertions.* +import io.sarl.api.naming.parser.UriBasedNameParser /** * @author $Author: sgalland$ @@ -50,13 +47,12 @@ import static extension org.junit.jupiter.api.Assertions.assertNull */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: agent NameParser test") +@DisplayName("Agent NameParser") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class AgentSchemeNameParserTest { protected static val CONTEXT_ID = "2a2c6de4-8327-431b-a916-97a05caafe14" @@ -66,11 +62,11 @@ class AgentSchemeNameParserTest { protected static val AGENT_ID = "a0875b30-cff3-4461-9b96-f501e6c6a788" @Nullable - var parser : NameParser + var parser : UriBasedNameParser @BeforeEach def setUp : void { - this.parser = new NameParser + this.parser = new UriBasedNameParser() this.parser.addSchemeNameParser(new AgentSchemeNameParser) } diff --git a/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserDecodeStringTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserDecodeStringTest.sarl new file mode 100644 index 0000000000..8487bcf4c1 --- /dev/null +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserDecodeStringTest.sarl @@ -0,0 +1,222 @@ +/* + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.sarl.api.naming.tests.parser + +import java.util.stream.Stream +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.Arguments +import org.junit.jupiter.params.provider.MethodSource + +import static extension org.junit.jupiter.api.Assertions.assertNull + +/** + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + */ +@DisplayName("Behavior NameParser decode(String)") +class BehaviorSchemeNameParserDecodeStringTest extends AbstractBehaviorSchemeNameParserTest { + + @ParameterizedTest + @MethodSource + @DisplayName("decode(String)") + def decode_String(source : String, + expectedScheme : String, expectedIndex : int, expectedContext : String, expectedSpace : String) { + val actual = this.parser.decode(source) + if (expectedScheme === null) { + actual.assertNull + } else if (expectedContext === null) { + actual.assertValid(expectedScheme, expectedIndex, AGENT_ID, BEHAVIOR_ID) + } else if (expectedSpace === null) { + actual.assertValid(expectedScheme, expectedIndex, expectedContext, AGENT_ID, BEHAVIOR_ID) + } else { + actual.assertValid(expectedScheme, expectedIndex, expectedContext, expectedSpace, AGENT_ID, BEHAVIOR_ID) + } + } + + @SuppressWarnings("unused_private_member") + private static def decode_String : Stream { + Stream::of( + Arguments::of("behavior:", + null, 0, null, null), + Arguments::of("behavior://" + BEHAVIOR_ID, + null, 0, null, null), + Arguments::of("behavior://" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + + BEHAVIOR_IDX, "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx", + null, 0, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx", + null, 0, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior:/" + BEHAVIOR_ID, + null, 0, null, null), + Arguments::of("behavior:/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID, + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX, + null, 0, null, null) + ) + } + + @ParameterizedTest + @MethodSource + @DisplayName("decode(String+Fragment)") + def decode_StringFragment(source : String, expectedScheme : String, expectedIndex : int, expectedContext : String, expectedSpace : String) { + val actual = this.parser.decode(source) + if (expectedScheme === null) { + actual.assertNull + } else if (expectedContext === null) { + actual.assertValid(expectedScheme, "frag", expectedIndex, AGENT_ID, BEHAVIOR_ID) + } else if (expectedSpace === null) { + actual.assertValid(expectedScheme, "frag", expectedIndex, expectedContext, AGENT_ID, BEHAVIOR_ID) + } else { + actual.assertValid(expectedScheme, "frag", expectedIndex, expectedContext, expectedSpace, AGENT_ID, BEHAVIOR_ID) + } + } + + @SuppressWarnings("unused_private_member") + private static def decode_StringFragment : Stream { + Stream::of( + Arguments::of("behavior:#frag", + null, 0, null, null), + Arguments::of("behavior://" + BEHAVIOR_ID + "#frag", + null, 0, null, null), + Arguments::of("behavior://" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:/" + BEHAVIOR_ID + "#frag", + null, 0, null, null), + Arguments::of("behavior:/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID + "#frag", + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null) + ) + } + +} diff --git a/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserDecodeURITest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserDecodeURITest.sarl new file mode 100644 index 0000000000..0ac538317c --- /dev/null +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserDecodeURITest.sarl @@ -0,0 +1,212 @@ +/* + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.sarl.api.naming.tests.parser + +import java.util.stream.Stream +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.Arguments +import org.junit.jupiter.params.provider.MethodSource + +import static extension org.junit.jupiter.api.Assertions.assertNull + +/** + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + */ +@DisplayName("Behavior NameParser decode(URI)") +class BehaviorSchemeNameParserDecodeURITest extends AbstractBehaviorSchemeNameParserTest { + + @ParameterizedTest + @MethodSource + @DisplayName("decode(URI)") + def decode_URI(source : String, + expectedScheme : String, expectedIndex : int, expectedContext : String, expectedSpace : String) { + val actual = this.parser.decode(source.createNormalizedURI) + if (expectedScheme === null) { + actual.assertNull + } else if (expectedContext === null) { + actual.assertValid(expectedScheme, expectedIndex, AGENT_ID, BEHAVIOR_ID) + } else if (expectedSpace === null) { + actual.assertValid(expectedScheme, expectedIndex, expectedContext, AGENT_ID, BEHAVIOR_ID) + } else { + actual.assertValid(expectedScheme, expectedIndex, expectedContext, expectedSpace, AGENT_ID, BEHAVIOR_ID) + } + } + + @SuppressWarnings("unused_private_member") + private static def decode_URI : Stream { + Stream::of( + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID, + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX, + null, 0, null, null) + ) + } + + @ParameterizedTest + @MethodSource + @DisplayName("decode(URI+Fragment)") + def decode_URIFragment(source : String, expectedScheme : String, expectedIndex : int, expectedContext : String, expectedSpace : String) { + val actual = this.parser.decode(source.createNormalizedURI) + if (expectedScheme === null) { + actual.assertNull + } else if (expectedContext === null) { + actual.assertValid(expectedScheme, "frag", expectedIndex, AGENT_ID, BEHAVIOR_ID) + } else if (expectedSpace === null) { + actual.assertValid(expectedScheme, "frag", expectedIndex, expectedContext, AGENT_ID, BEHAVIOR_ID) + } else { + actual.assertValid(expectedScheme, "frag", expectedIndex, expectedContext, expectedSpace, AGENT_ID, BEHAVIOR_ID) + } + } + + @SuppressWarnings("unused_private_member") + private static def decode_URIFragment : Stream { + Stream::of( + Arguments::of("behavior://" + BEHAVIOR_ID + "#frag", + null, 0, null, null), + Arguments::of("behavior://" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:/" + BEHAVIOR_ID + "#frag", + null, 0, null, null), + Arguments::of("behavior:/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID + "#frag", + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("", + null, 0, null, null), + Arguments::of("", + null, 0, null, null), + Arguments::of("", + null, 0, null, null), + Arguments::of("", + null, 0, null, null), + Arguments::of("", + null, 0, null, null) + ) + } + +} diff --git a/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserNormalizeURITest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserNormalizeURITest.sarl new file mode 100644 index 0000000000..8948f36049 --- /dev/null +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/BehaviorSchemeNameParserNormalizeURITest.sarl @@ -0,0 +1,218 @@ +/* + * $Id$ + * + * SARL is an general-purpose agent programming language. + * More details on http://www.sarl.io + * + * Copyright (C) 2014-2020 the original authors or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.sarl.api.naming.tests.parser + +import java.util.stream.Stream +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.Arguments +import org.junit.jupiter.params.provider.MethodSource + +import static extension org.junit.jupiter.api.Assertions.assertNull + +/** + * @author $Author: sgalland$ + * @version $FullVersion$ + * @mavengroupid $GroupId$ + * @mavenartifactid $ArtifactId$ + */ +@DisplayName("Behavior NameParser normalize(URI)") +class BehaviorSchemeNameParserNormalizeURITest extends AbstractBehaviorSchemeNameParserTest { + + @ParameterizedTest + @MethodSource + @DisplayName("normalize(URI)") + def normalize_URI(source : String, + expectedScheme : String, expectedIndex : int, expectedContext : String, expectedSpace : String) { + val actual = this.parser.normalize(source.createURI) + if (expectedScheme === null) { + actual.assertNull + } else if (expectedContext === null) { + actual.assertValid(expectedScheme, expectedIndex, AGENT_ID, BEHAVIOR_ID) + } else if (expectedSpace === null) { + actual.assertValid(expectedScheme, expectedIndex, expectedContext, AGENT_ID, BEHAVIOR_ID) + } else { + actual.assertValid(expectedScheme, expectedIndex, expectedContext, expectedSpace, AGENT_ID, BEHAVIOR_ID) + } + } + + @SuppressWarnings("unused_private_member") + private static def normalize_URI : Stream { + Stream::of( + Arguments::of("behavior://" + BEHAVIOR_ID, + null, 0, null, null), + Arguments::of("behavior://" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx", + null, 0, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx", + null, 0, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior:/" + BEHAVIOR_ID, + null, 0, null, null), + Arguments::of("behavior:/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID, + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + null, 0, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID, + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX, + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX, + null, 0, null, null) + ) + } + + @ParameterizedTest + @MethodSource + @DisplayName("normalize(URI+Fragment)") + def normalize_URIFragment(source : String, expectedScheme : String, expectedIndex : int, expectedContext : String, expectedSpace : String) { + val actual = this.parser.normalize(source.createURI) + if (expectedScheme === null) { + actual.assertNull + } else if (expectedContext === null) { + actual.assertValid(expectedScheme, "frag", expectedIndex, AGENT_ID, BEHAVIOR_ID) + } else if (expectedSpace === null) { + actual.assertValid(expectedScheme, "frag", expectedIndex, expectedContext, AGENT_ID, BEHAVIOR_ID) + } else { + actual.assertValid(expectedScheme, "frag", expectedIndex, expectedContext, expectedSpace, AGENT_ID, BEHAVIOR_ID) + } + } + + @SuppressWarnings("unused_private_member") + private static def normalize_URIFragment : Stream { + Stream::of( + Arguments::of("behavior://" + BEHAVIOR_ID + "#frag", + null, 0, null, null), + Arguments::of("behavior://" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, null, null), + Arguments::of("behavior://" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior://" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:/" + BEHAVIOR_ID + "#frag", + null, 0, null, null), + Arguments::of("behavior:/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, null, null), + Arguments::of("behavior:/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:/" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID + "#frag", + null, 0, null, null), + Arguments::of("behavior:" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, null, null), + Arguments::of("behavior:" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "#frag", + "behavior", -1, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "#frag", + "behavior", BEHAVIOR_IDX, CONTEXT_ID, SPACE_ID), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/" + BEHAVIOR_IDX + "/xxx#frag", + null, 0, null, null), + Arguments::of("behavior:" + CONTEXT_ID + "/" + SPACE_ID + "/" + AGENT_ID + "/" + BEHAVIOR_ID + "/xxx/" + BEHAVIOR_IDX + "#frag", + null, 0, null, null) + ) + } + +} diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ContextSchemeNameParserTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/ContextSchemeNameParserTest.sarl similarity index 94% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ContextSchemeNameParserTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/ContextSchemeNameParserTest.sarl index a050310e71..1795e08cb6 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ContextSchemeNameParserTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/ContextSchemeNameParserTest.sarl @@ -19,13 +19,11 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.parser -import io.sarl.sre.naming.ContextName -import io.sarl.sre.naming.ContextSchemeNameParser -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.SarlName -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension +import io.sarl.api.naming.name.ContextName +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.parser.ContextSchemeNameParser import io.sarl.tests.api.Nullable import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension @@ -41,6 +39,7 @@ import static extension io.sarl.tests.api.tools.TestAssertions.assertNullOrEmpty import static extension org.junit.jupiter.api.Assertions.assertEquals import static extension org.junit.jupiter.api.Assertions.assertNotNull import static extension org.junit.jupiter.api.Assertions.assertNull +import io.sarl.api.naming.parser.UriBasedNameParser /** * @author $Author: sgalland$ @@ -50,23 +49,22 @@ import static extension org.junit.jupiter.api.Assertions.assertNull */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: context NameParser test") +@DisplayName("Context NameParser") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class ContextSchemeNameParserTest { protected static val CONTEXT_ID = "2a2c6de4-8327-431b-a916-97a05caafe14" @Nullable - var parser : NameParser + var parser : UriBasedNameParser @BeforeEach def setUp : void { - this.parser = new NameParser + this.parser = new UriBasedNameParser() this.parser.addSchemeNameParser(new ContextSchemeNameParser) } diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ServiceSchemeNameParserTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/ServiceSchemeNameParserTest.sarl similarity index 93% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ServiceSchemeNameParserTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/ServiceSchemeNameParserTest.sarl index 0bfa2b7aab..16cb5c63f0 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/ServiceSchemeNameParserTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/ServiceSchemeNameParserTest.sarl @@ -19,14 +19,13 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming - -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.SarlName -import io.sarl.sre.naming.ServiceName -import io.sarl.sre.naming.ServiceSchemeNameParser -import io.sarl.sre.services.logging.LoggingService -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension +package io.sarl.api.naming.tests.parser + +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.name.ServiceName +import io.sarl.api.naming.parser.ServiceSchemeNameParser +import io.sarl.api.naming.parser.UriBasedNameParser +import io.sarl.api.naming.tests.mocks.ServiceMock import io.sarl.tests.api.Nullable import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension @@ -50,23 +49,22 @@ import static extension org.junit.jupiter.api.Assertions.assertNull */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: service NameParser test") +@DisplayName("Service NameParser") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class ServiceSchemeNameParserTest { - val SERVICE_ID = typeof(LoggingService).name + val SERVICE_ID = typeof(ServiceMock).name @Nullable - var parser : NameParser + var parser : UriBasedNameParser @BeforeEach def setUp : void { - this.parser = new NameParser + this.parser = new UriBasedNameParser() this.parser.addSchemeNameParser(new ServiceSchemeNameParser) } diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SkillSchemeNameParserTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/SkillSchemeNameParserTest.sarl similarity index 97% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SkillSchemeNameParserTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/SkillSchemeNameParserTest.sarl index eee71099a0..8adda21819 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SkillSchemeNameParserTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/SkillSchemeNameParserTest.sarl @@ -19,14 +19,13 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming - -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.SarlName -import io.sarl.sre.naming.SkillName -import io.sarl.sre.naming.SkillSchemeNameParser -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension -import io.sarl.sre.tests.units.naming.mocks.CapacityMock +package io.sarl.api.naming.tests.parser + +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.name.SkillName +import io.sarl.api.naming.parser.UriBasedNameParser +import io.sarl.api.naming.parser.SkillSchemeNameParser +import io.sarl.api.naming.tests.mocks.CapacityMock import io.sarl.tests.api.Nullable import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension @@ -51,13 +50,12 @@ import static extension org.junit.jupiter.api.Assertions.assertNull */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: skill NameParser test") +@DisplayName("Skill NameParser") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class SkillSchemeNameParserTest { protected static val CONTEXT_ID = "2a2c6de4-8327-431b-a916-97a05caafe14" @@ -69,11 +67,11 @@ class SkillSchemeNameParserTest { protected static val SKILL_ID = typeof(CapacityMock).name @Nullable - var parser : NameParser + var parser : UriBasedNameParser @BeforeEach def setUp : void { - this.parser = new NameParser + this.parser = new UriBasedNameParser this.parser.addSchemeNameParser(new SkillSchemeNameParser) } diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SpaceSchemeNameParserTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/SpaceSchemeNameParserTest.sarl similarity index 95% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SpaceSchemeNameParserTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/SpaceSchemeNameParserTest.sarl index 4017e00061..aa26a4bf3c 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/SpaceSchemeNameParserTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/parser/SpaceSchemeNameParserTest.sarl @@ -19,13 +19,12 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.parser -import io.sarl.sre.naming.NameParser -import io.sarl.sre.naming.SarlName -import io.sarl.sre.naming.SpaceName -import io.sarl.sre.naming.SpaceSchemeNameParser -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension +import io.sarl.api.naming.name.SarlName +import io.sarl.api.naming.name.SpaceName +import io.sarl.api.naming.parser.UriBasedNameParser +import io.sarl.api.naming.parser.SpaceSchemeNameParser import io.sarl.tests.api.Nullable import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension @@ -50,13 +49,12 @@ import static extension org.junit.jupiter.api.Assertions.assertNull */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: space NameParser test") +@DisplayName("Space NameParser") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") +@Tag("api") +@Tag("api-naming") class SpaceSchemeNameParserTest { protected static val CONTEXT_ID = "2a2c6de4-8327-431b-a916-97a05caafe14" @@ -64,11 +62,11 @@ class SpaceSchemeNameParserTest { protected static val SPACE_ID = "bb0d92be-1730-4453-a284-bd66d31b853f" @Nullable - var parser : NameParser + var parser : UriBasedNameParser @BeforeEach def setUp : void { - this.parser = new NameParser + this.parser = new UriBasedNameParser this.parser.addSchemeNameParser(new SpaceSchemeNameParser) } diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/INameParserTest.sarl b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/scheme/NameSchemesTest.sarl similarity index 67% rename from sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/INameParserTest.sarl rename to tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/scheme/NameSchemesTest.sarl index fc16174d63..425c3db561 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/sarl/io/sarl/sre/tests/units/naming/INameParserTest.sarl +++ b/tests/io.sarl.api.naming.tests/src/test/sarl/io/sarl/api/naming/tests/scheme/NameSchemesTest.sarl @@ -19,11 +19,8 @@ * limitations under the License. */ -package io.sarl.sre.tests.units.naming +package io.sarl.api.naming.tests.scheme -import io.sarl.sre.naming.INameParser -import io.sarl.sre.naming.NameScheme -import io.sarl.sre.test.framework.^extension.PropertyRestoreExtension import io.sarl.tests.api.extensions.ContextInitExtension import io.sarl.tests.api.extensions.JavaVersionCheckExtension import org.junit.jupiter.api.DisplayName @@ -31,8 +28,9 @@ import org.junit.jupiter.api.Tag import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith -import static extension org.junit.jupiter.api.Assertions.assertNull -import static extension org.junit.jupiter.api.Assertions.assertSame +import static extension org.junit.jupiter.api.Assertions.* +import io.sarl.api.naming.scheme.NameSchemes +import io.sarl.api.naming.scheme.NameScheme /** * @author $Author: sgalland$ @@ -42,35 +40,34 @@ import static extension org.junit.jupiter.api.Assertions.assertSame */ @ExtendWith(#[ typeof(ContextInitExtension), - typeof(JavaVersionCheckExtension), - typeof(PropertyRestoreExtension) + typeof(JavaVersionCheckExtension) ]) -@DisplayName("unit: INameParser test") +@DisplayName("NameSchemes") @Tag("unit") -@Tag("janus") -@Tag("sre-unit") -class INameParserTest { +@Tag("api") +@Tag("api-naming") +class NameSchemesTest { @Test def getSchemeObject_String_null { - INameParser::getSchemeObject(null).assertNull + NameSchemes::getSchemeObject(null).assertNull } @Test def getSchemeObject_String_empty { - INameParser::getSchemeObject("").assertNull + NameSchemes::getSchemeObject("").assertNull } @Test def getSchemeObject_String_validScheme { for (expected : NameScheme::values) { - INameParser::getSchemeObject(expected.name.toLowerCase).assertSame(expected) + NameSchemes::getSchemeObject(expected.name.toLowerCase).assertSame(expected) } } @Test def getSchemeObject_String_http { - INameParser::getSchemeObject("http").assertNull + NameSchemes::getSchemeObject("http").assertNull } } diff --git a/tests/pom.xml b/tests/pom.xml index 308e34c8e0..a930614c2a 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -25,6 +25,7 @@ io.sarl.lang.tests io.sarl.util.tests io.sarl.core.tests + io.sarl.api.naming.tests sarl-maven-plugin.tests io.sarl.maven.docs.generator.tests