EDMIService: Small fixes and exception handling

This commit is contained in:
Jonathan Jenne
2020-12-23 14:19:47 +01:00
parent 62ac7860ef
commit 590407fbce
20 changed files with 638 additions and 201 deletions

View File

@@ -0,0 +1,26 @@
Imports System.Runtime.Serialization
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.EDMI.API.Rights
Namespace Messages
<DataContract>
<Serializable>
Public Class AccessRightResult
Inherits BaseResult
<DataMember>
Public Property Right As AccessRight = AccessRight.VIEW_ONLY
Public Sub New(AccessRight As AccessRight)
MyBase.New()
Right = AccessRight
End Sub
Public Sub New(Exception As Exception)
MyBase.New()
OK = False
ErrorMessage = Exception.Message
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,29 @@
Imports System.Runtime.Serialization
Namespace Messages
<Serializable>
<DataContract>
<KnownType(GetType(DBNull))>
Public MustInherit Class BaseResult
<DataMember>
Public Property OK As Boolean
<DataMember>
Public Property ErrorMessage As String
Public Sub New()
OK = True
End Sub
Public Sub New(Message As String)
OK = False
ErrorMessage = Message
End Sub
Public Sub New(Exception As Exception)
OK = False
ErrorMessage = Exception.Message
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,60 @@
Imports System.Runtime.Serialization
Namespace Messages
<Serializable>
<DataContract>
<KnownType(GetType(DBNull))>
Public Class TableResult
Inherits BaseResult
<DataMember>
Public Property Table As DataTable
Public Sub New(Table As DataTable)
MyBase.New()
Me.Table = Table
End Sub
Public Sub New(ErrorMessage As String)
MyBase.New(ErrorMessage)
End Sub
End Class
<Serializable>
<DataContract>
<KnownType(GetType(DBNull))>
Public Class ScalarResult
Inherits BaseResult
<DataMember>
Public Property Scalar As Object
Public Sub New(Scalar As Object)
MyBase.New()
Me.Scalar = Scalar
End Sub
Public Sub New(ErrorMessage As String)
MyBase.New(ErrorMessage)
End Sub
End Class
<Serializable>
<DataContract>
<KnownType(GetType(DBNull))>
Public Class NonQueryResult
Inherits BaseResult
Public Sub New()
MyBase.New()
End Sub
Public Sub New(ErrorMessage As String)
MyBase.New(ErrorMessage)
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,71 @@
Imports System.Runtime.Serialization
Imports System.ServiceModel
Namespace Exceptions
Public Class UnexpectedErrorException(Of UnexpectedErrorFault)
Inherits FaultException
Public Sub New()
MyBase.New()
End Sub
End Class
<DataContract>
Public Class BaseFault
''' <summary>
''' The human readable error message
''' </summary>
<DataMember>
Public Property ErrorMessage As String
<DataMember>
Public Property InnerException As Exception
<DataMember>
Public Property IsRecoverable As Boolean = True
End Class
<DataContract>
Public Class UnexpectedErrorFault
Inherits BaseFault
Public Sub New(Exception As Exception)
MyBase.New()
ErrorMessage = "Unexpected Error"
IsRecoverable = True
InnerException = Exception
End Sub
End Class
<DataContract>
Public Class DataTableDoesNotExistFault
Inherits BaseFault
Public Sub New(Name As String)
MyBase.New()
ErrorMessage = $"Datatable {Name} does not exist"
IsRecoverable = True
InnerException = Nothing
End Sub
End Class
<DataContract>
Public Class ObjectDoesNotExistFault
Inherits BaseFault
Public Sub New(ObjectId As Long)
MyBase.New()
ErrorMessage = $"Object with Id {ObjectId} does not exist"
IsRecoverable = True
InnerException = Nothing
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,79 @@
Imports System.IO
Imports System.Runtime.Serialization
Imports System.ServiceModel
Imports DigitalData.Modules.EDMI.API.Rights
Namespace Messages
#Region "DocumentImport"
<MessageContract>
Public Class DocumentImportRequest
<MessageBodyMember>
Public Contents() As Byte
<MessageBodyMember>
Public ObjectStoreId As Long
<MessageBodyMember>
Public FileName As String
<MessageBodyMember>
Public DocumentType As String
<MessageBodyMember>
Public RetentionDays As Long = 0
End Class
<MessageContract>
Public Class DocumentImportResponse
<MessageBodyMember>
Public ObjectId As Long
End Class
#End Region
#Region "DocumentStream"
<MessageContract>
Public Class DocumentStreamRequest
<MessageBodyMember>
Public ObjectId As Long
End Class
<MessageContract>
Public Class DocumentStreamResponse
<MessageHeader(MustUnderstand:=True)>
Public FileName As String
<MessageBodyMember(Order:=1)>
Public FileContents As Stream
End Class
#End Region
#Region "DocumentInfo"
<MessageContract>
Public Class DocumentInfoRequest
<MessageBodyMember>
Public ObjectId As Long
<MessageBodyMember>
Public UserId As Long
End Class
<MessageContract>
Public Class DocumentInfoResponse
<MessageBodyMember>
Public FullPath As String
<MessageBodyMember>
Public FileRight As AccessRight
End Class
#End Region
#Region "DocumentList"
<MessageContract>
<KnownType(GetType(DBNull))>
Public Class DocumentListResponse
<MessageBodyMember>
Public Datatable As DataTable
End Class
#End Region
End Namespace