├── .github
├── CODEOWNERS
└── workflows
│ ├── test.yaml
│ └── uploadAssets.yaml
├── .gitignore
├── .ort.yml
├── .run
├── CService.run.xml
├── HubService.run.xml
├── JobService.run.xml
├── _wait for xyz-job-steps [debug].run.xml
├── jobServiceSetup.run.xml
├── xyz-job-steps [debug].run.xml
└── xyz-job-steps [install].run.xml
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docker-compose-dynamodb.yml
├── docker-compose.yml
├── intellij-style.xml
├── pom.xml
├── xyz-connectors
├── LICENSE
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── com
│ │ └── here
│ │ └── xyz
│ │ └── connectors
│ │ ├── AbstractConnectorHandler.java
│ │ ├── EncryptingProcessorConnector.java
│ │ ├── ErrorResponseException.java
│ │ ├── ListenerConnector.java
│ │ ├── NotificationParams.java
│ │ ├── ProcessorConnector.java
│ │ ├── RelocationClient.java
│ │ ├── StorageConnector.java
│ │ ├── decryptors
│ │ ├── DummyDecryptor.java
│ │ ├── EventDecryptor.java
│ │ ├── KmsEventDecryptor.java
│ │ ├── PrivateKeyEventDecryptor.java
│ │ └── TestDecryptor.java
│ │ └── mocks
│ │ ├── MockedListener.java
│ │ └── MockedProcessor.java
│ └── test
│ └── java
│ └── com
│ └── here
│ └── xyz
│ └── connectors
│ ├── AbstractConnectorHandlerTest.java
│ └── EventDecryptorTest.java
├── xyz-hub-service
├── LICENSE
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ ├── com
│ │ │ └── here
│ │ │ │ └── xyz
│ │ │ │ ├── httpconnector
│ │ │ │ ├── CService.java
│ │ │ │ ├── Config.java
│ │ │ │ ├── PsqlHttpConnectorVerticle.java
│ │ │ │ ├── config
│ │ │ │ │ ├── AwsCWClient.java
│ │ │ │ │ ├── AwsS3Client.java
│ │ │ │ │ ├── DynamoJobConfigClient.java
│ │ │ │ │ ├── JDBCExporter.java
│ │ │ │ │ ├── JDBCImporter.java
│ │ │ │ │ ├── JDBCJobConfigClient.java
│ │ │ │ │ ├── JDBCMaintainer.java
│ │ │ │ │ ├── JobConfigClient.java
│ │ │ │ │ ├── JobS3Client.java
│ │ │ │ │ └── query
│ │ │ │ │ │ ├── ExportSpace.java
│ │ │ │ │ │ ├── ExportSpaceByGeometry.java
│ │ │ │ │ │ └── ExportSpaceByProperties.java
│ │ │ │ ├── rest
│ │ │ │ │ ├── HApiParam.java
│ │ │ │ │ ├── HttpConnectorApi.java
│ │ │ │ │ ├── HttpMaintenanceApi.java
│ │ │ │ │ ├── JobApi.java
│ │ │ │ │ └── JobStatusApi.java
│ │ │ │ ├── task
│ │ │ │ │ ├── JdbcBasedHandler.java
│ │ │ │ │ ├── JobHandler.java
│ │ │ │ │ ├── MaintenanceHandler.java
│ │ │ │ │ └── StatusHandler.java
│ │ │ │ └── util
│ │ │ │ │ ├── Futures.java
│ │ │ │ │ ├── emr
│ │ │ │ │ ├── EMRManager.java
│ │ │ │ │ └── config
│ │ │ │ │ │ ├── EmrConfig.java
│ │ │ │ │ │ └── Step.java
│ │ │ │ │ ├── jobs
│ │ │ │ │ ├── CombinedJob.java
│ │ │ │ │ ├── Export.java
│ │ │ │ │ ├── ExportObject.java
│ │ │ │ │ ├── Import.java
│ │ │ │ │ ├── ImportObject.java
│ │ │ │ │ ├── JDBCBasedJob.java
│ │ │ │ │ ├── Job.java
│ │ │ │ │ ├── RuntimeStatus.java
│ │ │ │ │ ├── outputs
│ │ │ │ │ │ ├── DownloadUrl.java
│ │ │ │ │ │ └── Output.java
│ │ │ │ │ └── validate
│ │ │ │ │ │ └── Validator.java
│ │ │ │ │ ├── scheduler
│ │ │ │ │ ├── ExportQueue.java
│ │ │ │ │ ├── ImportQueue.java
│ │ │ │ │ └── JobQueue.java
│ │ │ │ │ ├── status
│ │ │ │ │ ├── RDSStatus.java
│ │ │ │ │ ├── RunningQueryStatistic.java
│ │ │ │ │ └── RunningQueryStatistics.java
│ │ │ │ │ └── web
│ │ │ │ │ └── LegacyHubWebClient.java
│ │ │ │ └── hub
│ │ │ │ ├── AbstractHttpServerVerticle.java
│ │ │ │ ├── Config.java
│ │ │ │ ├── Service.java
│ │ │ │ ├── XYZHubRESTVerticle.java
│ │ │ │ ├── auth
│ │ │ │ ├── Authorization.java
│ │ │ │ ├── AuthorizationType.java
│ │ │ │ ├── CompositeAuthorizationHandler.java
│ │ │ │ ├── ExtendedJWTAuthHandler.java
│ │ │ │ ├── FeatureAuthorization.java
│ │ │ │ ├── JwtGenerator.java
│ │ │ │ ├── SpaceAuthorization.java
│ │ │ │ ├── XyzAuthProvider.java
│ │ │ │ ├── XyzHubActionMatrix.java
│ │ │ │ ├── XyzHubAttributeMap.java
│ │ │ │ └── XyzHubCompositeAuthorizationHandler.java
│ │ │ │ ├── cache
│ │ │ │ ├── CacheClient.java
│ │ │ │ ├── InMemoryCacheClient.java
│ │ │ │ ├── MultiLevelCacheClient.java
│ │ │ │ ├── NoopCacheClient.java
│ │ │ │ ├── RedisCacheClient.java
│ │ │ │ └── S3CacheClient.java
│ │ │ │ ├── config
│ │ │ │ ├── ConnectorConfigClient.java
│ │ │ │ ├── SettingsConfigClient.java
│ │ │ │ ├── SpaceConfigClient.java
│ │ │ │ ├── SubscriptionConfigClient.java
│ │ │ │ ├── TagConfigClient.java
│ │ │ │ ├── dynamo
│ │ │ │ │ ├── DynamoConnectorConfigClient.java
│ │ │ │ │ ├── DynamoSettingsConfigClient.java
│ │ │ │ │ ├── DynamoSpaceConfigClient.java
│ │ │ │ │ ├── DynamoSubscriptionConfigClient.java
│ │ │ │ │ └── DynamoTagConfigClient.java
│ │ │ │ ├── jdbc
│ │ │ │ │ ├── JDBCConfigClient.java
│ │ │ │ │ ├── JDBCConnectorConfigClient.java
│ │ │ │ │ ├── JDBCSpaceConfigClient.java
│ │ │ │ │ ├── JDBCSubscriptionConfigClient.java
│ │ │ │ │ └── JDBCTagConfigClient.java
│ │ │ │ ├── memory
│ │ │ │ │ ├── InMemConnectorConfigClient.java
│ │ │ │ │ ├── InMemSettingsConfigClient.java
│ │ │ │ │ ├── InMemSpaceConfigClient.java
│ │ │ │ │ └── InMemSubscriptionConfigClient.java
│ │ │ │ └── settings
│ │ │ │ │ ├── EnvironmentVariableOverrides.java
│ │ │ │ │ ├── Setting.java
│ │ │ │ │ ├── SingletonSetting.java
│ │ │ │ │ └── SpaceStorageMatchingMap.java
│ │ │ │ ├── connectors
│ │ │ │ ├── ConfigUpdateThread.java
│ │ │ │ ├── EmbeddedFunctionClient.java
│ │ │ │ ├── HTTPFunctionClient.java
│ │ │ │ ├── LambdaFunctionClient.java
│ │ │ │ ├── RemoteFunctionClient.java
│ │ │ │ ├── RpcClient.java
│ │ │ │ ├── WarmupRemoteFunctionThread.java
│ │ │ │ ├── models
│ │ │ │ │ ├── Connector.java
│ │ │ │ │ └── Space.java
│ │ │ │ ├── statistics
│ │ │ │ │ └── StorageStatisticsProvider.java
│ │ │ │ └── test
│ │ │ │ │ ├── DummyEncryptingPreProcessor.java
│ │ │ │ │ ├── DummyListener.java
│ │ │ │ │ ├── DummyPreProcessor.java
│ │ │ │ │ ├── ErrorPreProcessor.java
│ │ │ │ │ ├── EvalConnector.java
│ │ │ │ │ ├── ExceptionPreProcessor.java
│ │ │ │ │ ├── FailingPreProcessor.java
│ │ │ │ │ ├── InMemoryStorage.java
│ │ │ │ │ ├── MockDelayStorageConnector.java
│ │ │ │ │ └── TestStorageConnector.java
│ │ │ │ ├── rest
│ │ │ │ ├── AdminApi.java
│ │ │ │ ├── Api.java
│ │ │ │ ├── ApiParam.java
│ │ │ │ ├── ApiResponseType.java
│ │ │ │ ├── ChangesetApi.java
│ │ │ │ ├── ConnectorApi.java
│ │ │ │ ├── FeatureApi.java
│ │ │ │ ├── FeatureQueryApi.java
│ │ │ │ ├── HistoryQueryApi.java
│ │ │ │ ├── JobProxyApi.java
│ │ │ │ ├── SpaceApi.java
│ │ │ │ ├── SpaceBasedApi.java
│ │ │ │ ├── SubscriptionApi.java
│ │ │ │ ├── TagApi.java
│ │ │ │ ├── admin
│ │ │ │ │ ├── AdminMessage.java
│ │ │ │ │ ├── MessageBroker.java
│ │ │ │ │ ├── Node.java
│ │ │ │ │ └── messages
│ │ │ │ │ │ ├── BroadcastLog.java
│ │ │ │ │ │ ├── ChangeLogLevelMessage.java
│ │ │ │ │ │ ├── RelayedMessage.java
│ │ │ │ │ │ ├── TestMessage.java
│ │ │ │ │ │ └── brokers
│ │ │ │ │ │ ├── RedisMessageBroker.java
│ │ │ │ │ │ └── SnsMessageBroker.java
│ │ │ │ └── health
│ │ │ │ │ └── HealthApi.java
│ │ │ │ ├── spi
│ │ │ │ └── Modules.java
│ │ │ │ ├── task
│ │ │ │ ├── ConnectorHandler.java
│ │ │ │ ├── FeatureHandler.java
│ │ │ │ ├── FeatureTask.java
│ │ │ │ ├── FeatureTaskHandler.java
│ │ │ │ ├── ModifyFeatureOp.java
│ │ │ │ ├── ModifyOp.java
│ │ │ │ ├── ModifySpaceOp.java
│ │ │ │ ├── SpaceConnectorBasedHandler.java
│ │ │ │ ├── SpaceTask.java
│ │ │ │ ├── SpaceTaskHandler.java
│ │ │ │ ├── SubscriptionHandler.java
│ │ │ │ ├── Task.java
│ │ │ │ └── TaskPipeline.java
│ │ │ │ └── util
│ │ │ │ ├── AtomicUtils.java
│ │ │ │ ├── ByteSizeAware.java
│ │ │ │ ├── LimitedQueue.java
│ │ │ │ ├── diff
│ │ │ │ ├── Difference.java
│ │ │ │ └── Patcher.java
│ │ │ │ ├── geo
│ │ │ │ ├── MapBoxVectorTileBuilder.java
│ │ │ │ ├── MapBoxVectorTileFlattenedBuilder.java
│ │ │ │ └── MvtTileBuilder.java
│ │ │ │ ├── health
│ │ │ │ ├── Config.java
│ │ │ │ ├── GroupedHealthCheck.java
│ │ │ │ ├── MainHealthCheck.java
│ │ │ │ ├── checks
│ │ │ │ │ ├── ClusterHealthCheck.java
│ │ │ │ │ ├── DBHealthCheck.java
│ │ │ │ │ ├── DynamoDBHealthCheck.java
│ │ │ │ │ ├── ExecutableCheck.java
│ │ │ │ │ ├── FunctionCheck.java
│ │ │ │ │ ├── JDBCHealthCheck.java
│ │ │ │ │ ├── MemoryHealthCheck.java
│ │ │ │ │ ├── RedisHealthCheck.java
│ │ │ │ │ ├── RemoteFunctionHealthAggregator.java
│ │ │ │ │ ├── RemoteFunctionHealthCheck.java
│ │ │ │ │ └── ServiceHealthCheck.java
│ │ │ │ └── schema
│ │ │ │ │ ├── Check.java
│ │ │ │ │ ├── HTTPResultMapper.java
│ │ │ │ │ ├── Public.java
│ │ │ │ │ ├── Reporter.java
│ │ │ │ │ ├── Response.java
│ │ │ │ │ ├── ResponseSerializer.java
│ │ │ │ │ └── Status.java
│ │ │ │ └── metrics
│ │ │ │ ├── GcDurationMetric.java
│ │ │ │ ├── GlobalInflightRequestMemory.java
│ │ │ │ ├── GlobalUsedRfcConnections.java
│ │ │ │ ├── MajorGcCountMetric.java
│ │ │ │ ├── MemoryMetric.java
│ │ │ │ ├── base
│ │ │ │ ├── AggregatingMetric.java
│ │ │ │ ├── AttributedMetricCollection.java
│ │ │ │ ├── AttributedMetricCollector.java
│ │ │ │ ├── BareValuesMetric.java
│ │ │ │ ├── CWAggregatedValuesPublisher.java
│ │ │ │ ├── CWAttributedMetricCollectionPublisher.java
│ │ │ │ ├── CWBareValueMetricPublisher.java
│ │ │ │ ├── CloudWatchMetricPublisher.java
│ │ │ │ ├── Metric.java
│ │ │ │ └── MetricPublisher.java
│ │ │ │ └── net
│ │ │ │ ├── ConnectionMetrics.java
│ │ │ │ ├── CurrentTcpConnections.java
│ │ │ │ ├── HttpPoolUtilization.java
│ │ │ │ ├── HttpRequests.java
│ │ │ │ ├── HttpRequestsInflight.java
│ │ │ │ ├── NewTcpConnections.java
│ │ │ │ ├── ResetHttpRequests.java
│ │ │ │ └── TcpErrors.java
│ │ └── io
│ │ │ └── vertx
│ │ │ └── openapi
│ │ │ └── contract
│ │ │ └── MediaType.java
│ └── resources
│ │ ├── META-INF
│ │ └── services
│ │ │ ├── com.here.xyz.httpconnector.util.emr.EMRManager$Provider
│ │ │ ├── com.here.xyz.hub.auth.CompositeAuthorizationHandler
│ │ │ ├── com.here.xyz.hub.config.SpaceConfigClient$Provider
│ │ │ └── com.here.xyz.hub.spi.RestConfiguration
│ │ ├── auth
│ │ ├── dummyJwt.json
│ │ ├── jwt.key
│ │ └── jwt.pub
│ │ ├── build.properties
│ │ ├── config.json
│ │ ├── connector-config.json
│ │ ├── connectors.json
│ │ ├── hub-errors.json
│ │ ├── log4j2-console-json.json
│ │ ├── log4j2-console-plain.json
│ │ ├── log4j2-docker-debug.json
│ │ ├── log4j2-docker-info.json
│ │ ├── log4j2-docker.json
│ │ ├── log4j2.component.properties
│ │ ├── openapi-http-connector.yaml
│ │ ├── openapi-recipes.yaml
│ │ ├── openapi.yaml
│ │ └── settings.json
│ └── test
│ └── java
│ └── com
│ └── here
│ └── xyz
│ └── hub
│ └── errors
│ └── ErrorManagerTest.java
├── xyz-hub-test
├── LICENSE
├── README.md
├── pom.xml
└── src
│ └── test
│ ├── java
│ └── com
│ │ └── here
│ │ └── xyz
│ │ └── hub
│ │ ├── auth
│ │ ├── AuthTestsIT.java
│ │ ├── FeatureApiAuthIT.java
│ │ ├── JWTPayloadTest.java
│ │ ├── TestAuthenticator.java
│ │ └── XyzHubActionMatrixTest.java
│ │ ├── connectors
│ │ ├── ConnectorConfigTest.java
│ │ ├── MockedRemoteFunctionClient.java
│ │ └── RFCMeasurement.java
│ │ ├── rest
│ │ ├── AdminMessagesApiIT.java
│ │ ├── ApiParamTest.java
│ │ ├── ChangesetApiIT.java
│ │ ├── ChangesetCollectionApiIT.java
│ │ ├── ConnectorApiIT.java
│ │ ├── CreateExtensionSpaceIT.java
│ │ ├── CreateSpaceApiIT.java
│ │ ├── DecompressedSizeIT.java
│ │ ├── DeleteFeatureApiIT.java
│ │ ├── DeleteSpaceApiIT.java
│ │ ├── ErrorResponseTestIT.java
│ │ ├── FeatureModificationIT.java
│ │ ├── LimitsTestIT.java
│ │ ├── ListSpaceContentUpdatedAtTestIT.java
│ │ ├── ModifyCompositeSpaceIT.java
│ │ ├── ModifyFeatureCompositeSpaceIT.java
│ │ ├── ModifyLargeDatasetsIT.java
│ │ ├── ModifySpaceApiIT.java
│ │ ├── PropertiesSearch2IT.java
│ │ ├── PropertiesSearchIT.java
│ │ ├── ReadFeatureApiClusteringIT.java
│ │ ├── ReadFeatureApiGeomIT.java
│ │ ├── ReadFeatureApiIT.java
│ │ ├── ReadFeatureVersionRefTest.java
│ │ ├── ReadSpaceApiIT.java
│ │ ├── ReadSpacePerRegionApiIT.java
│ │ ├── RestAssuredConfig.java
│ │ ├── RestAssuredTest.java
│ │ ├── RestTests.java
│ │ ├── SingleChangesetApiIT.java
│ │ ├── SpaceInactiveIT.java
│ │ ├── SpaceStatisticsIT.java
│ │ ├── SpecComplianceApiIT.java
│ │ ├── StorageReportingApiIT.java
│ │ ├── StoreFeaturesApiIT.java
│ │ ├── SubscriptionApiIT.java
│ │ ├── TTLTestsIT.java
│ │ ├── TagApiIT.java
│ │ ├── TagTest.java
│ │ ├── TestCompositeSpace.java
│ │ ├── TestSpaceWithFeature.java
│ │ ├── TestWithSpaceCleanup.java
│ │ ├── TrustedParamsTest.java
│ │ ├── UpdateFeatureApiIT.java
│ │ ├── UpdateSpaceApiIT.java
│ │ ├── VersioningCompositeGetFeaturesIT.java
│ │ ├── VersioningGetFeaturesIT.java
│ │ ├── VersioningIT.java
│ │ ├── VersioningNIT.java
│ │ ├── caching
│ │ │ ├── ImmutableResponseCachingIT.java
│ │ │ └── S3CacheIT.java
│ │ ├── httpconnector
│ │ │ ├── HCDeleteFeatureApiIT.java
│ │ │ ├── HCMaintenanceTestIT.java
│ │ │ ├── HCModifySpaceApiIT.java
│ │ │ ├── HCPropertiesSearch2IT.java
│ │ │ ├── HCPropertiesSearchIT.java
│ │ │ ├── HCReadFeatureApiGeomIT.java
│ │ │ ├── HCReadFeatureApiIT.java
│ │ │ ├── HCStoreFeaturesApiIT.java
│ │ │ └── HCUpdateFeatureApiIT.java
│ │ ├── jobs
│ │ │ ├── JobApiCompositeExportIT.java
│ │ │ ├── JobApiExportIT.java
│ │ │ ├── JobApiExportVersionIT.java
│ │ │ ├── JobApiGeneralIT.java
│ │ │ ├── JobApiIT.java
│ │ │ ├── JobApiImportIT.java
│ │ │ ├── JobDatasetsIT.java
│ │ │ └── ReadOnlyPersistExportIT.java
│ │ └── versioning
│ │ │ ├── VDeleteFeatureApiIT.java
│ │ │ ├── VModifyFeatureCompositeSpaceIT.java
│ │ │ ├── VPropertiesSearch2IT.java
│ │ │ ├── VPropertiesSearchIT.java
│ │ │ ├── VReadFeatureApiGeomIT.java
│ │ │ ├── VReadFeatureApiIT.java
│ │ │ ├── VStoreFeaturesApiIT.java
│ │ │ ├── VUpdateFeatureApiIT.java
│ │ │ └── VersioningBaseIT.java
│ │ ├── task
│ │ └── ModifyFeatureOpTest.java
│ │ ├── throttling
│ │ └── RequesterThrottlingIT.java
│ │ └── util
│ │ ├── CompressionTest.java
│ │ ├── LimitedQueueTest.java
│ │ ├── OpenApiGeneratorTest.java
│ │ └── PerformanceTest.java
│ └── resources
│ ├── auth
│ ├── ACCESS_ADMIN_MESSAGING.json
│ ├── ACCESS_ADMIN_STATISTICS.json
│ ├── ACCESS_ALL.json
│ ├── ACCESS_OWNER_1_ADMIN.json
│ ├── ACCESS_OWNER_1_MANAGE_ALL_SPACES_ONLY.json
│ ├── ACCESS_OWNER_1_MANAGE_PACKAGES_HERE.json
│ ├── ACCESS_OWNER_1_MANAGE_PACKAGES_HERE_OSM.json
│ ├── ACCESS_OWNER_1_MANAGE_PACKAGES_HERE_WITH_OWNER.json
│ ├── ACCESS_OWNER_1_NO_ADMIN.json
│ ├── ACCESS_OWNER_1_READ_ALL_FEATURES.json
│ ├── ACCESS_OWNER_1_READ_PACKAGES_HERE.json
│ ├── ACCESS_OWNER_1_READ_WRITE_PACKAGES_HERE.json
│ ├── ACCESS_OWNER_1_WITH_ACCESS_CONNECTOR_RULE_TAGGER.json
│ ├── ACCESS_OWNER_1_WITH_ANOTHER_LISTENER.json
│ ├── ACCESS_OWNER_1_WITH_FEATURES_MANAGE_ALL_SPACES.json
│ ├── ACCESS_OWNER_1_WITH_FEATURES_ONLY.json
│ ├── ACCESS_OWNER_1_WITH_LIMITS.json
│ ├── ACCESS_OWNER_1_WITH_LISTENER.json
│ ├── ACCESS_OWNER_1_WITH_MANAGE_CONNECTORS_WITH_PREFIX_ID.json
│ ├── ACCESS_OWNER_1_WITH_MANAGE_CONNECTOR_ONE_ID.json
│ ├── ACCESS_OWNER_1_WITH_MANAGE_CONNECTOR_PSQL.json
│ ├── ACCESS_OWNER_1_WITH_MANAGE_OWN_CONNECTORS.json
│ ├── ACCESS_OWNER_1_WITH_MANAGE_SPACES_PACKAGE_HERE.json
│ ├── ACCESS_OWNER_1_WITH_MS_PACKAGE_HERE_AND_MP_OSM.json
│ ├── ACCESS_OWNER_1_WITH_PSQL.json
│ ├── ACCESS_OWNER_1_WITH_USE_CAPABILITIES.json
│ ├── ACCESS_OWNER_1_WITH_USE_CAPABILITIES_AND_ADMIN.json
│ ├── ACCESS_OWNER_2.json
│ ├── ACCESS_OWNER_2_ALL.json
│ ├── ACCESS_OWNER_2_MANAGE_PACKAGES_HERE_OSM.json
│ ├── ACCESS_OWNER_2_WITH_FEATURES_ADMIN_ALL_SPACES.json
│ ├── ACCESS_OWNER_2_WITH_MANAGE_CONNECTORS.json
│ ├── ACCESS_OWNER_3.json
│ ├── ACCESS_OWNER_3_WITH_CUSTOM_SPACE_IDS.json
│ ├── ACCESS_SPACE_1_MANAGE_SPACES.json
│ ├── ACCESS_SPACE_2_MANAGE_SPACES.json
│ ├── CONNECTOR_AUTH_TEST_C1_AND_C2.json
│ ├── NO_ACCESS.json
│ ├── STORAGE_AUTH_TEST_C1_ONLY.json
│ ├── STORAGE_AUTH_TEST_C1_OWNER_AND_ID.json
│ ├── STORAGE_AUTH_TEST_C2_OTHER_OWNER_AND_ID.json
│ ├── STORAGE_AUTH_TEST_C2_OWNER_AND_ID.json
│ ├── STORAGE_AUTH_TEST_C3_OTHER_OWNER_AND_ID.json
│ ├── STORAGE_AUTH_TEST_C3_OWNER_AND_ID.json
│ ├── STORAGE_AUTH_TEST_OTHER_OWNER_ID_ONLY.json
│ ├── STORAGE_AUTH_TEST_OWNER_ID_ONLY.json
│ └── STORAGE_AUTH_TEST_PSQL_ONLY.json
│ ├── mock-servers
│ └── localstack
│ │ └── docker-entrypoint-initaws.d
│ │ └── 01-create-bucket.sh
│ ├── recipes
│ ├── openapi-recipe-contract.yaml
│ ├── openapi-recipe-example.yaml
│ ├── openapi-recipe-experimental.yaml
│ ├── openapi-recipe-stable.yaml
│ └── openapi-recipes-extension-example.yaml
│ └── xyz
│ └── hub
│ ├── auth
│ ├── createCustomIdSpace.json
│ ├── createDefaultSpace.json
│ ├── createPsqlSpace.json
│ ├── createSharedSpace.json
│ ├── createSpaceWithListener.json
│ ├── createSpaceWithListenersObject.json
│ ├── createSpaceWithPackage.json
│ ├── createTestStorageSpace.json
│ ├── createTestStorageSpaceC2.json
│ ├── createTestStorageSpaceC3.json
│ └── createTestStorageSpaceC4.json
│ ├── connectors
│ ├── embeddedConnector.json
│ ├── embeddedConnector2.json
│ ├── embeddedConnectorPatch.json
│ ├── embeddedConnectorReplace.json
│ ├── embeddedConnectorWithExtensionSupport.json
│ ├── embeddedConnectorWithOtherId.json
│ ├── embeddedConnectorWithOwner2.json
│ └── embeddedConnectorWithoutId.json
│ ├── createFeatureById.json
│ ├── createSpace.json
│ ├── createSpacePsql.json
│ ├── createSpaceWithCopyright.json
│ ├── createSpaceWithExceptionPreProcessor.json
│ ├── createSpaceWithExtension.json
│ ├── createSpaceWithFailingAndErrorPreProcessor.json
│ ├── createSpaceWithFailingPreProcessor.json
│ ├── createSpaceWithGlobalVersioning.json
│ ├── createSpaceWithInvalidJson.json
│ ├── createSpaceWithListener.json
│ ├── createSpaceWithNotAllowedStorage.json
│ ├── createSpaceWithProcessor.json
│ ├── createSpaceWithSearchableProperties.json
│ ├── createSpaceWithSearchablePropertiesConnectorC1.json
│ ├── createSpaceWithSortableProperties.json
│ ├── createSpaceWithoutId.json
│ ├── createSubscription.json
│ ├── createSubscriptionWithoutId.json
│ ├── emptyFeatureCollection.json
│ ├── export-version-space-1-ext.jsonl.txt
│ ├── export-version-space-1.jsonl.txt
│ ├── fcWithPoints.json
│ ├── featureWithNumberId.json
│ ├── largeDatasetWith30kFeatures.json
│ ├── mixedGeometryTypes.json
│ ├── patchFeature.json
│ ├── processedData.json
│ ├── publishSpace.json
│ ├── task
│ └── FeatureSample01.json
│ ├── updateFeature.json
│ ├── updateFeatureById.json
│ ├── updateFeatureNonModified.json
│ ├── updateSpace.json
│ ├── updateSpaceWithSearchableProperties.json
│ ├── updateSpaceWithSearchablePropertiesConnectorC1.json
│ └── wrongType.json
├── xyz-jobs
├── README.md
├── pom.xml
├── xyz-job-service
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── bash
│ │ │ └── localSetup.sh
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── here
│ │ │ │ └── xyz
│ │ │ │ └── jobs
│ │ │ │ ├── Job.java
│ │ │ │ ├── JobPlayground.java
│ │ │ │ ├── RuntimeStatus.java
│ │ │ │ ├── config
│ │ │ │ ├── DynamoJobConfigClient.java
│ │ │ │ ├── InMemJobConfigClient.java
│ │ │ │ └── JobConfigClient.java
│ │ │ │ ├── datasets
│ │ │ │ ├── CombinedDatasetDescription.java
│ │ │ │ ├── DatasetDescription.java
│ │ │ │ ├── Datasets.java
│ │ │ │ ├── FileBasedTarget.java
│ │ │ │ ├── FileOutputSettings.java
│ │ │ │ ├── Files.java
│ │ │ │ ├── Identifiable.java
│ │ │ │ ├── Spaces.java
│ │ │ │ ├── VersionedSource.java
│ │ │ │ ├── files
│ │ │ │ │ ├── Csv.java
│ │ │ │ │ ├── FileChunking.java
│ │ │ │ │ ├── FileFormat.java
│ │ │ │ │ ├── FileInputSettings.java
│ │ │ │ │ ├── GeoJson.java
│ │ │ │ │ ├── GeoParquet.java
│ │ │ │ │ └── Partitioning.java
│ │ │ │ ├── filters
│ │ │ │ │ ├── FilteringSource.java
│ │ │ │ │ └── Filters.java
│ │ │ │ └── streams
│ │ │ │ │ ├── DynamicStream.java
│ │ │ │ │ └── Notifications.java
│ │ │ │ ├── processes
│ │ │ │ └── ProcessDescription.java
│ │ │ │ ├── service
│ │ │ │ ├── Config.java
│ │ │ │ ├── JobAdminApi.java
│ │ │ │ ├── JobApi.java
│ │ │ │ ├── JobApiBase.java
│ │ │ │ ├── JobRESTVerticle.java
│ │ │ │ ├── JobRouter.java
│ │ │ │ └── JobService.java
│ │ │ │ ├── steps
│ │ │ │ ├── CompilationStepGraph.java
│ │ │ │ ├── JobCompiler.java
│ │ │ │ ├── StepGraph.java
│ │ │ │ ├── compiler
│ │ │ │ │ ├── ExportToFiles.java
│ │ │ │ │ ├── ImportFromFiles.java
│ │ │ │ │ ├── JobCompilationInterceptor.java
│ │ │ │ │ └── SpaceCopy.java
│ │ │ │ ├── execution
│ │ │ │ │ ├── CleanUpExecutor.java
│ │ │ │ │ ├── GraphFusionTool.java
│ │ │ │ │ ├── GraphTransformer.java
│ │ │ │ │ ├── JobExecutor.java
│ │ │ │ │ └── StateMachineExecutor.java
│ │ │ │ └── resources
│ │ │ │ │ └── ResourcesRegistry.java
│ │ │ │ └── util
│ │ │ │ ├── AsyncS3Client.java
│ │ │ │ └── test
│ │ │ │ └── JobTestBase.java
│ │ └── resources
│ │ │ ├── META-INF
│ │ │ └── services
│ │ │ │ ├── com.here.xyz.jobs.config.JobConfigClient$Provider
│ │ │ │ └── com.here.xyz.jobs.steps.impl.tools.ResourceAndTimeCalculator$Provider
│ │ │ ├── build.properties
│ │ │ ├── job-errors.json
│ │ │ ├── jobs.config.json
│ │ │ ├── log4j2.component.properties
│ │ │ ├── log4j2.json
│ │ │ ├── openapi-recipes.yaml
│ │ │ └── openapi.yaml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── here
│ │ └── xyz
│ │ └── jobs
│ │ ├── CopyJobTestIT.java
│ │ ├── ExportJobTestIT.java
│ │ ├── ImportJobTestIT.java
│ │ ├── JobTest.java
│ │ └── steps
│ │ ├── compiler
│ │ └── ExportToFilesTest.java
│ │ └── execution
│ │ ├── GraphFusionTests.java
│ │ ├── JobExecutorTests.java
│ │ └── fusion
│ │ ├── SimpleTestStep.java
│ │ ├── SimpleTestStepWithOutput.java
│ │ └── TestStep.java
└── xyz-job-steps
│ ├── pom.xml
│ └── src
│ ├── main
│ ├── bash
│ │ ├── deployLocalLambda.sh
│ │ └── environment.json
│ ├── java
│ │ └── com
│ │ │ └── here
│ │ │ └── xyz
│ │ │ └── jobs
│ │ │ ├── JobClientInfo.java
│ │ │ ├── RuntimeInfo.java
│ │ │ ├── datasets
│ │ │ └── filters
│ │ │ │ └── SpatialFilter.java
│ │ │ ├── steps
│ │ │ ├── Config.java
│ │ │ ├── S3DataFile.java
│ │ │ ├── Step.java
│ │ │ ├── StepExecution.java
│ │ │ ├── execution
│ │ │ │ ├── DelegateStep.java
│ │ │ │ ├── JobInternalDelegateStep.java
│ │ │ │ ├── LambdaBasedStep.java
│ │ │ │ ├── RunEmrJob.java
│ │ │ │ ├── StepException.java
│ │ │ │ ├── SyncLambdaStep.java
│ │ │ │ └── db
│ │ │ │ │ ├── Database.java
│ │ │ │ │ ├── DatabaseBasedStep.java
│ │ │ │ │ └── SingleDatabaseSettings.java
│ │ │ ├── impl
│ │ │ │ ├── AnalyzeSpaceTable.java
│ │ │ │ ├── CreateIndex.java
│ │ │ │ ├── DropIndexes.java
│ │ │ │ ├── MarkForMaintenance.java
│ │ │ │ ├── SpaceBasedStep.java
│ │ │ │ ├── tools
│ │ │ │ │ └── ResourceAndTimeCalculator.java
│ │ │ │ └── transport
│ │ │ │ │ ├── CompressFiles.java
│ │ │ │ │ ├── CopySpace.java
│ │ │ │ │ ├── CopySpacePost.java
│ │ │ │ │ ├── CopySpacePre.java
│ │ │ │ │ ├── CountSpace.java
│ │ │ │ │ ├── ExportChangedTiles.java
│ │ │ │ │ ├── ExportSpaceToFiles.java
│ │ │ │ │ ├── ImportFilesToSpace.java
│ │ │ │ │ ├── TaskedSpaceBasedStep.java
│ │ │ │ │ ├── TransportTools.java
│ │ │ │ │ └── tools
│ │ │ │ │ └── ImportFilesQuickValidator.java
│ │ │ ├── inputs
│ │ │ │ ├── Input.java
│ │ │ │ ├── InputFromOutput.java
│ │ │ │ ├── InputsFromJob.java
│ │ │ │ ├── InputsFromS3.java
│ │ │ │ ├── ModelBasedInput.java
│ │ │ │ └── UploadUrl.java
│ │ │ ├── outputs
│ │ │ │ ├── CreatedVersion.java
│ │ │ │ ├── DownloadUrl.java
│ │ │ │ ├── FeatureStatistics.java
│ │ │ │ ├── ModelBasedOutput.java
│ │ │ │ ├── Output.java
│ │ │ │ ├── OutputMetadata.java
│ │ │ │ └── TileInvalidations.java
│ │ │ ├── payloads
│ │ │ │ └── StepPayload.java
│ │ │ └── resources
│ │ │ │ ├── AwsRDSClient.java
│ │ │ │ ├── ExecutionResource.java
│ │ │ │ ├── IOResource.java
│ │ │ │ ├── Load.java
│ │ │ │ └── TooManyResourcesClaimed.java
│ │ │ └── util
│ │ │ ├── AwsClients.java
│ │ │ ├── JobWebClient.java
│ │ │ ├── S3Client.java
│ │ │ ├── S3ClientHelper.java
│ │ │ └── test
│ │ │ ├── ContentCreator.java
│ │ │ └── StepTestBase.java
│ └── resources
│ │ ├── META-INF
│ │ └── services
│ │ │ └── com.here.xyz.jobs.steps.impl.tools.ResourceAndTimeCalculator$Provider
│ │ ├── build.properties
│ │ ├── jobs
│ │ └── transport.sql
│ │ └── log4j2.json
│ └── test
│ ├── java
│ └── com
│ │ └── here
│ │ └── xyz
│ │ └── jobs
│ │ └── steps
│ │ ├── CopySpaceStepsTest.java
│ │ └── impl
│ │ ├── CreateIndexStepTest.java
│ │ ├── DropIndexStepTest.java
│ │ ├── ImportStepTest.java
│ │ ├── StepTest.java
│ │ ├── export
│ │ ├── CompositeExportStepTest.java
│ │ ├── ExportChangedTilesStepTest.java
│ │ ├── ExportStepTest.java
│ │ ├── ExportStepValidationTest.java
│ │ ├── ExportTestBase.java
│ │ └── VersionRefExportStepTest.java
│ │ └── transport
│ │ ├── CompressFilesStepTest.java
│ │ └── QuickValidatorTest.java
│ └── resources
│ ├── testFeatureCollections
│ └── fcWithMixedGeometryTypes.geojson
│ └── testFiles
│ ├── file1.csvgeojson
│ ├── file1.csvwkb
│ ├── file1.geojson
│ ├── file1.geojsonfc
│ ├── file2.csvgeojson
│ ├── file2.csvwkb
│ ├── file2.geojson
│ └── file2.geojsonfc
├── xyz-models
├── LICENSE
├── buildSchemas
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── here
│ │ │ └── xyz
│ │ │ ├── ChangeNotification.java
│ │ │ ├── Extensible.java
│ │ │ ├── FeatureChange.java
│ │ │ ├── LazyParsable.java
│ │ │ ├── Payload.java
│ │ │ ├── Typed.java
│ │ │ ├── XyzSerializable.java
│ │ │ ├── bin
│ │ │ ├── ConnectorPayload.java
│ │ │ └── README
│ │ │ ├── events
│ │ │ ├── ContentModifiedNotification.java
│ │ │ ├── ContextAwareEvent.java
│ │ │ ├── DeleteChangesetsEvent.java
│ │ │ ├── Event.java
│ │ │ ├── EventNotification.java
│ │ │ ├── GetChangesetStatisticsEvent.java
│ │ │ ├── GetFeaturesByBBoxEvent.java
│ │ │ ├── GetFeaturesByGeometryEvent.java
│ │ │ ├── GetFeaturesByIdEvent.java
│ │ │ ├── GetFeaturesByTileEvent.java
│ │ │ ├── GetStatisticsEvent.java
│ │ │ ├── GetStorageStatisticsEvent.java
│ │ │ ├── HealthCheckEvent.java
│ │ │ ├── IterateChangesetsEvent.java
│ │ │ ├── IterateFeaturesEvent.java
│ │ │ ├── LoadFeaturesEvent.java
│ │ │ ├── ModifyFeaturesEvent.java
│ │ │ ├── ModifySpaceEvent.java
│ │ │ ├── ModifySubscriptionEvent.java
│ │ │ ├── OneTimeActionEvent.java
│ │ │ ├── PropertiesQuery.java
│ │ │ ├── PropertyQuery.java
│ │ │ ├── PropertyQueryList.java
│ │ │ ├── RelocatedEvent.java
│ │ │ ├── SearchForFeaturesEvent.java
│ │ │ ├── SelectiveEvent.java
│ │ │ ├── SpatialQueryEvent.java
│ │ │ ├── TransformEvent.java
│ │ │ ├── UpdateStrategy.java
│ │ │ └── WriteFeaturesEvent.java
│ │ │ ├── models
│ │ │ ├── geojson
│ │ │ │ ├── HQuad.java
│ │ │ │ ├── WebMercatorTile.java
│ │ │ │ ├── coordinates
│ │ │ │ │ ├── BBox.java
│ │ │ │ │ ├── JTSHelper.java
│ │ │ │ │ ├── LineStringCoordinates.java
│ │ │ │ │ ├── LinearRingCoordinates.java
│ │ │ │ │ ├── MultiLineStringCoordinates.java
│ │ │ │ │ ├── MultiPointCoordinates.java
│ │ │ │ │ ├── MultiPolygonCoordinates.java
│ │ │ │ │ ├── PointCoordinates.java
│ │ │ │ │ ├── PolygonCoordinates.java
│ │ │ │ │ ├── Position.java
│ │ │ │ │ ├── PositionList.java
│ │ │ │ │ └── WKTHelper.java
│ │ │ │ ├── declaration
│ │ │ │ │ ├── IBoundedCoordinates.java
│ │ │ │ │ └── ILonLat.java
│ │ │ │ ├── exceptions
│ │ │ │ │ └── InvalidGeometryException.java
│ │ │ │ └── implementation
│ │ │ │ │ ├── Feature.java
│ │ │ │ │ ├── FeatureCollection.java
│ │ │ │ │ ├── Geometry.java
│ │ │ │ │ ├── GeometryCollection.java
│ │ │ │ │ ├── GeometryItem.java
│ │ │ │ │ ├── LineString.java
│ │ │ │ │ ├── MultiLineString.java
│ │ │ │ │ ├── MultiPoint.java
│ │ │ │ │ ├── MultiPolygon.java
│ │ │ │ │ ├── Point.java
│ │ │ │ │ ├── Polygon.java
│ │ │ │ │ ├── Properties.java
│ │ │ │ │ └── XyzNamespace.java
│ │ │ └── hub
│ │ │ │ ├── Connector.java
│ │ │ │ ├── ConnectorDeserializer.java
│ │ │ │ ├── ConnectorSerializer.java
│ │ │ │ ├── FeatureModificationList.java
│ │ │ │ ├── Ref.java
│ │ │ │ ├── Space.java
│ │ │ │ ├── Subscription.java
│ │ │ │ ├── Tag.java
│ │ │ │ └── jwt
│ │ │ │ ├── ActionMatrix.java
│ │ │ │ ├── AttributeMap.java
│ │ │ │ ├── JWTPayload.java
│ │ │ │ └── ServiceMatrix.java
│ │ │ ├── responses
│ │ │ ├── BinaryResponse.java
│ │ │ ├── ChangesetsStatisticsResponse.java
│ │ │ ├── CountResponse.java
│ │ │ ├── DetailedErrorResponse.java
│ │ │ ├── ErrorResponse.java
│ │ │ ├── HealthStatus.java
│ │ │ ├── ModifiedEventResponse.java
│ │ │ ├── ModifiedPayloadResponse.java
│ │ │ ├── ModifiedResponseResponse.java
│ │ │ ├── NotModifiedResponse.java
│ │ │ ├── StatisticsResponse.java
│ │ │ ├── StorageStatistics.java
│ │ │ ├── SuccessResponse.java
│ │ │ ├── XyzError.java
│ │ │ ├── XyzResponse.java
│ │ │ ├── changesets
│ │ │ │ ├── Changeset.java
│ │ │ │ └── ChangesetCollection.java
│ │ │ └── maintenance
│ │ │ │ ├── ConnectorStatus.java
│ │ │ │ └── SpaceStatus.java
│ │ │ └── util
│ │ │ ├── Hasher.java
│ │ │ └── KeyValue.java
│ └── resources
│ │ └── ConnectorPayload.fbs
│ └── test
│ ├── java
│ └── com
│ │ └── here
│ │ └── xyz
│ │ ├── JsonMappingTest.java
│ │ ├── SerializationTests.java
│ │ ├── bin
│ │ └── TestConnectorPayload.java
│ │ ├── events
│ │ └── EventTest.java
│ │ ├── models
│ │ └── geojson
│ │ │ ├── HQuadTest.java
│ │ │ ├── WebMercatorTileTest.java
│ │ │ ├── coordinates
│ │ │ └── test
│ │ │ │ ├── BBoxTest.java
│ │ │ │ └── JTSConverterTest.java
│ │ │ └── implementation
│ │ │ ├── LazyParsedFeatureCollectionTest.java
│ │ │ ├── TestClone.java
│ │ │ ├── TestGeometry.java
│ │ │ └── Test_NSxyz.java
│ │ └── responses
│ │ └── TestBinaryResponse.java
│ └── resources
│ └── com
│ └── here
│ └── xyz
│ └── test
│ ├── ErrorAsFeatureCollection.json
│ ├── GetFeaturesByTileEvent.json
│ ├── GetFeaturesByTileEvent2.json
│ ├── GetFeaturesByTileEvent3.json
│ ├── SpaceWithListenersAsList.json
│ ├── SpaceWithListenersAsMap.json
│ ├── SpaceWithListenersInStrangeOrder.json
│ ├── SpaceWithNullListeners.json
│ ├── featureMissingType.json
│ ├── featureWithNumberId.json
│ ├── feature_collection_example.json
│ ├── feature_example.json
│ ├── features_array.jsonl
│ ├── geometries.json
│ ├── nullFeature.json
│ ├── one_feature.json
│ └── processedData.json
├── xyz-psql-connector
├── LICENSE
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── here
│ │ │ └── xyz
│ │ │ └── psql
│ │ │ ├── DatabaseHandler.java
│ │ │ ├── DatabaseMaintainer.java
│ │ │ ├── DatabaseWriter.java
│ │ │ ├── PSQLXyzConnector.java
│ │ │ ├── QueryRunner.java
│ │ │ ├── factory
│ │ │ ├── MaintenanceSQL.java
│ │ │ └── TweaksSQL.java
│ │ │ ├── query
│ │ │ ├── DeleteChangesets.java
│ │ │ ├── ExtendedSpace.java
│ │ │ ├── GetChangesetStatistics.java
│ │ │ ├── GetFastStatistics.java
│ │ │ ├── GetFeatures.java
│ │ │ ├── GetFeaturesByBBox.java
│ │ │ ├── GetFeaturesByBBoxClustered.java
│ │ │ ├── GetFeaturesByBBoxTweaked.java
│ │ │ ├── GetFeaturesByGeometry.java
│ │ │ ├── GetFeaturesByGeometryBuilder.java
│ │ │ ├── GetFeaturesById.java
│ │ │ ├── GetFeaturesByIdsBuilder.java
│ │ │ ├── GetStatistics.java
│ │ │ ├── GetStorageStatistics.java
│ │ │ ├── InlineQueryRunner.java
│ │ │ ├── IterateChangesets.java
│ │ │ ├── IterateFeatures.java
│ │ │ ├── LoadFeatures.java
│ │ │ ├── ModifySpace.java
│ │ │ ├── ModifySubscription.java
│ │ │ ├── SearchForFeatures.java
│ │ │ ├── Spatial.java
│ │ │ ├── WriteFeatures.java
│ │ │ ├── XyzEventBasedQueryRunner.java
│ │ │ ├── XyzQueryRunner.java
│ │ │ ├── bbox
│ │ │ │ └── GetSamplingStrengthEstimation.java
│ │ │ └── helpers
│ │ │ │ ├── FetchExistingIds.java
│ │ │ │ ├── GetIndexList.java
│ │ │ │ ├── GetTablesWithColumn.java
│ │ │ │ ├── GetTablesWithComment.java
│ │ │ │ ├── TableExists.java
│ │ │ │ └── versioning
│ │ │ │ ├── GetHeadVersion.java
│ │ │ │ ├── GetMinAvailableVersion.java
│ │ │ │ ├── GetNextVersion.java
│ │ │ │ └── SetVersion.java
│ │ │ └── tools
│ │ │ └── DhString.java
│ └── resources
│ │ ├── h3Core.sql
│ │ ├── log4j2.properties
│ │ └── xyz_ext.sql
│ └── test
│ ├── java
│ └── com
│ │ └── here
│ │ └── xyz
│ │ └── psql
│ │ ├── PSQLAbstractIT.java
│ │ ├── PSQLConcurrencyIT.java
│ │ ├── PSQLDeleteIT.java
│ │ ├── PSQLExtendedSpacesIT.java
│ │ ├── PSQLHashedSpaceIdIT.java
│ │ ├── PSQLIndexIT.java
│ │ ├── PSQLLoadFeatures.java
│ │ ├── PSQLMetaTableIT.java
│ │ ├── PSQLReadIT.java
│ │ ├── PSQLResponseSizeIT.java
│ │ ├── PSQLSearchIT.java
│ │ ├── PSQLWriteIT.java
│ │ ├── PSQLXyzConnectorIT.java
│ │ ├── PsqlOtaIT.java
│ │ └── tools
│ │ ├── FeatureGenerator.java
│ │ └── Helper.java
│ └── resources
│ └── events
│ ├── BasicSearchByPropertiesAndTagsEvent.json
│ ├── DeleteSpaceEvent.json
│ ├── GetFeaturesByIdEvent.json
│ ├── GetStatisticsEvent.json
│ ├── HealthCheckEvent.json
│ ├── HealthCheckEventWithAutoIndexing.json
│ ├── HealthCheckWithEnableHashedSpaceIdEvent.json
│ ├── InsertFeaturesEvent.json
│ ├── InsertFeaturesEventTransactional.json
│ ├── InsertFeaturesEventWithHash.json
│ ├── InsertFeaturesForSearchTestEvent.json
│ ├── InsertNullGeometry.json
│ ├── IterateMySpace.json
│ ├── LoadFeaturesEvent.json
│ ├── SearchForFeaturesByPropertiesEvent.json
│ ├── SearchForFeaturesEvent.json
│ ├── TestCreateTable.json
│ └── UpsertFeaturesEvent.json
├── xyz-util
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── here
│ │ │ └── xyz
│ │ │ ├── psql
│ │ │ └── query
│ │ │ │ ├── QueryBuilder.java
│ │ │ │ └── XyzQueryBuilder.java
│ │ │ └── util
│ │ │ ├── ARN.java
│ │ │ ├── Async.java
│ │ │ ├── Compression.java
│ │ │ ├── Random.java
│ │ │ ├── db
│ │ │ ├── ConnectorParameters.java
│ │ │ ├── ECPSTool.java
│ │ │ ├── JdbcClient.java
│ │ │ ├── SQLQuery.java
│ │ │ ├── datasource
│ │ │ │ ├── CachedPooledDataSources.java
│ │ │ │ ├── DataSourceProvider.java
│ │ │ │ ├── DatabaseSettings.java
│ │ │ │ ├── PooledDataSources.java
│ │ │ │ └── StaticDataSources.java
│ │ │ └── pg
│ │ │ │ ├── IndexHelper.java
│ │ │ │ ├── LockHelper.java
│ │ │ │ ├── SQLError.java
│ │ │ │ ├── Script.java
│ │ │ │ └── XyzSpaceTableHelper.java
│ │ │ ├── di
│ │ │ ├── ImplementationInstanceProvider.java
│ │ │ └── ImplementationProvider.java
│ │ │ ├── geo
│ │ │ ├── GeoTools.java
│ │ │ └── GeometryValidator.java
│ │ │ ├── openapi
│ │ │ └── OpenApiGenerator.java
│ │ │ ├── runtime
│ │ │ ├── FunctionRuntime.java
│ │ │ └── LambdaFunctionRuntime.java
│ │ │ ├── service
│ │ │ ├── AbstractRouterBuilder.java
│ │ │ ├── BaseConfig.java
│ │ │ ├── BaseHttpServerVerticle.java
│ │ │ ├── ConfigDecryptor.java
│ │ │ ├── Core.java
│ │ │ ├── HttpException.java
│ │ │ ├── Initializable.java
│ │ │ ├── aws
│ │ │ │ ├── AwsSecretManagerClient.java
│ │ │ │ ├── S3ObjectSummary.java
│ │ │ │ ├── S3Uri.java
│ │ │ │ ├── SecretManagerCredentialsProvider.java
│ │ │ │ ├── SimulatedContext.java
│ │ │ │ └── dynamo
│ │ │ │ │ ├── DynamoClient.java
│ │ │ │ │ └── IndexDefinition.java
│ │ │ ├── errors
│ │ │ │ ├── DetailedHttpException.java
│ │ │ │ ├── ErrorDefinition.java
│ │ │ │ └── ErrorManager.java
│ │ │ ├── logging
│ │ │ │ ├── AccessLog.java
│ │ │ │ └── LogUtil.java
│ │ │ └── rest
│ │ │ │ ├── Api.java
│ │ │ │ └── TooManyRequestsException.java
│ │ │ └── web
│ │ │ ├── HubWebClient.java
│ │ │ ├── HubWebClientAsync.java
│ │ │ └── XyzWebClient.java
│ └── resources
│ │ ├── docker
│ │ ├── Dockerfile
│ │ ├── Dockerfile-job-service
│ │ ├── Dockerfile-postgres
│ │ ├── Dockerfile-postgres.v17
│ │ └── Dockerfile-s3-explorer
│ │ └── sql
│ │ ├── Exception.js
│ │ ├── FeatureWriter.js
│ │ ├── README.md
│ │ ├── common.sql
│ │ ├── feature_writer.sql
│ │ └── geo.sql
│ └── test
│ ├── java
│ └── com
│ │ └── here
│ │ └── xyz
│ │ ├── test
│ │ ├── AsyncTest.java
│ │ ├── EcpsTest.java
│ │ ├── SQLGeoQuadFunctions.java
│ │ ├── SQLGeoTileCalculationsFunctions.java
│ │ ├── SQLITBase.java
│ │ ├── SQLQueryIT.java
│ │ ├── SQLScriptsIT.java
│ │ ├── featurewriter
│ │ │ ├── SpaceWriter.java
│ │ │ ├── TestSuite.java
│ │ │ ├── rest
│ │ │ │ ├── RestSpaceWriter.java
│ │ │ │ ├── RestTestSuite.java
│ │ │ │ ├── composite
│ │ │ │ │ ├── history
│ │ │ │ │ │ ├── HubComposite_DEFAULT_WithHistoryTestSuiteIT.java
│ │ │ │ │ │ ├── HubComposite_EXTENSION_WithHistoryTestSuiteIT.java
│ │ │ │ │ │ └── HubComposite_SUPER_WithHistoryTestSuiteIT.java
│ │ │ │ │ └── nohistory
│ │ │ │ │ │ ├── HubComposite_DEFAULT_NoHistoryTestSuiteIT.java
│ │ │ │ │ │ ├── HubComposite_EXTENSION_NoHistoryTestSuiteIT.java
│ │ │ │ │ │ └── HubComposite_SUPER_NoHistoryTestSuiteIT.java
│ │ │ │ └── noncomposite
│ │ │ │ │ ├── history
│ │ │ │ │ └── HubNonCompositeWithHistoryTestSuiteIT.java
│ │ │ │ │ └── nohistory
│ │ │ │ │ └── HubNonCompositeNoHistoryTestSuiteIT.java
│ │ │ └── sql
│ │ │ │ ├── SQLSpaceWriter.java
│ │ │ │ ├── SQLTestSuite.java
│ │ │ │ ├── composite
│ │ │ │ ├── history
│ │ │ │ │ ├── SQLComposite_DEFAULT_WithHistoryTestSuiteIT.java
│ │ │ │ │ ├── SQLComposite_EXTENSION_WithHistoryTestSuiteIT.java
│ │ │ │ │ └── SQLComposite_SUPER_WithHistoryTestSuiteIT.java
│ │ │ │ └── nohistory
│ │ │ │ │ ├── SQLComposite_DEFAULT_NoHistoryTestSuiteIT.java
│ │ │ │ │ ├── SQLComposite_EXTENSION_NoHistoryTestSuiteIT.java
│ │ │ │ │ └── SQLComposite_SUPER_NoHistoryTestSuiteIT.java
│ │ │ │ └── noncomposite
│ │ │ │ ├── history
│ │ │ │ └── SQLNonCompositeWithHistoryTestSuiteIT.java
│ │ │ │ └── nohistory
│ │ │ │ └── SQLNonCompositeNoHistoryTestSuiteIT.java
│ │ └── util
│ │ │ └── geo
│ │ │ └── GeometryValidatorIT.java
│ │ └── util
│ │ ├── db
│ │ └── SQLQueryUnitTests.java
│ │ └── service
│ │ └── aws
│ │ └── S3UriTest.java
│ ├── js
│ ├── db
│ │ └── featurewriter
│ │ │ ├── JsSpaceWriter.js
│ │ │ └── TestFeatureWriter.js
│ ├── package.json
│ └── plv8.js
│ └── resources
│ ├── functions0
│ └── functions.sql
│ ├── functions2
│ └── functions.sql
│ ├── junit-platform.properties
│ └── sqlSamples
│ └── functions.sql
└── xyz.svg
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @heremaps/xyz-hub
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | *.iws
3 | *.ipr
4 | .vertx/
5 | .idea/
6 | target/
7 | file-uploads/
8 | release.properties
--------------------------------------------------------------------------------
/.run/CService.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.run/JobService.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/.run/_wait for xyz-job-steps [debug].run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/.run/xyz-job-steps [debug].run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Introduction
2 |
3 | The team behind the [XYZ Hub](https://github.com/heremaps/xyz-hub) gratefully accepts contributions via
4 | [pull requests](https://help.github.com/articles/about-pull-requests/) filed against the
5 | [GitHub project](https://github.com/heremaps/xyz-hub/pulls).
6 |
7 | # Signing each Commit
8 |
9 | As part of filing a pull request we ask you to sign off the
10 | [Developer Certificate of Origin](https://developercertificate.org/) (DCO) in each commit.
11 | Any Pull Request with commits that are not signed off will be reject by the
12 | [DCO check](https://probot.github.io/apps/dco/).
13 |
14 | A DCO is lightweight way for a contributor to confirm that you wrote or otherwise have the right
15 | to submit code or documentation to a project. Simply add `Signed-off-by` as shown in the example below
16 | to indicate that you agree with the DCO.
17 |
18 | An example signed commit message:
19 |
20 | ```
21 | README.md: Fix minor spelling mistake
22 |
23 | Signed-off-by: John Doe
24 | ```
25 |
26 | Git has the `-s` flag that can sign a commit for you, see example below:
27 |
28 | `$ git commit -s -m 'README.md: Fix minor spelling mistake'`
29 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/httpconnector/util/Futures.java:
--------------------------------------------------------------------------------
1 | package com.here.xyz.httpconnector.util;
2 |
3 | import io.vertx.core.Future;
4 |
5 | /**
6 | * Some utility methods to work with Futures.
7 | */
8 | public class Futures {
9 |
10 | public static Future futurify(ThrowingMapper mapper) {
11 | try {
12 | return Future.succeededFuture(mapper.map());
13 | }
14 | catch (Exception e) {
15 | return Future.failedFuture(e);
16 | }
17 | }
18 |
19 | @FunctionalInterface
20 | public interface ThrowingMapper {
21 | F map() throws Exception;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/httpconnector/util/emr/config/EmrConfig.java:
--------------------------------------------------------------------------------
1 | package com.here.xyz.httpconnector.util.emr.config;
2 |
3 | import com.here.xyz.XyzSerializable;
4 | import java.util.List;
5 |
6 | public class EmrConfig implements XyzSerializable {
7 | private List steps;
8 |
9 | public List getSteps() {
10 | return steps;
11 | }
12 |
13 | public void setSteps(List steps) {
14 | this.steps = steps;
15 | }
16 |
17 | public EmrConfig withSteps(List steps) {
18 | setSteps(steps);
19 | return this;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/httpconnector/util/jobs/JDBCBasedJob.java:
--------------------------------------------------------------------------------
1 | package com.here.xyz.httpconnector.util.jobs;
2 |
3 | import static io.netty.handler.codec.http.HttpResponseStatus.BAD_GATEWAY;
4 |
5 | import com.here.xyz.httpconnector.task.StatusHandler;
6 | import com.here.xyz.util.service.HttpException;
7 | import io.vertx.core.Future;
8 |
9 | public abstract class JDBCBasedJob extends Job {
10 |
11 | @Override
12 | public Future executeAbort() {
13 | return super.executeAbort()
14 | //Job will fail - because SQL Queries are getting terminated
15 | .compose(job -> StatusHandler.getInstance().abortJob(this),
16 | e -> Future.failedFuture(new HttpException(BAD_GATEWAY, "Abort failed [" + getStatus() + "]")))
17 | .map(v -> this);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/auth/AuthorizationType.java:
--------------------------------------------------------------------------------
1 | package com.here.xyz.hub.auth;
2 |
3 | public enum AuthorizationType {
4 | JWT,
5 | DUMMY
6 | }
7 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/auth/CompositeAuthorizationHandler.java:
--------------------------------------------------------------------------------
1 | package com.here.xyz.hub.auth;
2 |
3 | import io.vertx.core.Future;
4 | import io.vertx.ext.web.RoutingContext;
5 |
6 | public interface CompositeAuthorizationHandler {
7 | Future authorize(RoutingContext context);
8 | }
9 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/auth/XyzHubCompositeAuthorizationHandler.java:
--------------------------------------------------------------------------------
1 | package com.here.xyz.hub.auth;
2 |
3 | import io.vertx.core.Future;
4 | import io.vertx.ext.web.RoutingContext;
5 |
6 | public class XyzHubCompositeAuthorizationHandler implements CompositeAuthorizationHandler {
7 |
8 | public Future authorize(RoutingContext context) {
9 | return Future.succeededFuture(true);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/cache/CacheClient.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2023 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 |
20 | package com.here.xyz.hub.cache;
21 |
22 | import io.vertx.core.Future;
23 |
24 | public interface CacheClient {
25 |
26 | Future get(String key);
27 |
28 | /**
29 | *
30 | * @param key
31 | * @param value
32 | * @param ttl The live time of the cache-record in seconds
33 | */
34 | void set(String key, byte[] value, long ttl);
35 |
36 | void remove(String key);
37 |
38 | void shutdown();
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/cache/NoopCacheClient.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2023 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 |
20 | package com.here.xyz.hub.cache;
21 |
22 | import io.vertx.core.Future;
23 |
24 | public class NoopCacheClient implements CacheClient {
25 |
26 | @Override
27 | public Future get(String key) {
28 | return Future.succeededFuture(null);
29 | }
30 |
31 | @Override
32 | public void set(String key, byte[] value, long ttl) {
33 | }
34 |
35 | @Override
36 | public void remove(String key) {
37 | }
38 |
39 | @Override
40 | public void shutdown() {
41 | //Nothing to do.
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/connectors/test/DummyEncryptingPreProcessor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2020 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 |
20 | package com.here.xyz.hub.connectors.test;
21 |
22 | import com.here.xyz.connectors.EncryptingProcessorConnector;
23 |
24 | public class DummyEncryptingPreProcessor extends EncryptingProcessorConnector {
25 |
26 | /**
27 | * Default constructor to set the needed values for automatic encryption.
28 | */
29 | public DummyEncryptingPreProcessor() {
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/connectors/test/DummyListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2019 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 |
20 | package com.here.xyz.hub.connectors.test;
21 |
22 | import com.here.xyz.connectors.ListenerConnector;
23 |
24 | // TODO move this class and the com.here.xyz.hub.connectors.test.DummyPreProcessor to a separate TEST connector lib
25 | public class DummyListener extends ListenerConnector {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/connectors/test/DummyPreProcessor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2019 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 |
20 | package com.here.xyz.hub.connectors.test;
21 |
22 | import com.here.xyz.connectors.NotificationParams;
23 | import com.here.xyz.connectors.ProcessorConnector;
24 | import com.here.xyz.events.ModifySpaceEvent;
25 |
26 | public class DummyPreProcessor extends ProcessorConnector {
27 | @Override
28 | protected ModifySpaceEvent processModifySpace(ModifySpaceEvent event, NotificationParams notificationParams) {
29 | return event;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/connectors/test/ExceptionPreProcessor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2019 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 |
20 | package com.here.xyz.hub.connectors.test;
21 |
22 | import com.here.xyz.connectors.NotificationParams;
23 | import com.here.xyz.connectors.ProcessorConnector;
24 | import com.here.xyz.events.ModifyFeaturesEvent;
25 |
26 | public class ExceptionPreProcessor extends ProcessorConnector {
27 | @Override
28 | protected ModifyFeaturesEvent processModifyFeatures(ModifyFeaturesEvent event, NotificationParams notificationParams) throws Exception {
29 | throw new Exception("Foo");
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/rest/HistoryQueryApi.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/heremaps/xyz-hub/5a632e298bb1202ebf86fcde028f6f615f17f9dc/xyz-hub-service/src/main/java/com/here/xyz/hub/rest/HistoryQueryApi.java
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/spi/Modules.java:
--------------------------------------------------------------------------------
1 | package com.here.xyz.hub.spi;
2 |
3 | import com.here.xyz.hub.auth.CompositeAuthorizationHandler;
4 | import java.util.Optional;
5 | import java.util.ServiceLoader;
6 | import java.util.ServiceLoader.Provider;
7 | import org.apache.logging.log4j.LogManager;
8 | import org.apache.logging.log4j.Logger;
9 |
10 | public final class Modules {
11 | private static final Logger logger = LogManager.getLogger();
12 | private static final CompositeAuthorizationHandler authorizationHandlerInstance = load(CompositeAuthorizationHandler.class);
13 |
14 |
15 | public static CompositeAuthorizationHandler getCompositeAuthorizationHandler() {
16 | return authorizationHandlerInstance;
17 | }
18 |
19 | private static T load(Class klass) {
20 | ServiceLoader loader = ServiceLoader.load(klass);
21 | Optional> optionalProvider = loader.stream().findFirst();
22 |
23 | if (optionalProvider.isEmpty()) {
24 | logger.fatal("Module not present: " + klass);
25 | throw new RuntimeException();
26 | }
27 |
28 | return optionalProvider.get().get();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/util/ByteSizeAware.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2019 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 |
20 | package com.here.xyz.hub.util;
21 |
22 | public interface ByteSizeAware {
23 | long getByteSize();
24 | }
25 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/util/health/checks/ClusterHealthCheck.java:
--------------------------------------------------------------------------------
1 | package com.here.xyz.hub.util.health.checks;
2 |
3 | import static com.here.xyz.hub.util.health.schema.Status.Result.ERROR;
4 | import static com.here.xyz.hub.util.health.schema.Status.Result.OK;
5 |
6 | import com.here.xyz.hub.rest.admin.Node;
7 | import com.here.xyz.hub.util.health.schema.Response;
8 | import com.here.xyz.hub.util.health.schema.Status;
9 |
10 | public class ClusterHealthCheck extends ExecutableCheck {
11 |
12 | public ClusterHealthCheck() {
13 | setName("Cluster");
14 | setTarget(Target.REMOTE);
15 | }
16 |
17 | @Override
18 | public Status execute() {
19 | Status s = new Status().withResult(OK);
20 | Response r = new Response();
21 | try {
22 | r.setAdditionalProperty("nodes", Node.getClusterNodes());
23 | s.setResult(OK);
24 | }
25 | catch (Exception e) {
26 | r.setMessage("Error: " + e.getMessage());
27 | s.setResult(ERROR);
28 | }
29 | setResponse(r);
30 | return s;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/util/health/checks/DBHealthCheck.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2019 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 | package com.here.xyz.hub.util.health.checks;
20 |
21 | import java.net.URI;
22 |
23 | public abstract class DBHealthCheck extends ExecutableCheck {
24 |
25 | public DBHealthCheck(URI connectionString) {
26 | this.connectionString = connectionString;
27 | setTarget(Target.REMOTE);
28 | setRole(Role.DATABASE);
29 | }
30 |
31 | public URI connectionString;
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/util/health/schema/HTTPResultMapper.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2019 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 | package com.here.xyz.hub.util.health.schema;
20 |
21 | import com.fasterxml.jackson.annotation.JsonIgnore;
22 | import java.net.HttpURLConnection;
23 |
24 | public interface HTTPResultMapper {
25 |
26 | Status.Result getResult();
27 |
28 | @JsonIgnore
29 | default int getSuggestedHTTPStatusCode() {
30 | switch (getResult()) {
31 | case OK:
32 | case WARNING:
33 | return HttpURLConnection.HTTP_OK;
34 | case UNKNOWN:
35 | default:
36 | case UNAVAILABLE:
37 | case ERROR:
38 | case CRITICAL:
39 | case MAINTENANCE:
40 | return HttpURLConnection.HTTP_UNAVAILABLE;
41 | }
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/util/health/schema/Public.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2019 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 | package com.here.xyz.hub.util.health.schema;
20 |
21 | public class Public {
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/util/metrics/MemoryMetric.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2021 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 |
20 | package com.here.xyz.hub.util.metrics;
21 |
22 | import static com.here.xyz.hub.util.metrics.base.Metric.MetricUnit.PERCENT;
23 |
24 | import com.here.xyz.hub.Service;
25 | import com.here.xyz.hub.util.metrics.base.BareValuesMetric;
26 | import java.util.Collection;
27 | import java.util.Collections;
28 |
29 | public class MemoryMetric extends BareValuesMetric {
30 |
31 | public MemoryMetric(String metricName) {
32 | super(metricName, PERCENT);
33 | }
34 |
35 | @Override
36 | protected Collection gatherValues() {
37 | return Collections.singleton((double) Service.getUsedMemoryPercent());
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/xyz-hub-service/src/main/java/com/here/xyz/hub/util/metrics/base/AttributedMetricCollector.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017-2021 HERE Europe B.V.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | * SPDX-License-Identifier: Apache-2.0
17 | * License-Filename: LICENSE
18 | */
19 |
20 | package com.here.xyz.hub.util.metrics.base;
21 |
22 | import com.here.xyz.hub.util.metrics.base.AttributedMetricCollection.Attribute;
23 | import java.util.Collection;
24 | import java.util.Map;
25 |
26 | public abstract class AttributedMetricCollector extends Metric