blob: 9d672590f4e37abaa0d6c51dc8d2660a49ad2a33 [file] [log] [blame]
/*
* 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.servicecomb.pack.alpha.core;
import static java.util.concurrent.TimeUnit.SECONDS;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
@Entity
@Table(name = "TxEvent")
public class TxEvent {
@Transient
public static final long MAX_TIMESTAMP = 253402214400000L; // 9999-12-31 00:00:00
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long surrogateId;
private String serviceName;
private String instanceId;
private Date creationTime;
private String globalTxId;
private String localTxId;
private String parentTxId;
private String type;
private String compensationMethod;
private Date expiryTime;
private String retryMethod;
private int retries;
private byte[] payloads;
private TxEvent() {
}
public TxEvent(TxEvent event) {
this(event.surrogateId,
event.serviceName,
event.instanceId,
event.creationTime,
event.globalTxId,
event.localTxId,
event.parentTxId,
event.type,
event.compensationMethod,
event.expiryTime,
event.retryMethod,
event.retries,
event.payloads);
}
public TxEvent(
String serviceName,
String instanceId,
String globalTxId,
String localTxId,
String parentTxId,
String type,
String compensationMethod,
byte[] payloads) {
this(serviceName, instanceId, new Date(), globalTxId, localTxId, parentTxId, type, compensationMethod, 0, "", 0,
payloads);
}
public TxEvent(
String serviceName,
String instanceId,
String globalTxId,
String localTxId,
String parentTxId,
String type,
String compensationMethod,
int timeout,
String retryMethod,
int retries,
byte[] payloads) {
this(-1L, serviceName, instanceId, new Date(), globalTxId, localTxId, parentTxId, type, compensationMethod, timeout,
retryMethod, retries, payloads);
}
public TxEvent(
String serviceName,
String instanceId,
Date creationTime,
String globalTxId,
String localTxId,
String parentTxId,
String type,
String compensationMethod,
int timeout,
String retryMethod,
int retries,
byte[] payloads) {
this(-1L, serviceName, instanceId, creationTime, globalTxId, localTxId, parentTxId, type, compensationMethod,
timeout, retryMethod, retries, payloads);
}
TxEvent(Long surrogateId,
String serviceName,
String instanceId,
Date creationTime,
String globalTxId,
String localTxId,
String parentTxId,
String type,
String compensationMethod,
int timeout,
String retryMethod,
int retries,
byte[] payloads) {
this(surrogateId, serviceName, instanceId, creationTime, globalTxId, localTxId, parentTxId, type,
compensationMethod,
timeout == 0 ? new Date(MAX_TIMESTAMP) : new Date(creationTime.getTime() + SECONDS.toMillis(timeout)),
retryMethod,
retries,
payloads);
}
TxEvent(Long surrogateId,
String serviceName,
String instanceId,
Date creationTime,
String globalTxId,
String localTxId,
String parentTxId,
String type,
String compensationMethod,
Date expiryTime,
String retryMethod,
int retries,
byte[] payloads) {
this.surrogateId = surrogateId;
this.serviceName = serviceName;
this.instanceId = instanceId;
this.creationTime = creationTime;
this.globalTxId = globalTxId;
this.localTxId = localTxId;
this.parentTxId = parentTxId;
this.type = type;
this.compensationMethod = compensationMethod;
this.expiryTime = expiryTime;
this.retryMethod = retryMethod;
this.retries = retries;
this.payloads = payloads;
}
public String serviceName() {
return serviceName;
}
public String instanceId() {
return instanceId;
}
public Date creationTime() {
return creationTime;
}
public String globalTxId() {
return globalTxId;
}
public String localTxId() {
return localTxId;
}
public String parentTxId() {
return parentTxId;
}
public String type() {
return type;
}
public String compensationMethod() {
return compensationMethod;
}
public byte[] payloads() {
return payloads;
}
public long id() {
return surrogateId;
}
public Date expiryTime() {
return expiryTime;
}
public String retryMethod() {
return retryMethod;
}
public int retries() {
return retries;
}
@Override
public String toString() {
return "TxEvent{" +
"surrogateId=" + surrogateId +
", serviceName='" + serviceName + '\'' +
", instanceId='" + instanceId + '\'' +
", creationTime=" + creationTime +
", globalTxId='" + globalTxId + '\'' +
", localTxId='" + localTxId + '\'' +
", parentTxId='" + parentTxId + '\'' +
", type='" + type + '\'' +
", compensationMethod='" + compensationMethod + '\'' +
", expiryTime=" + expiryTime +
", retryMethod='" + retryMethod + '\'' +
", retries=" + retries +
'}';
}
}