github.com/Axway/agent-sdk@v1.1.101/pkg/transaction/jmsprotocolbuilder.go (about)

     1  package transaction
     2  
     3  import (
     4  	"github.com/Axway/agent-sdk/pkg/traceability/redaction"
     5  )
     6  
     7  // JMSProtocolBuilder - Interface to build the JMS protocol details for transaction log event
     8  type JMSProtocolBuilder interface {
     9  	SetMessageID(messageID string) JMSProtocolBuilder
    10  	SetCorrelationID(correlationID string) JMSProtocolBuilder
    11  	SetAuthSubjectID(authSubjectID string) JMSProtocolBuilder
    12  	SetDestination(destination string) JMSProtocolBuilder
    13  	SetProviderURL(providerURL string) JMSProtocolBuilder
    14  	SetDeliveryMode(deliveryMode int) JMSProtocolBuilder
    15  	SetPriority(priority int) JMSProtocolBuilder
    16  	SetReplyTo(replyTo string) JMSProtocolBuilder
    17  	SetRedelivered(redelivered int) JMSProtocolBuilder
    18  	SetTimestamp(timestamp int) JMSProtocolBuilder
    19  	SetExpiration(expiration int) JMSProtocolBuilder
    20  	SetJMSType(jmsType string) JMSProtocolBuilder
    21  	SetStatus(status string) JMSProtocolBuilder
    22  	SetStatusText(statusText string) JMSProtocolBuilder
    23  
    24  	Build() (TransportProtocol, error)
    25  }
    26  
    27  type jmsProtocolBuilder struct {
    28  	JMSProtocolBuilder
    29  	err         error
    30  	jmsProtocol *JMSProtocol
    31  }
    32  
    33  // NewJMSProtocolBuilder - Creates a new JMS protocol builder
    34  func NewJMSProtocolBuilder() JMSProtocolBuilder {
    35  	builder := &jmsProtocolBuilder{
    36  		jmsProtocol: &JMSProtocol{
    37  			Type: "jms",
    38  		},
    39  	}
    40  	return builder
    41  }
    42  
    43  func (b *jmsProtocolBuilder) SetMessageID(messageID string) JMSProtocolBuilder {
    44  	if b.err != nil {
    45  		return b
    46  	}
    47  	b.jmsProtocol.JMSMessageID = messageID
    48  	return b
    49  }
    50  
    51  func (b *jmsProtocolBuilder) SetCorrelationID(correlationID string) JMSProtocolBuilder {
    52  	if b.err != nil {
    53  		return b
    54  	}
    55  	b.jmsProtocol.JMSCorrelationID = correlationID
    56  	return b
    57  }
    58  
    59  func (b *jmsProtocolBuilder) SetAuthSubjectID(authSubjectID string) JMSProtocolBuilder {
    60  	if b.err != nil {
    61  		return b
    62  	}
    63  	b.jmsProtocol.AuthSubjectID = authSubjectID
    64  	return b
    65  }
    66  
    67  func (b *jmsProtocolBuilder) SetDestination(destination string) JMSProtocolBuilder {
    68  	if b.err != nil {
    69  		return b
    70  	}
    71  	b.jmsProtocol.JMSDestination = destination
    72  	return b
    73  }
    74  
    75  func (b *jmsProtocolBuilder) SetProviderURL(providerURL string) JMSProtocolBuilder {
    76  	if b.err != nil {
    77  		return b
    78  	}
    79  	b.jmsProtocol.JMSProviderURL = providerURL
    80  	return b
    81  }
    82  
    83  func (b *jmsProtocolBuilder) SetDeliveryMode(deliveryMode int) JMSProtocolBuilder {
    84  	if b.err != nil {
    85  		return b
    86  	}
    87  	b.jmsProtocol.JMSDeliveryMode = deliveryMode
    88  	return b
    89  }
    90  
    91  func (b *jmsProtocolBuilder) SetPriority(priority int) JMSProtocolBuilder {
    92  	if b.err != nil {
    93  		return b
    94  	}
    95  	b.jmsProtocol.JMSPriority = priority
    96  	return b
    97  }
    98  
    99  func (b *jmsProtocolBuilder) SetReplyTo(replyTo string) JMSProtocolBuilder {
   100  	if b.err != nil {
   101  		return b
   102  	}
   103  	b.jmsProtocol.JMSReplyTo = replyTo
   104  	return b
   105  }
   106  
   107  func (b *jmsProtocolBuilder) SetRedelivered(redelivered int) JMSProtocolBuilder {
   108  	if b.err != nil {
   109  		return b
   110  	}
   111  	b.jmsProtocol.JMSRedelivered = redelivered
   112  	return b
   113  }
   114  
   115  func (b *jmsProtocolBuilder) SetTimestamp(timestamp int) JMSProtocolBuilder {
   116  	if b.err != nil {
   117  		return b
   118  	}
   119  	b.jmsProtocol.JMSTimestamp = timestamp
   120  	return b
   121  }
   122  
   123  func (b *jmsProtocolBuilder) SetExpiration(expiration int) JMSProtocolBuilder {
   124  	if b.err != nil {
   125  		return b
   126  	}
   127  	b.jmsProtocol.JMSExpiration = expiration
   128  	return b
   129  }
   130  
   131  func (b *jmsProtocolBuilder) SetJMSType(jmsType string) JMSProtocolBuilder {
   132  	b.jmsProtocol.JMSType = jmsType
   133  	return b
   134  }
   135  
   136  func (b *jmsProtocolBuilder) SetStatus(status string) JMSProtocolBuilder {
   137  	if b.err != nil {
   138  		return b
   139  	}
   140  	b.jmsProtocol.JMSStatus = status
   141  	return b
   142  }
   143  
   144  func (b *jmsProtocolBuilder) SetStatusText(statusText string) JMSProtocolBuilder {
   145  	if b.err != nil {
   146  		return b
   147  	}
   148  	b.jmsProtocol.JMSStatusText = statusText
   149  	return b
   150  }
   151  
   152  func (b *jmsProtocolBuilder) Build() (TransportProtocol, error) {
   153  	if b.err != nil {
   154  		return nil, b.err
   155  	}
   156  
   157  	jmsPropertyMap, err := b.jmsProtocol.ToMapStringString()
   158  	if err != nil {
   159  		return nil, err
   160  	}
   161  
   162  	// Handle the redaction of JMS Properties
   163  	redactedPropertyMap, err := redaction.JMSPropertiesRedaction(jmsPropertyMap)
   164  	if err != nil {
   165  		return nil, err
   166  	}
   167  
   168  	err = b.jmsProtocol.FromMapStringString(redactedPropertyMap)
   169  	if err != nil {
   170  		return nil, err
   171  	}
   172  
   173  	return b.jmsProtocol, nil
   174  }