diff --git a/src/BaselineOfJRPC/BaselineOfJRPC.class.st b/src/BaselineOfJRPC/BaselineOfJRPC.class.st index e6f9176..cd93a2b 100644 --- a/src/BaselineOfJRPC/BaselineOfJRPC.class.st +++ b/src/BaselineOfJRPC/BaselineOfJRPC.class.st @@ -23,27 +23,49 @@ BaselineOfJRPC >> projectClass [ ^ MetacelloCypressBaselineProject ] +{ #category : #baselines } +BaselineOfJRPC >> setUpClientDeploymentPackages: spec [ + + spec + package: 'JRPC-Client' with: [ spec requires: 'JRPC-Common' ]; + group: 'Client-Deployment' with: 'JRPC-Client'. +] + { #category : #baselines } BaselineOfJRPC >> setUpPackages: spec [ spec package: 'JRPC-Common'. + self + setUpServerDeploymentPackages: spec; + setUpClientDeploymentPackages: spec. + spec - package: 'JRPC-Server' with: [ spec requires: 'JRPC-Common' ]; - group: 'Server-Deployment' with: 'JRPC-Server'. + group: 'Deployment' + with: #('Server-Deployment' 'HTTP-Transport' 'TCP-Transport' 'Client-Deployment'). + + spec + package: 'JRPC-Tests' with: [ spec requires: 'Deployment' ]; + group: 'Tests' with: 'JRPC-Tests' +] + +{ #category : #baselines } +BaselineOfJRPC >> setUpServerDeploymentPackages: spec [ + spec for: #'pharo6.x' do: [ spec package: 'JRPC-Server-Pharo6'; group: 'Server-Deployment' with: 'JRPC-Server-Pharo6' - ]. + ]. spec - package: 'JRPC-Client' with: [ spec requires: 'JRPC-Common' ]; - group: 'Client-Deployment' with: 'JRPC-Client'. - spec group: 'Deployment' with: #('Server-Deployment' 'Client-Deployment'). + package: 'JRPC-Server-Core' with: [ spec requires: 'JRPC-Common' ]; + group: 'Server-Deployment' with: 'JRPC-Server-Core'. spec - package: 'JRPC-Tests' with: [ spec requires: 'Deployment' ]; - group: 'Tests' with: 'JRPC-Tests'. - + package: 'JRPC-Server-HTTP' with: [ spec requires: 'JRPC-Server-Core' ]; + group: 'HTTP-Transport' with: 'JRPC-Server-HTTP'. + spec + package: 'JRPC-Server-TCP' with: [ spec requires: 'JRPC-Server-Core' ]; + group: 'TCP-Transport' with: 'JRPC-Server-TCP' ] diff --git a/src/JRPC-Server/JRPCAbstractHandler.class.st b/src/JRPC-Server-Core/JRPCAbstractHandler.class.st similarity index 97% rename from src/JRPC-Server/JRPCAbstractHandler.class.st rename to src/JRPC-Server-Core/JRPCAbstractHandler.class.st index 70078f1..a21d5f6 100644 --- a/src/JRPC-Server/JRPCAbstractHandler.class.st +++ b/src/JRPC-Server-Core/JRPCAbstractHandler.class.st @@ -13,7 +13,7 @@ Class { #instVars : [ 'methodName' ], - #category : #'JRPC-Server' + #category : #'JRPC-Server-Core-JRPC-Server-Core' } { #category : #accessing } diff --git a/src/JRPC-Server/JRPCBatchRequestsObject.extension.st b/src/JRPC-Server-Core/JRPCBatchRequestsObject.extension.st similarity index 87% rename from src/JRPC-Server/JRPCBatchRequestsObject.extension.st rename to src/JRPC-Server-Core/JRPCBatchRequestsObject.extension.st index b732845..06b5317 100644 --- a/src/JRPC-Server/JRPCBatchRequestsObject.extension.st +++ b/src/JRPC-Server-Core/JRPCBatchRequestsObject.extension.st @@ -1,6 +1,6 @@ Extension { #name : #JRPCBatchRequestsObject } -{ #category : #'*JRPC-Server' } +{ #category : #'*JRPC-Server-Core' } JRPCBatchRequestsObject >> beHandledBy: aJRPCMessageProcessor [ ^ JRPCBatchResponseObject new diff --git a/src/JRPC-Server/JRPCBlockHandler.class.st b/src/JRPC-Server-Core/JRPCBlockHandler.class.st similarity index 97% rename from src/JRPC-Server/JRPCBlockHandler.class.st rename to src/JRPC-Server-Core/JRPCBlockHandler.class.st index cfb8db9..074ba68 100644 --- a/src/JRPC-Server/JRPCBlockHandler.class.st +++ b/src/JRPC-Server-Core/JRPCBlockHandler.class.st @@ -9,7 +9,7 @@ Class { #instVars : [ 'block' ], - #category : #'JRPC-Server' + #category : #'JRPC-Server-Core-JRPC-Server-Core' } { #category : #accessing } diff --git a/src/JRPC-Server/JRPCErrorResponseObject.extension.st b/src/JRPC-Server-Core/JRPCErrorResponseObject.extension.st similarity index 85% rename from src/JRPC-Server/JRPCErrorResponseObject.extension.st rename to src/JRPC-Server-Core/JRPCErrorResponseObject.extension.st index 691a6ef..90e0cac 100644 --- a/src/JRPC-Server/JRPCErrorResponseObject.extension.st +++ b/src/JRPC-Server-Core/JRPCErrorResponseObject.extension.st @@ -1,6 +1,6 @@ Extension { #name : #JRPCErrorResponseObject } -{ #category : #'*JRPC-Server' } +{ #category : #'*JRPC-Server-Core' } JRPCErrorResponseObject >> beHandledBy: aJRPCMessageProcessor [ "Returns self, this method is executed when a request inside a batch generated an error." diff --git a/src/JRPC-Server/JRPCInvalidParameters.class.st b/src/JRPC-Server-Core/JRPCInvalidParameters.class.st similarity index 86% rename from src/JRPC-Server/JRPCInvalidParameters.class.st rename to src/JRPC-Server-Core/JRPCInvalidParameters.class.st index 1b93413..f12b972 100644 --- a/src/JRPC-Server/JRPCInvalidParameters.class.st +++ b/src/JRPC-Server-Core/JRPCInvalidParameters.class.st @@ -4,7 +4,7 @@ I am an error raised when the parameters of the method called are invalid. Class { #name : #JRPCInvalidParameters, #superclass : #JRPCError, - #category : #'JRPC-Server' + #category : #'JRPC-Server-Core-JRPC-Server-Core' } { #category : #converting } diff --git a/src/JRPC-Server/JRPCMessageProcessor.class.st b/src/JRPC-Server-Core/JRPCMessageProcessor.class.st similarity index 98% rename from src/JRPC-Server/JRPCMessageProcessor.class.st rename to src/JRPC-Server-Core/JRPCMessageProcessor.class.st index 055d9a9..46e946b 100644 --- a/src/JRPC-Server/JRPCMessageProcessor.class.st +++ b/src/JRPC-Server-Core/JRPCMessageProcessor.class.st @@ -13,7 +13,7 @@ Class { #instVars : [ 'handlersByName' ], - #category : #'JRPC-Server' + #category : #'JRPC-Server-Core-JRPC-Server-Core' } { #category : #'handlers management' } diff --git a/src/JRPC-Server/JRPCMessageSendHandler.class.st b/src/JRPC-Server-Core/JRPCMessageSendHandler.class.st similarity index 97% rename from src/JRPC-Server/JRPCMessageSendHandler.class.st rename to src/JRPC-Server-Core/JRPCMessageSendHandler.class.st index d820d66..753bf62 100644 --- a/src/JRPC-Server/JRPCMessageSendHandler.class.st +++ b/src/JRPC-Server-Core/JRPCMessageSendHandler.class.st @@ -18,7 +18,7 @@ Class { 'receiver', 'messageSelector' ], - #category : #'JRPC-Server' + #category : #'JRPC-Server-Core-JRPC-Server-Core' } { #category : #evaluation } diff --git a/src/JRPC-Server/JRPCNameOfHandlerIsAlreadyTaken.class.st b/src/JRPC-Server-Core/JRPCNameOfHandlerIsAlreadyTaken.class.st similarity index 92% rename from src/JRPC-Server/JRPCNameOfHandlerIsAlreadyTaken.class.st rename to src/JRPC-Server-Core/JRPCNameOfHandlerIsAlreadyTaken.class.st index 702f735..2ff8a2b 100644 --- a/src/JRPC-Server/JRPCNameOfHandlerIsAlreadyTaken.class.st +++ b/src/JRPC-Server-Core/JRPCNameOfHandlerIsAlreadyTaken.class.st @@ -7,7 +7,7 @@ Class { #instVars : [ 'handler' ], - #category : #'JRPC-Server' + #category : #'JRPC-Server-Core-JRPC-Server-Core' } { #category : #'instance creation' } diff --git a/src/JRPC-Server/JRPCNonExistentHandler.class.st b/src/JRPC-Server-Core/JRPCNonExistentHandler.class.st similarity index 86% rename from src/JRPC-Server/JRPCNonExistentHandler.class.st rename to src/JRPC-Server-Core/JRPCNonExistentHandler.class.st index d457d6d..bc1ecdb 100644 --- a/src/JRPC-Server/JRPCNonExistentHandler.class.st +++ b/src/JRPC-Server-Core/JRPCNonExistentHandler.class.st @@ -4,7 +4,7 @@ I am an error raised when the handler required does not exist. Class { #name : #JRPCNonExistentHandler, #superclass : #JRPCError, - #category : #'JRPC-Server' + #category : #'JRPC-Server-Core-JRPC-Server-Core' } { #category : #converting } diff --git a/src/JRPC-Server/JRPCNotificationObject.extension.st b/src/JRPC-Server-Core/JRPCNotificationObject.extension.st similarity index 82% rename from src/JRPC-Server/JRPCNotificationObject.extension.st rename to src/JRPC-Server-Core/JRPCNotificationObject.extension.st index 9d615c4..377b85a 100644 --- a/src/JRPC-Server/JRPCNotificationObject.extension.st +++ b/src/JRPC-Server-Core/JRPCNotificationObject.extension.st @@ -1,12 +1,12 @@ Extension { #name : #JRPCNotificationObject } -{ #category : #'*JRPC-Server' } +{ #category : #'*JRPC-Server-Core' } JRPCNotificationObject >> beHandledBy: aJRPCMessageProcessor [ ^ aJRPCMessageProcessor handleJRPCNotificationObject: self ] -{ #category : #'*JRPC-Server' } +{ #category : #'*JRPC-Server-Core' } JRPCNotificationObject >> convertErrorToResponse: jrpcError [ jrpcError isIncorrectJSON ifTrue: [ ^ jrpcError asJRPCResponseWithId: self id ]. diff --git a/src/JRPC-Server/JRPCPragmaHandler.class.st b/src/JRPC-Server-Core/JRPCPragmaHandler.class.st similarity index 94% rename from src/JRPC-Server/JRPCPragmaHandler.class.st rename to src/JRPC-Server-Core/JRPCPragmaHandler.class.st index fc42c30..c8357ac 100644 --- a/src/JRPC-Server/JRPCPragmaHandler.class.st +++ b/src/JRPC-Server-Core/JRPCPragmaHandler.class.st @@ -8,7 +8,7 @@ If no method or multiple methods have pragma, an error is raised. Class { #name : #JRPCPragmaHandler, #superclass : #JRPCMessageSendHandler, - #category : #'JRPC-Server' + #category : #'JRPC-Server-Core-JRPC-Server-Core' } { #category : #private } diff --git a/src/JRPC-Server/JRPCRequestObject.extension.st b/src/JRPC-Server-Core/JRPCRequestObject.extension.st similarity index 77% rename from src/JRPC-Server/JRPCRequestObject.extension.st rename to src/JRPC-Server-Core/JRPCRequestObject.extension.st index 3cb0f65..d80a283 100644 --- a/src/JRPC-Server/JRPCRequestObject.extension.st +++ b/src/JRPC-Server-Core/JRPCRequestObject.extension.st @@ -1,12 +1,12 @@ Extension { #name : #JRPCRequestObject } -{ #category : #'*JRPC-Server' } +{ #category : #'*JRPC-Server-Core' } JRPCRequestObject >> beHandledBy: aJRPCMessageProcessor [ ^ aJRPCMessageProcessor handleJRPCRequestObject: self ] -{ #category : #'*JRPC-Server' } +{ #category : #'*JRPC-Server-Core' } JRPCRequestObject >> convertErrorToResponse: jrpcError [ ^ jrpcError asJRPCResponseWithId: self id ] diff --git a/src/JRPC-Server/JRPCServer.class.st b/src/JRPC-Server-Core/JRPCServer.class.st similarity index 84% rename from src/JRPC-Server/JRPCServer.class.st rename to src/JRPC-Server-Core/JRPCServer.class.st index 01639a7..6bf48e4 100644 --- a/src/JRPC-Server/JRPCServer.class.st +++ b/src/JRPC-Server-Core/JRPCServer.class.st @@ -1,9 +1,8 @@ " I am an abstract server for JSON-RPC 2.0. - -My subclasses define how to handle JSON-RPC objects coming from a client. - -To define that, #sendRequest: message should be overriden by my subclasses. +My subclasses define how to handle JSON-RPC objects coming from a client resolving +the transport specific details and delegating later to the messageProcessor the processing +of the incoming message. " Class { #name : #JRPCServer, @@ -11,19 +10,9 @@ Class { #instVars : [ 'messageProcessor' ], - #category : #'JRPC-Server' + #category : #'JRPC-Server-Core-JRPC-Server-Core' } -{ #category : #'instance creation' } -JRPCServer class >> http [ - ^ JRPCHTTPServer new -] - -{ #category : #'instance creation' } -JRPCServer class >> tcp [ - ^ JRPCTCPServer new -] - { #category : #'handlers management' } JRPCServer >> addHandler: aJRPCHandler [ diff --git a/src/JRPC-Server-Core/package.st b/src/JRPC-Server-Core/package.st new file mode 100644 index 0000000..00b2634 --- /dev/null +++ b/src/JRPC-Server-Core/package.st @@ -0,0 +1 @@ +Package { #name : #'JRPC-Server-Core' } diff --git a/src/JRPC-Server/JRPCHTTPServer.class.st b/src/JRPC-Server-HTTP/JRPCHTTPServer.class.st similarity index 97% rename from src/JRPC-Server/JRPCHTTPServer.class.st rename to src/JRPC-Server-HTTP/JRPCHTTPServer.class.st index a210973..0551543 100644 --- a/src/JRPC-Server/JRPCHTTPServer.class.st +++ b/src/JRPC-Server-HTTP/JRPCHTTPServer.class.st @@ -9,7 +9,7 @@ Class { #instVars : [ 'server' ], - #category : #'JRPC-Server' + #category : #'JRPC-Server-HTTP' } { #category : #defaults } diff --git a/src/JRPC-Server-HTTP/JRPCServer.extension.st b/src/JRPC-Server-HTTP/JRPCServer.extension.st new file mode 100644 index 0000000..90b1e2e --- /dev/null +++ b/src/JRPC-Server-HTTP/JRPCServer.extension.st @@ -0,0 +1,6 @@ +Extension { #name : #JRPCServer } + +{ #category : #'*JRPC-Server-HTTP' } +JRPCServer class >> http [ + ^ JRPCHTTPServer new +] diff --git a/src/JRPC-Server-HTTP/package.st b/src/JRPC-Server-HTTP/package.st new file mode 100644 index 0000000..fbee26c --- /dev/null +++ b/src/JRPC-Server-HTTP/package.st @@ -0,0 +1 @@ +Package { #name : #'JRPC-Server-HTTP' } diff --git a/src/JRPC-Server-TCP/JRPCServer.extension.st b/src/JRPC-Server-TCP/JRPCServer.extension.st new file mode 100644 index 0000000..65c261c --- /dev/null +++ b/src/JRPC-Server-TCP/JRPCServer.extension.st @@ -0,0 +1,6 @@ +Extension { #name : #JRPCServer } + +{ #category : #'*JRPC-Server-TCP' } +JRPCServer class >> tcp [ + ^ JRPCTCPServer new +] diff --git a/src/JRPC-Server/JRPCTCPServer.class.st b/src/JRPC-Server-TCP/JRPCTCPServer.class.st similarity index 97% rename from src/JRPC-Server/JRPCTCPServer.class.st rename to src/JRPC-Server-TCP/JRPCTCPServer.class.st index 157d17d..42dccd6 100644 --- a/src/JRPC-Server/JRPCTCPServer.class.st +++ b/src/JRPC-Server-TCP/JRPCTCPServer.class.st @@ -12,7 +12,7 @@ Class { 'serverLoop', 'process' ], - #category : #'JRPC-Server' + #category : #'JRPC-Server-TCP' } { #category : #defaults } diff --git a/src/JRPC-Server-TCP/package.st b/src/JRPC-Server-TCP/package.st new file mode 100644 index 0000000..b4f9a5a --- /dev/null +++ b/src/JRPC-Server-TCP/package.st @@ -0,0 +1 @@ +Package { #name : #'JRPC-Server-TCP' } diff --git a/src/JRPC-Server/package.st b/src/JRPC-Server/package.st deleted file mode 100644 index a1c7e88..0000000 --- a/src/JRPC-Server/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #'JRPC-Server' }