Skip to content

Commit 980327e

Browse files
committed
Consolidated Problem Reports
Signed-off-by: Varun Chatterji <[email protected]>
1 parent fffa126 commit 980327e

18 files changed

+84
-107
lines changed

app/src/main/java/org/hyperledger/ariesproject/WalletMainActivity.kt

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ import org.hyperledger.ariesframework.agent.AgentEvents
2020
import org.hyperledger.ariesframework.credentials.models.AcceptOfferOptions
2121
import org.hyperledger.ariesframework.credentials.models.AutoAcceptCredential
2222
import org.hyperledger.ariesframework.credentials.models.CredentialState
23+
import org.hyperledger.ariesframework.problemreports.messages.CredentialProblemReportMessage
24+
import org.hyperledger.ariesframework.problemreports.messages.MediationProblemReportMessage
25+
import org.hyperledger.ariesframework.problemreports.messages.PresentationProblemReportMessage
2326
import org.hyperledger.ariesframework.proofs.models.ProofState
2427
import org.hyperledger.ariesproject.databinding.ActivityWalletMainBinding
2528
import org.hyperledger.ariesproject.databinding.MenuItemListContentBinding
@@ -102,16 +105,18 @@ class WalletMainActivity : AppCompatActivity() {
102105
}
103106

104107
// Show an alert on credential problem report
105-
app.agent.eventBus.subscribe<AgentEvents.CredentialProblemReportEvent> {
108+
app.agent.eventBus.subscribe<AgentEvents.ProblemReportEvent> {
106109
lifecycleScope.launch(Dispatchers.Main) {
107-
showAlert("Issuer reported a problem while issuing the credential - ${it.message.description.en}")
108-
}
109-
}
110-
111-
// Show an alert on presentation problem report
112-
app.agent.eventBus.subscribe<AgentEvents.PresentationProblemReportEvent> {
113-
lifecycleScope.launch(Dispatchers.Main) {
114-
showAlert("Verifier reported a problem with the presentation - ${it.message.description.en}")
110+
// Check if message type is a CredentialProblemReport
111+
if (it.message is CredentialProblemReportMessage) {
112+
showAlert("Issuer reported a problem while issuing the credential - ${it.message.description.en}")
113+
}
114+
if (it.message is PresentationProblemReportMessage) {
115+
showAlert("Verifier reported a problem while verifying the presentation - ${it.message.description.en}")
116+
}
117+
if (it.message is MediationProblemReportMessage) {
118+
showAlert("Mediator reported a problem - ${it.message.description.en}")
119+
}
115120
}
116121
}
117122
}

