You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eventmesh.apache.org by mi...@apache.org on 2024/05/31 09:03:51 UTC
(eventmesh) branch master updated: Merge EventMesh function branch to master (#4941)
This is an automated email from the ASF dual-hosted git repository.
mikexue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/eventmesh.git
The following commit(s) were added to refs/heads/master by this push:
new f7a9517bf Merge EventMesh function branch to master (#4941)
f7a9517bf is described below
commit f7a9517bf47c0e2319973e31f57361428dd571bf
Author: mike_xwm <mi...@126.com>
AuthorDate: Fri May 31 17:03:45 2024 +0800
Merge EventMesh function branch to master (#4941)
* EventMesh function admin (#4851)
* own
* dependency
* finish registry
* EventMesh function admin (#4853)
* own
* dependency
* finish registry
* init
* Eventmesh function admin (#4854)
* own
* dependency
* finish registry
* init
* 0419
* 0419
* more discovery and move gRPC
* fix dependency
* EventMesh function connector runtime (#4858)
* [ISSUE #4812] Set up Admin Endpoints v2 (#4813)
* Remove redundant overloaded methods
* Simplify write() result param
* Add writeJson(); Add PUT; Add JavaDoc
* Rename EventHttpHandler to EventMeshHttpHandler
* Correct server thread name
* Clean up messy & non-hierarchical overloading
* No need to set headers manually any more
* Set up v1&v2 endpoints
* Set up v1&v2 response dto
* Introduce fastjson2
* Fix fastjson2 "level too large : 2048" error caused by IPAddress
* Correct @ConfigField naming
* Return properties format json key
* Add format option to query string
* Introduce Result
* Reduce duplicate builder code
* Fix all checkstyle warnings in eventmesh-runtime
* Add known dependency
* [ISSUE #4814] Migrate from fastjson 1.2.83 to fastjson2 (#4819)
* [Enhancement] Migrate from fastjson 1.2.83 to fastjson2 #4814
* fix_dependencies_problem
* fix_check
* [ISSUE #4551] modify the logic of time-consumption statistics (#4822)
* init connector runtime v2
* [ISSUE #4804] Fix SubStreamHandler exception loop by closeOnError (#4807)
* Handle exception loop by closeOnError
* Lombok optimization
* some format optimization
* Avoid closing multiple times
* Remove redundant set null
* Revert "Avoid closing multiple times"
This reverts commit 774397fcae4905dc0ec8230eab18bf655f202e8f.
* Use synchronized latch to keep senderOnComplete called once
* Use boolean to prevent latch called by somebody else
* Remove the unique callee/caller close() of onCompleted()
* [ISSUE #4838] Deprecate unused `eventMesh.connector.plugin.type` etc. properties (#4839)
* Remove all references of `eventMesh.connector.plugin.type`
* Deprecate `eventMesh.connector.plugin.type` and sort properties
* Remove misconfigured & not-used `registerIntervalInMills`, `fetchRegistryAddrIntervalInMills`
* Remove 'defibus' related un-used usages
* Supplement https://github.com/apache/eventmesh/pull/4809 for `null != object`
* [ISSUE #4832] Downgrade stale bot to v8 to resolve state cache reserving error (#4833)
* Revert stale bot to v8 to resolve state cache reserving error
* Reduce operations-per-run to default value to ease pressure
* Unify yaml to yml
* [ISSUE #4820] Bug fix EventHandler not return json (#4821)
* bug fix
* bug fix
* bug fix
* update runtime v2
* update connector runtime
* update connector runtime
* update connector runtime
* update connector runtime
* update connector runtime
---------
Co-authored-by: Pil0tXia <xi...@apache.org>
Co-authored-by: Zaki <91...@users.noreply.github.com>
Co-authored-by: Karson <ka...@hotmail.com>
* [ISSUE #4931]Add Registry Module for Discovery AdminServer
* [ISSUES #4933]Add Admin Module
* [ISSUE #4935] Add and Move the Pojo Used By Both Runtime and Admin to Common
* [ISSUE #4937]fix gradle dependecy and add runtime v2
* [ISSUES #4939]add canal connector
* fix missing apache header
* fix missing apache header
* fix missing apache header
* update gradle dependencies
* fix admin server ci check error
* fix admin server ci check error
* fix ci checkStyle error
* fix ci check error
---------
Co-authored-by: sodaRyCN <35...@users.noreply.github.com>
Co-authored-by: Pil0tXia <xi...@apache.org>
Co-authored-by: Zaki <91...@users.noreply.github.com>
Co-authored-by: Karson <ka...@hotmail.com>
---
.github/workflows/docker.yml | 2 +-
.idea/icon.png | Bin 14821 -> 0 bytes
build.gradle | 14 +-
eventmesh-admin-server/.gitignore | 42 +
eventmesh-admin-server/build.gradle | 48 +
.../gradle.properties | 36 +-
.../org/apache/eventmesh/admin/server/Admin.java | 34 +-
.../apache/eventmesh/admin/server/AdminServer.java | 125 +++
.../admin/server/AdminServerProperties.java | 21 +-
.../admin/server/AdminServerRuntimeException.java | 15 +-
.../eventmesh/admin/server/ComponentLifeCycle.java | 13 +-
.../eventmesh/admin/server/ExampleAdminServer.java | 17 +-
.../server/constatns/AdminServerConstants.java | 20 +-
.../admin/server/web/AdminGrpcServer.java | 103 +++
.../eventmesh/admin/server/web/BaseServer.java | 50 ++
.../eventmesh/admin/server/web/GrpcServer.java | 73 ++
.../eventmesh/admin/server/web/HttpServer.java | 15 +-
.../apache/eventmesh/admin/server/web/Request.java | 29 +-
.../eventmesh/admin/server/web/Response.java | 39 +-
.../admin/server/web/ServerController.java | 13 +-
.../admin/server/web/db/DBThreadPool.java | 60 ++
.../server/web/db/entity/EventMeshDataSource.java | 35 +-
.../server/web/db/entity/EventMeshJobDetail.java | 26 +-
.../server/web/db/entity/EventMeshJobInfo.java | 48 +-
.../web/db/entity/EventMeshMysqlPosition.java | 32 +-
.../entity/EventMeshPositionReporterHistory.java | 32 +-
.../web/db/entity/EventMeshRuntimeHeartbeat.java | 33 +-
.../web/db/entity/EventMeshRuntimeHistory.java | 30 +-
.../web/db/mapper/EventMeshDataSourceMapper.java | 23 +-
.../web/db/mapper/EventMeshJobInfoMapper.java | 23 +-
.../db/mapper/EventMeshMysqlPositionMapper.java | 22 +-
.../EventMeshPositionReporterHistoryMapper.java | 23 +-
.../db/mapper/EventMeshRuntimeHeartbeatMapper.java | 23 +-
.../db/mapper/EventMeshRuntimeHistoryMapper.java | 23 +-
.../web/db/service/EventMeshDataSourceService.java | 17 +-
.../web/db/service/EventMeshJobInfoService.java | 17 +-
.../db/service/EventMeshMysqlPositionService.java | 17 +-
.../EventMeshPositionReporterHistoryService.java | 16 +-
.../service/EventMeshRuntimeHeartbeatService.java | 14 +-
.../db/service/EventMeshRuntimeHistoryService.java | 14 +-
.../impl/EventMeshDataSourceServiceImpl.java | 25 +-
.../service/impl/EventMeshJobInfoServiceImpl.java | 28 +-
.../impl/EventMeshMysqlPositionServiceImpl.java | 27 +-
...ventMeshPositionReporterHistoryServiceImpl.java | 24 +-
.../impl/EventMeshRuntimeHeartbeatServiceImpl.java | 27 +-
.../impl/EventMeshRuntimeHistoryServiceImpl.java | 25 +-
.../server/web/handler/BaseRequestHandler.java | 17 +-
.../server/web/handler/RequestHandlerFactory.java | 65 ++
.../web/handler/impl/FetchJobRequestHandler.java | 71 ++
.../web/handler/impl/FetchPositionHandler.java | 56 ++
.../web/handler/impl/ReportHeartBeatHandler.java | 70 ++
.../web/handler/impl/ReportPositionHandler.java | 102 +++
.../EventMeshRuntimeHeartbeatBizService.java | 81 ++
.../service/job/EventMeshJobInfoBizService.java | 133 +++
.../position/EventMeshPositionBizService.java | 81 ++
.../service/position/IFetchPositionHandler.java | 16 +-
.../service/position/IReportPositionHandler.java | 15 +-
.../web/service/position/PositionHandler.java | 11 +-
.../service/position/PositionHandlerFactory.java | 56 ++
.../position/impl/MysqlPositionHandler.java | 161 ++++
.../src/main/resources/META-INF/spring.factories | 35 +-
.../src/main/resources/application.yaml | 48 +-
.../src/main/resources/eventmesh-admin.properties | 35 +-
.../src/main/resources/eventmesh.sql | 131 +++
.../resources/mapper/EventMeshDataSourceMapper.xml | 39 +
.../resources/mapper/EventMeshJobInfoMapper.xml | 43 +
.../mapper/EventMeshMysqlPositionMapper.xml | 39 +
.../EventMeshPositionReporterHistoryMapper.xml | 35 +
.../mapper/EventMeshRuntimeHeartbeatMapper.xml | 38 +
.../mapper/EventMeshRuntimeHistoryMapper.xml | 34 +
.../org/apache/eventmesh/common/Constants.java | 2 +
.../common/config/CommonConfiguration.java | 15 +
.../eventmesh/common/config/ConfigService.java | 3 +
.../apache/eventmesh/common/config/FileLoad.java | 1 +
.../eventmesh/common/config/connector}/Config.java | 2 +-
.../common/config/connector}/Constants.java | 2 +-
.../common/config/connector}/PubSubConfig.java | 2 +-
.../common/config/connector}/SinkConfig.java | 2 +-
.../common/config/connector}/SourceConfig.java | 4 +-
.../connector/dingtalk}/DingDingSinkConfig.java | 4 +-
.../connector/dingtalk}/SinkConnectorConfig.java | 2 +-
.../config/connector/file}/FileSinkConfig.java | 4 +-
.../config/connector/file}/FileSourceConfig.java | 4 +-
.../connector/file}/SinkConnectorConfig.java | 2 +-
.../connector/file}/SourceConnectorConfig.java | 2 +-
.../config/connector/http}/HttpSourceConfig.java | 4 +-
.../connector/http}/SourceConnectorConfig.java | 2 +-
.../connector/knative}/KnativeSinkConfig.java | 4 +-
.../connector/knative}/KnativeSourceConfig.java | 4 +-
.../connector/knative}/SinkConnectorConfig.java | 2 +-
.../connector/knative}/SourceConnectorConfig.java | 2 +-
.../config/connector/lark}/LarkSinkConfig.java | 4 +-
.../connector/lark}/SinkConnectorConfig.java | 26 +-
.../config/connector/mq/kafka/KafkaSinkConfig.java | 8 +-
.../connector/mq/kafka/KafkaSourceConfig.java | 8 +-
.../connector/mq/kafka}/SinkConnectorConfig.java | 2 +-
.../connector/mq/kafka}/SourceConnectorConfig.java | 2 +-
.../connector/mq/pulsar/PulsarSinkConfig.java | 8 +-
.../connector/mq/pulsar/PulsarSourceConfig.java | 8 +-
.../connector/mq/pulsar}/SinkConnectorConfig.java | 2 +-
.../mq/pulsar}/SourceConnectorConfig.java | 2 +-
.../connector/mq/rabbitmq}/RabbitMQSinkConfig.java | 4 +-
.../mq/rabbitmq}/RabbitMQSourceConfig.java | 4 +-
.../mq/rabbitmq}/SinkConnectorConfig.java | 6 +-
.../mq/rabbitmq}/SourceConnectorConfig.java | 6 +-
.../connector/mq/rocketmq}/RocketMQSinkConfig.java | 4 +-
.../mq/rocketmq}/RocketMQSourceConfig.java | 4 +-
.../mq/rocketmq}/SinkConnectorConfig.java | 2 +-
.../mq/rocketmq}/SourceConnectorConfig.java | 2 +-
.../connector/offset}/OffsetStorageConfig.java | 8 +-
.../openfunction}/OpenFunctionSinkConfig.java | 4 +-
.../openfunction}/OpenFunctionSourceConfig.java | 4 +-
.../openfunction}/SinkConnectorConfig.java | 2 +-
.../openfunction}/SourceConnectorConfig.java | 2 +-
.../connector/pravega}/PravegaSinkConfig.java | 4 +-
.../connector/pravega}/PravegaSourceConfig.java | 4 +-
.../connector/pravega}/SinkConnectorConfig.java | 2 +-
.../connector/pravega}/SourceConnectorConfig.java | 2 +-
.../prometheus}/PrometheusSourceConfig.java | 4 +-
.../prometheus}/SourceConnectorConfig.java | 2 +-
.../connector/rdb/canal/CanalSinkConfig.java | 17 +-
.../connector/rdb/canal/CanalSourceConfig.java | 80 ++
.../connector/rdb/canal}/SinkConnectorConfig.java | 19 +-
.../rdb/canal}/SourceConnectorConfig.java | 19 +-
.../config/connector/rdb/jdbc}/JdbcConfig.java | 2 +-
.../config/connector/rdb/jdbc}/JdbcSinkConfig.java | 4 +-
.../connector/rdb/jdbc}/JdbcSourceConfig.java | 4 +-
.../config/connector/rdb/jdbc}/MysqlConfig.java | 2 +-
.../connector/rdb/jdbc}/SinkConnectorConfig.java | 4 +-
.../connector/rdb/jdbc}/SourceConnectorConfig.java | 4 +-
.../connector/rdb/mongodb/MongodbSinkConfig.java | 8 +-
.../connector/rdb/mongodb/MongodbSourceConfig.java | 8 +-
.../rdb/mongodb}/SinkConnectorConfig.java | 2 +-
.../rdb/mongodb}/SourceConnectorConfig.java | 2 +-
.../config/connector/redis/RedisSinkConfig.java | 8 +-
.../config/connector/redis/RedisSourceConfig.java | 9 +-
.../connector/redis}/SinkConnectorConfig.java | 2 +-
.../connector/redis}/SourceConnectorConfig.java | 2 +-
.../config/connector/s3}/S3SourceConfig.java | 6 +-
.../connector/s3}/SourceConnectorConfig.java | 2 +-
.../connector/slack}/SinkConnectorConfig.java | 2 +-
.../config/connector/slack}/SlackSinkConfig.java | 4 +-
.../connector/spring}/SinkConnectorConfig.java | 2 +-
.../connector/spring}/SourceConnectorConfig.java | 2 +-
.../config/connector/spring/SpringSinkConfig.java | 6 +-
.../connector/spring}/SpringSourceConfig.java | 5 +-
.../connector/wechat}/SinkConnectorConfig.java | 2 +-
.../config/connector/wechat}/WeChatSinkConfig.java | 4 +-
.../connector/wecom}/SinkConnectorConfig.java | 2 +-
.../config/connector/wecom}/WeComSinkConfig.java | 4 +-
.../eventmesh/common/enums/ComponentType.java | 18 +-
.../grpc/adminserver/AdminServiceGrpc.java | 373 ++++++++
.../grpc/adminserver/EventMeshAdminService.java | 99 +++
.../common/protocol/grpc/adminserver/Metadata.java | 962 +++++++++++++++++++++
.../grpc/adminserver/MetadataOrBuilder.java | 78 ++
.../common/protocol/grpc/adminserver/Payload.java | 893 +++++++++++++++++++
.../grpc/adminserver/PayloadOrBuilder.java | 62 ++
.../grpc/proto/event_mesh_admin_service.proto | 27 +-
.../org/apache/eventmesh/common/remote/Job.java | 8 +-
.../apache/eventmesh/common/remote/JobState.java | 17 +-
.../apache/eventmesh/common/remote/JobType.java | 7 +-
.../org/apache/eventmesh/common/remote/Task.java | 30 +-
.../common/remote/exception/ErrorCode.java | 22 +-
.../remote/exception/PayloadFormatException.java | 13 +-
.../remote/exception/RemoteRuntimeException.java | 15 +-
.../common/remote/job/DataSourceClassify.java | 8 +-
.../common/remote/job/DataSourceDriverType.java | 7 +-
.../common/remote/job/DataSourceType.java | 54 ++
.../common/remote/job/JobTransportType.java | 68 ++
.../common/remote/job/SyncConsistency.java | 69 ++
.../eventmesh/common/remote/job/SyncMode.java | 54 +-
.../common/remote/offset/RecordOffset.java | 11 +-
.../common/remote/offset/RecordPartition.java | 11 +-
.../common/remote/offset/RecordPosition.java | 128 +++
.../common/remote/offset/S3/S3RecordOffset.java | 20 +-
.../common/remote/offset/S3/S3RecordPartition.java | 43 +-
.../remote/offset/canal/CanalRecordOffset.java | 20 +-
.../remote/offset/canal/CanalRecordPartition.java | 37 +-
.../remote/offset/file/FileRecordOffset.java | 20 +-
.../remote/offset/file/FileRecordPartition.java | 38 +-
.../remote/offset/http/HttpRecordOffset.java | 22 +-
.../remote/offset/http/HttpRecordPartition.java | 23 +-
.../remote/offset/jdbc/JdbcRecordOffset.java | 20 +-
.../remote/offset/jdbc/JdbcRecordPartition.java | 38 +-
.../remote/offset/kafka/KafkaRecordOffset.java | 20 +-
.../remote/offset/kafka/KafkaRecordPartition.java | 40 +-
.../offset/prometheus/PrometheusRecordOffset.java | 20 +-
.../prometheus/PrometheusRecordPartition.java | 23 +-
.../remote/offset/pulsar/PulsarRecordOffset.java | 25 +-
.../offset/pulsar/PulsarRecordPartition.java | 42 +-
.../offset/rocketmq/RocketMQRecordOffset.java | 25 +-
.../offset/rocketmq/RocketMQRecordPartition.java | 48 +-
.../remote/offset/spring/SpringRecordOffset.java | 20 +-
.../offset/spring/SpringRecordPartition.java | 23 +-
.../eventmesh/common/remote/payload/IPayload.java | 8 +-
.../common/remote/payload/PayloadFactory.java | 71 ++
.../common/remote/payload/PayloadUtil.java | 46 +
.../common/remote/request/BaseRemoteRequest.java | 48 +-
.../common/remote/request/FetchJobRequest.java | 8 +-
.../remote/request/FetchPositionRequest.java | 17 +-
.../remote/request/ReportHeartBeatRequest.java | 11 +-
.../remote/request/ReportPositionRequest.java | 21 +-
.../common/remote/response/BaseRemoteResponse.java | 60 +-
.../common/remote/response/EmptyAckResponse.java | 12 +-
.../common/remote/response/FailResponse.java | 34 +-
.../common/remote/response/FetchJobResponse.java | 67 ++
.../remote/response/FetchPositionResponse.java | 53 ++
.../org/apache/eventmesh/common/utils/IPUtils.java | 6 +-
.../apache/eventmesh/common/utils/JsonUtils.java | 19 +-
.../apache/eventmesh/common/utils/PagedList.java} | 54 +-
...apache.eventmesh.common.remote.payload.IPayload | 41 +-
.../loadbalance/RandomLoadBalanceSelectorTest.java | 2 +-
.../apache/eventmesh/common/utils/IPUtilsTest.java | 7 -
.../eventmesh-connector-canal}/build.gradle | 22 +-
.../eventmesh-connector-canal/gradle.properties | 37 +-
.../connector/canal/ByteArrayConverter.java | 69 ++
.../connector/canal/CanalConnectRecord.java | 275 ++++++
.../connector/canal/DatabaseConnection.java | 85 ++
.../connector/canal/SqlTimestampConverter.java | 155 ++++
.../apache/eventmesh/connector/canal/SqlUtils.java | 296 +++++++
.../connector/canal/config/CanalServerConfig.java} | 6 +-
.../connector/canal/dialect/AbstractDbDialect.java | 110 +++
.../connector/canal/dialect/DbDialect.java | 64 ++
.../connector/canal/dialect/MysqlDialect.java | 81 ++
.../interceptor/SqlBuilderLoadInterceptor.java | 139 +++
.../connector/canal/model/EventColumn.java | 163 ++++
.../canal/model/EventColumnIndexComparable.java} | 12 +-
.../eventmesh/connector/canal/model/EventType.java | 156 ++++
.../connector/canal/server/CanalConnectServer.java | 45 +
.../connector/canal/sink/DbLoadContext.java} | 43 +-
.../eventmesh/connector/canal/sink/DbLoadData.java | 135 +++
.../connector/canal/sink/DbLoadMerger.java | 280 ++++++
.../canal/sink/connector/CanalSinkConnector.java | 616 +++++++++++++
.../connector/canal/source/EntryParser.java | 278 ++++++
.../source/connector/CanalSourceConnector.java | 313 +++++++
.../canal/template/AbstractSqlTemplate.java | 117 +++
.../connector/canal/template/MysqlSqlTemplate.java | 80 ++
.../connector/canal/template/SqlTemplate.java} | 25 +-
...ventmesh.openconnect.api.ConnectorCreateService | 35 +-
.../src/main/resources/server-config.yml | 35 +-
.../src/main/resources/sink-config.yml | 46 +-
.../src/main/resources/source-config.yml | 56 +-
.../src/test/resources/sink-config.yml | 46 +-
.../src/test/resources/source-config.yml | 56 +-
.../chatgpt/config/ChatGPTServerConfig.java | 2 +-
.../chatgpt/source/config/ChatGPTSourceConfig.java | 2 +-
.../source/connector/ChatGPTSourceConnector.java | 2 +-
.../config/DingDingConnectServerConfig.java | 2 +-
.../sink/connector/DingDingSinkConnector.java | 4 +-
.../sink/connector/DingDingSinkConnectorTest.java | 8 +-
.../eventmesh-connector-file/build.gradle | 1 +
.../connector/file/config/FileServerConfig.java | 2 +-
.../file/sink/connector/FileSinkConnector.java | 4 +-
.../file/source/connector/FileSourceConnector.java | 15 +-
.../connector/file/FileSourceConnectorTest.java | 4 +-
.../connector/http/config/HttpServerConfig.java | 2 +-
.../connector/http/sink/HttpSinkConnector.java | 2 +-
.../connector/http/sink/config/HttpSinkConfig.java | 2 +-
.../http/sink/data/HttpConnectRecord.java | 7 +-
.../http/sink/handle/CommonHttpSinkHandler.java | 3 +-
.../http/source/connector/HttpSourceConnector.java | 4 +-
.../source/connector/HttpSinkConnectorTest.java | 12 +-
.../source/connector/HttpSourceConnectorTest.java | 4 +-
.../connector/jdbc/config/JdbcServerConfig.java | 3 +-
.../connector/jdbc/connection/JdbcConnection.java | 2 +-
.../jdbc/connection/mysql/MysqlJdbcConnection.java | 2 +-
.../dialect/AbstractGeneralDatabaseDialect.java | 2 +-
.../jdbc/dialect/DatabaseDialectFactory.java | 2 +-
.../jdbc/dialect/mysql/MysqlDatabaseDialect.java | 2 +-
.../dialect/mysql/MysqlDatabaseDialectFactory.java | 2 +-
.../connector/jdbc/sink/JdbcSinkConnector.java | 6 +-
.../jdbc/sink/handle/DefaultSinkRecordHandler.java | 2 +-
.../connector/jdbc/source/AbstractEngine.java | 4 +-
.../jdbc/source/AbstractJdbcTaskManager.java | 2 +-
.../connector/jdbc/source/JdbcSourceConnector.java | 6 +-
.../jdbc/source/SourceJdbcTaskManager.java | 12 +-
.../dialect/antlr4/mysql/MysqlAntlr4DdlParser.java | 4 +-
.../listener/CreateDatabaseParserListener.java | 2 +-
.../mysql/listener/CreateTableParserListener.java | 2 +-
.../mysql/listener/DropDatabaseParserListener.java | 2 +-
.../jdbc/source/dialect/cdc/AbstractCdcEngine.java | 6 +-
.../jdbc/source/dialect/cdc/CdcEngineFactory.java | 2 +-
.../source/dialect/cdc/mysql/MysqlCdcEngine.java | 8 +-
.../dialect/cdc/mysql/MysqlCdcEngineFactory.java | 2 +-
.../source/dialect/mysql/MysqlJdbcContext.java | 4 +-
.../dialect/snapshot/AbstractSnapshotEngine.java | 2 +-
.../dialect/snapshot/SnapshotEngineFactory.java | 2 +-
.../snapshot/mysql/MysqlSnapshotEngine.java | 4 +-
.../snapshot/mysql/MysqlSnapshotEngineFactory.java | 2 +-
.../eventmesh-connector-kafka/build.gradle | 1 +
.../connector/kafka/config/KafkaServerConfig.java | 2 +-
.../kafka/sink/connector/KafkaSinkConnector.java | 4 +-
.../kafka/source/config/KafkaSourceConfig.java | 28 -
.../source/connector/KafkaSourceConnector.java | 26 +-
.../knative/config/KnativeServerConfig.java | 2 +-
.../sink/connector/KnativeSinkConnector.java | 4 +-
.../source/connector/KnativeSourceConnector.java | 4 +-
.../SinkConnectorConfig.java => ConfigUtils.java} | 51 +-
.../lark/config/LarkConnectServerConfig.java | 2 +-
.../connector/lark/sink/ImServiceHandler.java | 2 +-
.../lark/sink/connector/LarkSinkConnector.java | 9 +-
.../connector/lark/sink/ImServiceHandlerTest.java | 16 +-
.../connector/lark/sink/LarkSinkConnectorTest.java | 8 +-
.../mongodb/config/MongodbServerConfig.java | 4 +-
.../sink/client/MongodbReplicaSetSinkClient.java | 2 +-
.../sink/client/MongodbStandaloneSinkClient.java | 2 +-
.../mongodb/sink/config/MongodbSinkConfig.java | 28 -
.../sink/connector/MongodbSinkConnector.java | 4 +-
.../client/MongodbReplicaSetSourceClient.java | 2 +-
.../client/MongodbStandaloneSourceClient.java | 2 +-
.../mongodb/source/config/MongodbSourceConfig.java | 28 -
.../source/connector/MongodbSourceConnector.java | 4 +-
.../config/OpenFunctionServerConfig.java | 2 +-
.../sink/connector/OpenFunctionSinkConnector.java | 4 +-
.../connector/OpenFunctionSourceConnector.java | 4 +-
.../connector/OpenFunctionSinkConnectorTest.java | 8 +-
.../connector/OpenFunctionSourceConnectorTest.java | 8 +-
.../pravega/config/PravegaServerConfig.java | 2 +-
.../sink/connector/PravegaSinkConnector.java | 4 +-
.../source/connector/PravegaSourceConnector.java | 4 +-
.../eventmesh-connector-prometheus/build.gradle | 1 +
.../prometheus/config/PrometheusServerConfig.java | 2 +-
.../connector/PrometheusSourceConnector.java | 14 +-
.../eventmesh-connector-pulsar/build.gradle | 1 +
.../pulsar/config/PulsarServerConfig.java | 2 +-
.../pulsar/sink/config/PulsarSinkConfig.java | 29 -
.../pulsar/sink/connector/PulsarSinkConnector.java | 4 +-
.../pulsar/source/config/PulsarSourceConfig.java | 28 -
.../source/connector/PulsarSourceConnector.java | 15 +-
.../rabbitmq/config/RabbitMQServerConfig.java | 6 +-
.../sink/connector/RabbitMQSinkConnector.java | 8 +-
.../source/connector/RabbitMQSourceConnector.java | 10 +-
.../eventmesh-connector-redis/build.gradle | 1 +
.../connector/redis/config/RedisServerConfig.java | 2 +-
.../redis/sink/config/RedisSinkConfig.java | 29 -
.../redis/sink/connector/RedisSinkConnector.java | 4 +-
.../redis/source/config/RedisSourceConfig.java | 29 -
.../source/connector/RedisSourceConnector.java | 4 +-
.../sink/connector/RedisSinkConnectorTest.java | 8 +-
.../source/connector/RedisSourceConnectorTest.java | 8 +-
.../rocketmq/config/RocketMQServerConfig.java | 2 +-
.../sink/connector/RocketMQSinkConnector.java | 12 +-
.../source/connector/RocketMQSourceConnector.java | 60 +-
.../sink/connector/RocketMQSinkConnectorTest.java | 8 +-
.../connector/RocketMQSourceConnectorTest.java | 2 +-
.../eventmesh-connector-s3/build.gradle | 1 +
.../connector/s3/config/S3ServerConfig.java | 2 +-
.../s3/source/connector/S3SourceConnector.java | 30 +-
.../connector/s3/source/S3SourceConnectorTest.java | 4 +-
.../slack/config/SlackConnectServerConfig.java | 2 +-
.../slack/sink/connector/SlackSinkConnector.java | 4 +-
.../sink/connector/SlackSinkConnectorTest.java | 8 +-
.../spring/config/SpringConnectServerConfig.java | 2 +-
.../spring/sink/config/SpringSinkConfig.java | 31 -
.../spring/sink/connector/SpringSinkConnector.java | 4 +-
.../source/connector/SpringSourceConnector.java | 18 +-
.../sink/connector/SpringSinkConnectorTest.java | 8 +-
.../connector/SpringSourceConnectorTest.java | 2 +-
.../wechat/config/WeChatConnectServerConfig.java | 2 +-
.../wechat/sink/connector/WeChatSinkConnector.java | 4 +-
.../sink/connector/WeChatSinkConnectorTest.java | 12 +-
.../wecom/config/WeComConnectServerConfig.java | 2 +-
.../wecom/sink/connector/WeComSinkConnector.java | 4 +-
.../wecom/connector/MockRecordOffset.java} | 14 +-
.../wecom/connector/MockRecordPartition.java} | 17 +-
.../wecom/connector/WeComSinkConnectorTest.java | 19 +-
.../apache/eventmesh/openconnect/Application.java | 6 +-
.../apache/eventmesh/openconnect/SinkWorker.java | 2 +-
.../apache/eventmesh/openconnect/SourceWorker.java | 8 +-
.../openconnect/api/connector/Connector.java | 2 +-
.../openconnect/api/connector/SinkConnector.java | 2 +-
.../api/connector/SinkConnectorContext.java | 2 +-
.../openconnect/api/connector/SourceConnector.java | 2 +-
.../api/connector/SourceConnectorContext.java | 2 +-
.../api/factory/ConnectorPluginFactory.java | 25 +-
.../eventmesh/openconnect/util/ConfigUtil.java | 14 +-
.../build.gradle | 15 +-
.../gradle.properties | 36 +-
.../offsetmgmt/admin/AdminOffsetService.java | 270 ++++++
....offsetmgmt.api.storage.OffsetManagementService | 36 +-
.../build.gradle | 1 +
.../offsetmgmt/api/data/ConnectRecord.java | 14 +-
.../api/data/RecordOffsetManagement.java | 19 +-
.../DefaultOffsetManagementServiceImpl.java | 15 +-
.../api/storage/OffsetManagementService.java | 21 +-
.../api/storage/OffsetStorageReader.java | 4 +-
.../api/storage/OffsetStorageReaderImpl.java | 19 +-
.../api/storage/OffsetStorageWriter.java | 4 +-
.../api/storage/OffsetStorageWriterImpl.java | 18 +-
.../offsetmgmt/nacos/NacosConfigService.java | 55 +-
eventmesh-registry/.gitignore | 42 +
.../Config.java => eventmesh-registry/build.gradle | 7 +-
.../eventmesh-registry-api}/build.gradle | 6 +-
.../org/apache/eventmesh/registry/NotifyEvent.java | 33 +-
.../apache/eventmesh/registry/QueryInstances.java | 13 +-
.../eventmesh/registry/RegisterServerInfo.java | 72 ++
.../apache/eventmesh/registry/RegistryFactory.java | 47 +
.../eventmesh/registry/RegistryListener.java | 13 +-
.../apache/eventmesh/registry/RegistryService.java | 31 +-
.../registry/exception/RegistryException.java | 16 +-
.../eventmesh-registry-nacos}/build.gradle | 6 +-
.../registry/nacos/NacosDiscoveryService.java | 312 +++++++
.../registry/nacos/NacosRegistryConfiguration.java | 62 ++
.../org.apache.eventmesh.registry.RegistryService | 36 +-
eventmesh-runtime-v2/build.gradle | 50 ++
.../java/org/apache/eventmesh/runtime/Runtime.java | 59 +-
.../apache/eventmesh/runtime/RuntimeFactory.java | 57 +-
.../eventmesh/runtime/RuntimeInstanceConfig.java | 109 +--
.../eventmesh/runtime/boot/RuntimeInstance.java | 146 ++++
.../runtime/boot/RuntimeInstanceStarter.java | 55 ++
.../runtime/connector/ConnectorRuntime.java | 426 +++++++++
.../runtime/connector/ConnectorRuntimeConfig.java | 80 +-
.../runtime/connector/ConnectorRuntimeFactory.java | 71 +-
.../runtime/function/FunctionRuntime.java | 68 +-
.../runtime/function/FunctionRuntimeConfig.java | 42 +-
.../runtime/function/FunctionRuntimeFactory.java | 72 +-
.../runtime/manager/ConnectorManager.java | 42 +-
.../eventmesh/runtime/manager/FunctionManager.java | 42 +-
.../eventmesh/runtime/manager/MeshManager.java | 42 +-
.../apache/eventmesh/runtime/mesh/MeshRuntime.java | 74 +-
.../eventmesh/runtime/mesh/MeshRuntimeConfig.java | 42 +-
.../eventmesh/runtime/mesh/MeshRuntimeFactory.java | 72 +-
.../apache/eventmesh/runtime/meta/MetaStorage.java | 148 ++++
.../apache/eventmesh/runtime/util/BannerUtil.java | 69 ++
.../eventmesh/runtime/util/RuntimeUtils.java | 4 +-
.../src/main/resources/connector.yaml | 34 +-
.../src/main/resources/runtime.yaml | 38 +-
.../runtime/admin/handler/AdminHandlerManager.java | 2 -
.../runtime/admin/handler/v1/MetricsHandler.java | 113 ---
.../eventmesh/spi/EventMeshExtensionType.java | 1 +
settings.gradle | 9 +-
431 files changed, 12532 insertions(+), 2957 deletions(-)
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index dfb36970d..c2d327cdc 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -47,4 +47,4 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
file: ./docker/Dockerfile_jdk8
- context: ./
+ context: ./
\ No newline at end of file
diff --git a/.idea/icon.png b/.idea/icon.png
deleted file mode 100644
index 59aa06dac..000000000
Binary files a/.idea/icon.png and /dev/null differ
diff --git a/build.gradle b/build.gradle
index 3fc27890d..5aafc4c93 100644
--- a/build.gradle
+++ b/build.gradle
@@ -95,7 +95,8 @@ allprojects {
checkstyleMain.exclude('**/org/apache/eventmesh/client/grpc/protos**')
.exclude('**/org/apache/eventmesh/common/protocol/grpc/cloudevents**')
- .exclude('**/org/apache/eventmesh/common/protocol/grpc/protos/**')
+ .exclude('**/org/apache/eventmesh/common/protocol/grpc/proto**')
+ .exclude('**/org/apache/eventmesh/common/protocol/grpc/adminserver/**')
.exclude('**/org/apache/eventmesh/connector/openfunction/client/EventMeshGrpcService**')
.exclude('**/org/apache/eventmesh/connector/openfunction/client/CallbackServiceGrpc**')
.exclude('**/org/apache/eventmesh/connector/jdbc/antlr**')
@@ -405,7 +406,7 @@ tasks.register('checkDeniedLicense') {
"BSD-4-Clause", "BSD-4-Clause-UC", "NPL-1.0", "NPL-1.1", "JSON"
]
// Update exemptions according to https://github.com/apache/eventmesh/issues/4842
- def allowedArtifacts = ["amqp-client", "stax-api", "javassist", "ST4", "xsdlib"]
+ def allowedArtifacts = ["amqp-client", "stax-api", "javassist", "ST4", "xsdlib", "jsqlparser"]
def licenseFile = file('tools/dist-license/LICENSE')
def lines = licenseFile.readLines()
@@ -751,6 +752,13 @@ subprojects {
dependency "software.amazon.awssdk:s3:2.25.55"
dependency "com.github.rholder:guava-retrying:2.0.0"
+
+ dependency "org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.1"
+ dependency "com.alibaba:druid-spring-boot-starter:1.2.22"
+ dependency "org.springframework.boot:spring-boot-starter-jetty:2.7.10"
+
+ dependency "com.baomidou:mybatis-plus:3.5.6"
+ dependency "com.mysql:mysql-connector-j:8.0.33"
}
}
-}
+}
\ No newline at end of file
diff --git a/eventmesh-admin-server/.gitignore b/eventmesh-admin-server/.gitignore
new file mode 100644
index 000000000..b63da4551
--- /dev/null
+++ b/eventmesh-admin-server/.gitignore
@@ -0,0 +1,42 @@
+.gradle
+build/
+!gradle/wrapper/gradle-wrapper.jar
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/eventmesh-admin-server/build.gradle b/eventmesh-admin-server/build.gradle
new file mode 100644
index 000000000..2a7d6e0e5
--- /dev/null
+++ b/eventmesh-admin-server/build.gradle
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+dependencies {
+ implementation project(":eventmesh-spi")
+ implementation project(":eventmesh-common")
+ implementation project(":eventmesh-registry:eventmesh-registry-api")
+ implementation project(":eventmesh-registry:eventmesh-registry-nacos")
+ implementation project(':eventmesh-openconnect:eventmesh-openconnect-offsetmgmt-plugin:eventmesh-openconnect-offsetmgmt-api')
+ implementation "com.alibaba.nacos:nacos-client"
+ implementation ("org.springframework.boot:spring-boot-starter-web") {
+ exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
+ }
+ implementation 'org.springframework.boot:spring-boot-starter-jetty'
+ implementation "io.grpc:grpc-core"
+ implementation "io.grpc:grpc-protobuf"
+ implementation "io.grpc:grpc-stub"
+ implementation "io.grpc:grpc-netty-shaded"
+
+ // https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter
+ implementation group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.5.5'
+ implementation "org.reflections:reflections:0.10.2"
+
+ // https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter
+ implementation "com.alibaba:druid-spring-boot-starter"
+ compileOnly 'com.mysql:mysql-connector-j'
+ compileOnly 'org.projectlombok:lombok'
+ annotationProcessor 'org.projectlombok:lombok'
+}
+
+configurations.implementation {
+ exclude group: "org.springframework.boot", module: "spring-boot-starter-logging"
+}
+
diff --git a/.github/workflows/docker.yml b/eventmesh-admin-server/gradle.properties
similarity index 50%
copy from .github/workflows/docker.yml
copy to eventmesh-admin-server/gradle.properties
index dfb36970d..a9fd83fea 100644
--- a/.github/workflows/docker.yml
+++ b/eventmesh-admin-server/gradle.properties
@@ -13,38 +13,4 @@
# 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.
-#
-
-name: Docker
-on:
- release:
- types: [released]
-
-jobs:
- docker:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
-
- - name: Login to DockerHub
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKERHUB_USER }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Docker meta
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: |
- apache/eventmesh
-
- - name: Build and push
- uses: docker/build-push-action@v5
- with:
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- file: ./docker/Dockerfile_jdk8
- context: ./
+#
\ No newline at end of file
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/SinkConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/Admin.java
similarity index 59%
copy from eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/SinkConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/Admin.java
index e971b7b00..71c6d67be 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/Admin.java
@@ -15,29 +15,31 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.jdbc.sink.config;
+package org.apache.eventmesh.admin.server;
-import org.apache.eventmesh.connector.jdbc.config.JdbcConfig;
-
-import lombok.Data;
+import org.apache.eventmesh.common.remote.Task;
+import org.apache.eventmesh.common.remote.request.ReportHeartBeatRequest;
+import org.apache.eventmesh.common.utils.PagedList;
/**
- * Configuration parameters for a sink connector.
+ * Admin
*/
-@Data
-public class SinkConnectorConfig {
+public interface Admin extends ComponentLifeCycle {
/**
- * The name of the sink connector.
- */
- private String connectorName;
+ * support for web or ops
+ **/
+ boolean createOrUpdateTask(Task task);
+
+ boolean deleteTask(Long id);
+
+ Task getTask(Long id);
+
+ // paged list
+ PagedList<Task> getTaskPaged(Task task);
/**
- * JDBC configuration for connecting to a database.
+ * support for task
*/
- private JdbcConfig jdbcConfig;
-
- public String getDatabaseType() {
- return "mysql";
- }
+ void reportHeartbeat(ReportHeartBeatRequest heartBeat);
}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/AdminServer.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/AdminServer.java
new file mode 100644
index 000000000..98247d19b
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/AdminServer.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server;
+
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.config.CommonConfiguration;
+import org.apache.eventmesh.common.config.ConfigService;
+import org.apache.eventmesh.common.remote.Task;
+import org.apache.eventmesh.common.remote.exception.ErrorCode;
+import org.apache.eventmesh.common.remote.request.ReportHeartBeatRequest;
+import org.apache.eventmesh.common.utils.IPUtils;
+import org.apache.eventmesh.common.utils.PagedList;
+import org.apache.eventmesh.registry.RegisterServerInfo;
+import org.apache.eventmesh.registry.RegistryFactory;
+import org.apache.eventmesh.registry.RegistryService;
+
+import org.apache.commons.lang3.StringUtils;
+
+import javax.annotation.PostConstruct;
+
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Service;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Service
+@Slf4j
+public class AdminServer implements Admin, ApplicationListener<ApplicationReadyEvent> {
+
+ private final RegistryService registryService;
+
+ private final RegisterServerInfo adminServeInfo;
+
+ private final CommonConfiguration configuration;
+
+ public AdminServer(AdminServerProperties properties) {
+ configuration =
+ ConfigService.getInstance().buildConfigInstance(CommonConfiguration.class);
+ if (configuration == null) {
+ throw new AdminServerRuntimeException(ErrorCode.STARTUP_CONFIG_MISS, "common configuration file miss");
+ }
+ this.adminServeInfo = new RegisterServerInfo();
+
+ adminServeInfo.setHealth(true);
+ adminServeInfo.setAddress(IPUtils.getLocalAddress() + ":" + properties.getPort());
+ String name = Constants.ADMIN_SERVER_REGISTRY_NAME;
+ if (StringUtils.isNotBlank(properties.getServiceName())) {
+ name = properties.getServiceName();
+ }
+ adminServeInfo.setServiceName(name);
+ registryService = RegistryFactory.getInstance(configuration.getEventMeshRegistryPluginType());
+ }
+
+
+ @Override
+ public boolean createOrUpdateTask(Task task) {
+ return false;
+ }
+
+ @Override
+ public boolean deleteTask(Long id) {
+ return false;
+ }
+
+ @Override
+ public Task getTask(Long id) {
+ return null;
+ }
+
+ @Override
+ public PagedList<Task> getTaskPaged(Task task) {
+ return null;
+ }
+
+ @Override
+ public void reportHeartbeat(ReportHeartBeatRequest heartBeat) {
+
+ }
+
+ @Override
+ @PostConstruct
+ public void start() {
+ if (configuration.isEventMeshRegistryPluginEnabled()) {
+ registryService.init();
+ }
+ }
+
+ @Override
+ public void destroy() {
+ if (configuration.isEventMeshRegistryPluginEnabled()) {
+ registryService.unRegister(adminServeInfo);
+ try {
+ Thread.sleep(3000);
+ } catch (InterruptedException ignore) {
+ log.warn("interrupted when sleep");
+ Thread.currentThread().interrupt();
+ }
+ registryService.shutdown();
+ }
+ }
+
+ @Override
+ public void onApplicationEvent(ApplicationReadyEvent event) {
+ if (configuration.isEventMeshRegistryPluginEnabled()) {
+ log.info("application is started and registry plugin is enabled, it's will register admin self");
+ registryService.register(adminServeInfo);
+ }
+ }
+}
diff --git a/eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/SourceConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/AdminServerProperties.java
similarity index 67%
copy from eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/SourceConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/AdminServerProperties.java
index 873a0d192..2162731e2 100644
--- a/eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/SourceConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/AdminServerProperties.java
@@ -15,18 +15,21 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.http.source.config;
+package org.apache.eventmesh.admin.server;
-import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
-@Data
-public class SourceConnectorConfig {
+import lombok.Getter;
+import lombok.Setter;
- private String connectorName;
-
- private String path;
+@ConfigurationProperties("event-mesh.admin-server")
+@Getter
+@Setter
+public class AdminServerProperties {
private int port;
-
- private int idleTimeout;
+ private boolean enableSSL;
+ private String configurationPath;
+ private String configurationFile;
+ private String serviceName;
}
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/AdminServerRuntimeException.java
similarity index 73%
copy from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/AdminServerRuntimeException.java
index 6376a7fb4..5a68baba1 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/AdminServerRuntimeException.java
@@ -15,14 +15,17 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.source.config;
+package org.apache.eventmesh.admin.server;
-import lombok.Data;
+import lombok.Getter;
-@Data
-public class SourceConnectorConfig {
+public class AdminServerRuntimeException extends RuntimeException {
- private String connectorName;
+ @Getter
+ private final int code;
- private String filePath;
+ public AdminServerRuntimeException(int code, String message) {
+ super(message);
+ this.code = code;
+ }
}
diff --git a/eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/source/connector/SourceConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/ComponentLifeCycle.java
similarity index 81%
copy from eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/source/connector/SourceConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/ComponentLifeCycle.java
index 242869087..392eebfbb 100644
--- a/eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/source/connector/SourceConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/ComponentLifeCycle.java
@@ -15,13 +15,14 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.spring.source.connector;
+package org.apache.eventmesh.admin.server;
-import lombok.Data;
-
-@Data
-public class SourceConnectorConfig {
+/**
+ * adminServer ComponentLifeCycle
+ */
+public interface ComponentLifeCycle {
- private String connectorName;
+ void start() throws Exception;
+ void destroy();
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnector.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/ExampleAdminServer.java
similarity index 56%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnector.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/ExampleAdminServer.java
index 100612662..c6a6e1650 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnector.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/ExampleAdminServer.java
@@ -15,16 +15,19 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
-import org.apache.eventmesh.openconnect.api.source.Source;
+import org.apache.eventmesh.admin.server.constatns.AdminServerConstants;
+import org.apache.eventmesh.common.config.ConfigService;
-public abstract class SourceConnector implements Source {
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
- private final SourceConfig sourceConfig;
+@SpringBootApplication
+public class ExampleAdminServer {
- protected SourceConnector(SourceConfig sourceConfig) {
- this.sourceConfig = sourceConfig;
+ public static void main(String[] args) throws Exception {
+ ConfigService.getInstance().setConfigPath(AdminServerConstants.EVENTMESH_CONF_HOME).setRootConfig(AdminServerConstants.EVENTMESH_CONF_FILE);
+ SpringApplication.run(ExampleAdminServer.class);
}
}
diff --git a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/constatns/AdminServerConstants.java
similarity index 70%
copy from eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/constatns/AdminServerConstants.java
index 2211fd1ad..44afaca1c 100644
--- a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/constatns/AdminServerConstants.java
@@ -15,22 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.dingtalk.sink.config;
+package org.apache.eventmesh.admin.server.constatns;
-import lombok.Data;
+public class AdminServerConstants {
+ public static final String CONF_ENV = "configurationPath";
-@Data
-public class SinkConnectorConfig {
+ public static final String EVENTMESH_CONF_HOME = System.getProperty(CONF_ENV, System.getenv(CONF_ENV));
- private String connectorName;
-
- private String appKey;
-
- private String appSecret;
-
- private String openConversationId;
-
- private String robotCode;
-
- private String coolAppCode;
+ public static final String EVENTMESH_CONF_FILE = "eventmesh-admin.properties";
}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/AdminGrpcServer.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/AdminGrpcServer.java
new file mode 100644
index 000000000..3bac23708
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/AdminGrpcServer.java
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web;
+
+import org.apache.eventmesh.admin.server.AdminServerRuntimeException;
+import org.apache.eventmesh.admin.server.web.handler.BaseRequestHandler;
+import org.apache.eventmesh.admin.server.web.handler.RequestHandlerFactory;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.AdminServiceGrpc;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Payload;
+import org.apache.eventmesh.common.remote.exception.ErrorCode;
+import org.apache.eventmesh.common.remote.payload.PayloadUtil;
+import org.apache.eventmesh.common.remote.request.BaseRemoteRequest;
+import org.apache.eventmesh.common.remote.response.BaseRemoteResponse;
+import org.apache.eventmesh.common.remote.response.EmptyAckResponse;
+import org.apache.eventmesh.common.remote.response.FailResponse;
+
+import org.apache.commons.lang3.StringUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import io.grpc.stub.ServerCallStreamObserver;
+import io.grpc.stub.StreamObserver;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Service
+@Slf4j
+public class AdminGrpcServer extends AdminServiceGrpc.AdminServiceImplBase {
+
+ @Autowired
+ RequestHandlerFactory handlerFactory;
+
+ private Payload process(Payload value) {
+ if (value == null || StringUtils.isBlank(value.getMetadata().getType())) {
+ return PayloadUtil.from(FailResponse.build(ErrorCode.BAD_REQUEST, "bad request: type not exists"));
+ }
+ try {
+ BaseRequestHandler<BaseRemoteRequest, BaseRemoteResponse> handler = handlerFactory.getHandler(value.getMetadata().getType());
+ if (handler == null) {
+ return PayloadUtil.from(FailResponse.build(BaseRemoteResponse.UNKNOWN, "not match any request handler"));
+ }
+ BaseRemoteResponse response = handler.handlerRequest((BaseRemoteRequest) PayloadUtil.parse(value), value.getMetadata());
+ if (response == null || response instanceof EmptyAckResponse) {
+ return null;
+ }
+ return PayloadUtil.from(response);
+ } catch (Exception e) {
+ log.warn("process payload {} fail", value.getMetadata().getType(), e);
+ if (e instanceof AdminServerRuntimeException) {
+ return PayloadUtil.from(FailResponse.build(((AdminServerRuntimeException) e).getCode(), e.getMessage()));
+ }
+ return PayloadUtil.from(FailResponse.build(ErrorCode.INTERNAL_ERR, "admin server internal err"));
+ }
+ }
+
+ public StreamObserver<Payload> invokeBiStream(StreamObserver<Payload> responseObserver) {
+ return new StreamObserver<Payload>() {
+ @Override
+ public void onNext(Payload value) {
+ Payload payload = process(value);
+ if (payload == null) {
+ return;
+ }
+ responseObserver.onNext(payload);
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ if (responseObserver instanceof ServerCallStreamObserver) {
+ if (!((ServerCallStreamObserver<Payload>) responseObserver).isCancelled()) {
+ log.warn("admin gRPC server fail", t);
+ }
+ }
+ }
+
+ @Override
+ public void onCompleted() {
+ responseObserver.onCompleted();
+ }
+ };
+ }
+
+ public void invoke(Payload request, StreamObserver<Payload> responseObserver) {
+ responseObserver.onNext(process(request));
+ responseObserver.onCompleted();
+ }
+}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/BaseServer.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/BaseServer.java
new file mode 100644
index 000000000..24085dd89
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/BaseServer.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web;
+
+import org.apache.eventmesh.admin.server.ComponentLifeCycle;
+import org.apache.eventmesh.common.remote.payload.PayloadFactory;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public abstract class BaseServer implements ComponentLifeCycle {
+
+ static {
+ PayloadFactory.getInstance().init();
+ }
+
+ @PostConstruct
+ public void init() throws Exception {
+ log.info("[{}] server starting at port [{}]", this.getClass().getSimpleName(), getPort());
+ start();
+ log.info("[{}] server started at port [{}]", this.getClass().getSimpleName(), getPort());
+ }
+
+ @PreDestroy
+ public void shutdown() {
+ log.info("[{}] server will destroy", this.getClass().getSimpleName());
+ destroy();
+ log.info("[{}] server has be destroy", this.getClass().getSimpleName());
+ }
+
+ public abstract int getPort();
+}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/GrpcServer.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/GrpcServer.java
new file mode 100644
index 000000000..5fbb34f48
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/GrpcServer.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web;
+
+import org.apache.eventmesh.admin.server.AdminServerProperties;
+
+import java.util.concurrent.TimeUnit;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+
+import io.grpc.Server;
+import io.grpc.netty.shaded.io.grpc.netty.NettyServerBuilder;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Controller
+@Slf4j
+public class GrpcServer extends BaseServer {
+
+ @Autowired
+ AdminGrpcServer adminGrpcServer;
+
+ @Autowired
+ AdminServerProperties properties;
+
+ private Server server;
+
+ @Override
+ public void start() throws Exception {
+ NettyServerBuilder serverBuilder = NettyServerBuilder.forPort(getPort()).addService(adminGrpcServer);
+ if (properties.isEnableSSL()) {
+ serverBuilder.sslContext(null);
+ }
+ server = serverBuilder.build();
+ server.start();
+ }
+
+ @Override
+ public void destroy() {
+ try {
+ if (server != null) {
+ server.shutdown();
+ if (!server.awaitTermination(30, TimeUnit.SECONDS)) {
+ log.warn("[{}] server don't graceful stop in 30s, it will shutdown now", this.getClass().getSimpleName());
+ server.shutdownNow();
+ }
+ }
+ } catch (InterruptedException e) {
+ log.warn("destroy [{}] server fail", this.getClass().getSimpleName(), e);
+ }
+ }
+
+ @Override
+ public int getPort() {
+ return properties.getPort();
+ }
+}
diff --git a/eventmesh-connectors/eventmesh-connector-kafka/src/main/java/org/apache/eventmesh/connector/kafka/sink/config/KafkaSinkConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/HttpServer.java
similarity index 76%
rename from eventmesh-connectors/eventmesh-connector-kafka/src/main/java/org/apache/eventmesh/connector/kafka/sink/config/KafkaSinkConfig.java
rename to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/HttpServer.java
index 9bb79551d..3f91115bd 100644
--- a/eventmesh-connectors/eventmesh-connector-kafka/src/main/java/org/apache/eventmesh/connector/kafka/sink/config/KafkaSinkConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/HttpServer.java
@@ -15,15 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.kafka.sink.config;
+package org.apache.eventmesh.admin.server.web;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
-
-import lombok.Data;
-
-@Data
-public class KafkaSinkConfig extends SinkConfig {
-
- public SinkConnectorConfig connectorConfig;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+@RestController
+@RequestMapping("/eventmesh/admin")
+public class HttpServer {
}
diff --git a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/Request.java
similarity index 69%
copy from eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/Request.java
index 2211fd1ad..9484e986f 100644
--- a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/Request.java
@@ -15,22 +15,25 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.dingtalk.sink.config;
+package org.apache.eventmesh.admin.server.web;
-import lombok.Data;
+public class Request<T> {
+ private String uid;
+ private T data;
-@Data
-public class SinkConnectorConfig {
+ public String getUid() {
+ return uid;
+ }
- private String connectorName;
+ public void setUid(String uid) {
+ this.uid = uid;
+ }
- private String appKey;
+ public T getData() {
+ return data;
+ }
- private String appSecret;
-
- private String openConversationId;
-
- private String robotCode;
-
- private String coolAppCode;
+ public void setData(T data) {
+ this.data = data;
+ }
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/build.gradle b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/Response.java
similarity index 61%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/build.gradle
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/Response.java
index 97c3b8c33..d58312146 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/build.gradle
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/Response.java
@@ -15,16 +15,37 @@
* limitations under the License.
*/
-dependencies {
- api project(":eventmesh-spi")
- api "org.slf4j:slf4j-api"
+package org.apache.eventmesh.admin.server.web;
- compileOnly 'org.projectlombok:lombok'
- annotationProcessor 'org.projectlombok:lombok'
- implementation project(":eventmesh-common")
+public class Response<T> {
- testCompileOnly 'org.projectlombok:lombok'
- testAnnotationProcessor 'org.projectlombok:lombok'
+ private boolean success;
- testImplementation "org.mockito:mockito-core"
+ private String desc;
+
+ private T data;
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+
+ public void setDesc(String desc) {
+ this.desc = desc;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+ public void setData(T data) {
+ this.data = data;
+ }
}
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/ServerController.java
similarity index 75%
copy from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/ServerController.java
index 6376a7fb4..5623cbad3 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/ServerController.java
@@ -15,14 +15,13 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.source.config;
+package org.apache.eventmesh.admin.server.web;
-import lombok.Data;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
-@Data
-public class SourceConnectorConfig {
+@RestController
+@RequestMapping("/eventmesh/admin")
+public class ServerController {
- private String connectorName;
-
- private String filePath;
}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/DBThreadPool.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/DBThreadPool.java
new file mode 100644
index 000000000..f1de76496
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/DBThreadPool.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.db;
+
+import org.apache.eventmesh.common.EventMeshThreadFactory;
+
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import javax.annotation.PreDestroy;
+
+import org.springframework.stereotype.Component;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Component
+@Slf4j
+public class DBThreadPool {
+
+ private final ThreadPoolExecutor executor =
+ new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors() * 2,
+ Runtime.getRuntime().availableProcessors() * 2, 0L, TimeUnit.SECONDS,
+ new LinkedBlockingQueue<>(1000), new EventMeshThreadFactory("admin-server-db"),
+ new ThreadPoolExecutor.DiscardOldestPolicy());
+
+ @PreDestroy
+ private void destroy() {
+ if (!executor.isShutdown()) {
+ try {
+ executor.shutdown();
+ if (!executor.awaitTermination(30, TimeUnit.SECONDS)) {
+ log.info("wait heart beat handler thread pool shutdown timeout, it will shutdown immediately");
+ executor.shutdownNow();
+ }
+ } catch (InterruptedException e) {
+ log.warn("wait heart beat handler thread pool shutdown fail");
+ }
+ }
+ }
+
+ public ThreadPoolExecutor getExecutors() {
+ return executor;
+ }
+}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshDataSource.java
similarity index 53%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshDataSource.java
index 14fd92218..2f154faf0 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshDataSource.java
@@ -15,21 +15,40 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.db.entity;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.storage.OffsetStorageReader;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
- * Source Connector Context
+ * event_mesh_data_source
*/
+@TableName(value = "event_mesh_data_source")
@Data
-public class SourceConnectorContext implements ConnectorContext {
+public class EventMeshDataSource implements Serializable {
+
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ private Integer dataType;
+
+ private String description;
+
+ private String configuration;
+
+ private Integer createUid;
+
+ private Integer updateUid;
- public OffsetStorageReader offsetStorageReader;
+ private Date createTime;
- public SourceConfig sourceConfig;
+ private Date updateTime;
-}
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/config/OffsetStorageConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshJobDetail.java
similarity index 57%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/config/OffsetStorageConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshJobDetail.java
index 30a56a3d2..b4a836e8b 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/config/OffsetStorageConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshJobDetail.java
@@ -15,18 +15,34 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.config;
+package org.apache.eventmesh.admin.server.web.db.entity;
+
+import org.apache.eventmesh.common.remote.JobState;
+import org.apache.eventmesh.common.remote.job.JobTransportType;
+import org.apache.eventmesh.common.remote.offset.RecordPosition;
import java.util.Map;
import lombok.Data;
@Data
-public class OffsetStorageConfig {
+public class EventMeshJobDetail {
+
+ private Integer id;
+
+ private String name;
+
+ private JobTransportType transportType;
+
+ private Map<String, Object> sourceConnectorConfig;
+
+ private String sourceConnectorDesc;
+
+ private Map<String, Object> sinkConnectorConfig;
- private String offsetStorageType;
+ private String sinkConnectorDesc;
- private String offsetStorageAddr;
+ private RecordPosition position;
- private Map<String, String> extensions;
+ private JobState state;
}
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/MysqlConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshJobInfo.java
similarity index 51%
copy from eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/MysqlConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshJobInfo.java
index 032921350..73d2f4aba 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/MysqlConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshJobInfo.java
@@ -15,40 +15,46 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.jdbc.source.config;
+package org.apache.eventmesh.admin.server.web.db.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
+/**
+ * event_mesh_job_info
+ */
+@TableName(value = "event_mesh_job_info")
@Data
-public class MysqlConfig {
-
- private int serverId;
+public class EventMeshJobInfo implements Serializable {
- private boolean keepAlive = true;
+ @TableId(type = IdType.AUTO)
+ private Integer jobID;
- private long keepAliveInterval;
+ private String name;
- private SnapshotLockingMode snapshotLockingMode = SnapshotLockingMode.MINIMAL;
+ private Integer transportType;
- private boolean useGlobalLock = true;
+ private Integer sourceData;
- public enum SnapshotLockingMode {
+ private Integer targetData;
- EXTENDED("extended"),
+ private Integer state;
- MINIMAL("minimal"),
+ private Integer jobType;
- NONE("none");
+ private Integer createUid;
- private final String value;
+ private Integer updateUid;
- SnapshotLockingMode(String value) {
- this.value = value;
- }
+ private Date createTime;
- public boolean usesLocking() {
- return !value.equals(NONE.value);
- }
- }
+ private Date updateTime;
-}
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshMysqlPosition.java
similarity index 55%
copy from eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshMysqlPosition.java
index 7e8b7ba93..ffe3e446d 100644
--- a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshMysqlPosition.java
@@ -15,26 +15,40 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.prometheus.source.config;
+package org.apache.eventmesh.admin.server.web.db.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
+/**
+ * event_mesh_mysql_position
+ */
+@TableName(value = "event_mesh_mysql_position")
@Data
-public class SourceConnectorConfig {
+public class EventMeshMysqlPosition implements Serializable {
- private String connectorName;
+ @TableId(type = IdType.AUTO)
+ private Integer id;
- private String connectorId;
+ private Integer jobID;
private String address;
- private String api;
+ private Long position;
+
+ private Long timestamp;
- private Long initTime;
+ private String journalName;
- private String query;
+ private Date createTime;
- private Integer interval;
+ private Date updateTime;
- private String step;
+ private static final long serialVersionUID = 1L;
}
\ No newline at end of file
diff --git a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshPositionReporterHistory.java
similarity index 57%
copy from eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshPositionReporterHistory.java
index 7e8b7ba93..c8d7d9b6d 100644
--- a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshPositionReporterHistory.java
@@ -15,26 +15,34 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.prometheus.source.config;
+package org.apache.eventmesh.admin.server.web.db.entity;
-import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
-@Data
-public class SourceConnectorConfig {
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
- private String connectorName;
+import lombok.Data;
- private String connectorId;
+/**
+ * event_mesh_position_reporter_history
+ */
+@TableName(value = "event_mesh_position_reporter_history")
+@Data
+public class EventMeshPositionReporterHistory implements Serializable {
- private String address;
+ @TableId(type = IdType.AUTO)
+ private Long id;
- private String api;
+ private Integer job;
- private Long initTime;
+ private String record;
- private String query;
+ private String address;
- private Integer interval;
+ private Date createTime;
- private String step;
+ private static final long serialVersionUID = 1L;
}
\ No newline at end of file
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshRuntimeHeartbeat.java
similarity index 54%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshRuntimeHeartbeat.java
index 14fd92218..7cc165cc5 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshRuntimeHeartbeat.java
@@ -15,21 +15,38 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.db.entity;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.storage.OffsetStorageReader;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
- * Source Connector Context
+ * event_mesh_runtime_heartbeat
*/
+@TableName(value = "event_mesh_runtime_heartbeat")
@Data
-public class SourceConnectorContext implements ConnectorContext {
+public class EventMeshRuntimeHeartbeat implements Serializable {
+
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ private String adminAddr;
+
+ private String runtimeAddr;
+
+ private Integer jobID;
+
+ private String reportTime;
- public OffsetStorageReader offsetStorageReader;
+ private Date updateTime;
- public SourceConfig sourceConfig;
+ private Date createTime;
-}
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshRuntimeHistory.java
similarity index 59%
copy from eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshRuntimeHistory.java
index 7e8b7ba93..1f8ef788d 100644
--- a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/entity/EventMeshRuntimeHistory.java
@@ -15,26 +15,32 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.prometheus.source.config;
+package org.apache.eventmesh.admin.server.web.db.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
+/**
+ * event_mesh_runtime_history
+ */
+@TableName(value = "event_mesh_runtime_history")
@Data
-public class SourceConnectorConfig {
+public class EventMeshRuntimeHistory implements Serializable {
- private String connectorName;
+ @TableId(type = IdType.AUTO)
+ private Long id;
- private String connectorId;
+ private Integer job;
private String address;
- private String api;
-
- private Long initTime;
-
- private String query;
-
- private Integer interval;
+ private Date createTime;
- private String step;
+ private static final long serialVersionUID = 1L;
}
\ No newline at end of file
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshDataSourceMapper.java
similarity index 63%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshDataSourceMapper.java
index 14fd92218..c59e28428 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshDataSourceMapper.java
@@ -15,21 +15,24 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.db.mapper;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.storage.OffsetStorageReader;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshDataSource;
-import lombok.Data;
+import org.apache.ibatis.annotations.Mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
- * Source Connector Context
+ * for table 'event_mesh_data_source' db operation
+ * 2024-05-09 15:52:49
+ * entity.db.web.server.admin.eventmesh.apache.org.EventMeshDataSource
*/
-@Data
-public class SourceConnectorContext implements ConnectorContext {
+@Mapper
+public interface EventMeshDataSourceMapper extends BaseMapper<EventMeshDataSource> {
+
+}
+
- public OffsetStorageReader offsetStorageReader;
- public SourceConfig sourceConfig;
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshJobInfoMapper.java
similarity index 64%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshJobInfoMapper.java
index 14fd92218..eb57c0af2 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshJobInfoMapper.java
@@ -15,21 +15,24 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.db.mapper;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.storage.OffsetStorageReader;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshJobInfo;
-import lombok.Data;
+import org.apache.ibatis.annotations.Mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
- * Source Connector Context
+ * for table 'event_mesh_job_info' db operation
+ * 2024-05-09 15:51:45
+ * entity.db.web.server.admin.eventmesh.apache.org.EventMeshJobInfo
*/
-@Data
-public class SourceConnectorContext implements ConnectorContext {
+@Mapper
+public interface EventMeshJobInfoMapper extends BaseMapper<EventMeshJobInfo> {
+
+}
+
- public OffsetStorageReader offsetStorageReader;
- public SourceConfig sourceConfig;
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshMysqlPositionMapper.java
similarity index 62%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshMysqlPositionMapper.java
index f8b6bdc45..f0a0467d7 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshMysqlPositionMapper.java
@@ -15,20 +15,24 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.storage;
+package org.apache.eventmesh.admin.server.web.db.mapper;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshMysqlPosition;
-import java.util.Map;
+import org.apache.ibatis.annotations.Mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
- * OffsetStorageWriter
+ * for table `event_mesh_mysql_position` db operation
+ * 2024-05-14 17:15:03
+ * entity.db.web.server.admin.eventmesh.apache.org.EventMeshMysqlPosition
*/
-public interface OffsetStorageWriter {
+@Mapper
+public interface EventMeshMysqlPositionMapper extends BaseMapper<EventMeshMysqlPosition> {
+
+}
+
- void writeOffset(RecordPartition recordPartition, RecordOffset recordOffset);
- void writeOffset(Map<RecordPartition, RecordOffset> map);
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshPositionReporterHistoryMapper.java
similarity index 60%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshPositionReporterHistoryMapper.java
index dc17e2984..adc6723b7 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshPositionReporterHistoryMapper.java
@@ -15,21 +15,24 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.storage;
+package org.apache.eventmesh.admin.server.web.db.mapper;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshPositionReporterHistory;
-import java.util.Collection;
-import java.util.Map;
+import org.apache.ibatis.annotations.Mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
- * OffsetStorageReader
+ * for table 'event_mesh_position_reporter_history' db operation
+ * 2024-05-14 17:15:03
+ * entity.db.web.server.admin.eventmesh.apache.org.EventMeshPositionReporterHistory
*/
-public interface OffsetStorageReader {
+@Mapper
+public interface EventMeshPositionReporterHistoryMapper extends BaseMapper<EventMeshPositionReporterHistory> {
+
+}
+
- RecordOffset readOffset(RecordPartition recordPartition);
- Map<RecordPartition, RecordOffset> readOffsets(Collection<RecordPartition> collection);
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshRuntimeHeartbeatMapper.java
similarity index 61%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshRuntimeHeartbeatMapper.java
index dc17e2984..813769d2a 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshRuntimeHeartbeatMapper.java
@@ -15,21 +15,24 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.storage;
+package org.apache.eventmesh.admin.server.web.db.mapper;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHeartbeat;
-import java.util.Collection;
-import java.util.Map;
+import org.apache.ibatis.annotations.Mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
- * OffsetStorageReader
+ * for table 'event_mesh_runtime_heartbeat' db operation
+ * 2024-05-14 17:15:03
+ * entity.db.web.server.admin.eventmesh.apache.org.EventMeshRuntimeHeartbeat
*/
-public interface OffsetStorageReader {
+@Mapper
+public interface EventMeshRuntimeHeartbeatMapper extends BaseMapper<EventMeshRuntimeHeartbeat> {
+
+}
+
- RecordOffset readOffset(RecordPartition recordPartition);
- Map<RecordPartition, RecordOffset> readOffsets(Collection<RecordPartition> collection);
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshRuntimeHistoryMapper.java
similarity index 62%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshRuntimeHistoryMapper.java
index dc17e2984..5fc3a21f5 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/mapper/EventMeshRuntimeHistoryMapper.java
@@ -15,21 +15,24 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.storage;
+package org.apache.eventmesh.admin.server.web.db.mapper;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHistory;
-import java.util.Collection;
-import java.util.Map;
+import org.apache.ibatis.annotations.Mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
- * OffsetStorageReader
+ * for table 'event_mesh_runtime_history' db operation
+ * 2024-05-14 17:15:03
+ * entity.db.web.server.admin.eventmesh.apache.org.EventMeshRuntimeHistory
*/
-public interface OffsetStorageReader {
+@Mapper
+public interface EventMeshRuntimeHistoryMapper extends BaseMapper<EventMeshRuntimeHistory> {
+
+}
+
- RecordOffset readOffset(RecordPartition recordPartition);
- Map<RecordPartition, RecordOffset> readOffsets(Collection<RecordPartition> collection);
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshDataSourceService.java
similarity index 69%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshDataSourceService.java
index a7aef4fff..29e2b8122 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshDataSourceService.java
@@ -15,18 +15,17 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.db.service;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshDataSource;
-import lombok.Data;
+import com.baomidou.mybatisplus.extension.service.IService;
/**
- * Sink Connector Context
- */
-@Data
-public class SinkConnectorContext implements ConnectorContext {
-
- public SinkConfig sinkConfig;
+*
+* for table 'event_mesh_data_source' db operation
+* 2024-05-09 15:52:49
+*/
+public interface EventMeshDataSourceService extends IService<EventMeshDataSource> {
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshJobInfoService.java
similarity index 70%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshJobInfoService.java
index a7aef4fff..c5ad39985 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshJobInfoService.java
@@ -15,18 +15,15 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.db.service;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshJobInfo;
-import lombok.Data;
+import com.baomidou.mybatisplus.extension.service.IService;
/**
- * Sink Connector Context
- */
-@Data
-public class SinkConnectorContext implements ConnectorContext {
-
- public SinkConfig sinkConfig;
-
+* for table `event_mesh_job_info' db operation
+* 2024-05-09 15:51:45
+*/
+public interface EventMeshJobInfoService extends IService<EventMeshJobInfo> {
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshMysqlPositionService.java
similarity index 68%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshMysqlPositionService.java
index a7aef4fff..2bf34ab92 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshMysqlPositionService.java
@@ -15,18 +15,15 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.db.service;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshMysqlPosition;
-import lombok.Data;
+import com.baomidou.mybatisplus.extension.service.IService;
/**
- * Sink Connector Context
- */
-@Data
-public class SinkConnectorContext implements ConnectorContext {
-
- public SinkConfig sinkConfig;
-
+* for table 'event_mesh_mysql_position' db operation
+* 2024-05-14 17:15:03
+*/
+public interface EventMeshMysqlPositionService extends IService<EventMeshMysqlPosition> {
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshPositionReporterHistoryService.java
similarity index 66%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshPositionReporterHistoryService.java
index a7aef4fff..976eec94e 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshPositionReporterHistoryService.java
@@ -15,18 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.db.service;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshPositionReporterHistory;
-import lombok.Data;
+import com.baomidou.mybatisplus.extension.service.IService;
/**
- * Sink Connector Context
- */
-@Data
-public class SinkConnectorContext implements ConnectorContext {
-
- public SinkConfig sinkConfig;
+* for table 'event_mesh_position_reporter_history' db operation
+* 2024-05-14 17:15:03
+*/
+public interface EventMeshPositionReporterHistoryService extends IService<EventMeshPositionReporterHistory> {
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshRuntimeHeartbeatService.java
similarity index 68%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshRuntimeHeartbeatService.java
index a7aef4fff..f0e5d1c61 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshRuntimeHeartbeatService.java
@@ -15,18 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.db.service;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHeartbeat;
-import lombok.Data;
+import com.baomidou.mybatisplus.extension.service.IService;
/**
- * Sink Connector Context
+ * for table 'event_mesh_runtime_heartbeat' db operation
+ * 2024-05-14 17:15:03
*/
-@Data
-public class SinkConnectorContext implements ConnectorContext {
-
- public SinkConfig sinkConfig;
+public interface EventMeshRuntimeHeartbeatService extends IService<EventMeshRuntimeHeartbeat> {
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshRuntimeHistoryService.java
similarity index 68%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshRuntimeHistoryService.java
index a7aef4fff..1f6db0e12 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/EventMeshRuntimeHistoryService.java
@@ -15,18 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.db.service;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHistory;
-import lombok.Data;
+import com.baomidou.mybatisplus.extension.service.IService;
/**
- * Sink Connector Context
+ * for table 'event_mesh_runtime_history' db operation
+ * 2024-05-14 17:15:03
*/
-@Data
-public class SinkConnectorContext implements ConnectorContext {
-
- public SinkConfig sinkConfig;
+public interface EventMeshRuntimeHistoryService extends IService<EventMeshRuntimeHistory> {
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshDataSourceServiceImpl.java
similarity index 55%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshDataSourceServiceImpl.java
index dc17e2984..f703425c9 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshDataSourceServiceImpl.java
@@ -15,21 +15,26 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.storage;
+package org.apache.eventmesh.admin.server.web.db.service.impl;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshDataSource;
+import org.apache.eventmesh.admin.server.web.db.mapper.EventMeshDataSourceMapper;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshDataSourceService;
-import java.util.Collection;
-import java.util.Map;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
- * OffsetStorageReader
+ * for table 'event_mesh_data_source' db operation
+ * 2024-05-09 15:52:49
*/
-public interface OffsetStorageReader {
+@Service
+public class EventMeshDataSourceServiceImpl extends ServiceImpl<EventMeshDataSourceMapper, EventMeshDataSource>
+ implements EventMeshDataSourceService {
+
+}
+
- RecordOffset readOffset(RecordPartition recordPartition);
- Map<RecordPartition, RecordOffset> readOffsets(Collection<RecordPartition> collection);
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshJobInfoServiceImpl.java
similarity index 54%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshJobInfoServiceImpl.java
index dc17e2984..dd7312cea 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshJobInfoServiceImpl.java
@@ -15,21 +15,29 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.storage;
+package org.apache.eventmesh.admin.server.web.db.service.impl;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshJobInfo;
+import org.apache.eventmesh.admin.server.web.db.mapper.EventMeshJobInfoMapper;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshJobInfoService;
-import java.util.Collection;
-import java.util.Map;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import lombok.extern.slf4j.Slf4j;
/**
- * OffsetStorageReader
+ * for table 'event_mesh_job_info' db operation
+ * 2024-05-09 15:51:45
*/
-public interface OffsetStorageReader {
+@Service
+@Slf4j
+public class EventMeshJobInfoServiceImpl extends ServiceImpl<EventMeshJobInfoMapper, EventMeshJobInfo>
+ implements EventMeshJobInfoService {
+
+}
+
- RecordOffset readOffset(RecordPartition recordPartition);
- Map<RecordPartition, RecordOffset> readOffsets(Collection<RecordPartition> collection);
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshMysqlPositionServiceImpl.java
similarity index 53%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshMysqlPositionServiceImpl.java
index f8b6bdc45..353443b78 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshMysqlPositionServiceImpl.java
@@ -15,20 +15,29 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.storage;
+package org.apache.eventmesh.admin.server.web.db.service.impl;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshMysqlPosition;
+import org.apache.eventmesh.admin.server.web.db.mapper.EventMeshMysqlPositionMapper;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshMysqlPositionService;
-import java.util.Map;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import lombok.extern.slf4j.Slf4j;
/**
- * OffsetStorageWriter
+ * for table 'event_mesh_mysql_position' db operation
+ * 2024-05-14 17:15:03
*/
-public interface OffsetStorageWriter {
+@Service
+@Slf4j
+public class EventMeshMysqlPositionServiceImpl extends ServiceImpl<EventMeshMysqlPositionMapper, EventMeshMysqlPosition>
+ implements EventMeshMysqlPositionService {
+
+}
+
- void writeOffset(RecordPartition recordPartition, RecordOffset recordOffset);
- void writeOffset(Map<RecordPartition, RecordOffset> map);
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshPositionReporterHistoryServiceImpl.java
similarity index 51%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshPositionReporterHistoryServiceImpl.java
index f8b6bdc45..d546e412b 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshPositionReporterHistoryServiceImpl.java
@@ -15,20 +15,26 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.storage;
+package org.apache.eventmesh.admin.server.web.db.service.impl;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshPositionReporterHistory;
+import org.apache.eventmesh.admin.server.web.db.mapper.EventMeshPositionReporterHistoryMapper;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshPositionReporterHistoryService;
-import java.util.Map;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
- * OffsetStorageWriter
+ * for table 'event_mesh_position_reporter_history' db operation
+ * 2024-05-14 17:15:03
*/
-public interface OffsetStorageWriter {
+@Service
+public class EventMeshPositionReporterHistoryServiceImpl extends ServiceImpl<EventMeshPositionReporterHistoryMapper, EventMeshPositionReporterHistory>
+ implements EventMeshPositionReporterHistoryService {
+
+}
+
- void writeOffset(RecordPartition recordPartition, RecordOffset recordOffset);
- void writeOffset(Map<RecordPartition, RecordOffset> map);
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshRuntimeHeartbeatServiceImpl.java
similarity index 52%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshRuntimeHeartbeatServiceImpl.java
index f8b6bdc45..452569e3a 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageWriter.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshRuntimeHeartbeatServiceImpl.java
@@ -15,20 +15,29 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.storage;
+package org.apache.eventmesh.admin.server.web.db.service.impl;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHeartbeat;
+import org.apache.eventmesh.admin.server.web.db.mapper.EventMeshRuntimeHeartbeatMapper;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshRuntimeHeartbeatService;
-import java.util.Map;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import lombok.extern.slf4j.Slf4j;
/**
- * OffsetStorageWriter
+ * for table 'event_mesh_runtime_heartbeat' db operation
+ * 2024-05-14 17:15:03
*/
-public interface OffsetStorageWriter {
+@Service
+@Slf4j
+public class EventMeshRuntimeHeartbeatServiceImpl extends ServiceImpl<EventMeshRuntimeHeartbeatMapper, EventMeshRuntimeHeartbeat>
+ implements EventMeshRuntimeHeartbeatService {
+
+}
+
- void writeOffset(RecordPartition recordPartition, RecordOffset recordOffset);
- void writeOffset(Map<RecordPartition, RecordOffset> map);
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshRuntimeHistoryServiceImpl.java
similarity index 54%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshRuntimeHistoryServiceImpl.java
index dc17e2984..d39e868ce 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/storage/OffsetStorageReader.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/db/service/impl/EventMeshRuntimeHistoryServiceImpl.java
@@ -15,21 +15,26 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.storage;
+package org.apache.eventmesh.admin.server.web.db.service.impl;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHistory;
+import org.apache.eventmesh.admin.server.web.db.mapper.EventMeshRuntimeHistoryMapper;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshRuntimeHistoryService;
-import java.util.Collection;
-import java.util.Map;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
- * OffsetStorageReader
+ * for table 'event_mesh_runtime_history' db operation
+ * 2024-05-14 17:15:03
*/
-public interface OffsetStorageReader {
+@Service
+public class EventMeshRuntimeHistoryServiceImpl extends ServiceImpl<EventMeshRuntimeHistoryMapper, EventMeshRuntimeHistory>
+ implements EventMeshRuntimeHistoryService {
+
+}
+
- RecordOffset readOffset(RecordPartition recordPartition);
- Map<RecordPartition, RecordOffset> readOffsets(Collection<RecordPartition> collection);
-}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnector.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/BaseRequestHandler.java
similarity index 59%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnector.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/BaseRequestHandler.java
index 100612662..7f08f388c 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SourceConnector.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/BaseRequestHandler.java
@@ -15,16 +15,17 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.handler;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
-import org.apache.eventmesh.openconnect.api.source.Source;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Metadata;
+import org.apache.eventmesh.common.remote.request.BaseRemoteRequest;
+import org.apache.eventmesh.common.remote.response.BaseRemoteResponse;
-public abstract class SourceConnector implements Source {
+public abstract class BaseRequestHandler<T extends BaseRemoteRequest, S extends BaseRemoteResponse> {
- private final SourceConfig sourceConfig;
-
- protected SourceConnector(SourceConfig sourceConfig) {
- this.sourceConfig = sourceConfig;
+ public BaseRemoteResponse handlerRequest(T request, Metadata metadata) {
+ return handler(request, metadata);
}
+
+ protected abstract S handler(T request, Metadata metadata);
}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/RequestHandlerFactory.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/RequestHandlerFactory.java
new file mode 100644
index 000000000..9375fb537
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/RequestHandlerFactory.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.handler;
+
+import org.apache.eventmesh.common.remote.request.BaseRemoteRequest;
+import org.apache.eventmesh.common.remote.response.BaseRemoteResponse;
+
+import java.lang.reflect.ParameterizedType;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.stereotype.Component;
+
+@Component
+public class RequestHandlerFactory implements ApplicationListener<ContextRefreshedEvent> {
+
+ private final Map<String, BaseRequestHandler<BaseRemoteRequest, BaseRemoteResponse>> handlers =
+ new ConcurrentHashMap<>();
+
+ public BaseRequestHandler<BaseRemoteRequest, BaseRemoteResponse> getHandler(String type) {
+ return handlers.get(type);
+ }
+
+ @Override
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ public void onApplicationEvent(ContextRefreshedEvent event) {
+ Map<String, BaseRequestHandler> beans =
+ event.getApplicationContext().getBeansOfType(BaseRequestHandler.class);
+
+ for (BaseRequestHandler<BaseRemoteRequest, BaseRemoteResponse> requestHandler : beans.values()) {
+ Class<?> clazz = requestHandler.getClass();
+ boolean skip = false;
+ while (!clazz.getSuperclass().equals(BaseRequestHandler.class)) {
+ if (clazz.getSuperclass().equals(Object.class)) {
+ skip = true;
+ break;
+ }
+ clazz = clazz.getSuperclass();
+ }
+ if (skip) {
+ continue;
+ }
+
+ Class c = (Class) ((ParameterizedType) clazz.getGenericSuperclass()).getActualTypeArguments()[0];
+ handlers.putIfAbsent(c.getSimpleName(), requestHandler);
+ }
+ }
+}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/FetchJobRequestHandler.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/FetchJobRequestHandler.java
new file mode 100644
index 000000000..56f9f047b
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/FetchJobRequestHandler.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.handler.impl;
+
+import org.apache.eventmesh.admin.server.AdminServerRuntimeException;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshJobDetail;
+import org.apache.eventmesh.admin.server.web.handler.BaseRequestHandler;
+import org.apache.eventmesh.admin.server.web.service.job.EventMeshJobInfoBizService;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Metadata;
+import org.apache.eventmesh.common.remote.exception.ErrorCode;
+import org.apache.eventmesh.common.remote.request.FetchJobRequest;
+import org.apache.eventmesh.common.remote.response.FetchJobResponse;
+
+import org.apache.commons.lang3.StringUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Component
+@Slf4j
+public class FetchJobRequestHandler extends BaseRequestHandler<FetchJobRequest, FetchJobResponse> {
+
+ @Autowired
+ EventMeshJobInfoBizService jobInfoBizService;
+
+ @Override
+ public FetchJobResponse handler(FetchJobRequest request, Metadata metadata) {
+ if (StringUtils.isBlank(request.getJobID())) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_REQUEST, "job id is empty");
+ }
+ int jobID;
+ try {
+ jobID = Integer.parseInt(request.getJobID());
+ } catch (NumberFormatException e) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_REQUEST, String.format("illegal job id %s",
+ request.getJobID()));
+ }
+ FetchJobResponse response = FetchJobResponse.successResponse();
+ EventMeshJobDetail detail = jobInfoBizService.getJobDetail(request, metadata);
+ if (detail == null) {
+ return response;
+ }
+ response.setId(detail.getId());
+ response.setName(detail.getName());
+ response.setSourceConnectorConfig(detail.getSourceConnectorConfig());
+ response.setSourceConnectorDesc(detail.getSourceConnectorDesc());
+ response.setTransportType(detail.getTransportType());
+ response.setSinkConnectorConfig(detail.getSinkConnectorConfig());
+ response.setSourceConnectorDesc(detail.getSinkConnectorDesc());
+ response.setState(detail.getState());
+ response.setPosition(detail.getPosition());
+ return response;
+ }
+}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/FetchPositionHandler.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/FetchPositionHandler.java
new file mode 100644
index 000000000..2e6fa31f0
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/FetchPositionHandler.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.handler.impl;
+
+import org.apache.eventmesh.admin.server.AdminServerRuntimeException;
+import org.apache.eventmesh.admin.server.web.db.DBThreadPool;
+import org.apache.eventmesh.admin.server.web.handler.BaseRequestHandler;
+import org.apache.eventmesh.admin.server.web.service.position.EventMeshPositionBizService;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Metadata;
+import org.apache.eventmesh.common.remote.exception.ErrorCode;
+import org.apache.eventmesh.common.remote.request.FetchPositionRequest;
+import org.apache.eventmesh.common.remote.response.FetchPositionResponse;
+
+import org.apache.commons.lang3.StringUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Component
+@Slf4j
+public class FetchPositionHandler extends BaseRequestHandler<FetchPositionRequest, FetchPositionResponse> {
+
+ @Autowired
+ DBThreadPool executor;
+
+ @Autowired
+ EventMeshPositionBizService positionBizService;
+
+ @Override
+ protected FetchPositionResponse handler(FetchPositionRequest request, Metadata metadata) {
+ if (request.getDataSourceType() == null) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_REQUEST, "illegal data type, it's empty");
+ }
+ if (StringUtils.isBlank(request.getJobID())) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_REQUEST, "illegal job id, it's empty");
+ }
+ return FetchPositionResponse.successResponse(positionBizService.getPosition(request, metadata));
+ }
+}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/ReportHeartBeatHandler.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/ReportHeartBeatHandler.java
new file mode 100644
index 000000000..32c9ca21b
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/ReportHeartBeatHandler.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.handler.impl;
+
+import org.apache.eventmesh.admin.server.web.db.DBThreadPool;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHeartbeat;
+import org.apache.eventmesh.admin.server.web.handler.BaseRequestHandler;
+import org.apache.eventmesh.admin.server.web.service.heatbeat.EventMeshRuntimeHeartbeatBizService;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Metadata;
+import org.apache.eventmesh.common.remote.request.ReportHeartBeatRequest;
+import org.apache.eventmesh.common.remote.response.EmptyAckResponse;
+import org.apache.eventmesh.common.utils.IPUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Component
+@Slf4j
+public class ReportHeartBeatHandler extends BaseRequestHandler<ReportHeartBeatRequest, EmptyAckResponse> {
+
+ @Autowired
+ EventMeshRuntimeHeartbeatBizService heartbeatBizService;
+
+ @Autowired
+ DBThreadPool executor;
+
+ @Override
+ protected EmptyAckResponse handler(ReportHeartBeatRequest request, Metadata metadata) {
+ executor.getExecutors().execute(() -> {
+ EventMeshRuntimeHeartbeat heartbeat = new EventMeshRuntimeHeartbeat();
+ int job;
+ try {
+ job = Integer.parseInt(request.getJobID());
+ } catch (NumberFormatException e) {
+ log.warn("runtime {} report heartbeat fail, illegal job id {}", request.getAddress(), request.getJobID());
+ return;
+ }
+ heartbeat.setJobID(job);
+ heartbeat.setReportTime(request.getReportedTimeStamp());
+ heartbeat.setAdminAddr(IPUtils.getLocalAddress());
+ heartbeat.setRuntimeAddr(request.getAddress());
+ try {
+ if (!heartbeatBizService.saveOrUpdateByRuntimeAddress(heartbeat)) {
+ log.warn("save or update heartbeat request [{}] fail", request);
+ }
+ } catch (Exception e) {
+ log.warn("save or update heartbeat request [{}] fail", request, e);
+ }
+ });
+
+ return new EmptyAckResponse();
+ }
+}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/ReportPositionHandler.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/ReportPositionHandler.java
new file mode 100644
index 000000000..adfe11013
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/handler/impl/ReportPositionHandler.java
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.handler.impl;
+
+import org.apache.eventmesh.admin.server.AdminServerRuntimeException;
+import org.apache.eventmesh.admin.server.web.db.DBThreadPool;
+import org.apache.eventmesh.admin.server.web.handler.BaseRequestHandler;
+import org.apache.eventmesh.admin.server.web.service.job.EventMeshJobInfoBizService;
+import org.apache.eventmesh.admin.server.web.service.position.EventMeshPositionBizService;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Metadata;
+import org.apache.eventmesh.common.remote.exception.ErrorCode;
+import org.apache.eventmesh.common.remote.request.ReportPositionRequest;
+import org.apache.eventmesh.common.remote.response.EmptyAckResponse;
+
+import org.apache.commons.lang3.StringUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Component
+@Slf4j
+public class ReportPositionHandler extends BaseRequestHandler<ReportPositionRequest, EmptyAckResponse> {
+
+ @Autowired
+ EventMeshJobInfoBizService jobInfoBizService;
+
+ @Autowired
+ DBThreadPool executor;
+
+ @Autowired
+ EventMeshPositionBizService positionBizService;
+
+
+ @Override
+ protected EmptyAckResponse handler(ReportPositionRequest request, Metadata metadata) {
+ if (request.getDataSourceType() == null) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_REQUEST, "illegal data type, it's empty");
+ }
+ if (StringUtils.isBlank(request.getJobID())) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_REQUEST, "illegal job id, it's empty");
+ }
+ if (request.getRecordPositionList() == null || request.getRecordPositionList().isEmpty()) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_REQUEST, "illegal record position list, it's empty");
+ }
+ int jobID;
+
+ try {
+ jobID = Integer.parseInt(request.getJobID());
+ } catch (NumberFormatException e) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_REQUEST, String.format("illegal job id [%s] format",
+ request.getJobID()));
+ }
+
+ positionBizService.isValidatePositionRequest(request.getDataSourceType());
+
+ executor.getExecutors().execute(() -> {
+ try {
+ boolean reported = positionBizService.reportPosition(request, metadata);
+ if (reported) {
+ if (log.isDebugEnabled()) {
+ log.debug("handle runtime [{}] report data type [{}] job [{}] position [{}] success",
+ request.getAddress(), request.getDataSourceType(), request.getJobID(),
+ request.getRecordPositionList());
+ }
+ } else {
+ log.warn("handle runtime [{}] report data type [{}] job [{}] position [{}] fail",
+ request.getAddress(), request.getDataSourceType(), request.getJobID(),
+ request.getRecordPositionList());
+ }
+ } catch (Exception e) {
+ log.warn("handle position request fail, request [{}]", request, e);
+ } finally {
+ try {
+ if (!jobInfoBizService.updateJobState(jobID, request.getState())) {
+ log.warn("update job [{}] state to [{}] fail", jobID, request.getState());
+ }
+ } catch (Exception e) {
+ log.warn("update job id [{}] type [{}] state [{}] fail", request.getJobID(),
+ request.getDataSourceType(), request.getState(), e);
+ }
+ }
+ });
+ return new EmptyAckResponse();
+ }
+}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/heatbeat/EventMeshRuntimeHeartbeatBizService.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/heatbeat/EventMeshRuntimeHeartbeatBizService.java
new file mode 100644
index 000000000..4fa80b270
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/heatbeat/EventMeshRuntimeHeartbeatBizService.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.service.heatbeat;
+
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHeartbeat;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHistory;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshRuntimeHeartbeatService;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshRuntimeHistoryService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * for table 'event_mesh_runtime_heartbeat' db operation 2024-05-14 17:15:03
+ */
+@Service
+@Slf4j
+public class EventMeshRuntimeHeartbeatBizService {
+
+ @Autowired
+ EventMeshRuntimeHistoryService historyService;
+
+ @Autowired
+ EventMeshRuntimeHeartbeatService heartbeatService;
+
+ public boolean saveOrUpdateByRuntimeAddress(EventMeshRuntimeHeartbeat entity) {
+ EventMeshRuntimeHeartbeat old = heartbeatService.getOne(Wrappers.<EventMeshRuntimeHeartbeat>query().eq(
+ "runtimeAddr",
+ entity.getRuntimeAddr()));
+ if (old == null) {
+ return heartbeatService.save(entity);
+ } else {
+ if (Long.parseLong(old.getReportTime()) >= Long.parseLong(entity.getReportTime())) {
+ log.info("update heartbeat record ignore, current report time late than db, job [{}], remote [{}]", entity.getJobID(),
+ entity.getRuntimeAddr());
+ return true;
+ }
+ try {
+ return heartbeatService.update(entity, Wrappers.<EventMeshRuntimeHeartbeat>update().eq("updateTime",
+ old.getUpdateTime()));
+ } finally {
+ if (old.getJobID() != null && !old.getJobID().equals(entity.getJobID())) {
+ EventMeshRuntimeHistory history = new EventMeshRuntimeHistory();
+ history.setAddress(old.getAdminAddr());
+ history.setJob(old.getJobID());
+ try {
+ historyService.save(history);
+ } catch (Exception e) {
+ log.warn("save runtime job changed history fail", e);
+ }
+
+ log.info("runtime [{}] changed job, old job [{}], now [{}]", entity.getRuntimeAddr(), old.getJobID(),
+ entity.getJobID());
+ }
+ }
+ }
+ }
+}
+
+
+
+
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/job/EventMeshJobInfoBizService.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/job/EventMeshJobInfoBizService.java
new file mode 100644
index 000000000..79771cbf2
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/job/EventMeshJobInfoBizService.java
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.service.job;
+
+import org.apache.eventmesh.admin.server.AdminServerRuntimeException;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshDataSource;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshJobDetail;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshJobInfo;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshDataSourceService;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshJobInfoService;
+import org.apache.eventmesh.admin.server.web.service.position.EventMeshPositionBizService;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Metadata;
+import org.apache.eventmesh.common.remote.JobState;
+import org.apache.eventmesh.common.remote.exception.ErrorCode;
+import org.apache.eventmesh.common.remote.job.DataSourceType;
+import org.apache.eventmesh.common.remote.job.JobTransportType;
+import org.apache.eventmesh.common.remote.request.FetchJobRequest;
+import org.apache.eventmesh.common.utils.JsonUtils;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fasterxml.jackson.core.type.TypeReference;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * for table 'event_mesh_job_info' db operation
+ * 2024-05-09 15:51:45
+ */
+@Service
+@Slf4j
+public class EventMeshJobInfoBizService {
+
+ @Autowired
+ EventMeshJobInfoService jobInfoService;
+
+ @Autowired
+ EventMeshDataSourceService dataSourceService;
+
+ @Autowired
+ EventMeshPositionBizService positionBizService;
+
+ public boolean updateJobState(Integer jobID, JobState state) {
+ if (jobID == null || state == null) {
+ return false;
+ }
+ EventMeshJobInfo jobInfo = new EventMeshJobInfo();
+ jobInfo.setJobID(jobID);
+ jobInfo.setState(state.ordinal());
+ jobInfoService.update(jobInfo, Wrappers.<EventMeshJobInfo>update().notIn("state", JobState.DELETE.ordinal(),
+ JobState.COMPLETE.ordinal()));
+ return true;
+ }
+
+ public EventMeshJobDetail getJobDetail(FetchJobRequest request, Metadata metadata) {
+ if (request == null) {
+ return null;
+ }
+ EventMeshJobInfo job = jobInfoService.getById(request.getJobID());
+ if (job == null) {
+ return null;
+ }
+ EventMeshJobDetail detail = new EventMeshJobDetail();
+ detail.setId(job.getJobID());
+ detail.setName(job.getName());
+ EventMeshDataSource source = dataSourceService.getById(job.getSourceData());
+ EventMeshDataSource target = dataSourceService.getById(job.getTargetData());
+ if (source != null) {
+ if (!StringUtils.isBlank(source.getConfiguration())) {
+ try {
+ detail.setSourceConnectorConfig(JsonUtils.parseTypeReferenceObject(source.getConfiguration(),
+ new TypeReference<Map<String, Object>>() {
+ }));
+ } catch (Exception e) {
+ log.warn("parse source config id [{}] fail", job.getSourceData(), e);
+ throw new AdminServerRuntimeException(ErrorCode.BAD_DB_DATA, "illegal source data source config");
+ }
+ }
+ detail.setSourceConnectorDesc(source.getDescription());
+ if (source.getDataType() != null) {
+ detail.setPosition(positionBizService.getPositionByJobID(job.getJobID(),
+ DataSourceType.getDataSourceType(source.getDataType())));
+
+ }
+ }
+ if (target != null) {
+ if (!StringUtils.isBlank(target.getConfiguration())) {
+ try {
+ detail.setSinkConnectorConfig(JsonUtils.parseTypeReferenceObject(target.getConfiguration(),
+ new TypeReference<Map<String, Object>>() {
+ }));
+ } catch (Exception e) {
+ log.warn("parse sink config id [{}] fail", job.getSourceData(), e);
+ throw new AdminServerRuntimeException(ErrorCode.BAD_DB_DATA, "illegal target data sink config");
+ }
+ }
+ detail.setSinkConnectorDesc(target.getDescription());
+ }
+
+ JobState state = JobState.fromIndex(job.getState());
+ if (state == null) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_DB_DATA, "illegal job state in db");
+ }
+ detail.setState(state);
+ detail.setTransportType(JobTransportType.getJobTransportType(job.getTransportType()));
+ return detail;
+ }
+}
+
+
+
+
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/EventMeshPositionBizService.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/EventMeshPositionBizService.java
new file mode 100644
index 000000000..7d6febdf4
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/EventMeshPositionBizService.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.service.position;
+
+import org.apache.eventmesh.admin.server.AdminServerRuntimeException;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Metadata;
+import org.apache.eventmesh.common.remote.exception.ErrorCode;
+import org.apache.eventmesh.common.remote.job.DataSourceType;
+import org.apache.eventmesh.common.remote.offset.RecordPosition;
+import org.apache.eventmesh.common.remote.request.FetchPositionRequest;
+import org.apache.eventmesh.common.remote.request.ReportPositionRequest;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Service
+@Slf4j
+public class EventMeshPositionBizService {
+
+ @Autowired
+ PositionHandlerFactory factory;
+
+ // called isValidateReportRequest before call this
+ public RecordPosition getPosition(FetchPositionRequest request, Metadata metadata) {
+ if (request == null) {
+ return null;
+ }
+ isValidatePositionRequest(request.getDataSourceType());
+ IFetchPositionHandler handler = factory.getHandler(request.getDataSourceType());
+ return handler.handler(request, metadata);
+ }
+
+ public void isValidatePositionRequest(DataSourceType type) {
+ if (type == null) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_REQUEST, "data source type is null");
+ }
+ IReportPositionHandler handler = factory.getHandler(type);
+ if (handler == null) {
+ throw new AdminServerRuntimeException(ErrorCode.BAD_REQUEST,
+ String.format("illegal data base type [%s], it not match any report position handler", type));
+ }
+ }
+
+ // called isValidateReportRequest before call this
+ public boolean reportPosition(ReportPositionRequest request, Metadata metadata) {
+ if (request == null) {
+ return false;
+ }
+ isValidatePositionRequest(request.getDataSourceType());
+ IReportPositionHandler handler = factory.getHandler(request.getDataSourceType());
+ return handler.handler(request, metadata);
+ }
+
+ public RecordPosition getPositionByJobID(Integer jobID, DataSourceType type) {
+ if (jobID == null || type == null) {
+ return null;
+ }
+ isValidatePositionRequest(type);
+ PositionHandler handler = factory.getHandler(type);
+ FetchPositionRequest request = new FetchPositionRequest();
+ request.setJobID(String.valueOf(jobID));
+ return handler.handler(request, null);
+ }
+}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/IFetchPositionHandler.java
similarity index 66%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/IFetchPositionHandler.java
index a7aef4fff..9a4c324dc 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/IFetchPositionHandler.java
@@ -15,18 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.service.position;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
-
-import lombok.Data;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Metadata;
+import org.apache.eventmesh.common.remote.offset.RecordPosition;
+import org.apache.eventmesh.common.remote.request.FetchPositionRequest;
/**
- * Sink Connector Context
+ * IFetchPositionHandler
*/
-@Data
-public class SinkConnectorContext implements ConnectorContext {
-
- public SinkConfig sinkConfig;
+public interface IFetchPositionHandler {
+ RecordPosition handler(FetchPositionRequest request, Metadata metadata);
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/IReportPositionHandler.java
similarity index 70%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/IReportPositionHandler.java
index a7aef4fff..75f392e39 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnectorContext.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/IReportPositionHandler.java
@@ -15,18 +15,15 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.admin.server.web.service.position;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
-
-import lombok.Data;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Metadata;
+import org.apache.eventmesh.common.remote.request.ReportPositionRequest;
/**
- * Sink Connector Context
+ * IReportPositionHandler
*/
-@Data
-public class SinkConnectorContext implements ConnectorContext {
-
- public SinkConfig sinkConfig;
+public interface IReportPositionHandler {
+ boolean handler(ReportPositionRequest request, Metadata metadata);
}
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/PositionHandler.java
similarity index 74%
copy from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
copy to eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/PositionHandler.java
index 6376a7fb4..921b0b2e5 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/PositionHandler.java
@@ -15,14 +15,11 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.source.config;
+package org.apache.eventmesh.admin.server.web.service.position;
-import lombok.Data;
+import org.apache.eventmesh.common.remote.job.DataSourceType;
-@Data
-public class SourceConnectorConfig {
+public abstract class PositionHandler implements IReportPositionHandler, IFetchPositionHandler {
- private String connectorName;
-
- private String filePath;
+ protected abstract DataSourceType getSourceType();
}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/PositionHandlerFactory.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/PositionHandlerFactory.java
new file mode 100644
index 000000000..751291351
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/PositionHandlerFactory.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.service.position;
+
+import org.apache.eventmesh.common.remote.job.DataSourceType;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.stereotype.Component;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Component
+@Slf4j
+public class PositionHandlerFactory implements ApplicationListener<ContextRefreshedEvent> {
+
+ private final Map<DataSourceType, PositionHandler> handlers =
+ new ConcurrentHashMap<>();
+
+ public PositionHandler getHandler(DataSourceType type) {
+ return handlers.get(type);
+ }
+
+ @Override
+ public void onApplicationEvent(ContextRefreshedEvent event) {
+ Map<String, PositionHandler> beans =
+ event.getApplicationContext().getBeansOfType(PositionHandler.class);
+
+ for (PositionHandler handler : beans.values()) {
+ DataSourceType type = handler.getSourceType();
+ if (handlers.containsKey(type)) {
+ log.warn("data source type [{}] handler already exists", type);
+ continue;
+ }
+ handlers.put(type, handler);
+ }
+ }
+}
diff --git a/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/impl/MysqlPositionHandler.java b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/impl/MysqlPositionHandler.java
new file mode 100644
index 000000000..623864fa6
--- /dev/null
+++ b/eventmesh-admin-server/src/main/java/org/apache/eventmesh/admin/server/web/service/position/impl/MysqlPositionHandler.java
@@ -0,0 +1,161 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.admin.server.web.service.position.impl;
+
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshMysqlPosition;
+import org.apache.eventmesh.admin.server.web.db.entity.EventMeshPositionReporterHistory;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshMysqlPositionService;
+import org.apache.eventmesh.admin.server.web.db.service.EventMeshPositionReporterHistoryService;
+import org.apache.eventmesh.admin.server.web.service.position.PositionHandler;
+import org.apache.eventmesh.common.protocol.grpc.adminserver.Metadata;
+import org.apache.eventmesh.common.remote.job.DataSourceType;
+import org.apache.eventmesh.common.remote.offset.RecordPosition;
+import org.apache.eventmesh.common.remote.offset.canal.CanalRecordOffset;
+import org.apache.eventmesh.common.remote.offset.canal.CanalRecordPartition;
+import org.apache.eventmesh.common.remote.request.FetchPositionRequest;
+import org.apache.eventmesh.common.remote.request.ReportPositionRequest;
+import org.apache.eventmesh.common.utils.JsonUtils;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.stereotype.Component;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Component
+@Slf4j
+public class MysqlPositionHandler extends PositionHandler {
+
+ @Autowired
+ EventMeshMysqlPositionService positionService;
+
+ @Autowired
+ EventMeshPositionReporterHistoryService historyService;
+
+ @Override
+ protected DataSourceType getSourceType() {
+ return DataSourceType.MYSQL;
+ }
+
+ public boolean saveOrUpdateByJob(EventMeshMysqlPosition position) {
+ EventMeshMysqlPosition old = positionService.getOne(Wrappers.<EventMeshMysqlPosition>query().eq("jobId",
+ position.getJobID()));
+ if (old == null) {
+ return positionService.save(position);
+ } else {
+ if (old.getPosition() >= position.getPosition()) {
+ log.info("job [{}] report position [{}] by runtime [{}] less than db position [{}] by [{}]",
+ position.getJobID(), position.getPosition(), position.getAddress(), old.getPosition(), old.getAddress());
+ return true;
+ }
+ try {
+ return positionService.update(position, Wrappers.<EventMeshMysqlPosition>update().eq("updateTime",
+ old.getUpdateTime()));
+ } finally {
+ if (old.getAddress() != null && !old.getAddress().equals(position.getAddress())) {
+ EventMeshPositionReporterHistory history = new EventMeshPositionReporterHistory();
+ history.setRecord(JsonUtils.toJSONString(position));
+ history.setJob(old.getJobID());
+ history.setAddress(old.getAddress());
+ log.info("job [{}] position reporter changed old [{}], now [{}]", position.getJobID(), old, position);
+ try {
+ historyService.save(history);
+ } catch (Exception e) {
+ log.warn("save job [{}] mysql position reporter changed history fail, now reporter [{}], old [{}]", position.getJobID(),
+ position.getAddress(), old.getAddress(), e);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public boolean handler(ReportPositionRequest request, Metadata metadata) {
+ for (int i = 0; i < 3; i++) {
+ try {
+ List<RecordPosition> recordPositionList = request.getRecordPositionList();
+ RecordPosition recordPosition = recordPositionList.get(0);
+ if (recordPosition == null || recordPosition.getRecordPartition() == null || recordPosition.getRecordOffset() == null) {
+ log.warn("report mysql position, but record-partition/partition/offset is null");
+ return false;
+ }
+ if (!(recordPosition.getRecordPartition() instanceof CanalRecordPartition)) {
+ log.warn("report mysql position, but record partition class [{}] not match [{}]",
+ recordPosition.getRecordPartition().getRecordPartitionClass(), CanalRecordPartition.class);
+ return false;
+ }
+ if (!(recordPosition.getRecordOffset() instanceof CanalRecordOffset)) {
+ log.warn("report mysql position, but record offset class [{}] not match [{}]",
+ recordPosition.getRecordOffset().getRecordOffsetClass(), CanalRecordOffset.class);
+ return false;
+ }
+ EventMeshMysqlPosition position = new EventMeshMysqlPosition();
+ position.setJobID(Integer.parseInt(request.getJobID()));
+ position.setAddress(request.getAddress());
+ CanalRecordOffset offset = (CanalRecordOffset) recordPosition.getRecordOffset();
+ if (offset != null) {
+ position.setPosition(offset.getOffset());
+ }
+ CanalRecordPartition partition = (CanalRecordPartition) recordPosition.getRecordPartition();
+ if (partition != null) {
+ position.setTimestamp(partition.getTimeStamp());
+ position.setJournalName(partition.getJournalName());
+ }
+ if (!saveOrUpdateByJob(position)) {
+ log.warn("update job position fail [{}]", request);
+ return false;
+ }
+ return true;
+ } catch (DuplicateKeyException e) {
+ log.warn("concurrent report position job [{}], it will try again", request.getJobID());
+ } catch (Exception e) {
+ log.warn("save position job [{}] fail", request.getJobID(), e);
+ return false;
+ }
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException ignore) {
+ log.warn("save position thread interrupted, [{}]", request);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public RecordPosition handler(FetchPositionRequest request, Metadata metadata) {
+ EventMeshMysqlPosition position = positionService.getOne(Wrappers.<EventMeshMysqlPosition>query().eq("jobID",
+ request.getJobID()));
+ RecordPosition recordPosition = null;
+ if (position != null) {
+ CanalRecordPartition partition = new CanalRecordPartition();
+ partition.setTimeStamp(position.getTimestamp());
+ partition.setJournalName(position.getJournalName());
+ CanalRecordOffset offset = new CanalRecordOffset();
+ offset.setOffset(position.getPosition());
+ recordPosition = new RecordPosition();
+ recordPosition.setRecordPartition(partition);
+ recordPosition.setRecordOffset(offset);
+ }
+ return recordPosition;
+ }
+}
diff --git a/.github/workflows/docker.yml b/eventmesh-admin-server/src/main/resources/META-INF/spring.factories
similarity index 50%
copy from .github/workflows/docker.yml
copy to eventmesh-admin-server/src/main/resources/META-INF/spring.factories
index dfb36970d..0d9e9bae6 100644
--- a/.github/workflows/docker.yml
+++ b/eventmesh-admin-server/src/main/resources/META-INF/spring.factories
@@ -15,36 +15,5 @@
# limitations under the License.
#
-name: Docker
-on:
- release:
- types: [released]
-
-jobs:
- docker:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
-
- - name: Login to DockerHub
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKERHUB_USER }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Docker meta
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: |
- apache/eventmesh
-
- - name: Build and push
- uses: docker/build-push-action@v5
- with:
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- file: ./docker/Dockerfile_jdk8
- context: ./
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+ org.apache.eventmesh.admin.server.AdminServerProperties
\ No newline at end of file
diff --git a/.github/workflows/docker.yml b/eventmesh-admin-server/src/main/resources/application.yaml
similarity index 50%
copy from .github/workflows/docker.yml
copy to eventmesh-admin-server/src/main/resources/application.yaml
index dfb36970d..ce396a09f 100644
--- a/.github/workflows/docker.yml
+++ b/eventmesh-admin-server/src/main/resources/application.yaml
@@ -15,36 +15,18 @@
# limitations under the License.
#
-name: Docker
-on:
- release:
- types: [released]
-
-jobs:
- docker:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
-
- - name: Login to DockerHub
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKERHUB_USER }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Docker meta
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: |
- apache/eventmesh
-
- - name: Build and push
- uses: docker/build-push-action@v5
- with:
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- file: ./docker/Dockerfile_jdk8
- context: ./
+spring:
+ datasource:
+ url: jdbc:mysql://localhost:3306/eventmesh?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
+ username: root
+ password: mike920830
+ driver-class-name: com.mysql.cj.jdbc.Driver
+mybatis-plus:
+ mapper-locations: classpath:mapper/*.xml
+ configuration:
+ map-underscore-to-camel-case: false
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+event-mesh:
+ admin-server:
+ service-name: DEFAULT_GROUP@@em_adm_server
+ port: 8081
\ No newline at end of file
diff --git a/.github/workflows/docker.yml b/eventmesh-admin-server/src/main/resources/eventmesh-admin.properties
similarity index 50%
copy from .github/workflows/docker.yml
copy to eventmesh-admin-server/src/main/resources/eventmesh-admin.properties
index dfb36970d..07a6a212e 100644
--- a/.github/workflows/docker.yml
+++ b/eventmesh-admin-server/src/main/resources/eventmesh-admin.properties
@@ -15,36 +15,5 @@
# limitations under the License.
#
-name: Docker
-on:
- release:
- types: [released]
-
-jobs:
- docker:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
-
- - name: Login to DockerHub
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKERHUB_USER }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Docker meta
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: |
- apache/eventmesh
-
- - name: Build and push
- uses: docker/build-push-action@v5
- with:
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- file: ./docker/Dockerfile_jdk8
- context: ./
+eventMesh.server.retry.plugin.type=nacos
+eventMesh.registry.plugin.server-addr=localhost:8848
diff --git a/eventmesh-admin-server/src/main/resources/eventmesh.sql b/eventmesh-admin-server/src/main/resources/eventmesh.sql
new file mode 100644
index 000000000..3b6fc9b77
--- /dev/null
+++ b/eventmesh-admin-server/src/main/resources/eventmesh.sql
@@ -0,0 +1,131 @@
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you 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.
+
+-- --------------------------------------------------------
+-- 主机: 127.0.0.1
+-- 服务器版本: 8.0.36 - MySQL Community Server - GPL
+-- 服务器操作系统: Win64
+-- HeidiSQL 版本: 11.3.0.6295
+-- --------------------------------------------------------
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET NAMES utf8 */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+
+-- 导出 eventmesh 的数据库结构
+CREATE DATABASE IF NOT EXISTS `eventmesh` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
+USE `eventmesh`;
+
+-- 导出 表 eventmesh.event_mesh_data_source 结构
+CREATE TABLE IF NOT EXISTS `event_mesh_data_source` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `dataType` int unsigned NOT NULL,
+ `description` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `configuration` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `createUid` int NOT NULL,
+ `updateUid` int NOT NULL,
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+
+-- 数据导出被取消选择。
+
+-- 导出 表 eventmesh.event_mesh_job_info 结构
+CREATE TABLE IF NOT EXISTS `event_mesh_job_info` (
+ `jobID` int unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
+ `transportType` int unsigned DEFAULT NULL COMMENT 'JobTransportType',
+ `sourceData` int unsigned DEFAULT NULL COMMENT 'data_source表',
+ `targetData` int unsigned DEFAULT NULL,
+ `state` tinyint unsigned NOT NULL COMMENT 'JobState',
+ `jobType` tinyint unsigned NOT NULL COMMENT 'connector,mesh,func,...',
+ `createUid` int unsigned NOT NULL,
+ `updateUid` int unsigned NOT NULL,
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`jobID`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+
+-- 数据导出被取消选择。
+
+-- 导出 表 eventmesh.event_mesh_mysql_position 结构
+CREATE TABLE IF NOT EXISTS `event_mesh_mysql_position` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `jobID` int unsigned NOT NULL,
+ `address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `position` bigint DEFAULT NULL,
+ `timestamp` bigint DEFAULT NULL,
+ `journalName` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `jobID` (`jobID`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+
+-- 数据导出被取消选择。
+
+-- 导出 表 eventmesh.event_mesh_position_reporter_history 结构
+CREATE TABLE IF NOT EXISTS `event_mesh_position_reporter_history` (
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `job` int NOT NULL,
+ `record` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `address` varchar(50) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`),
+ KEY `job` (`job`),
+ KEY `address` (`address`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='记录position上报者变更时,老记录';
+
+-- 数据导出被取消选择。
+
+-- 导出 表 eventmesh.event_mesh_runtime_heartbeat 结构
+CREATE TABLE IF NOT EXISTS `event_mesh_runtime_heartbeat` (
+ `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+ `adminAddr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `runtimeAddr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `jobID` int unsigned DEFAULT NULL,
+ `reportTime` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'runtime本地上报时间',
+ `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `runtimeAddr` (`runtimeAddr`),
+ KEY `jobID` (`jobID`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+
+-- 数据导出被取消选择。
+
+-- 导出 表 eventmesh.event_mesh_runtime_history 结构
+CREATE TABLE IF NOT EXISTS `event_mesh_runtime_history` (
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `job` int NOT NULL,
+ `address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`),
+ KEY `address` (`address`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='记录runtime上运行任务的变更';
+
+-- 数据导出被取消选择。
+
+/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
+/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */;
diff --git a/eventmesh-admin-server/src/main/resources/mapper/EventMeshDataSourceMapper.xml b/eventmesh-admin-server/src/main/resources/mapper/EventMeshDataSourceMapper.xml
new file mode 100644
index 000000000..dee497c84
--- /dev/null
+++ b/eventmesh-admin-server/src/main/resources/mapper/EventMeshDataSourceMapper.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+ -->
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.apache.eventmesh.admin.server.web.db.mapper.EventMeshDataSourceMapper">
+
+ <resultMap id="BaseResultMap" type="org.apache.eventmesh.admin.server.web.db.entity.EventMeshDataSource">
+ <id property="id" column="id" jdbcType="INTEGER"/>
+ <result property="dataType" column="dataType" jdbcType="INTEGER"/>
+ <result property="description" column="description" jdbcType="VARCHAR"/>
+ <result property="configuration" column="configuration" jdbcType="VARCHAR"/>
+ <result property="createUid" column="createUid" jdbcType="INTEGER"/>
+ <result property="updateUid" column="updateUid" jdbcType="INTEGER"/>
+ <result property="createTime" column="createTime" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="updateTime" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,dataType,address,
+ description,configuration,createUid,
+ updateUid,createTime,updateTime
+ </sql>
+</mapper>
diff --git a/eventmesh-admin-server/src/main/resources/mapper/EventMeshJobInfoMapper.xml b/eventmesh-admin-server/src/main/resources/mapper/EventMeshJobInfoMapper.xml
new file mode 100644
index 000000000..e758a276a
--- /dev/null
+++ b/eventmesh-admin-server/src/main/resources/mapper/EventMeshJobInfoMapper.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+ -->
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.apache.eventmesh.admin.server.web.db.mapper.EventMeshJobInfoMapper">
+
+ <resultMap id="BaseResultMap" type="org.apache.eventmesh.admin.server.web.db.entity.EventMeshJobInfo">
+ <id property="jobID" column="jobID" jdbcType="INTEGER"/>
+ <result property="name" column="name" jdbcType="VARCHAR"/>
+ <result property="transportType" column="transportType" jdbcType="INTEGER"/>
+ <result property="sourceData" column="sourceData" jdbcType="INTEGER"/>
+ <result property="targetData" column="targetData" jdbcType="INTEGER"/>
+ <result property="state" column="state" jdbcType="TINYINT"/>
+ <result property="jobType" column="jobType" jdbcType="TINYINT"/>
+ <result property="createUid" column="createUid" jdbcType="INTEGER"/>
+ <result property="updateUid" column="updateUid" jdbcType="INTEGER"/>
+ <result property="createTime" column="createTime" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="updateTime" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ jobID,name,transportType,
+ sourceData,targetData,state,
+ runtimeType,createUid,
+ updateUid,createTime,updateTime
+ </sql>
+</mapper>
diff --git a/eventmesh-admin-server/src/main/resources/mapper/EventMeshMysqlPositionMapper.xml b/eventmesh-admin-server/src/main/resources/mapper/EventMeshMysqlPositionMapper.xml
new file mode 100644
index 000000000..bc3a3292a
--- /dev/null
+++ b/eventmesh-admin-server/src/main/resources/mapper/EventMeshMysqlPositionMapper.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+ -->
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.apache.eventmesh.admin.server.web.db.mapper.EventMeshMysqlPositionMapper">
+
+ <resultMap id="BaseResultMap" type="org.apache.eventmesh.admin.server.web.db.entity.EventMeshMysqlPosition">
+ <id property="id" column="id" jdbcType="INTEGER"/>
+ <result property="jobID" column="jobID" jdbcType="INTEGER"/>
+ <result property="address" column="address" jdbcType="VARCHAR"/>
+ <result property="position" column="position" jdbcType="BIGINT"/>
+ <result property="timestamp" column="timestamp" jdbcType="BIGINT"/>
+ <result property="journalName" column="journalName" jdbcType="VARCHAR"/>
+ <result property="createTime" column="createTime" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="updateTime" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,jobID,address,
+ position,timestamp,journalName,
+ createTime,updateTime
+ </sql>
+</mapper>
diff --git a/eventmesh-admin-server/src/main/resources/mapper/EventMeshPositionReporterHistoryMapper.xml b/eventmesh-admin-server/src/main/resources/mapper/EventMeshPositionReporterHistoryMapper.xml
new file mode 100644
index 000000000..2ee22e1ad
--- /dev/null
+++ b/eventmesh-admin-server/src/main/resources/mapper/EventMeshPositionReporterHistoryMapper.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+ -->
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.apache.eventmesh.admin.server.web.db.mapper.EventMeshPositionReporterHistoryMapper">
+
+ <resultMap id="BaseResultMap" type="org.apache.eventmesh.admin.server.web.db.entity.EventMeshPositionReporterHistory">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="job" column="job" jdbcType="INTEGER"/>
+ <result property="record" column="record" jdbcType="VARCHAR"/>
+ <result property="address" column="address" jdbcType="VARCHAR"/>
+ <result property="createTime" column="createTime" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,job,record,
+ address,createTime
+ </sql>
+</mapper>
diff --git a/eventmesh-admin-server/src/main/resources/mapper/EventMeshRuntimeHeartbeatMapper.xml b/eventmesh-admin-server/src/main/resources/mapper/EventMeshRuntimeHeartbeatMapper.xml
new file mode 100644
index 000000000..b811c5950
--- /dev/null
+++ b/eventmesh-admin-server/src/main/resources/mapper/EventMeshRuntimeHeartbeatMapper.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+ -->
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.apache.eventmesh.admin.server.web.db.mapper.EventMeshRuntimeHeartbeatMapper">
+
+ <resultMap id="BaseResultMap" type="org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHeartbeat">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="adminAddr" column="adminAddr" jdbcType="VARCHAR"/>
+ <result property="runtimeAddr" column="runtimeAddr" jdbcType="VARCHAR"/>
+ <result property="jobID" column="jobID" jdbcType="INTEGER"/>
+ <result property="reportTime" column="reportTime" jdbcType="VARCHAR"/>
+ <result property="updateTime" column="updateTime" jdbcType="TIMESTAMP"/>
+ <result property="createTime" column="createTime" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,adminAddr,runtimeAddr,
+ jobID,reportTime,updateTime,
+ createTime
+ </sql>
+</mapper>
diff --git a/eventmesh-admin-server/src/main/resources/mapper/EventMeshRuntimeHistoryMapper.xml b/eventmesh-admin-server/src/main/resources/mapper/EventMeshRuntimeHistoryMapper.xml
new file mode 100644
index 000000000..d9e17bc85
--- /dev/null
+++ b/eventmesh-admin-server/src/main/resources/mapper/EventMeshRuntimeHistoryMapper.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+ -->
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.apache.eventmesh.admin.server.web.db.mapper.EventMeshRuntimeHistoryMapper">
+
+ <resultMap id="BaseResultMap" type="org.apache.eventmesh.admin.server.web.db.entity.EventMeshRuntimeHistory">
+ <result property="id" column="id" jdbcType="BIGINT"/>
+ <result property="job" column="job" jdbcType="INTEGER"/>
+ <result property="address" column="address" jdbcType="VARCHAR"/>
+ <result property="createTime" column="createTime" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,job,address,
+ createTime
+ </sql>
+</mapper>
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
index 867d50b43..97286f096 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
@@ -205,4 +205,6 @@ public class Constants {
public static final String OS_WIN_PREFIX = "win";
public static final String DEFAULT = "default";
+
+ public static final String ADMIN_SERVER_REGISTRY_NAME = "DEFAULT_GROUP@@em_adm_server";
}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java
index 2f38a372c..04c4ae60e 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java
@@ -106,6 +106,21 @@ public class CommonConfiguration {
@ConfigField(field = "server.retry.plugin.type")
private String eventMeshRetryPluginType = Constants.DEFAULT;
+ @ConfigField(field = "registry.plugin.server-addr", notEmpty = true)
+ private String registryAddr = "";
+
+ @ConfigField(field = "registry.plugin.type", notEmpty = true)
+ private String eventMeshRegistryPluginType = "nacos";
+
+ @ConfigField(field = "registry.plugin.username")
+ private String eventMeshRegistryPluginUsername = "";
+
+ @ConfigField(field = "registry.plugin.password")
+ private String eventMeshRegistryPluginPassword = "";
+
+ @ConfigField(field = "registry.plugin.enabled")
+ private boolean eventMeshRegistryPluginEnabled = false;
+
public void reload() {
this.eventMeshWebhookOrigin = "eventmesh." + eventMeshIDC;
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigService.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigService.java
index 7c5b17d7e..939c9d8d6 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigService.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigService.java
@@ -60,6 +60,9 @@ public class ConfigService {
}
public ConfigService setConfigPath(String configPath) {
+ if (StringUtils.isNotBlank(configPath) && !configPath.endsWith(File.separator)) {
+ configPath = configPath + File.separator;
+ }
this.configPath = configPath;
return this;
}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/FileLoad.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/FileLoad.java
index a0c81ea48..4f8c6687b 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/FileLoad.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/FileLoad.java
@@ -68,6 +68,7 @@ public interface FileLoad {
private final Convert convert = new Convert();
@SuppressWarnings("unchecked")
+ @Override
public <T> T getConfig(ConfigInfo configInfo) throws IOException {
final Properties properties = new Properties();
if (StringUtils.isNotBlank(configInfo.getResourceUrl())) {
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/Config.java
similarity index 93%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/Config.java
index 330aa9393..d4bdee777 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/Config.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.config;
+package org.apache.eventmesh.common.config.connector;
public abstract class Config {
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Constants.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/Constants.java
similarity index 95%
rename from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Constants.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/Constants.java
index 59794e562..74576e843 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Constants.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/Constants.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.config;
+package org.apache.eventmesh.common.config.connector;
public class Constants {
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/PubSubConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/PubSubConfig.java
similarity index 95%
rename from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/PubSubConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/PubSubConfig.java
index 6f5c9cd5f..be83d5112 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/PubSubConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/PubSubConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.config;
+package org.apache.eventmesh.common.config.connector;
import lombok.Data;
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/SinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/SinkConfig.java
similarity index 94%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/SinkConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/SinkConfig.java
index 527d02e04..4ef68291d 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/SinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/SinkConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.config;
+package org.apache.eventmesh.common.config.connector;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/SourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/SourceConfig.java
similarity index 88%
rename from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/SourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/SourceConfig.java
index 2942be936..763063125 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/SourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/SourceConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.config;
+package org.apache.eventmesh.common.config.connector;
-import org.apache.eventmesh.openconnect.offsetmgmt.api.config.OffsetStorageConfig;
+import org.apache.eventmesh.common.config.connector.offset.OffsetStorageConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/DingDingSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/dingtalk/DingDingSinkConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/DingDingSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/dingtalk/DingDingSinkConfig.java
index aa4245219..3482d5665 100644
--- a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/DingDingSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/dingtalk/DingDingSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.dingtalk.sink.config;
+package org.apache.eventmesh.common.config.connector.dingtalk;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/dingtalk/SinkConnectorConfig.java
similarity index 94%
copy from eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/dingtalk/SinkConnectorConfig.java
index 2211fd1ad..1dfcd7664 100644
--- a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/dingtalk/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.dingtalk.sink.config;
+package org.apache.eventmesh.common.config.connector.dingtalk;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/sink/config/FileSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/FileSinkConfig.java
similarity index 89%
rename from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/sink/config/FileSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/FileSinkConfig.java
index abdae5277..7de6daa51 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/sink/config/FileSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/FileSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.sink.config;
+package org.apache.eventmesh.common.config.connector.file;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/FileSourceConfig.java
similarity index 88%
copy from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/FileSourceConfig.java
index b96954440..06bc4c174 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/FileSourceConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.source.config;
+package org.apache.eventmesh.common.config.connector.file;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/SinkConnectorConfig.java
similarity index 94%
rename from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/SinkConnectorConfig.java
index a8cf958f7..ee42a1775 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.sink.config;
+package org.apache.eventmesh.common.config.connector.file;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/SourceConnectorConfig.java
similarity index 94%
copy from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/SourceConnectorConfig.java
index 6376a7fb4..786d8fa74 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/file/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.source.config;
+package org.apache.eventmesh.common.config.connector.file;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/HttpSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/http/HttpSourceConfig.java
similarity index 88%
copy from eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/HttpSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/http/HttpSourceConfig.java
index bee870cb1..476dfb10d 100644
--- a/eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/HttpSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/http/HttpSourceConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.http.source.config;
+package org.apache.eventmesh.common.config.connector.http;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/http/SourceConnectorConfig.java
similarity index 94%
rename from eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/http/SourceConnectorConfig.java
index 873a0d192..4ffd6a134 100644
--- a/eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/http/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.http.source.config;
+package org.apache.eventmesh.common.config.connector.http;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/KnativeSinkConfig.java
similarity index 88%
copy from eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/KnativeSinkConfig.java
index 85bb38a90..aff7c275a 100644
--- a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/KnativeSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.knative.sink.config;
+package org.apache.eventmesh.common.config.connector.knative;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/source/config/KnativeSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/KnativeSourceConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/source/config/KnativeSourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/KnativeSourceConfig.java
index 8ef36a8d7..644161d91 100644
--- a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/source/config/KnativeSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/KnativeSourceConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.knative.source.config;
+package org.apache.eventmesh.common.config.connector.knative;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/SinkConnectorConfig.java
similarity index 93%
rename from eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/SinkConnectorConfig.java
index 5694c643f..076bd6875 100644
--- a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.knative.sink.config;
+package org.apache.eventmesh.common.config.connector.knative;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/SourceConnectorConfig.java
similarity index 93%
rename from eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/SourceConnectorConfig.java
index 8d21c86b7..98e781552 100644
--- a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/knative/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.knative.source.config;
+package org.apache.eventmesh.common.config.connector.knative;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-lark/src/main/java/org/apache/eventmesh/connector/lark/sink/config/LarkSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/lark/LarkSinkConfig.java
similarity index 89%
rename from eventmesh-connectors/eventmesh-connector-lark/src/main/java/org/apache/eventmesh/connector/lark/sink/config/LarkSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/lark/LarkSinkConfig.java
index a97ece91b..a9235129a 100644
--- a/eventmesh-connectors/eventmesh-connector-lark/src/main/java/org/apache/eventmesh/connector/lark/sink/config/LarkSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/lark/LarkSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.lark.sink.config;
+package org.apache.eventmesh.common.config.connector.lark;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-lark/src/main/java/org/apache/eventmesh/connector/lark/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/lark/SinkConnectorConfig.java
similarity index 56%
copy from eventmesh-connectors/eventmesh-connector-lark/src/main/java/org/apache/eventmesh/connector/lark/sink/config/SinkConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/lark/SinkConnectorConfig.java
index cde3aa673..a4895b8b2 100644
--- a/eventmesh-connectors/eventmesh-connector-lark/src/main/java/org/apache/eventmesh/connector/lark/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/lark/SinkConnectorConfig.java
@@ -15,13 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.lark.sink.config;
-
-import org.apache.eventmesh.openconnect.offsetmgmt.api.data.ConnectRecord;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.lark.oapi.service.im.v1.enums.ReceiveIdTypeEnum;
+package org.apache.eventmesh.common.config.connector.lark;
import lombok.Data;
@@ -53,8 +47,6 @@ public class SinkConnectorConfig {
/**
* When sinking CouldEvent to lark, choose to call
- * {@link org.apache.eventmesh.connector.lark.sink.ImServiceHandler#sink(ConnectRecord)}
- * or {@link org.apache.eventmesh.connector.lark.sink.ImServiceHandler#sinkAsync(ConnectRecord)}
*/
private String sinkAsync = "true";
@@ -62,20 +54,4 @@ public class SinkConnectorConfig {
private String retryDelayInMills = "1000";
- public void validateSinkConfiguration() {
- // validate blank
- if (StringUtils.isAnyBlank(appId, appSecret, receiveId)) {
- throw new IllegalArgumentException("appId or appSecret or receiveId is blank,please check it.");
- }
-
- // validate receiveIdType
- if (!StringUtils.containsAny(receiveIdType, ReceiveIdTypeEnum.CHAT_ID.getValue(),
- ReceiveIdTypeEnum.EMAIL.getValue(),
- ReceiveIdTypeEnum.OPEN_ID.getValue(),
- ReceiveIdTypeEnum.USER_ID.getValue(),
- ReceiveIdTypeEnum.UNION_ID.getValue())) {
- throw new IllegalArgumentException(
- String.format("sinkConnectorConfig.receiveIdType=[%s], Invalid.", receiveIdType));
- }
- }
}
diff --git a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/KafkaSinkConfig.java
similarity index 84%
copy from eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/KafkaSinkConfig.java
index 85bb38a90..973eed11f 100644
--- a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/KafkaSinkConfig.java
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.knative.sink.config;
+package org.apache.eventmesh.common.config.connector.mq.kafka;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class KnativeSinkConfig extends SinkConfig {
+@Data
+public class KafkaSinkConfig extends SinkConfig {
public SinkConnectorConfig connectorConfig;
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/KafkaSourceConfig.java
similarity index 83%
copy from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/KafkaSourceConfig.java
index b96954440..bf44a8271 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/KafkaSourceConfig.java
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.source.config;
+package org.apache.eventmesh.common.config.connector.mq.kafka;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class FileSourceConfig extends SourceConfig {
+@Data
+public class KafkaSourceConfig extends SourceConfig {
public SourceConnectorConfig connectorConfig;
}
diff --git a/eventmesh-connectors/eventmesh-connector-kafka/src/main/java/org/apache/eventmesh/connector/kafka/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/SinkConnectorConfig.java
similarity index 96%
rename from eventmesh-connectors/eventmesh-connector-kafka/src/main/java/org/apache/eventmesh/connector/kafka/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/SinkConnectorConfig.java
index a240bf4f4..e7584319c 100644
--- a/eventmesh-connectors/eventmesh-connector-kafka/src/main/java/org/apache/eventmesh/connector/kafka/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.kafka.sink.config;
+package org.apache.eventmesh.common.config.connector.mq.kafka;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-kafka/src/main/java/org/apache/eventmesh/connector/kafka/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/SourceConnectorConfig.java
similarity index 95%
rename from eventmesh-connectors/eventmesh-connector-kafka/src/main/java/org/apache/eventmesh/connector/kafka/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/SourceConnectorConfig.java
index 2d2f52f85..21fb18eb2 100644
--- a/eventmesh-connectors/eventmesh-connector-kafka/src/main/java/org/apache/eventmesh/connector/kafka/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/kafka/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.kafka.source.config;
+package org.apache.eventmesh.common.config.connector.mq.kafka;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/PulsarSinkConfig.java
similarity index 84%
copy from eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/PulsarSinkConfig.java
index 85bb38a90..8cbfd5fb2 100644
--- a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/PulsarSinkConfig.java
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.knative.sink.config;
+package org.apache.eventmesh.common.config.connector.mq.pulsar;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class KnativeSinkConfig extends SinkConfig {
+@Data
+public class PulsarSinkConfig extends SinkConfig {
public SinkConnectorConfig connectorConfig;
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/PulsarSourceConfig.java
similarity index 83%
copy from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/PulsarSourceConfig.java
index b96954440..43eb2ca85 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/PulsarSourceConfig.java
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.source.config;
+package org.apache.eventmesh.common.config.connector.mq.pulsar;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class FileSourceConfig extends SourceConfig {
+@Data
+public class PulsarSourceConfig extends SourceConfig {
public SourceConnectorConfig connectorConfig;
}
diff --git a/eventmesh-connectors/eventmesh-connector-pulsar/src/main/java/org/apache/eventmesh/connector/pulsar/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/SinkConnectorConfig.java
similarity index 93%
rename from eventmesh-connectors/eventmesh-connector-pulsar/src/main/java/org/apache/eventmesh/connector/pulsar/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/SinkConnectorConfig.java
index e1ebba09c..b66f1a532 100644
--- a/eventmesh-connectors/eventmesh-connector-pulsar/src/main/java/org/apache/eventmesh/connector/pulsar/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.pulsar.sink.config;
+package org.apache.eventmesh.common.config.connector.mq.pulsar;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-pulsar/src/main/java/org/apache/eventmesh/connector/pulsar/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/SourceConnectorConfig.java
similarity index 93%
rename from eventmesh-connectors/eventmesh-connector-pulsar/src/main/java/org/apache/eventmesh/connector/pulsar/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/SourceConnectorConfig.java
index bb8ff4687..9f8fbce2d 100644
--- a/eventmesh-connectors/eventmesh-connector-pulsar/src/main/java/org/apache/eventmesh/connector/pulsar/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/pulsar/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.pulsar.source.config;
+package org.apache.eventmesh.common.config.connector.mq.pulsar;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/sink/config/RabbitMQSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/RabbitMQSinkConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/sink/config/RabbitMQSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/RabbitMQSinkConfig.java
index 1c4ec66d4..8dcb8ad50 100644
--- a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/sink/config/RabbitMQSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/RabbitMQSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.rabbitmq.sink.config;
+package org.apache.eventmesh.common.config.connector.mq.rabbitmq;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/source/config/RabbitMQSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/RabbitMQSourceConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/source/config/RabbitMQSourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/RabbitMQSourceConfig.java
index 55ce402ae..c268c1005 100644
--- a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/source/config/RabbitMQSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/RabbitMQSourceConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.rabbitmq.source.config;
+package org.apache.eventmesh.common.config.connector.mq.rabbitmq;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/SinkConnectorConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/SinkConnectorConfig.java
index 358964bdc..a6f633f94 100644
--- a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/SinkConnectorConfig.java
@@ -15,9 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.rabbitmq.sink.config;
-
-import com.rabbitmq.client.BuiltinExchangeType;
+package org.apache.eventmesh.common.config.connector.mq.rabbitmq;
import lombok.Data;
@@ -36,7 +34,7 @@ public class SinkConnectorConfig {
private String virtualHost;
- private BuiltinExchangeType exchangeType;
+ private String exchangeType;
private String exchangeName;
diff --git a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/SourceConnectorConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/SourceConnectorConfig.java
index d83149f9c..29a041338 100644
--- a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rabbitmq/SourceConnectorConfig.java
@@ -15,9 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.rabbitmq.source.config;
-
-import com.rabbitmq.client.BuiltinExchangeType;
+package org.apache.eventmesh.common.config.connector.mq.rabbitmq;
import lombok.Data;
@@ -36,7 +34,7 @@ public class SourceConnectorConfig {
private String virtualHost;
- private BuiltinExchangeType exchangeType;
+ private String exchangeType;
private String exchangeName;
diff --git a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/sink/config/RocketMQSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/RocketMQSinkConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/sink/config/RocketMQSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/RocketMQSinkConfig.java
index bc4191c9b..d7c08e8b7 100644
--- a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/sink/config/RocketMQSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/RocketMQSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.rocketmq.sink.config;
+package org.apache.eventmesh.common.config.connector.mq.rocketmq;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/source/config/RocketMQSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/RocketMQSourceConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/source/config/RocketMQSourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/RocketMQSourceConfig.java
index 43a74fabd..5c531d91c 100644
--- a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/source/config/RocketMQSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/RocketMQSourceConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.rocketmq.source.config;
+package org.apache.eventmesh.common.config.connector.mq.rocketmq;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/SinkConnectorConfig.java
similarity index 93%
rename from eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/SinkConnectorConfig.java
index 034dd7ce0..93472f7a4 100644
--- a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.rocketmq.sink.config;
+package org.apache.eventmesh.common.config.connector.mq.rocketmq;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/SourceConnectorConfig.java
similarity index 93%
rename from eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/SourceConnectorConfig.java
index 1dc8a0d5c..641d1873b 100644
--- a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/mq/rocketmq/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.rocketmq.source.config;
+package org.apache.eventmesh.common.config.connector.mq.rocketmq;
import lombok.Data;
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/config/OffsetStorageConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/offset/OffsetStorageConfig.java
similarity index 82%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/config/OffsetStorageConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/offset/OffsetStorageConfig.java
index 30a56a3d2..e8ff1d490 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/config/OffsetStorageConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/offset/OffsetStorageConfig.java
@@ -15,7 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.config;
+package org.apache.eventmesh.common.config.connector.offset;
+
+import org.apache.eventmesh.common.remote.job.DataSourceType;
import java.util.Map;
@@ -29,4 +31,8 @@ public class OffsetStorageConfig {
private String offsetStorageAddr;
private Map<String, String> extensions;
+
+ private DataSourceType dataSourceType;
+
+ private DataSourceType dataSinkType;
}
diff --git a/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/sink/config/OpenFunctionSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/OpenFunctionSinkConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/sink/config/OpenFunctionSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/OpenFunctionSinkConfig.java
index 6e4fbe3dc..151ff6883 100644
--- a/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/sink/config/OpenFunctionSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/OpenFunctionSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.openfunction.sink.config;
+package org.apache.eventmesh.common.config.connector.openfunction;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/source/config/OpenFunctionSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/OpenFunctionSourceConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/source/config/OpenFunctionSourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/OpenFunctionSourceConfig.java
index f3f5b5275..e3a6123ed 100644
--- a/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/source/config/OpenFunctionSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/OpenFunctionSourceConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.openfunction.source.config;
+package org.apache.eventmesh.common.config.connector.openfunction;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/SinkConnectorConfig.java
similarity index 93%
copy from eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/sink/config/SinkConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/SinkConnectorConfig.java
index 77c1b7c70..b8bc93739 100644
--- a/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.openfunction.sink.config;
+package org.apache.eventmesh.common.config.connector.openfunction;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/SourceConnectorConfig.java
similarity index 93%
rename from eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/SourceConnectorConfig.java
index 93fc9739f..09dbdea14 100644
--- a/eventmesh-connectors/eventmesh-connector-openfunction/src/main/java/org/apache/eventmesh/connector/openfunction/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/openfunction/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.openfunction.source.config;
+package org.apache.eventmesh.common.config.connector.openfunction;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/PravegaSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/PravegaSinkConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/PravegaSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/PravegaSinkConfig.java
index 739c6539b..a94766c20 100644
--- a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/PravegaSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/PravegaSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.pravega.sink.config;
+package org.apache.eventmesh.common.config.connector.pravega;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/PravegaSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/PravegaSourceConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/PravegaSourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/PravegaSourceConfig.java
index 87fbd3d57..105d3474e 100644
--- a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/PravegaSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/PravegaSourceConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.pravega.source.config;
+package org.apache.eventmesh.common.config.connector.pravega;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/SinkConnectorConfig.java
similarity index 95%
rename from eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/SinkConnectorConfig.java
index c254dee3b..7f56ea57a 100644
--- a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.pravega.sink.config;
+package org.apache.eventmesh.common.config.connector.pravega;
import java.net.URI;
diff --git a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/SourceConnectorConfig.java
similarity index 95%
rename from eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/SourceConnectorConfig.java
index 1ff54d1c1..da0f8c5f1 100644
--- a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/pravega/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.pravega.source.config;
+package org.apache.eventmesh.common.config.connector.pravega;
import java.net.URI;
diff --git a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/PrometheusSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/prometheus/PrometheusSourceConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/PrometheusSourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/prometheus/PrometheusSourceConfig.java
index 292b7e62f..3393e4a19 100644
--- a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/PrometheusSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/prometheus/PrometheusSourceConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.prometheus.source.config;
+package org.apache.eventmesh.common.config.connector.prometheus;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/prometheus/SourceConnectorConfig.java
similarity index 94%
rename from eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/prometheus/SourceConnectorConfig.java
index 7e8b7ba93..1df3fe18c 100644
--- a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/prometheus/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.prometheus.source.config;
+package org.apache.eventmesh.common.config.connector.prometheus;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/JdbcSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/CanalSinkConfig.java
similarity index 59%
copy from eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/JdbcSinkConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/CanalSinkConfig.java
index 2a5af32ca..f7a697625 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/JdbcSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/CanalSinkConfig.java
@@ -15,20 +15,27 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.jdbc.sink.config;
+package org.apache.eventmesh.common.config.connector.rdb.canal;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
+import org.apache.eventmesh.common.remote.job.SyncMode;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
-public class JdbcSinkConfig extends SinkConfig {
+public class CanalSinkConfig extends SinkConfig {
- private boolean supportUpsert = true;
+ private Integer batchSize = 50; // batchSize
- private boolean supportDelete = true;
+ private Boolean useBatch = true; // enable batch
+
+ private Integer poolSize = 5; // sink thread size for single channel
+
+ private SyncMode syncMode; // sync mode: field/row
+
+ private Boolean skipException = false; // skip sink process exception
public SinkConnectorConfig sinkConnectorConfig;
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/CanalSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/CanalSourceConfig.java
new file mode 100644
index 000000000..e5edc5a78
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/CanalSourceConfig.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.config.connector.rdb.canal;
+
+import org.apache.eventmesh.common.config.connector.SourceConfig;
+import org.apache.eventmesh.common.remote.job.SyncConsistency;
+import org.apache.eventmesh.common.remote.job.SyncMode;
+import org.apache.eventmesh.common.remote.offset.RecordPosition;
+
+import java.util.List;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CanalSourceConfig extends SourceConfig {
+
+ private String destination;
+
+ private Long canalInstanceId;
+
+ private String desc;
+
+ private boolean ddlSync = true;
+
+ private boolean filterTableError = false;
+
+ private Long slaveId;
+
+ private Short clientId;
+
+ private Integer batchSize = 10000;
+
+ private Long batchTimeout = -1L;
+
+ private List<RecordPosition> recordPositions;
+
+ // ================================= channel parameter
+ // ================================
+
+ private Boolean enableRemedy = false; // enable remedy
+
+ private SyncMode syncMode; // sync mode: field/row
+
+ private SyncConsistency syncConsistency; // sync consistency
+
+ // ================================= system parameter
+ // ================================
+
+ private String systemSchema; // Default is retl
+
+ private String systemMarkTable; // Bidirectional synchronization mark table
+
+ private String systemMarkTableColumn; // Column name of the bidirectional synchronization mark
+
+ private String systemMarkTableInfo;
+ // nfo information of the bidirectional synchronization mark, similar to BI_SYNC
+
+ private String systemBufferTable; // sync buffer table
+
+ private String systemDualTable; // sync heartbeat table
+
+ private SourceConnectorConfig sourceConnectorConfig;
+}
diff --git a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/SinkConnectorConfig.java
similarity index 75%
copy from eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/sink/config/SinkConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/SinkConnectorConfig.java
index 087b2e48c..1124bb142 100644
--- a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/SinkConnectorConfig.java
@@ -15,20 +15,29 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.mongodb.sink.config;
+package org.apache.eventmesh.common.config.connector.rdb.canal;
import lombok.Data;
+/**
+ * Configuration parameters for a sink connector.
+ */
@Data
public class SinkConnectorConfig {
private String connectorName;
- private String connectorType;
-
private String url;
- private String database;
+ private String dbAddress;
+
+ private int dbPort;
+
+ private String userName;
+
+ private String passWord;
+
+ private String schemaName;
- private String collection;
+ private String tableName;
}
diff --git a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/SourceConnectorConfig.java
similarity index 75%
copy from eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/source/config/SourceConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/SourceConnectorConfig.java
index 5c48645a4..e9ae46607 100644
--- a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/canal/SourceConnectorConfig.java
@@ -15,21 +15,30 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.mongodb.source.config;
+package org.apache.eventmesh.common.config.connector.rdb.canal;
import lombok.Data;
+/**
+ * Represents the configuration for a database connector.
+ */
@Data
public class SourceConnectorConfig {
private String connectorName;
- private String connectorType;
-
private String url;
- private String database;
+ private String dbAddress;
+
+ private int dbPort;
+
+ private String userName;
+
+ private String passWord;
+
+ private String schemaName;
- private String collection;
+ private String tableName;
}
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/config/JdbcConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/JdbcConfig.java
similarity index 96%
rename from eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/config/JdbcConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/JdbcConfig.java
index d40801854..1b46a76c9 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/config/JdbcConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/JdbcConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.jdbc.config;
+package org.apache.eventmesh.common.config.connector.rdb.jdbc;
import java.util.Properties;
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/JdbcSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/JdbcSinkConfig.java
similarity index 89%
rename from eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/JdbcSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/JdbcSinkConfig.java
index 2a5af32ca..83711c68b 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/JdbcSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/JdbcSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.jdbc.sink.config;
+package org.apache.eventmesh.common.config.connector.rdb.jdbc;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/JdbcSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/JdbcSourceConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/JdbcSourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/JdbcSourceConfig.java
index b330c331b..553a0581a 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/JdbcSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/JdbcSourceConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.jdbc.source.config;
+package org.apache.eventmesh.common.config.connector.rdb.jdbc;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/MysqlConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/MysqlConfig.java
similarity index 95%
copy from eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/MysqlConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/MysqlConfig.java
index 032921350..ede507e1b 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/MysqlConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/MysqlConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.jdbc.source.config;
+package org.apache.eventmesh.common.config.connector.rdb.jdbc;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/SinkConnectorConfig.java
similarity index 90%
copy from eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/SinkConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/SinkConnectorConfig.java
index e971b7b00..afbd51d14 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/SinkConnectorConfig.java
@@ -15,9 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.jdbc.sink.config;
-
-import org.apache.eventmesh.connector.jdbc.config.JdbcConfig;
+package org.apache.eventmesh.common.config.connector.rdb.jdbc;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/SourceConnectorConfig.java
similarity index 95%
rename from eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/SourceConnectorConfig.java
index a27dbfedb..a10d8e09d 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/jdbc/SourceConnectorConfig.java
@@ -15,9 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.jdbc.source.config;
-
-import org.apache.eventmesh.connector.jdbc.config.JdbcConfig;
+package org.apache.eventmesh.common.config.connector.rdb.jdbc;
import java.util.List;
diff --git a/eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/sink/config/HttpSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/MongodbSinkConfig.java
similarity index 83%
copy from eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/sink/config/HttpSinkConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/MongodbSinkConfig.java
index 3dd0c2b6a..7d019ba1f 100644
--- a/eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/sink/config/HttpSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/MongodbSinkConfig.java
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.http.sink.config;
+package org.apache.eventmesh.common.config.connector.rdb.mongodb;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class HttpSinkConfig extends SinkConfig {
+@Data
+public class MongodbSinkConfig extends SinkConfig {
public SinkConnectorConfig connectorConfig;
}
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/MongodbSourceConfig.java
similarity index 83%
rename from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/MongodbSourceConfig.java
index b96954440..00dca10b2 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/FileSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/MongodbSourceConfig.java
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.source.config;
+package org.apache.eventmesh.common.config.connector.rdb.mongodb;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class FileSourceConfig extends SourceConfig {
+@Data
+public class MongodbSourceConfig extends SourceConfig {
public SourceConnectorConfig connectorConfig;
}
diff --git a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/SinkConnectorConfig.java
similarity index 93%
rename from eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/SinkConnectorConfig.java
index 087b2e48c..58ae5ffc4 100644
--- a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.mongodb.sink.config;
+package org.apache.eventmesh.common.config.connector.rdb.mongodb;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/SourceConnectorConfig.java
similarity index 93%
rename from eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/SourceConnectorConfig.java
index 5c48645a4..8ace602f8 100644
--- a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/rdb/mongodb/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.mongodb.source.config;
+package org.apache.eventmesh.common.config.connector.rdb.mongodb;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/RedisSinkConfig.java
similarity index 84%
rename from eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/RedisSinkConfig.java
index 85bb38a90..27070343d 100644
--- a/eventmesh-connectors/eventmesh-connector-knative/src/main/java/org/apache/eventmesh/connector/knative/sink/config/KnativeSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/RedisSinkConfig.java
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.knative.sink.config;
+package org.apache.eventmesh.common.config.connector.redis;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class KnativeSinkConfig extends SinkConfig {
+@Data
+public class RedisSinkConfig extends SinkConfig {
public SinkConnectorConfig connectorConfig;
diff --git a/eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/HttpSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/RedisSourceConfig.java
similarity index 84%
rename from eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/HttpSourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/RedisSourceConfig.java
index bee870cb1..5b04e6a82 100644
--- a/eventmesh-connectors/eventmesh-connector-http/src/main/java/org/apache/eventmesh/connector/http/source/config/HttpSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/RedisSourceConfig.java
@@ -15,16 +15,17 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.http.source.config;
+package org.apache.eventmesh.common.config.connector.redis;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class HttpSourceConfig extends SourceConfig {
+@Data
+public class RedisSourceConfig extends SourceConfig {
public SourceConnectorConfig connectorConfig;
+
}
diff --git a/eventmesh-connectors/eventmesh-connector-redis/src/main/java/org/apache/eventmesh/connector/redis/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/SinkConnectorConfig.java
similarity index 94%
rename from eventmesh-connectors/eventmesh-connector-redis/src/main/java/org/apache/eventmesh/connector/redis/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/SinkConnectorConfig.java
index 34fb0326a..ebf53adc3 100644
--- a/eventmesh-connectors/eventmesh-connector-redis/src/main/java/org/apache/eventmesh/connector/redis/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.redis.sink.config;
+package org.apache.eventmesh.common.config.connector.redis;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-redis/src/main/java/org/apache/eventmesh/connector/redis/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/SourceConnectorConfig.java
similarity index 94%
rename from eventmesh-connectors/eventmesh-connector-redis/src/main/java/org/apache/eventmesh/connector/redis/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/SourceConnectorConfig.java
index 9913e1632..b363924ec 100644
--- a/eventmesh-connectors/eventmesh-connector-redis/src/main/java/org/apache/eventmesh/connector/redis/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/redis/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.redis.source.config;
+package org.apache.eventmesh.common.config.connector.redis;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-s3/src/main/java/org/apache/eventmesh/connector/s3/source/config/S3SourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/s3/S3SourceConfig.java
similarity index 83%
rename from eventmesh-connectors/eventmesh-connector-s3/src/main/java/org/apache/eventmesh/connector/s3/source/config/S3SourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/s3/S3SourceConfig.java
index 0f4bec5d5..7691b6e23 100644
--- a/eventmesh-connectors/eventmesh-connector-s3/src/main/java/org/apache/eventmesh/connector/s3/source/config/S3SourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/s3/S3SourceConfig.java
@@ -15,12 +15,14 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.s3.source.config;
+package org.apache.eventmesh.common.config.connector.s3;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
+import lombok.EqualsAndHashCode;
+@EqualsAndHashCode(callSuper = true)
@Data
public class S3SourceConfig extends SourceConfig {
diff --git a/eventmesh-connectors/eventmesh-connector-s3/src/main/java/org/apache/eventmesh/connector/s3/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/s3/SourceConnectorConfig.java
similarity index 96%
rename from eventmesh-connectors/eventmesh-connector-s3/src/main/java/org/apache/eventmesh/connector/s3/source/config/SourceConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/s3/SourceConnectorConfig.java
index 2c9cb5a80..fdc453125 100644
--- a/eventmesh-connectors/eventmesh-connector-s3/src/main/java/org/apache/eventmesh/connector/s3/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/s3/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.s3.source.config;
+package org.apache.eventmesh.common.config.connector.s3;
import java.util.Map;
diff --git a/eventmesh-connectors/eventmesh-connector-slack/src/main/java/org/apache/eventmesh/connector/slack/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/slack/SinkConnectorConfig.java
similarity index 94%
rename from eventmesh-connectors/eventmesh-connector-slack/src/main/java/org/apache/eventmesh/connector/slack/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/slack/SinkConnectorConfig.java
index 41884a94a..4267beddf 100644
--- a/eventmesh-connectors/eventmesh-connector-slack/src/main/java/org/apache/eventmesh/connector/slack/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/slack/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.slack.sink.config;
+package org.apache.eventmesh.common.config.connector.slack;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-slack/src/main/java/org/apache/eventmesh/connector/slack/sink/config/SlackSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/slack/SlackSinkConfig.java
similarity index 89%
copy from eventmesh-connectors/eventmesh-connector-slack/src/main/java/org/apache/eventmesh/connector/slack/sink/config/SlackSinkConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/slack/SlackSinkConfig.java
index 016cd9ae9..969306ae6 100644
--- a/eventmesh-connectors/eventmesh-connector-slack/src/main/java/org/apache/eventmesh/connector/slack/sink/config/SlackSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/slack/SlackSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.slack.sink.config;
+package org.apache.eventmesh.common.config.connector.slack;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/sink/connector/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SinkConnectorConfig.java
similarity index 93%
copy from eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/sink/connector/SinkConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SinkConnectorConfig.java
index a71c4ab66..0ded9886d 100644
--- a/eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/sink/connector/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.spring.sink.connector;
+package org.apache.eventmesh.common.config.connector.spring;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/source/connector/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SourceConnectorConfig.java
similarity index 93%
copy from eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/source/connector/SourceConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SourceConnectorConfig.java
index 242869087..c31f8c988 100644
--- a/eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/source/connector/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SourceConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.spring.source.connector;
+package org.apache.eventmesh.common.config.connector.spring;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-slack/src/main/java/org/apache/eventmesh/connector/slack/sink/config/SlackSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SpringSinkConfig.java
similarity index 84%
rename from eventmesh-connectors/eventmesh-connector-slack/src/main/java/org/apache/eventmesh/connector/slack/sink/config/SlackSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SpringSinkConfig.java
index 016cd9ae9..14f1f4bbe 100644
--- a/eventmesh-connectors/eventmesh-connector-slack/src/main/java/org/apache/eventmesh/connector/slack/sink/config/SlackSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SpringSinkConfig.java
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.slack.sink.config;
+package org.apache.eventmesh.common.config.connector.spring;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
-public class SlackSinkConfig extends SinkConfig {
+public class SpringSinkConfig extends SinkConfig {
private SinkConnectorConfig sinkConnectorConfig;
}
diff --git a/eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/source/config/SpringSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SpringSourceConfig.java
similarity index 82%
rename from eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/source/config/SpringSourceConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SpringSourceConfig.java
index 191e9b119..e99dfc594 100644
--- a/eventmesh-connectors/eventmesh-connector-spring/src/main/java/org/apache/eventmesh/connector/spring/source/config/SpringSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/spring/SpringSourceConfig.java
@@ -15,10 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.spring.source.config;
+package org.apache.eventmesh.common.config.connector.spring;
-import org.apache.eventmesh.connector.spring.source.connector.SourceConnectorConfig;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.config.connector.SourceConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-wechat/src/main/java/org/apache/eventmesh/connector/wechat/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wechat/SinkConnectorConfig.java
similarity index 94%
rename from eventmesh-connectors/eventmesh-connector-wechat/src/main/java/org/apache/eventmesh/connector/wechat/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wechat/SinkConnectorConfig.java
index e575e65c6..95ca5e64c 100644
--- a/eventmesh-connectors/eventmesh-connector-wechat/src/main/java/org/apache/eventmesh/connector/wechat/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wechat/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.wechat.sink.config;
+package org.apache.eventmesh.common.config.connector.wechat;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-wechat/src/main/java/org/apache/eventmesh/connector/wechat/sink/config/WeChatSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wechat/WeChatSinkConfig.java
similarity index 88%
rename from eventmesh-connectors/eventmesh-connector-wechat/src/main/java/org/apache/eventmesh/connector/wechat/sink/config/WeChatSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wechat/WeChatSinkConfig.java
index a77e1c77b..e968202c4 100644
--- a/eventmesh-connectors/eventmesh-connector-wechat/src/main/java/org/apache/eventmesh/connector/wechat/sink/config/WeChatSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wechat/WeChatSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.wechat.sink.config;
+package org.apache.eventmesh.common.config.connector.wechat;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-wecom/src/main/java/org/apache/eventmesh/connector/wecom/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wecom/SinkConnectorConfig.java
similarity index 94%
rename from eventmesh-connectors/eventmesh-connector-wecom/src/main/java/org/apache/eventmesh/connector/wecom/sink/config/SinkConnectorConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wecom/SinkConnectorConfig.java
index 013d5a8bb..b32b5b7d3 100644
--- a/eventmesh-connectors/eventmesh-connector-wecom/src/main/java/org/apache/eventmesh/connector/wecom/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wecom/SinkConnectorConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.wecom.sink.config;
+package org.apache.eventmesh.common.config.connector.wecom;
import lombok.Data;
diff --git a/eventmesh-connectors/eventmesh-connector-wecom/src/main/java/org/apache/eventmesh/connector/wecom/sink/config/WeComSinkConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wecom/WeComSinkConfig.java
similarity index 89%
rename from eventmesh-connectors/eventmesh-connector-wecom/src/main/java/org/apache/eventmesh/connector/wecom/sink/config/WeComSinkConfig.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wecom/WeComSinkConfig.java
index 8af43bdbe..5177baa44 100644
--- a/eventmesh-connectors/eventmesh-connector-wecom/src/main/java/org/apache/eventmesh/connector/wecom/sink/config/WeComSinkConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/connector/wecom/WeComSinkConfig.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.wecom.sink.config;
+package org.apache.eventmesh.common.config.connector.wecom;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.common.config.connector.SinkConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/enums/ComponentType.java
similarity index 72%
copy from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/enums/ComponentType.java
index 6376a7fb4..a48e3fe01 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/enums/ComponentType.java
@@ -15,14 +15,20 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.source.config;
+package org.apache.eventmesh.common.enums;
-import lombok.Data;
+public enum ComponentType {
+ CONNECTOR("connector"),
+ FUNCTION("function"),
+ MESH("mesh");
-@Data
-public class SourceConnectorConfig {
+ public String name;
- private String connectorName;
+ ComponentType(String name) {
+ this.name = name;
+ }
- private String filePath;
+ public String componentTypeName() {
+ return this.name;
+ }
}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/AdminServiceGrpc.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/AdminServiceGrpc.java
new file mode 100644
index 000000000..df5f3ef33
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/AdminServiceGrpc.java
@@ -0,0 +1,373 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.protocol.grpc.adminserver;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+
+/**
+ * AdminServiceGrpc
+ */
+@javax.annotation.Generated(
+ value = "by gRPC proto compiler (version 1.40.0)",
+ comments = "Source: event_mesh_admin_service.proto")
+@io.grpc.stub.annotations.GrpcGenerated
+public final class AdminServiceGrpc {
+
+ private AdminServiceGrpc() {
+ }
+
+ public static final String SERVICE_NAME = "AdminService";
+
+ // Static method descriptors that strictly reflect the proto.
+ private static volatile io.grpc.MethodDescriptor<Payload,
+ Payload> getInvokeBiStreamMethod;
+
+ @io.grpc.stub.annotations.RpcMethod(
+ fullMethodName = SERVICE_NAME + '/' + "invokeBiStream",
+ requestType = Payload.class,
+ responseType = Payload.class,
+ methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING)
+ public static io.grpc.MethodDescriptor<Payload,
+ Payload> getInvokeBiStreamMethod() {
+ io.grpc.MethodDescriptor<Payload, Payload> getInvokeBiStreamMethod;
+ if ((getInvokeBiStreamMethod = AdminServiceGrpc.getInvokeBiStreamMethod) == null) {
+ synchronized (AdminServiceGrpc.class) {
+ if ((getInvokeBiStreamMethod = AdminServiceGrpc.getInvokeBiStreamMethod) == null) {
+ AdminServiceGrpc.getInvokeBiStreamMethod = getInvokeBiStreamMethod =
+ io.grpc.MethodDescriptor.<Payload, Payload>newBuilder()
+ .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING)
+ .setFullMethodName(generateFullMethodName(SERVICE_NAME, "invokeBiStream"))
+ .setSampledToLocalTracing(true)
+ .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+ Payload.getDefaultInstance()))
+ .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+ Payload.getDefaultInstance()))
+ .setSchemaDescriptor(new AdminServiceMethodDescriptorSupplier("invokeBiStream"))
+ .build();
+ }
+ }
+ }
+ return getInvokeBiStreamMethod;
+ }
+
+ private static volatile io.grpc.MethodDescriptor<Payload,
+ Payload> getInvokeMethod;
+
+ @io.grpc.stub.annotations.RpcMethod(
+ fullMethodName = SERVICE_NAME + '/' + "invoke",
+ requestType = Payload.class,
+ responseType = Payload.class,
+ methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+ public static io.grpc.MethodDescriptor<Payload,
+ Payload> getInvokeMethod() {
+ io.grpc.MethodDescriptor<Payload, Payload> getInvokeMethod;
+ if ((getInvokeMethod = AdminServiceGrpc.getInvokeMethod) == null) {
+ synchronized (AdminServiceGrpc.class) {
+ if ((getInvokeMethod = AdminServiceGrpc.getInvokeMethod) == null) {
+ AdminServiceGrpc.getInvokeMethod = getInvokeMethod =
+ io.grpc.MethodDescriptor.<Payload, Payload>newBuilder()
+ .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+ .setFullMethodName(generateFullMethodName(SERVICE_NAME, "invoke"))
+ .setSampledToLocalTracing(true)
+ .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+ Payload.getDefaultInstance()))
+ .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+ Payload.getDefaultInstance()))
+ .setSchemaDescriptor(new AdminServiceMethodDescriptorSupplier("invoke"))
+ .build();
+ }
+ }
+ }
+ return getInvokeMethod;
+ }
+
+ /**
+ * Creates a new async stub that supports all call types for the service
+ */
+ public static AdminServiceStub newStub(io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory<AdminServiceStub> factory =
+ new io.grpc.stub.AbstractStub.StubFactory<AdminServiceStub>() {
+ @Override
+ public AdminServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceStub(channel, callOptions);
+ }
+ };
+ return AdminServiceStub.newStub(factory, channel);
+ }
+
+ /**
+ * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+ */
+ public static AdminServiceBlockingStub newBlockingStub(
+ io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory<AdminServiceBlockingStub> factory =
+ new io.grpc.stub.AbstractStub.StubFactory<AdminServiceBlockingStub>() {
+ @Override
+ public AdminServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceBlockingStub(channel, callOptions);
+ }
+ };
+ return AdminServiceBlockingStub.newStub(factory, channel);
+ }
+
+ /**
+ * Creates a new ListenableFuture-style stub that supports unary calls on the service
+ */
+ public static AdminServiceFutureStub newFutureStub(
+ io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory<AdminServiceFutureStub> factory =
+ new io.grpc.stub.AbstractStub.StubFactory<AdminServiceFutureStub>() {
+ @Override
+ public AdminServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceFutureStub(channel, callOptions);
+ }
+ };
+ return AdminServiceFutureStub.newStub(factory, channel);
+ }
+
+ /**
+ *
+ */
+ public static abstract class AdminServiceImplBase implements io.grpc.BindableService {
+
+ /**
+ *
+ */
+ public io.grpc.stub.StreamObserver<Payload> invokeBiStream(
+ io.grpc.stub.StreamObserver<Payload> responseObserver) {
+ return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getInvokeBiStreamMethod(), responseObserver);
+ }
+
+ /**
+ *
+ */
+ public void invoke(Payload request,
+ io.grpc.stub.StreamObserver<Payload> responseObserver) {
+ io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getInvokeMethod(), responseObserver);
+ }
+
+ @Override
+ public final io.grpc.ServerServiceDefinition bindService() {
+ return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+ .addMethod(
+ getInvokeBiStreamMethod(),
+ io.grpc.stub.ServerCalls.asyncBidiStreamingCall(
+ new MethodHandlers<
+ Payload,
+ Payload>(
+ this, METHODID_INVOKE_BI_STREAM)))
+ .addMethod(
+ getInvokeMethod(),
+ io.grpc.stub.ServerCalls.asyncUnaryCall(
+ new MethodHandlers<
+ Payload,
+ Payload>(
+ this, METHODID_INVOKE)))
+ .build();
+ }
+ }
+
+ /**
+ *
+ */
+ public static final class AdminServiceStub extends io.grpc.stub.AbstractAsyncStub<AdminServiceStub> {
+
+ private AdminServiceStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @Override
+ protected AdminServiceStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceStub(channel, callOptions);
+ }
+
+ /**
+ *
+ */
+ public io.grpc.stub.StreamObserver<Payload> invokeBiStream(
+ io.grpc.stub.StreamObserver<Payload> responseObserver) {
+ return io.grpc.stub.ClientCalls.asyncBidiStreamingCall(
+ getChannel().newCall(getInvokeBiStreamMethod(), getCallOptions()), responseObserver);
+ }
+
+ /**
+ *
+ */
+ public void invoke(Payload request,
+ io.grpc.stub.StreamObserver<Payload> responseObserver) {
+ io.grpc.stub.ClientCalls.asyncUnaryCall(
+ getChannel().newCall(getInvokeMethod(), getCallOptions()), request, responseObserver);
+ }
+ }
+
+ /**
+ *
+ */
+ public static final class AdminServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<AdminServiceBlockingStub> {
+
+ private AdminServiceBlockingStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @Override
+ protected AdminServiceBlockingStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceBlockingStub(channel, callOptions);
+ }
+
+ /**
+ *
+ */
+ public Payload invoke(Payload request) {
+ return io.grpc.stub.ClientCalls.blockingUnaryCall(
+ getChannel(), getInvokeMethod(), getCallOptions(), request);
+ }
+ }
+
+ /**
+ *
+ */
+ public static final class AdminServiceFutureStub extends io.grpc.stub.AbstractFutureStub<AdminServiceFutureStub> {
+
+ private AdminServiceFutureStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @Override
+ protected AdminServiceFutureStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceFutureStub(channel, callOptions);
+ }
+
+ /**
+ *
+ */
+ public com.google.common.util.concurrent.ListenableFuture<Payload> invoke(
+ Payload request) {
+ return io.grpc.stub.ClientCalls.futureUnaryCall(
+ getChannel().newCall(getInvokeMethod(), getCallOptions()), request);
+ }
+ }
+
+ private static final int METHODID_INVOKE = 0;
+ private static final int METHODID_INVOKE_BI_STREAM = 1;
+
+ private static final class MethodHandlers<Req, Resp> implements
+ io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+ io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+ io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+ io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+
+ private final AdminServiceImplBase serviceImpl;
+ private final int methodId;
+
+ MethodHandlers(AdminServiceImplBase serviceImpl, int methodId) {
+ this.serviceImpl = serviceImpl;
+ this.methodId = methodId;
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+ switch (methodId) {
+ case METHODID_INVOKE:
+ serviceImpl.invoke((Payload) request,
+ (io.grpc.stub.StreamObserver<Payload>) responseObserver);
+ break;
+ default:
+ throw new AssertionError();
+ }
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public io.grpc.stub.StreamObserver<Req> invoke(
+ io.grpc.stub.StreamObserver<Resp> responseObserver) {
+ switch (methodId) {
+ case METHODID_INVOKE_BI_STREAM:
+ return (io.grpc.stub.StreamObserver<Req>) serviceImpl.invokeBiStream(
+ (io.grpc.stub.StreamObserver<Payload>) responseObserver);
+ default:
+ throw new AssertionError();
+ }
+ }
+ }
+
+ private static abstract class AdminServiceBaseDescriptorSupplier
+ implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+
+ AdminServiceBaseDescriptorSupplier() {
+ }
+
+ @Override
+ public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+ return EventMeshAdminService.getDescriptor();
+ }
+
+ @Override
+ public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+ return getFileDescriptor().findServiceByName("AdminService");
+ }
+ }
+
+ private static final class AdminServiceFileDescriptorSupplier
+ extends AdminServiceBaseDescriptorSupplier {
+
+ AdminServiceFileDescriptorSupplier() {
+ }
+ }
+
+ private static final class AdminServiceMethodDescriptorSupplier
+ extends AdminServiceBaseDescriptorSupplier
+ implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+
+ private final String methodName;
+
+ AdminServiceMethodDescriptorSupplier(String methodName) {
+ this.methodName = methodName;
+ }
+
+ @Override
+ public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+ return getServiceDescriptor().findMethodByName(methodName);
+ }
+ }
+
+ private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+ public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+ io.grpc.ServiceDescriptor result = serviceDescriptor;
+ if (result == null) {
+ synchronized (AdminServiceGrpc.class) {
+ result = serviceDescriptor;
+ if (result == null) {
+ serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+ .setSchemaDescriptor(new AdminServiceFileDescriptorSupplier())
+ .addMethod(getInvokeBiStreamMethod())
+ .addMethod(getInvokeMethod())
+ .build();
+ }
+ }
+ }
+ return result;
+ }
+}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/EventMeshAdminService.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/EventMeshAdminService.java
new file mode 100644
index 000000000..d67ed4159
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/EventMeshAdminService.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.protocol.grpc.adminserver;// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: event_mesh_admin_service.proto
+
+public final class EventMeshAdminService {
+
+ private EventMeshAdminService() {
+ }
+
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistryLite registry) {
+ }
+
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistry registry) {
+ registerAllExtensions(
+ (com.google.protobuf.ExtensionRegistryLite) registry);
+ }
+
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_Metadata_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_Metadata_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_Metadata_HeadersEntry_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_Metadata_HeadersEntry_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_Payload_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_Payload_fieldAccessorTable;
+
+ public static com.google.protobuf.Descriptors.FileDescriptor
+ getDescriptor() {
+ return descriptor;
+ }
+
+ private static com.google.protobuf.Descriptors.FileDescriptor
+ descriptor;
+
+ static {
+ String[] descriptorData = {
+ "\n\036event_mesh_admin_service.proto\032\031google" +
+ "/protobuf/any.proto\"q\n\010Metadata\022\014\n\004type\030" +
+ "\003 \001(\t\022\'\n\007headers\030\007 \003(\0132\026.Metadata.Header" +
+ "sEntry\032.\n\014HeadersEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005v" +
+ "alue\030\002 \001(\t:\0028\001\"4\n\007Payload\022\033\n\010metadata\030\002 " +
+ "\001(\0132\t.Metadata\022\014\n\004body\030\003 \001(\0142Z\n\014AdminSer" +
+ "vice\022*\n\016invokeBiStream\022\010.Payload\032\010.Paylo" +
+ "ad\"\000(\0010\001\022\036\n\006invoke\022\010.Payload\032\010.Payload\"\000" +
+ "B\002P\001b\006proto3"
+ };
+ descriptor = com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ com.google.protobuf.AnyProto.getDescriptor(),
+ });
+ internal_static_Metadata_descriptor =
+ getDescriptor().getMessageTypes().get(0);
+ internal_static_Metadata_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_Metadata_descriptor,
+ new String[] {"Type", "Headers",});
+ internal_static_Metadata_HeadersEntry_descriptor =
+ internal_static_Metadata_descriptor.getNestedTypes().get(0);
+ internal_static_Metadata_HeadersEntry_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_Metadata_HeadersEntry_descriptor,
+ new String[] {"Key", "Value",});
+ internal_static_Payload_descriptor =
+ getDescriptor().getMessageTypes().get(1);
+ internal_static_Payload_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_Payload_descriptor,
+ new String[] {"Metadata", "Body",});
+ com.google.protobuf.AnyProto.getDescriptor();
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/Metadata.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/Metadata.java
new file mode 100644
index 000000000..f25754f28
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/Metadata.java
@@ -0,0 +1,962 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.protocol.grpc.adminserver;// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: event_mesh_admin_service.proto
+
+/**
+ * Protobuf type {@code Metadata}
+ */
+public final class Metadata extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:Metadata)
+ MetadataOrBuilder {
+
+ private static final long serialVersionUID = 0L;
+
+ // Use Metadata.newBuilder() to construct.
+ private Metadata(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+
+ private Metadata() {
+ type_ = "";
+ }
+
+ @Override
+ @SuppressWarnings({"unused"})
+ protected Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new Metadata();
+ }
+
+ @Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ private Metadata(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 26: {
+ String s = input.readStringRequireUtf8();
+
+ type_ = s;
+ break;
+ }
+ case 58: {
+ if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+ headers_ = com.google.protobuf.MapField.newMapField(
+ HeadersDefaultEntryHolder.defaultEntry);
+ mutable_bitField0_ |= 0x00000001;
+ }
+ com.google.protobuf.MapEntry<String, String>
+ headers__ = input.readMessage(
+ HeadersDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+ headers_.getMutableMap().put(
+ headers__.getKey(), headers__.getValue());
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return EventMeshAdminService.internal_static_Metadata_descriptor;
+ }
+
+ @SuppressWarnings({"rawtypes"})
+ @Override
+ protected com.google.protobuf.MapField internalGetMapField(
+ int number) {
+ switch (number) {
+ case 7:
+ return internalGetHeaders();
+ default:
+ throw new RuntimeException(
+ "Invalid map field number: " + number);
+ }
+ }
+
+ @Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return EventMeshAdminService.internal_static_Metadata_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Metadata.class, Builder.class);
+ }
+
+ public static final int TYPE_FIELD_NUMBER = 3;
+ private volatile Object type_;
+
+ /**
+ * <code>string type = 3;</code>
+ *
+ * @return The type.
+ */
+ @Override
+ public String getType() {
+ Object ref = type_;
+ if (ref instanceof String) {
+ return (String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ String s = bs.toStringUtf8();
+ type_ = s;
+ return s;
+ }
+ }
+
+ /**
+ * <code>string type = 3;</code>
+ *
+ * @return The bytes for type.
+ */
+ @Override
+ public com.google.protobuf.ByteString
+ getTypeBytes() {
+ Object ref = type_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (String) ref);
+ type_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int HEADERS_FIELD_NUMBER = 7;
+
+ private static final class HeadersDefaultEntryHolder {
+
+ static final com.google.protobuf.MapEntry<
+ String, String> defaultEntry =
+ com.google.protobuf.MapEntry
+ .<String, String>newDefaultInstance(
+ EventMeshAdminService.internal_static_Metadata_HeadersEntry_descriptor,
+ com.google.protobuf.WireFormat.FieldType.STRING,
+ "",
+ com.google.protobuf.WireFormat.FieldType.STRING,
+ "");
+ }
+
+ private com.google.protobuf.MapField<
+ String, String> headers_;
+
+ private com.google.protobuf.MapField<String, String>
+ internalGetHeaders() {
+ if (headers_ == null) {
+ return com.google.protobuf.MapField.emptyMapField(
+ HeadersDefaultEntryHolder.defaultEntry);
+ }
+ return headers_;
+ }
+
+ public int getHeadersCount() {
+ return internalGetHeaders().getMap().size();
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+
+ @Override
+ public boolean containsHeaders(
+ String key) {
+ if (key == null) {
+ throw new NullPointerException();
+ }
+ return internalGetHeaders().getMap().containsKey(key);
+ }
+
+ /**
+ * Use {@link #getHeadersMap()} instead.
+ */
+ @Override
+ @Deprecated
+ public java.util.Map<String, String> getHeaders() {
+ return getHeadersMap();
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+ @Override
+
+ public java.util.Map<String, String> getHeadersMap() {
+ return internalGetHeaders().getMap();
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+ @Override
+
+ public String getHeadersOrDefault(
+ String key,
+ String defaultValue) {
+ if (key == null) {
+ throw new NullPointerException();
+ }
+ java.util.Map<String, String> map =
+ internalGetHeaders().getMap();
+ return map.containsKey(key) ? map.get(key) : defaultValue;
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+ @Override
+
+ public String getHeadersOrThrow(
+ String key) {
+ if (key == null) {
+ throw new NullPointerException();
+ }
+ java.util.Map<String, String> map =
+ internalGetHeaders().getMap();
+ if (!map.containsKey(key)) {
+ throw new IllegalArgumentException();
+ }
+ return map.get(key);
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) {
+ return true;
+ }
+ if (isInitialized == 0) {
+ return false;
+ }
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!getTypeBytes().isEmpty()) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
+ }
+ com.google.protobuf.GeneratedMessageV3
+ .serializeStringMapTo(
+ output,
+ internalGetHeaders(),
+ HeadersDefaultEntryHolder.defaultEntry,
+ 7);
+ unknownFields.writeTo(output);
+ }
+
+ @Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) {
+ return size;
+ }
+
+ size = 0;
+ if (!getTypeBytes().isEmpty()) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
+ }
+ for (java.util.Map.Entry<String, String> entry
+ : internalGetHeaders().getMap().entrySet()) {
+ com.google.protobuf.MapEntry<String, String>
+ headers__ = HeadersDefaultEntryHolder.defaultEntry.newBuilderForType()
+ .setKey(entry.getKey())
+ .setValue(entry.getValue())
+ .build();
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(7, headers__);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof Metadata)) {
+ return super.equals(obj);
+ }
+ Metadata other = (Metadata) obj;
+
+ if (!getType()
+ .equals(other.getType())) {
+ return false;
+ }
+ if (!internalGetHeaders().equals(
+ other.internalGetHeaders())) {
+ return false;
+ }
+ if (!unknownFields.equals(other.unknownFields)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + TYPE_FIELD_NUMBER;
+ hash = (53 * hash) + getType().hashCode();
+ if (!internalGetHeaders().getMap().isEmpty()) {
+ hash = (37 * hash) + HEADERS_FIELD_NUMBER;
+ hash = (53 * hash) + internalGetHeaders().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static Metadata parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static Metadata parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static Metadata parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static Metadata parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static Metadata parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static Metadata parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static Metadata parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static Metadata parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static Metadata parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static Metadata parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static Metadata parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static Metadata parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(Metadata prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ * Protobuf type {@code Metadata}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:Metadata)
+ MetadataOrBuilder {
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return EventMeshAdminService.internal_static_Metadata_descriptor;
+ }
+
+ @SuppressWarnings({"rawtypes"})
+ protected com.google.protobuf.MapField internalGetMapField(
+ int number) {
+ switch (number) {
+ case 7:
+ return internalGetHeaders();
+ default:
+ throw new RuntimeException(
+ "Invalid map field number: " + number);
+ }
+ }
+
+ @SuppressWarnings({"rawtypes"})
+ protected com.google.protobuf.MapField internalGetMutableMapField(
+ int number) {
+ switch (number) {
+ case 7:
+ return internalGetMutableHeaders();
+ default:
+ throw new RuntimeException(
+ "Invalid map field number: " + number);
+ }
+ }
+
+ @Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return EventMeshAdminService.internal_static_Metadata_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Metadata.class, Builder.class);
+ }
+
+ // Construct using Metadata.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+
+ @Override
+ public Builder clear() {
+ super.clear();
+ type_ = "";
+
+ internalGetMutableHeaders().clear();
+ return this;
+ }
+
+ @Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return EventMeshAdminService.internal_static_Metadata_descriptor;
+ }
+
+ @Override
+ public Metadata getDefaultInstanceForType() {
+ return Metadata.getDefaultInstance();
+ }
+
+ @Override
+ public Metadata build() {
+ Metadata result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @Override
+ public Metadata buildPartial() {
+ Metadata result = new Metadata(this);
+ int from_bitField0_ = bitField0_;
+ result.type_ = type_;
+ result.headers_ = internalGetHeaders();
+ result.headers_.makeImmutable();
+ onBuilt();
+ return result;
+ }
+
+ @Override
+ public Builder clone() {
+ return super.clone();
+ }
+
+ @Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ Object value) {
+ return super.setField(field, value);
+ }
+
+ @Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+
+ @Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+
+ @Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+
+ @Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ Object value) {
+ return super.addRepeatedField(field, value);
+ }
+
+ @Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof Metadata) {
+ return mergeFrom((Metadata) other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(Metadata other) {
+ if (other == Metadata.getDefaultInstance()) {
+ return this;
+ }
+ if (!other.getType().isEmpty()) {
+ type_ = other.type_;
+ onChanged();
+ }
+ internalGetMutableHeaders().mergeFrom(
+ other.internalGetHeaders());
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ Metadata parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (Metadata) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private int bitField0_;
+
+ private Object type_ = "";
+
+ /**
+ * <code>string type = 3;</code>
+ *
+ * @return The type.
+ */
+ public String getType() {
+ Object ref = type_;
+ if (!(ref instanceof String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ String s = bs.toStringUtf8();
+ type_ = s;
+ return s;
+ } else {
+ return (String) ref;
+ }
+ }
+
+ /**
+ * <code>string type = 3;</code>
+ *
+ * @return The bytes for type.
+ */
+ public com.google.protobuf.ByteString
+ getTypeBytes() {
+ Object ref = type_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (String) ref);
+ type_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ * <code>string type = 3;</code>
+ *
+ * @param value The type to set.
+ * @return This builder for chaining.
+ */
+ public Builder setType(
+ String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ type_ = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ * <code>string type = 3;</code>
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearType() {
+
+ type_ = getDefaultInstance().getType();
+ onChanged();
+ return this;
+ }
+
+ /**
+ * <code>string type = 3;</code>
+ *
+ * @param value The bytes for type to set.
+ * @return This builder for chaining.
+ */
+ public Builder setTypeBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ type_ = value;
+ onChanged();
+ return this;
+ }
+
+ private com.google.protobuf.MapField<
+ String, String> headers_;
+
+ private com.google.protobuf.MapField<String, String>
+ internalGetHeaders() {
+ if (headers_ == null) {
+ return com.google.protobuf.MapField.emptyMapField(
+ HeadersDefaultEntryHolder.defaultEntry);
+ }
+ return headers_;
+ }
+
+ private com.google.protobuf.MapField<String, String>
+ internalGetMutableHeaders() {
+ onChanged();
+ ;
+ if (headers_ == null) {
+ headers_ = com.google.protobuf.MapField.newMapField(
+ HeadersDefaultEntryHolder.defaultEntry);
+ }
+ if (!headers_.isMutable()) {
+ headers_ = headers_.copy();
+ }
+ return headers_;
+ }
+
+ public int getHeadersCount() {
+ return internalGetHeaders().getMap().size();
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+
+ @Override
+ public boolean containsHeaders(
+ String key) {
+ if (key == null) {
+ throw new NullPointerException();
+ }
+ return internalGetHeaders().getMap().containsKey(key);
+ }
+
+ /**
+ * Use {@link #getHeadersMap()} instead.
+ */
+ @Override
+ @Deprecated
+ public java.util.Map<String, String> getHeaders() {
+ return getHeadersMap();
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+ @Override
+
+ public java.util.Map<String, String> getHeadersMap() {
+ return internalGetHeaders().getMap();
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+ @Override
+
+ public String getHeadersOrDefault(
+ String key,
+ String defaultValue) {
+ if (key == null) {
+ throw new NullPointerException();
+ }
+ java.util.Map<String, String> map =
+ internalGetHeaders().getMap();
+ return map.containsKey(key) ? map.get(key) : defaultValue;
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+ @Override
+
+ public String getHeadersOrThrow(
+ String key) {
+ if (key == null) {
+ throw new NullPointerException();
+ }
+ java.util.Map<String, String> map =
+ internalGetHeaders().getMap();
+ if (!map.containsKey(key)) {
+ throw new IllegalArgumentException();
+ }
+ return map.get(key);
+ }
+
+ public Builder clearHeaders() {
+ internalGetMutableHeaders().getMutableMap()
+ .clear();
+ return this;
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+
+ public Builder removeHeaders(
+ String key) {
+ if (key == null) {
+ throw new NullPointerException();
+ }
+ internalGetMutableHeaders().getMutableMap()
+ .remove(key);
+ return this;
+ }
+
+ /**
+ * Use alternate mutation accessors instead.
+ */
+ @Deprecated
+ public java.util.Map<String, String>
+ getMutableHeaders() {
+ return internalGetMutableHeaders().getMutableMap();
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+ public Builder putHeaders(
+ String key,
+ String value) {
+ if (key == null) {
+ throw new NullPointerException();
+ }
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ internalGetMutableHeaders().getMutableMap()
+ .put(key, value);
+ return this;
+ }
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+
+ public Builder putAllHeaders(
+ java.util.Map<String, String> values) {
+ internalGetMutableHeaders().getMutableMap()
+ .putAll(values);
+ return this;
+ }
+
+ @Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+ // @@protoc_insertion_point(builder_scope:Metadata)
+ }
+
+ // @@protoc_insertion_point(class_scope:Metadata)
+ private static final Metadata DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new Metadata();
+ }
+
+ public static Metadata getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<Metadata>
+ PARSER = new com.google.protobuf.AbstractParser<Metadata>() {
+ @Override
+ public Metadata parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Metadata(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<Metadata> parser() {
+ return PARSER;
+ }
+
+ @Override
+ public com.google.protobuf.Parser<Metadata> getParserForType() {
+ return PARSER;
+ }
+
+ @Override
+ public Metadata getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/MetadataOrBuilder.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/MetadataOrBuilder.java
new file mode 100644
index 000000000..7afef491f
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/MetadataOrBuilder.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.protocol.grpc.adminserver;// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: event_mesh_admin_service.proto
+
+public interface MetadataOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:Metadata)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <code>string type = 3;</code>
+ *
+ * @return The type.
+ */
+ String getType();
+
+ /**
+ * <code>string type = 3;</code>
+ *
+ * @return The bytes for type.
+ */
+ com.google.protobuf.ByteString
+ getTypeBytes();
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+ int getHeadersCount();
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+ boolean containsHeaders(
+ String key);
+
+ /**
+ * Use {@link #getHeadersMap()} instead.
+ */
+ @Deprecated
+ java.util.Map<String, String>
+ getHeaders();
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+ java.util.Map<String, String>
+ getHeadersMap();
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+
+ String getHeadersOrDefault(
+ String key,
+ String defaultValue);
+
+ /**
+ * <code>map<string, string> headers = 7;</code>
+ */
+
+ String getHeadersOrThrow(
+ String key);
+}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/Payload.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/Payload.java
new file mode 100644
index 000000000..a0067099a
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/Payload.java
@@ -0,0 +1,893 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.protocol.grpc.adminserver;// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: event_mesh_admin_service.proto
+
+/**
+ * Protobuf type {@code Payload}
+ */
+public final class Payload extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:Payload)
+ PayloadOrBuilder {
+
+ private static final long serialVersionUID = 0L;
+
+ // Use Payload.newBuilder() to construct.
+ private Payload(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+
+ private Payload() {
+ }
+
+ @Override
+ @SuppressWarnings({"unused"})
+ protected Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new Payload();
+ }
+
+ @Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+
+ private Payload(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new NullPointerException();
+ }
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 18: {
+ Metadata.Builder subBuilder = null;
+ if (metadata_ != null) {
+ subBuilder = metadata_.toBuilder();
+ }
+ metadata_ = input.readMessage(Metadata.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(metadata_);
+ metadata_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ case 26: {
+ com.google.protobuf.Any.Builder subBuilder = null;
+ if (body_ != null) {
+ subBuilder = body_.toBuilder();
+ }
+ body_ = input.readMessage(com.google.protobuf.Any.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(body_);
+ body_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return EventMeshAdminService.internal_static_Payload_descriptor;
+ }
+
+ @Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return EventMeshAdminService.internal_static_Payload_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Payload.class, Builder.class);
+ }
+
+ public static final int METADATA_FIELD_NUMBER = 2;
+ private Metadata metadata_;
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ *
+ * @return Whether the metadata field is set.
+ */
+ @Override
+ public boolean hasMetadata() {
+ return metadata_ != null;
+ }
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ *
+ * @return The metadata.
+ */
+ @Override
+ public Metadata getMetadata() {
+ return metadata_ == null ? Metadata.getDefaultInstance() : metadata_;
+ }
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ */
+ @Override
+ public MetadataOrBuilder getMetadataOrBuilder() {
+ return getMetadata();
+ }
+
+ public static final int BODY_FIELD_NUMBER = 3;
+ private com.google.protobuf.Any body_;
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ *
+ * @return Whether the body field is set.
+ */
+ @Override
+ public boolean hasBody() {
+ return body_ != null;
+ }
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ *
+ * @return The body.
+ */
+ @Override
+ public com.google.protobuf.Any getBody() {
+ return body_ == null ? com.google.protobuf.Any.getDefaultInstance() : body_;
+ }
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ */
+ @Override
+ public com.google.protobuf.AnyOrBuilder getBodyOrBuilder() {
+ return getBody();
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) {
+ return true;
+ }
+ if (isInitialized == 0) {
+ return false;
+ }
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (metadata_ != null) {
+ output.writeMessage(2, getMetadata());
+ }
+ if (body_ != null) {
+ output.writeMessage(3, getBody());
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) {
+ return size;
+ }
+
+ size = 0;
+ if (metadata_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(2, getMetadata());
+ }
+ if (body_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(3, getBody());
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof Payload)) {
+ return super.equals(obj);
+ }
+ Payload other = (Payload) obj;
+
+ if (hasMetadata() != other.hasMetadata()) {
+ return false;
+ }
+ if (hasMetadata()) {
+ if (!getMetadata()
+ .equals(other.getMetadata())) {
+ return false;
+ }
+ }
+ if (hasBody() != other.hasBody()) {
+ return false;
+ }
+ if (hasBody()) {
+ if (!getBody()
+ .equals(other.getBody())) {
+ return false;
+ }
+ }
+ if (!unknownFields.equals(other.unknownFields)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasMetadata()) {
+ hash = (37 * hash) + METADATA_FIELD_NUMBER;
+ hash = (53 * hash) + getMetadata().hashCode();
+ }
+ if (hasBody()) {
+ hash = (37 * hash) + BODY_FIELD_NUMBER;
+ hash = (53 * hash) + getBody().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static Payload parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static Payload parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static Payload parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static Payload parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static Payload parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static Payload parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static Payload parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static Payload parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static Payload parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static Payload parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public static Payload parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+
+ public static Payload parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(Payload prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ * Protobuf type {@code Payload}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:Payload)
+ PayloadOrBuilder {
+
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return EventMeshAdminService.internal_static_Payload_descriptor;
+ }
+
+ @Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return EventMeshAdminService.internal_static_Payload_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Payload.class, Builder.class);
+ }
+
+ // Construct using Payload.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+
+ @Override
+ public Builder clear() {
+ super.clear();
+ if (metadataBuilder_ == null) {
+ metadata_ = null;
+ } else {
+ metadata_ = null;
+ metadataBuilder_ = null;
+ }
+ if (bodyBuilder_ == null) {
+ body_ = null;
+ } else {
+ body_ = null;
+ bodyBuilder_ = null;
+ }
+ return this;
+ }
+
+ @Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return EventMeshAdminService.internal_static_Payload_descriptor;
+ }
+
+ @Override
+ public Payload getDefaultInstanceForType() {
+ return Payload.getDefaultInstance();
+ }
+
+ @Override
+ public Payload build() {
+ Payload result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @Override
+ public Payload buildPartial() {
+ Payload result = new Payload(this);
+ if (metadataBuilder_ == null) {
+ result.metadata_ = metadata_;
+ } else {
+ result.metadata_ = metadataBuilder_.build();
+ }
+ if (bodyBuilder_ == null) {
+ result.body_ = body_;
+ } else {
+ result.body_ = bodyBuilder_.build();
+ }
+ onBuilt();
+ return result;
+ }
+
+ @Override
+ public Builder clone() {
+ return super.clone();
+ }
+
+ @Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ Object value) {
+ return super.setField(field, value);
+ }
+
+ @Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+
+ @Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+
+ @Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+
+ @Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ Object value) {
+ return super.addRepeatedField(field, value);
+ }
+
+ @Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof Payload) {
+ return mergeFrom((Payload) other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(Payload other) {
+ if (other == Payload.getDefaultInstance()) {
+ return this;
+ }
+ if (other.hasMetadata()) {
+ mergeMetadata(other.getMetadata());
+ }
+ if (other.hasBody()) {
+ mergeBody(other.getBody());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ Payload parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (Payload) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private Metadata metadata_;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ Metadata, Metadata.Builder, MetadataOrBuilder> metadataBuilder_;
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ *
+ * @return Whether the metadata field is set.
+ */
+ public boolean hasMetadata() {
+ return metadataBuilder_ != null || metadata_ != null;
+ }
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ *
+ * @return The metadata.
+ */
+ public Metadata getMetadata() {
+ if (metadataBuilder_ == null) {
+ return metadata_ == null ? Metadata.getDefaultInstance() : metadata_;
+ } else {
+ return metadataBuilder_.getMessage();
+ }
+ }
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ */
+ public Builder setMetadata(Metadata value) {
+ if (metadataBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ metadata_ = value;
+ onChanged();
+ } else {
+ metadataBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ */
+ public Builder setMetadata(
+ Metadata.Builder builderForValue) {
+ if (metadataBuilder_ == null) {
+ metadata_ = builderForValue.build();
+ onChanged();
+ } else {
+ metadataBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ */
+ public Builder mergeMetadata(Metadata value) {
+ if (metadataBuilder_ == null) {
+ if (metadata_ != null) {
+ metadata_ =
+ Metadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
+ } else {
+ metadata_ = value;
+ }
+ onChanged();
+ } else {
+ metadataBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ */
+ public Builder clearMetadata() {
+ if (metadataBuilder_ == null) {
+ metadata_ = null;
+ onChanged();
+ } else {
+ metadata_ = null;
+ metadataBuilder_ = null;
+ }
+
+ return this;
+ }
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ */
+ public Metadata.Builder getMetadataBuilder() {
+
+ onChanged();
+ return getMetadataFieldBuilder().getBuilder();
+ }
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ */
+ public MetadataOrBuilder getMetadataOrBuilder() {
+ if (metadataBuilder_ != null) {
+ return metadataBuilder_.getMessageOrBuilder();
+ } else {
+ return metadata_ == null ?
+ Metadata.getDefaultInstance() : metadata_;
+ }
+ }
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ Metadata, Metadata.Builder, MetadataOrBuilder>
+ getMetadataFieldBuilder() {
+ if (metadataBuilder_ == null) {
+ metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ Metadata, Metadata.Builder, MetadataOrBuilder>(
+ getMetadata(),
+ getParentForChildren(),
+ isClean());
+ metadata_ = null;
+ }
+ return metadataBuilder_;
+ }
+
+ private com.google.protobuf.Any body_;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> bodyBuilder_;
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ *
+ * @return Whether the body field is set.
+ */
+ public boolean hasBody() {
+ return bodyBuilder_ != null || body_ != null;
+ }
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ *
+ * @return The body.
+ */
+ public com.google.protobuf.Any getBody() {
+ if (bodyBuilder_ == null) {
+ return body_ == null ? com.google.protobuf.Any.getDefaultInstance() : body_;
+ } else {
+ return bodyBuilder_.getMessage();
+ }
+ }
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ */
+ public Builder setBody(com.google.protobuf.Any value) {
+ if (bodyBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ body_ = value;
+ onChanged();
+ } else {
+ bodyBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ */
+ public Builder setBody(
+ com.google.protobuf.Any.Builder builderForValue) {
+ if (bodyBuilder_ == null) {
+ body_ = builderForValue.build();
+ onChanged();
+ } else {
+ bodyBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ */
+ public Builder mergeBody(com.google.protobuf.Any value) {
+ if (bodyBuilder_ == null) {
+ if (body_ != null) {
+ body_ =
+ com.google.protobuf.Any.newBuilder(body_).mergeFrom(value).buildPartial();
+ } else {
+ body_ = value;
+ }
+ onChanged();
+ } else {
+ bodyBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ */
+ public Builder clearBody() {
+ if (bodyBuilder_ == null) {
+ body_ = null;
+ onChanged();
+ } else {
+ body_ = null;
+ bodyBuilder_ = null;
+ }
+
+ return this;
+ }
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ */
+ public com.google.protobuf.Any.Builder getBodyBuilder() {
+
+ onChanged();
+ return getBodyFieldBuilder().getBuilder();
+ }
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ */
+ public com.google.protobuf.AnyOrBuilder getBodyOrBuilder() {
+ if (bodyBuilder_ != null) {
+ return bodyBuilder_.getMessageOrBuilder();
+ } else {
+ return body_ == null ?
+ com.google.protobuf.Any.getDefaultInstance() : body_;
+ }
+ }
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder>
+ getBodyFieldBuilder() {
+ if (bodyBuilder_ == null) {
+ bodyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder>(
+ getBody(),
+ getParentForChildren(),
+ isClean());
+ body_ = null;
+ }
+ return bodyBuilder_;
+ }
+
+ @Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+ // @@protoc_insertion_point(builder_scope:Payload)
+ }
+
+ // @@protoc_insertion_point(class_scope:Payload)
+ private static final Payload DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new Payload();
+ }
+
+ public static Payload getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<Payload>
+ PARSER = new com.google.protobuf.AbstractParser<Payload>() {
+ @Override
+ public Payload parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Payload(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<Payload> parser() {
+ return PARSER;
+ }
+
+ @Override
+ public com.google.protobuf.Parser<Payload> getParserForType() {
+ return PARSER;
+ }
+
+ @Override
+ public Payload getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/PayloadOrBuilder.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/PayloadOrBuilder.java
new file mode 100644
index 000000000..a50a340e1
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/adminserver/PayloadOrBuilder.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.protocol.grpc.adminserver;// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: event_mesh_admin_service.proto
+
+public interface PayloadOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:Payload)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ *
+ * @return Whether the metadata field is set.
+ */
+ boolean hasMetadata();
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ *
+ * @return The metadata.
+ */
+ Metadata getMetadata();
+
+ /**
+ * <code>.Metadata metadata = 2;</code>
+ */
+ MetadataOrBuilder getMetadataOrBuilder();
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ *
+ * @return Whether the body field is set.
+ */
+ boolean hasBody();
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ *
+ * @return The body.
+ */
+ com.google.protobuf.Any getBody();
+
+ /**
+ * <code>.google.protobuf.Any body = 3;</code>
+ */
+ com.google.protobuf.AnyOrBuilder getBodyOrBuilder();
+}
diff --git a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/proto/event_mesh_admin_service.proto
similarity index 69%
copy from eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/proto/event_mesh_admin_service.proto
index 2211fd1ad..fa7095840 100644
--- a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/grpc/proto/event_mesh_admin_service.proto
@@ -15,22 +15,25 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.dingtalk.sink.config;
+syntax="proto3";
-import lombok.Data;
+import "google/protobuf/any.proto";
-@Data
-public class SinkConnectorConfig {
+option java_multiple_files=true;
- private String connectorName;
-
- private String appKey;
-
- private String appSecret;
+message Metadata {
+ string type = 3;
+ map<string, string> headers = 7;
+}
- private String openConversationId;
- private String robotCode;
+message Payload {
+ Metadata metadata = 2;
+ bytes body = 3;
+}
- private String coolAppCode;
+service AdminService {
+ rpc invokeBiStream(stream Payload) returns (stream Payload){}
+ rpc invoke(Payload) returns (Payload){}
}
+
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/Job.java
similarity index 83%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/Job.java
index 330aa9393..b65517bec 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/Job.java
@@ -15,7 +15,11 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.config;
+package org.apache.eventmesh.common.remote;
-public abstract class Config {
+public class Job {
+ private long id;
+ private long taskID;
+ private JobType type;
+ private JobState state;
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnector.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/JobState.java
similarity index 68%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnector.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/JobState.java
index 70b62c120..7b0ae5074 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/connector/SinkConnector.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/JobState.java
@@ -15,16 +15,17 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.connector;
+package org.apache.eventmesh.common.remote;
-import org.apache.eventmesh.openconnect.api.config.SinkConfig;
-import org.apache.eventmesh.openconnect.api.sink.Sink;
+public enum JobState {
+ INIT, STARTED, RUNNING, PAUSE, COMPLETE, DELETE, FAIL;
+ private static final JobState[] STATES = JobState.values();
-public abstract class SinkConnector implements Sink {
+ public static JobState fromIndex(Integer index) {
+ if (index == null || index < 0 || index >= STATES.length) {
+ return null;
+ }
- private final SinkConfig sinkConfig;
-
- protected SinkConnector(SinkConfig sinkConfig) {
- this.sinkConfig = sinkConfig;
+ return STATES[index];
}
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/JobType.java
similarity index 88%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/JobType.java
index 330aa9393..3c8272af4 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/JobType.java
@@ -15,7 +15,10 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.config;
+package org.apache.eventmesh.common.remote;
-public abstract class Config {
+public enum JobType {
+ FULL,
+ INCREASE,
+ STRUCT_SYNC
}
diff --git a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/Task.java
similarity index 68%
copy from eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/Task.java
index 2211fd1ad..6f97c4207 100644
--- a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/Task.java
@@ -15,22 +15,20 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.dingtalk.sink.config;
+package org.apache.eventmesh.common.remote;
+
+// task : job = 1 : m
+public class Task {
+ private long id;
+ private String name;
+ private String desc;
+ private String uid;
+ private String sourceUser;
+ private String sourcePasswd;
+ private String targetUser;
+ private String targetPasswd;
+ private int sourceType;
+ private int targetType;
-import lombok.Data;
-@Data
-public class SinkConnectorConfig {
-
- private String connectorName;
-
- private String appKey;
-
- private String appSecret;
-
- private String openConversationId;
-
- private String robotCode;
-
- private String coolAppCode;
}
diff --git a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/exception/ErrorCode.java
similarity index 71%
copy from eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/exception/ErrorCode.java
index 2211fd1ad..f24971acc 100644
--- a/eventmesh-connectors/eventmesh-connector-dingtalk/src/main/java/org/apache/eventmesh/connector/dingtalk/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/exception/ErrorCode.java
@@ -15,22 +15,14 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.dingtalk.sink.config;
+package org.apache.eventmesh.common.remote.exception;
-import lombok.Data;
+public class ErrorCode {
-@Data
-public class SinkConnectorConfig {
+ public static final int SUCCESS = 0;
+ public static final int BAD_REQUEST = 4001;
+ public static final int BAD_DB_DATA = 4002;
- private String connectorName;
-
- private String appKey;
-
- private String appSecret;
-
- private String openConversationId;
-
- private String robotCode;
-
- private String coolAppCode;
+ public static final int INTERNAL_ERR = 5000;
+ public static final int STARTUP_CONFIG_MISS = 5001;
}
diff --git a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/config/MongodbServerConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/exception/PayloadFormatException.java
similarity index 78%
copy from eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/config/MongodbServerConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/exception/PayloadFormatException.java
index 95c651b35..affa6b8bb 100644
--- a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/config/MongodbServerConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/exception/PayloadFormatException.java
@@ -15,14 +15,11 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.mongodb.config;
+package org.apache.eventmesh.common.remote.exception;
-import lombok.Data;
+public class PayloadFormatException extends RemoteRuntimeException {
-@Data
-public class MongodbServerConfig {
-
- private boolean sourceEnable;
-
- private boolean sinkEnable;
+ public PayloadFormatException(int code, String desc) {
+ super(code, desc);
+ }
}
diff --git a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/exception/RemoteRuntimeException.java
similarity index 72%
copy from eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/exception/RemoteRuntimeException.java
index 6376a7fb4..708a558d3 100644
--- a/eventmesh-connectors/eventmesh-connector-file/src/main/java/org/apache/eventmesh/connector/file/source/config/SourceConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/exception/RemoteRuntimeException.java
@@ -15,14 +15,15 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.file.source.config;
+package org.apache.eventmesh.common.remote.exception;
-import lombok.Data;
+public class RemoteRuntimeException extends RuntimeException {
-@Data
-public class SourceConnectorConfig {
+ protected final int code;
+ protected final String message;
- private String connectorName;
-
- private String filePath;
+ public RemoteRuntimeException(int code, String message) {
+ this.code = code;
+ this.message = message;
+ }
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/DataSourceClassify.java
similarity index 85%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/DataSourceClassify.java
index 330aa9393..36f4064e7 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/DataSourceClassify.java
@@ -15,7 +15,11 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.config;
+package org.apache.eventmesh.common.remote.job;
-public abstract class Config {
+public enum DataSourceClassify {
+ // relationship db
+ RDB,
+ MQ,
+ CACHE;
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/DataSourceDriverType.java
similarity index 87%
copy from eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/DataSourceDriverType.java
index 330aa9393..52bc81119 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/config/Config.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/DataSourceDriverType.java
@@ -15,7 +15,10 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.api.config;
+package org.apache.eventmesh.common.remote.job;
-public abstract class Config {
+public enum DataSourceDriverType {
+ MYSQL,
+ REDIS,
+ ROCKETMQ;
}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/DataSourceType.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/DataSourceType.java
new file mode 100644
index 000000000..e41865d24
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/DataSourceType.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.remote.job;
+
+public enum DataSourceType {
+ MYSQL("MySQL", DataSourceDriverType.MYSQL, DataSourceClassify.RDB),
+ REDIS("Redis", DataSourceDriverType.REDIS, DataSourceClassify.CACHE),
+ ROCKETMQ("RocketMQ", DataSourceDriverType.ROCKETMQ, DataSourceClassify.MQ);
+ private final String name;
+ private final DataSourceDriverType driverType;
+ private final DataSourceClassify classify;
+
+ DataSourceType(String name, DataSourceDriverType driverType, DataSourceClassify classify) {
+ this.name = name;
+ this.driverType = driverType;
+ this.classify = classify;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public DataSourceDriverType getDriverType() {
+ return driverType;
+ }
+
+ public DataSourceClassify getClassify() {
+ return classify;
+ }
+
+ private static final DataSourceType[] TYPES = DataSourceType.values();
+
+ public static DataSourceType getDataSourceType(Integer index) {
+ if (index == null || index < 0 || index >= TYPES.length) {
+ return null;
+ }
+ return TYPES[index];
+ }
+}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/JobTransportType.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/JobTransportType.java
new file mode 100644
index 000000000..5f06cf1f2
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/JobTransportType.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.remote.job;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum JobTransportType {
+ MYSQL_MYSQL(DataSourceType.MYSQL, DataSourceType.MYSQL),
+ REDIS_REDIS(DataSourceType.REDIS, DataSourceType.REDIS),
+ ROCKETMQ_ROCKETMQ(DataSourceType.ROCKETMQ, DataSourceType.ROCKETMQ);
+ private static final Map<String, JobTransportType> INDEX_TYPES = new HashMap<>();
+ private static final JobTransportType[] TYPES = JobTransportType.values();
+ private static final String SEPARATOR = "@";
+
+ static {
+ for (JobTransportType type : TYPES) {
+ INDEX_TYPES.put(generateKey(type.src, type.dst), type);
+ }
+ }
+
+ DataSourceType src;
+
+ DataSourceType dst;
+
+ JobTransportType(DataSourceType src, DataSourceType dst) {
+ this.src = src;
+ this.dst = dst;
+ }
+
+ private static String generateKey(DataSourceType src, DataSourceType dst) {
+ return src.ordinal() + SEPARATOR + dst.ordinal();
+ }
+
+ public DataSourceType getSrc() {
+ return src;
+ }
+
+ public DataSourceType getDst() {
+ return dst;
+ }
+
+ public static JobTransportType getJobTransportType(DataSourceType src, DataSourceType dst) {
+ return INDEX_TYPES.get(generateKey(src, dst));
+ }
+
+ public static JobTransportType getJobTransportType(Integer index) {
+ if (index == null || index < 0 || index >= TYPES.length) {
+ return null;
+ }
+ return TYPES[index];
+ }
+}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/SyncConsistency.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/SyncConsistency.java
new file mode 100644
index 000000000..a5aec2aa3
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/SyncConsistency.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.remote.job;
+
+public enum SyncConsistency {
+ /**
+ * based with media
+ */
+ MEDIA("M"),
+ /**
+ * based with store
+ */
+ STORE("S"),
+ /**
+ * Based on the current change value, eventual consistency
+ */
+ BASE("B");
+
+ private String value;
+
+ SyncConsistency(String value) {
+ this.value = value;
+ }
+
+ public static SyncConsistency valuesOf(String value) {
+ SyncConsistency[] modes = values();
+ for (SyncConsistency mode : modes) {
+ if (mode.value.equalsIgnoreCase(value)) {
+ return mode;
+ }
+ }
+ return null;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public boolean isMedia() {
+ return this.equals(SyncConsistency.MEDIA);
+ }
+
+ public boolean isStore() {
+ return this.equals(SyncConsistency.STORE);
+ }
+
+ public boolean isBase() {
+ return this.equals(SyncConsistency.BASE);
+ }
+}
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/SinkConnectorConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/SyncMode.java
similarity index 52%
copy from eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/SinkConnectorConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/SyncMode.java
index e971b7b00..0f2f9bdfc 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/sink/config/SinkConnectorConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/job/SyncMode.java
@@ -15,29 +15,47 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.jdbc.sink.config;
-
-import org.apache.eventmesh.connector.jdbc.config.JdbcConfig;
-
-import lombok.Data;
-
-/**
- * Configuration parameters for a sink connector.
- */
-@Data
-public class SinkConnectorConfig {
+package org.apache.eventmesh.common.remote.job;
+public enum SyncMode {
/**
- * The name of the sink connector.
+ * row
*/
- private String connectorName;
-
+ ROW("R"),
/**
- * JDBC configuration for connecting to a database.
+ * field
*/
- private JdbcConfig jdbcConfig;
+ FIELD("F");
+
+ private String value;
+
+ SyncMode(String value) {
+ this.value = value;
+ }
+
+ public static SyncMode valuesOf(String value) {
+ SyncMode[] modes = values();
+ for (SyncMode mode : modes) {
+ if (mode.value.equalsIgnoreCase(value)) {
+ return mode;
+ }
+ }
+ return null;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public boolean isRow() {
+ return this.equals(SyncMode.ROW);
+ }
- public String getDatabaseType() {
- return "mysql";
+ public boolean isField() {
+ return this.equals(SyncMode.FIELD);
}
}
diff --git a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/config/MongodbServerConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/RecordOffset.java
similarity index 80%
copy from eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/config/MongodbServerConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/RecordOffset.java
index 95c651b35..f78585ca1 100644
--- a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/config/MongodbServerConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/RecordOffset.java
@@ -15,14 +15,13 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.mongodb.config;
+package org.apache.eventmesh.common.remote.offset;
-import lombok.Data;
+public abstract class RecordOffset {
-@Data
-public class MongodbServerConfig {
+ public abstract Class<? extends RecordOffset> getRecordOffsetClass();
- private boolean sourceEnable;
+ public RecordOffset() {
- private boolean sinkEnable;
+ }
}
diff --git a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/config/MongodbServerConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/RecordPartition.java
similarity index 79%
copy from eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/config/MongodbServerConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/RecordPartition.java
index 95c651b35..00e4c30e4 100644
--- a/eventmesh-connectors/eventmesh-connector-mongodb/src/main/java/org/apache/eventmesh/connector/mongodb/config/MongodbServerConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/RecordPartition.java
@@ -15,14 +15,13 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.mongodb.config;
+package org.apache.eventmesh.common.remote.offset;
-import lombok.Data;
+public abstract class RecordPartition {
-@Data
-public class MongodbServerConfig {
+ public abstract Class<? extends RecordPartition> getRecordPartitionClass();
- private boolean sourceEnable;
+ public RecordPartition() {
- private boolean sinkEnable;
+ }
}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/RecordPosition.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/RecordPosition.java
new file mode 100644
index 000000000..c3c2d5dd7
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/RecordPosition.java
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.eventmesh.common.remote.offset;
+
+import org.apache.eventmesh.common.remote.offset.S3.S3RecordOffset;
+import org.apache.eventmesh.common.remote.offset.S3.S3RecordPartition;
+import org.apache.eventmesh.common.remote.offset.canal.CanalRecordOffset;
+import org.apache.eventmesh.common.remote.offset.canal.CanalRecordPartition;
+import org.apache.eventmesh.common.remote.offset.file.FileRecordOffset;
+import org.apache.eventmesh.common.remote.offset.file.FileRecordPartition;
+import org.apache.eventmesh.common.remote.offset.kafka.KafkaRecordOffset;
+import org.apache.eventmesh.common.remote.offset.kafka.KafkaRecordPartition;
+import org.apache.eventmesh.common.remote.offset.pulsar.PulsarRecordOffset;
+import org.apache.eventmesh.common.remote.offset.pulsar.PulsarRecordPartition;
+import org.apache.eventmesh.common.remote.offset.rocketmq.RocketMQRecordOffset;
+import org.apache.eventmesh.common.remote.offset.rocketmq.RocketMQRecordPartition;
+
+import java.util.Objects;
+
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+
+public class RecordPosition {
+
+ @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
+ @JsonSubTypes({
+ @JsonSubTypes.Type(value = CanalRecordPartition.class, name = "CanalRecordPartition"),
+ @JsonSubTypes.Type(value = FileRecordPartition.class, name = "FileRecordPartition"),
+ @JsonSubTypes.Type(value = S3RecordPartition.class, name = "S3RecordPartition"),
+ @JsonSubTypes.Type(value = KafkaRecordPartition.class, name = "KafkaRecordPartition"),
+ @JsonSubTypes.Type(value = PulsarRecordPartition.class, name = "PulsarRecordPartition"),
+ @JsonSubTypes.Type(value = RocketMQRecordPartition.class, name = "RocketMQRecordPartition"),
+ })
+ private RecordPartition recordPartition;
+
+ private Class<? extends RecordPartition> recordPartitionClazz;
+
+ @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
+ @JsonSubTypes({
+ @JsonSubTypes.Type(value = CanalRecordOffset.class, name = "CanalRecordOffset"),
+ @JsonSubTypes.Type(value = FileRecordOffset.class, name = "FileRecordOffset"),
+ @JsonSubTypes.Type(value = S3RecordOffset.class, name = "S3RecordOffset"),
+ @JsonSubTypes.Type(value = KafkaRecordOffset.class, name = "KafkaRecordOffset"),
+ @JsonSubTypes.Type(value = PulsarRecordOffset.class, name = "PulsarRecordOffset"),
+ @JsonSubTypes.Type(value = RocketMQRecordOffset.class, name = "RocketMQRecordOffset"),
+ })
+ private RecordOffset recordOffset;
+
+ private Class<? extends RecordOffset> recordOffsetClazz;
+
+ public RecordPosition() {
+
+ }
+
+ public RecordPosition(
+ RecordPartition recordPartition, RecordOffset recordOffset) {
+ this.recordPartition = recordPartition;
+ this.recordOffset = recordOffset;
+ this.recordPartitionClazz = recordPartition.getRecordPartitionClass();
+ this.recordOffsetClazz = recordOffset.getRecordOffsetClass();
+ }
+
+ public RecordPartition getRecordPartition() {
+ return recordPartition;
+ }
+
+ public void setRecordPartition(RecordPartition recordPartition) {
+ this.recordPartition = recordPartition;
+ if (recordPartition == null) {
+ this.recordPartitionClazz = null;
+ return;
+ }
+ this.recordPartitionClazz = recordPartition.getRecordPartitionClass();
+ }
+
+ public RecordOffset getRecordOffset() {
+ return recordOffset;
+ }
+
+ public void setRecordOffset(RecordOffset recordOffset) {
+ this.recordOffset = recordOffset;
+ if (recordOffset == null) {
+ this.recordOffsetClazz = null;
+ return;
+ }
+ this.recordOffsetClazz = recordOffset.getRecordOffsetClass();
+ }
+
+ public Class<? extends RecordPartition> getRecordPartitionClazz() {
+ return recordPartitionClazz;
+ }
+
+ public Class<? extends RecordOffset> getRecordOffsetClazz() {
+ return recordOffsetClazz;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof RecordPosition)) {
+ return false;
+ }
+ RecordPosition position = (RecordPosition) o;
+ return recordPartition.equals(position.recordPartition) && recordOffset.equals(position.recordOffset);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(recordPartition, recordOffset);
+ }
+}
diff --git a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/S3/S3RecordOffset.java
similarity index 70%
copy from eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/S3/S3RecordOffset.java
index 959686691..9f38e4b2c 100644
--- a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/S3/S3RecordOffset.java
@@ -15,21 +15,27 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.chatgpt.source.config;
+package org.apache.eventmesh.common.remote.offset.S3;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.remote.offset.RecordOffset;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.ToString;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class ChatGPTSourceConfig extends SourceConfig {
+@Data
+@ToString
+public class S3RecordOffset extends RecordOffset {
- public ChatGPTSourceConnectorConfig connectorConfig;
+ private Long offset;
- public OpenaiProxyConfig openaiProxyConfig;
+ @Override
+ public Class<? extends RecordOffset> getRecordOffsetClass() {
+ return S3RecordOffset.class;
+ }
- public OpenaiConfig openaiConfig;
+ public S3RecordOffset() {
+ }
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordPartition.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/S3/S3RecordPartition.java
similarity index 58%
rename from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordPartition.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/S3/S3RecordPartition.java
index 959a6b9b3..3e42a4d09 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordPartition.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/S3/S3RecordPartition.java
@@ -15,32 +15,33 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.data;
+package org.apache.eventmesh.common.remote.offset.S3;
+
+import org.apache.eventmesh.common.remote.offset.RecordPartition;
-import java.util.HashMap;
-import java.util.Map;
import java.util.Objects;
-public class RecordPartition {
+import lombok.Data;
+import lombok.ToString;
- /**
- * if pull message from mq key=topic,
- * value=topicName key=brokerName,
- * value=brokerName key=queueId,
- * value=queueId
- */
- private Map<String, ?> partition = new HashMap<>();
- public RecordPartition() {
+@Data
+@ToString
+public class S3RecordPartition extends RecordPartition {
- }
+ private String region;
+
+ private String bucket;
- public RecordPartition(Map<String, ?> partition) {
- this.partition = partition;
+ private String fileName;
+
+ @Override
+ public Class<? extends RecordPartition> getRecordPartitionClass() {
+ return S3RecordPartition.class;
}
- public Map<String, ?> getPartition() {
- return partition;
+ public S3RecordPartition() {
+ super();
}
@Override
@@ -48,15 +49,15 @@ public class RecordPartition {
if (this == o) {
return true;
}
- if (!(o instanceof RecordPartition)) {
+ if (o == null || getClass() != o.getClass()) {
return false;
}
- RecordPartition partition1 = (RecordPartition) o;
- return Objects.equals(partition, partition1.partition);
+ S3RecordPartition that = (S3RecordPartition) o;
+ return Objects.equals(fileName, that.fileName);
}
@Override
public int hashCode() {
- return Objects.hash(partition);
+ return Objects.hash(fileName);
}
}
diff --git a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/canal/CanalRecordOffset.java
similarity index 69%
copy from eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/canal/CanalRecordOffset.java
index 959686691..90c94c99b 100644
--- a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/canal/CanalRecordOffset.java
@@ -15,21 +15,27 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.chatgpt.source.config;
+package org.apache.eventmesh.common.remote.offset.canal;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.remote.offset.RecordOffset;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.ToString;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class ChatGPTSourceConfig extends SourceConfig {
+@Data
+@ToString
+public class CanalRecordOffset extends RecordOffset {
- public ChatGPTSourceConnectorConfig connectorConfig;
+ private Long offset;
- public OpenaiProxyConfig openaiProxyConfig;
+ @Override
+ public Class<? extends RecordOffset> getRecordOffsetClass() {
+ return CanalRecordOffset.class;
+ }
- public OpenaiConfig openaiConfig;
+ public CanalRecordOffset() {
+ }
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordPosition.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/canal/CanalRecordPartition.java
similarity index 57%
rename from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordPosition.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/canal/CanalRecordPartition.java
index 0b836ab60..72d404bab 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordPosition.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/canal/CanalRecordPartition.java
@@ -15,28 +15,31 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.data;
+package org.apache.eventmesh.common.remote.offset.canal;
+
+import org.apache.eventmesh.common.remote.offset.RecordPartition;
import java.util.Objects;
-public class RecordPosition {
+import lombok.Data;
+import lombok.ToString;
- private final RecordPartition recordPartition;
- private final RecordOffset recordOffset;
+@Data
+@ToString
+public class CanalRecordPartition extends RecordPartition {
- public RecordPosition(
- RecordPartition recordPartition, RecordOffset recordOffset) {
- this.recordPartition = recordPartition;
- this.recordOffset = recordOffset;
- }
+ private String journalName;
- public RecordPartition getPartition() {
- return recordPartition;
+ private Long timeStamp;
+
+ @Override
+ public Class<? extends RecordPartition> getRecordPartitionClass() {
+ return CanalRecordPartition.class;
}
- public RecordOffset getOffset() {
- return recordOffset;
+ public CanalRecordPartition() {
+ super();
}
@Override
@@ -44,15 +47,15 @@ public class RecordPosition {
if (this == o) {
return true;
}
- if (!(o instanceof RecordPosition)) {
+ if (o == null || getClass() != o.getClass()) {
return false;
}
- RecordPosition position = (RecordPosition) o;
- return recordPartition.equals(position.recordPartition) && recordOffset.equals(position.recordOffset);
+ CanalRecordPartition that = (CanalRecordPartition) o;
+ return Objects.equals(journalName, that.journalName) && Objects.equals(timeStamp, that.timeStamp);
}
@Override
public int hashCode() {
- return Objects.hash(recordPartition, recordOffset);
+ return Objects.hash(journalName, timeStamp);
}
}
diff --git a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/file/FileRecordOffset.java
similarity index 69%
copy from eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/file/FileRecordOffset.java
index 959686691..cda293cb8 100644
--- a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/file/FileRecordOffset.java
@@ -15,21 +15,27 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.chatgpt.source.config;
+package org.apache.eventmesh.common.remote.offset.file;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.remote.offset.RecordOffset;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.ToString;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class ChatGPTSourceConfig extends SourceConfig {
+@Data
+@ToString
+public class FileRecordOffset extends RecordOffset {
- public ChatGPTSourceConnectorConfig connectorConfig;
+ private Long offset;
- public OpenaiProxyConfig openaiProxyConfig;
+ @Override
+ public Class<? extends RecordOffset> getRecordOffsetClass() {
+ return FileRecordOffset.class;
+ }
- public OpenaiConfig openaiConfig;
+ public FileRecordOffset() {
+ }
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordOffset.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/file/FileRecordPartition.java
similarity index 61%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordOffset.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/file/FileRecordPartition.java
index fee70de27..1a6dddad4 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordOffset.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/file/FileRecordPartition.java
@@ -15,30 +15,29 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.data;
+package org.apache.eventmesh.common.remote.offset.file;
+
+import org.apache.eventmesh.common.remote.offset.RecordPartition;
-import java.util.HashMap;
-import java.util.Map;
import java.util.Objects;
-public class RecordOffset {
+import lombok.Data;
+import lombok.ToString;
- /**
- * if pull message from mq key=queueOffset,
- * value=queueOffset value
- */
- private Map<String, ?> offset = new HashMap<>();
- public RecordOffset() {
+@Data
+@ToString
+public class FileRecordPartition extends RecordPartition {
- }
+ private String fileName;
- public RecordOffset(Map<String, ?> offset) {
- this.offset = offset;
+ @Override
+ public Class<? extends RecordPartition> getRecordPartitionClass() {
+ return FileRecordPartition.class;
}
- public Map<String, ?> getOffset() {
- return offset;
+ public FileRecordPartition() {
+ super();
}
@Override
@@ -46,16 +45,15 @@ public class RecordOffset {
if (this == o) {
return true;
}
- if (!(o instanceof RecordOffset)) {
+ if (o == null || getClass() != o.getClass()) {
return false;
}
- RecordOffset offset1 = (RecordOffset) o;
- return Objects.equals(offset, offset1.offset);
+ FileRecordPartition that = (FileRecordPartition) o;
+ return Objects.equals(fileName, that.fileName);
}
@Override
public int hashCode() {
- return Objects.hash(offset);
+ return Objects.hash(fileName);
}
-
}
diff --git a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/http/HttpRecordOffset.java
similarity index 67%
copy from eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/http/HttpRecordOffset.java
index 959686691..f5084c755 100644
--- a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/http/HttpRecordOffset.java
@@ -15,21 +15,29 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.chatgpt.source.config;
+package org.apache.eventmesh.common.remote.offset.http;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.remote.offset.RecordOffset;
+
+import java.util.Map;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.ToString;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class ChatGPTSourceConfig extends SourceConfig {
+@Data
+@ToString
+public class HttpRecordOffset extends RecordOffset {
- public ChatGPTSourceConnectorConfig connectorConfig;
+ private Map<String, ?> offsetMap;
- public OpenaiProxyConfig openaiProxyConfig;
+ @Override
+ public Class<? extends RecordOffset> getRecordOffsetClass() {
+ return HttpRecordOffset.class;
+ }
- public OpenaiConfig openaiConfig;
+ public HttpRecordOffset() {
+ }
}
diff --git a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/http/HttpRecordPartition.java
similarity index 69%
copy from eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/http/HttpRecordPartition.java
index 959686691..453b3b501 100644
--- a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/http/HttpRecordPartition.java
@@ -15,21 +15,26 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.chatgpt.source.config;
+package org.apache.eventmesh.common.remote.offset.http;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.remote.offset.RecordPartition;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.ToString;
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class ChatGPTSourceConfig extends SourceConfig {
-
- public ChatGPTSourceConnectorConfig connectorConfig;
- public OpenaiProxyConfig openaiProxyConfig;
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ToString
+public class HttpRecordPartition extends RecordPartition {
- public OpenaiConfig openaiConfig;
+ @Override
+ public Class<? extends RecordPartition> getRecordPartitionClass() {
+ return HttpRecordPartition.class;
+ }
+ public HttpRecordPartition() {
+ super();
+ }
}
diff --git a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/jdbc/JdbcRecordOffset.java
similarity index 69%
copy from eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/jdbc/JdbcRecordOffset.java
index 959686691..a97a90e65 100644
--- a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/jdbc/JdbcRecordOffset.java
@@ -15,21 +15,27 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.chatgpt.source.config;
+package org.apache.eventmesh.common.remote.offset.jdbc;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.remote.offset.RecordOffset;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.ToString;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class ChatGPTSourceConfig extends SourceConfig {
+@Data
+@ToString
+public class JdbcRecordOffset extends RecordOffset {
- public ChatGPTSourceConnectorConfig connectorConfig;
+ private Long offset;
- public OpenaiProxyConfig openaiProxyConfig;
+ @Override
+ public Class<? extends RecordOffset> getRecordOffsetClass() {
+ return JdbcRecordOffset.class;
+ }
- public OpenaiConfig openaiConfig;
+ public JdbcRecordOffset() {
+ }
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordOffset.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/jdbc/JdbcRecordPartition.java
similarity index 61%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordOffset.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/jdbc/JdbcRecordPartition.java
index fee70de27..1eb6937a8 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordOffset.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/jdbc/JdbcRecordPartition.java
@@ -15,30 +15,29 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.data;
+package org.apache.eventmesh.common.remote.offset.jdbc;
+
+import org.apache.eventmesh.common.remote.offset.RecordPartition;
-import java.util.HashMap;
-import java.util.Map;
import java.util.Objects;
-public class RecordOffset {
+import lombok.Data;
+import lombok.ToString;
- /**
- * if pull message from mq key=queueOffset,
- * value=queueOffset value
- */
- private Map<String, ?> offset = new HashMap<>();
- public RecordOffset() {
+@Data
+@ToString
+public class JdbcRecordPartition extends RecordPartition {
- }
+ private String fileName;
- public RecordOffset(Map<String, ?> offset) {
- this.offset = offset;
+ @Override
+ public Class<? extends RecordPartition> getRecordPartitionClass() {
+ return JdbcRecordPartition.class;
}
- public Map<String, ?> getOffset() {
- return offset;
+ public JdbcRecordPartition() {
+ super();
}
@Override
@@ -46,16 +45,15 @@ public class RecordOffset {
if (this == o) {
return true;
}
- if (!(o instanceof RecordOffset)) {
+ if (o == null || getClass() != o.getClass()) {
return false;
}
- RecordOffset offset1 = (RecordOffset) o;
- return Objects.equals(offset, offset1.offset);
+ JdbcRecordPartition that = (JdbcRecordPartition) o;
+ return Objects.equals(fileName, that.fileName);
}
@Override
public int hashCode() {
- return Objects.hash(offset);
+ return Objects.hash(fileName);
}
-
}
diff --git a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/kafka/KafkaRecordOffset.java
similarity index 69%
copy from eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/kafka/KafkaRecordOffset.java
index 959686691..134ef06fe 100644
--- a/eventmesh-connectors/eventmesh-connector-chatgpt/src/main/java/org/apache/eventmesh/connector/chatgpt/source/config/ChatGPTSourceConfig.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/kafka/KafkaRecordOffset.java
@@ -15,21 +15,27 @@
* limitations under the License.
*/
-package org.apache.eventmesh.connector.chatgpt.source.config;
+package org.apache.eventmesh.common.remote.offset.kafka;
-import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.common.remote.offset.RecordOffset;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.ToString;
-@Data
@EqualsAndHashCode(callSuper = true)
-public class ChatGPTSourceConfig extends SourceConfig {
+@Data
+@ToString
+public class KafkaRecordOffset extends RecordOffset {
- public ChatGPTSourceConnectorConfig connectorConfig;
+ private Long offset;
- public OpenaiProxyConfig openaiProxyConfig;
+ @Override
+ public Class<? extends RecordOffset> getRecordOffsetClass() {
+ return KafkaRecordOffset.class;
+ }
- public OpenaiConfig openaiConfig;
+ public KafkaRecordOffset() {
+ }
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordOffset.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/kafka/KafkaRecordPartition.java
similarity index 58%
copy from eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordOffset.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/kafka/KafkaRecordPartition.java
index fee70de27..77dec8226 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/src/main/java/org/apache/eventmesh/openconnect/offsetmgmt/api/data/RecordOffset.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/remote/offset/kafka/KafkaRecordPartition.java
@@ -15,30 +15,31 @@
* limitations under the License.
*/
-package org.apache.eventmesh.openconnect.offsetmgmt.api.data;
+package org.apache.eventmesh.common.remote.offset.kafka;
+
+import org.apache.eventmesh.common.remote.offset.RecordPartition;
-import java.util.HashMap;
-import java.util.Map;
import java.util.Objects;
-public class RecordOffset {
+import lombok.Data;
+import lombok.ToString;
- /**
- * if pull message from mq key=queueOffset,
- * value=queueOffset value
- */
... 12559 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@eventmesh.apache.org
For additional commands, e-mail: commits-help@eventmesh.apache.org