ariesframework/src/main/java/org/hyperledger/ariesframework/agent/Agent.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import org.hyperledger.ariesframework.ledger.LedgerService
1515
import org.hyperledger.ariesframework.oob.OutOfBandCommand
1616
import org.hyperledger.ariesframework.oob.OutOfBandService
1717
import org.hyperledger.ariesframework.oob.repository.OutOfBandRepository
18+
import org.hyperledger.ariesframework.problemreports.ProblemReportsCommand
1819
import org.hyperledger.ariesframework.proofs.ProofCommand
1920
import org.hyperledger.ariesframework.proofs.ProofService
2021
import org.hyperledger.ariesframework.proofs.RevocationService
@@ -47,6 +48,7 @@ class Agent(val context: Context, val agentConfig: AgentConfig) {
4748
val proofService = ProofService(this)
4849
val proofs = ProofCommand(this, dispatcher)
4950
val basicMessages = BasicMessageCommand(this, dispatcher)
51+
val problemReports = ProblemReportsCommand(this, dispatcher)
5052

5153
private var _isInitialized = false
5254

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package org.hyperledger.ariesframework.agent
22

33
import org.hyperledger.ariesframework.connection.repository.ConnectionRecord
4-
import org.hyperledger.ariesframework.credentials.messages.CredentialProblemReportMessage
54
import org.hyperledger.ariesframework.credentials.repository.CredentialExchangeRecord
65
import org.hyperledger.ariesframework.oob.repository.OutOfBandRecord
7-
import org.hyperledger.ariesframework.proofs.messages.PresentationProblemReportMessage
6+
import org.hyperledger.ariesframework.problemreports.messages.BaseProblemReportMessage
87
import org.hyperledger.ariesframework.proofs.repository.ProofExchangeRecord
98
import org.hyperledger.ariesframework.routing.repository.MediationRecord
109

@@ -15,6 +14,5 @@ sealed interface AgentEvents {
1514
class CredentialEvent(val record: CredentialExchangeRecord) : AgentEvents
1615
class ProofEvent(val record: ProofExchangeRecord) : AgentEvents
1716
class BasicMessageEvent(val message: String) : AgentEvents
18-
class CredentialProblemReportEvent(val message: CredentialProblemReportMessage) : AgentEvents
19-
class PresentationProblemReportEvent(val message: PresentationProblemReportMessage) : AgentEvents
17+
class ProblemReportEvent(val message: BaseProblemReportMessage) : AgentEvents
2018
}

ariesframework/src/main/java/org/hyperledger/ariesframework/credentials/CredentialService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import org.hyperledger.ariesframework.agent.MessageSerializer
1515
import org.hyperledger.ariesframework.agent.decorators.Attachment
1616
import org.hyperledger.ariesframework.agent.decorators.ThreadDecorator
1717
import org.hyperledger.ariesframework.credentials.messages.CredentialAckMessage
18-
import org.hyperledger.ariesframework.credentials.messages.CredentialProblemReportMessage
1918
import org.hyperledger.ariesframework.credentials.messages.IssueCredentialMessage
2019
import org.hyperledger.ariesframework.credentials.messages.OfferCredentialMessage
2120
import org.hyperledger.ariesframework.credentials.messages.ProposeCredentialMessage
@@ -31,6 +30,7 @@ import org.hyperledger.ariesframework.credentials.models.CredentialValues
3130
import org.hyperledger.ariesframework.credentials.models.IndyCredential
3231
import org.hyperledger.ariesframework.credentials.repository.CredentialExchangeRecord
3332
import org.hyperledger.ariesframework.credentials.repository.CredentialRecordBinding
33+
import org.hyperledger.ariesframework.problemreports.messages.CredentialProblemReportMessage
3434
import org.hyperledger.ariesframework.storage.BaseRecord
3535
import org.hyperledger.ariesframework.storage.DidCommMessageRole
3636
import org.hyperledger.indy.sdk.anoncreds.Anoncreds

ariesframework/src/main/java/org/hyperledger/ariesframework/credentials/CredentialsCommand.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,10 @@ import org.hyperledger.ariesframework.agent.Agent
77
import org.hyperledger.ariesframework.agent.Dispatcher
88
import org.hyperledger.ariesframework.agent.MessageSerializer
99
import org.hyperledger.ariesframework.credentials.handlers.CredentialAckHandler
10-
import org.hyperledger.ariesframework.credentials.handlers.CredentialProblemReportHandler
1110
import org.hyperledger.ariesframework.credentials.handlers.IssueCredentialHandler
1211
import org.hyperledger.ariesframework.credentials.handlers.OfferCredentialHandler
1312
import org.hyperledger.ariesframework.credentials.handlers.RequestCredentialHandler
1413
import org.hyperledger.ariesframework.credentials.messages.CredentialAckMessage
15-
import org.hyperledger.ariesframework.credentials.messages.CredentialProblemReportMessage
1614
import org.hyperledger.ariesframework.credentials.messages.IssueCredentialMessage
1715
import org.hyperledger.ariesframework.credentials.messages.OfferCredentialMessage
1816
import org.hyperledger.ariesframework.credentials.messages.ProposeCredentialMessage
@@ -38,7 +36,6 @@ class CredentialsCommand(val agent: Agent, private val dispatcher: Dispatcher) {
3836
dispatcher.registerHandler(IssueCredentialHandler(agent))
3937
dispatcher.registerHandler(OfferCredentialHandler(agent))
4038
dispatcher.registerHandler(RequestCredentialHandler(agent))
41-
dispatcher.registerHandler(CredentialProblemReportHandler(agent))
4239
}
4340

4441
private fun registerMessages() {
@@ -47,7 +44,6 @@ class CredentialsCommand(val agent: Agent, private val dispatcher: Dispatcher) {
4744
MessageSerializer.registerMessage(OfferCredentialMessage.type, OfferCredentialMessage::class)
4845
MessageSerializer.registerMessage(ProposeCredentialMessage.type, ProposeCredentialMessage::class)
4946
MessageSerializer.registerMessage(RequestCredentialMessage.type, RequestCredentialMessage::class)
50-
MessageSerializer.registerMessage(CredentialProblemReportMessage.type, CredentialProblemReportMessage::class)
5147
}
5248

5349
/**

ariesframework/src/main/java/org/hyperledger/ariesframework/credentials/handlers/CredentialProblemReportHandler.kt

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.hyperledger.ariesframework.problemreports
2+
3+
import org.hyperledger.ariesframework.agent.Agent
4+
import org.hyperledger.ariesframework.agent.Dispatcher
5+
import org.hyperledger.ariesframework.agent.MessageSerializer
6+
import org.hyperledger.ariesframework.problemreports.handlers.ProblemReportHandler
7+
import org.hyperledger.ariesframework.problemreports.messages.CredentialProblemReportMessage
8+
import org.hyperledger.ariesframework.problemreports.messages.MediationProblemReportMessage
9+
import org.hyperledger.ariesframework.problemreports.messages.PresentationProblemReportMessage
10+
import org.slf4j.LoggerFactory
11+
12+
class ProblemReportsCommand(val agent: Agent, private val dispatcher: Dispatcher) {
13+
private val logger = LoggerFactory.getLogger(ProblemReportsCommand::class.java)
14+
15+
init {
16+
registerHandlers(dispatcher)
17+
registerMessages()
18+
}
19+
20+
private fun registerHandlers(dispatcher: Dispatcher) {
21+
dispatcher.registerHandler(ProblemReportHandler(agent, PresentationProblemReportMessage.type))
22+
dispatcher.registerHandler(ProblemReportHandler(agent, CredentialProblemReportMessage.type))
23+
dispatcher.registerHandler(ProblemReportHandler(agent, MediationProblemReportMessage.type))
24+
}
25+
26+
private fun registerMessages() {
27+
MessageSerializer.registerMessage(PresentationProblemReportMessage.type, PresentationProblemReportMessage::class)
28+
MessageSerializer.registerMessage(CredentialProblemReportMessage.type, CredentialProblemReportMessage::class)
29+
MessageSerializer.registerMessage(MediationProblemReportMessage.type, MediationProblemReportMessage::class)
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.hyperledger.ariesframework.problemreports.handlers
2+
3+
import org.hyperledger.ariesframework.InboundMessageContext
4+
import org.hyperledger.ariesframework.OutboundMessage
5+
import org.hyperledger.ariesframework.agent.Agent
6+
import org.hyperledger.ariesframework.agent.AgentEvents
7+
import org.hyperledger.ariesframework.agent.MessageHandler
8+
import org.hyperledger.ariesframework.problemreports.messages.BaseProblemReportMessage
9+
10+
class ProblemReportHandler(val agent: Agent, override val messageType: String) : MessageHandler {
11+
override suspend fun handle(messageContext: InboundMessageContext): OutboundMessage? {
12+
val message = messageContext.message as BaseProblemReportMessage
13+
agent.eventBus.publish(AgentEvents.ProblemReportEvent(message))
14+
return null
15+
}
16+
}

ariesframework/src/main/java/org/hyperledger/ariesframework/agent/BaseProblemReportMessage.kt renamed to ariesframework/src/main/java/org/hyperledger/ariesframework/problemreports/messages/BaseProblemReportMessage.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package org.hyperledger.ariesframework.agent
1+
package org.hyperledger.ariesframework.problemreports.messages
22

33
import kotlinx.serialization.SerialName
44
import kotlinx.serialization.Serializable
5+
import org.hyperledger.ariesframework.agent.AgentMessage
56

67
@Serializable
78
data class DescriptionOptions(
@@ -19,7 +20,7 @@ open class BaseProblemReportMessage(
1920
open val description: DescriptionOptions,
2021
@SerialName("fix_hint")
2122
open val fixHint: FixHintOptions? = null,
22-
) : AgentMessage(generateId(), BaseProblemReportMessage.type) {
23+
) : AgentMessage(generateId(), type) {
2324
constructor() : this(DescriptionOptions("", ""), null) {
2425
throw Exception("Creating a ProblemReportMessage is not supported")
2526
}
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
package org.hyperledger.ariesframework.credentials.messages
1+
package org.hyperledger.ariesframework.problemreports.messages
22
import kotlinx.serialization.Serializable
3-
import org.hyperledger.ariesframework.agent.BaseProblemReportMessage
4-
import org.hyperledger.ariesframework.agent.DescriptionOptions
53
import org.hyperledger.ariesframework.agent.decorators.ThreadDecorator
64

75
@Serializable
@@ -15,7 +13,7 @@ class CredentialProblemReportMessage private constructor() : BaseProblemReportMe
1513
) {
1614
constructor(threadId: String) : this() {
1715
thread = ThreadDecorator(threadId)
18-
type = CredentialProblemReportMessage.type
16+
type = Companion.type
1917
}
2018
companion object {
2119
const val type = "https://didcomm.org/issue-credential/1.0/problem-report"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.hyperledger.ariesframework.problemreports.messages
2+
3+
import kotlinx.serialization.Serializable
4+
5+
@Serializable
6+
class MediationProblemReportMessage() : BaseProblemReportMessage() {
7+
companion object {
8+
const val type = "https://didcomm.org/coordinate-mediation/1.0/problem-report"
9+
}
10+
}
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
package org.hyperledger.ariesframework.proofs.messages
1+
package org.hyperledger.ariesframework.problemreports.messages
22

33
import kotlinx.serialization.Serializable
4-
import org.hyperledger.ariesframework.agent.BaseProblemReportMessage
5-
import org.hyperledger.ariesframework.agent.DescriptionOptions
64
import org.hyperledger.ariesframework.agent.decorators.ThreadDecorator
75

86
@Serializable
@@ -16,7 +14,7 @@ class PresentationProblemReportMessage private constructor() : BaseProblemReport
1614
) {
1715
constructor(threadId: String) : this() {
1816
thread = ThreadDecorator(threadId)
19-
type = PresentationProblemReportMessage.type
17+
type = Companion.type
2018
}
2119
companion object {
2220
const val type = "https://didcomm.org/present-proof/1.0/problem-report"

ariesframework/src/main/java/org/hyperledger/ariesframework/proofs/ProofCommand.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@ import org.hyperledger.ariesframework.agent.Dispatcher
88
import org.hyperledger.ariesframework.agent.MessageSerializer
99
import org.hyperledger.ariesframework.proofs.handlers.PresentationAckHandler
1010
import org.hyperledger.ariesframework.proofs.handlers.PresentationHandler
11-
import org.hyperledger.ariesframework.proofs.handlers.PresentationProblemReportHandler
1211
import org.hyperledger.ariesframework.proofs.handlers.RequestPresentationHandler
1312
import org.hyperledger.ariesframework.proofs.messages.PresentationAckMessage
1413
import org.hyperledger.ariesframework.proofs.messages.PresentationMessage
15-
import org.hyperledger.ariesframework.proofs.messages.PresentationProblemReportMessage
1614
import org.hyperledger.ariesframework.proofs.messages.RequestPresentationMessage
1715
import org.hyperledger.ariesframework.proofs.models.AutoAcceptProof
1816
import org.hyperledger.ariesframework.proofs.models.ProofRequest
@@ -33,14 +31,12 @@ class ProofCommand(val agent: Agent, private val dispatcher: Dispatcher) {
3331
dispatcher.registerHandler(RequestPresentationHandler(agent))
3432
dispatcher.registerHandler(PresentationHandler(agent))
3533
dispatcher.registerHandler(PresentationAckHandler(agent))
36-
dispatcher.registerHandler(PresentationProblemReportHandler(agent))
3734
}
3835

3936
private fun registerMessages() {
4037
MessageSerializer.registerMessage(RequestPresentationMessage.type, RequestPresentationMessage::class)
4138
MessageSerializer.registerMessage(PresentationMessage.type, PresentationMessage::class)
4239
MessageSerializer.registerMessage(PresentationAckMessage.type, PresentationAckMessage::class)
43-
MessageSerializer.registerMessage(PresentationProblemReportMessage.type, PresentationProblemReportMessage::class)
4440
}
4541

4642
/**

ariesframework/src/main/java/org/hyperledger/ariesframework/proofs/ProofService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import org.hyperledger.ariesframework.agent.MessageSerializer
1717
import org.hyperledger.ariesframework.agent.decorators.Attachment
1818
import org.hyperledger.ariesframework.agent.decorators.ThreadDecorator
1919
import org.hyperledger.ariesframework.connection.repository.ConnectionRecord
20+
import org.hyperledger.ariesframework.problemreports.messages.PresentationProblemReportMessage
2021
import org.hyperledger.ariesframework.proofs.messages.PresentationAckMessage
2122
import org.hyperledger.ariesframework.proofs.messages.PresentationMessage
22-
import org.hyperledger.ariesframework.proofs.messages.PresentationProblemReportMessage
2323
import org.hyperledger.ariesframework.proofs.messages.RequestPresentationMessage
2424
import org.hyperledger.ariesframework.proofs.models.AutoAcceptProof
2525
import org.hyperledger.ariesframework.proofs.models.CredentialsForProof

ariesframework/src/main/java/org/hyperledger/ariesframework/proofs/handlers/PresentationProblemReportHandler.kt

Lines changed: 0 additions & 18 deletions
This file was deleted.

ariesframework/src/main/java/org/hyperledger/ariesframework/routing/MediationRecipient.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import org.hyperledger.ariesframework.routing.handlers.BatchHandler
1919
import org.hyperledger.ariesframework.routing.handlers.KeylistUpdateResponseHandler
2020
import org.hyperledger.ariesframework.routing.handlers.MediationDenyHandler
2121
import org.hyperledger.ariesframework.routing.handlers.MediationGrantHandler
22-
import org.hyperledger.ariesframework.routing.handlers.ProblemReportHandler
2322
import org.hyperledger.ariesframework.routing.messages.BatchMessage
2423
import org.hyperledger.ariesframework.routing.messages.BatchPickupMessage
2524
import org.hyperledger.ariesframework.routing.messages.KeylistUpdate
@@ -29,7 +28,6 @@ import org.hyperledger.ariesframework.routing.messages.KeylistUpdateResponseMess
2928
import org.hyperledger.ariesframework.routing.messages.MediationDenyMessage
3029
import org.hyperledger.ariesframework.routing.messages.MediationGrantMessage
3130
import org.hyperledger.ariesframework.routing.messages.MediationRequestMessage
32-
import org.hyperledger.ariesframework.routing.messages.ProblemReportMessage
3331
import org.hyperledger.ariesframework.routing.repository.MediationRecord
3432
import org.hyperledger.ariesframework.routing.repository.MediationRepository
3533
import org.hyperledger.ariesframework.routing.repository.MediationRole
@@ -58,7 +56,6 @@ class MediationRecipient(private val agent: Agent, private val dispatcher: Dispa
5856
dispatcher.registerHandler(MediationGrantHandler(agent))
5957
dispatcher.registerHandler(BatchHandler(agent))
6058
dispatcher.registerHandler(KeylistUpdateResponseHandler(agent))
61-
dispatcher.registerHandler(ProblemReportHandler(agent))
6259
}
6360

6461
private fun registerMessages() {
@@ -69,7 +66,6 @@ class MediationRecipient(private val agent: Agent, private val dispatcher: Dispa
6966
MessageSerializer.registerMessage(MediationDenyMessage.type, MediationDenyMessage::class)
7067
MessageSerializer.registerMessage(MediationGrantMessage.type, MediationGrantMessage::class)
7168
MessageSerializer.registerMessage(MediationRequestMessage.type, MediationRequestMessage::class)
72-
MessageSerializer.registerMessage(ProblemReportMessage.type, ProblemReportMessage::class)
7369
}
7470

7571
suspend fun getRouting(): Routing {

0 commit comments

Comments
 (0)