• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mybatis / guice / #1210

04 Nov 2023 08:23PM CUT coverage: 80.045%. Remained the same
#1210

Pull #633

github

web-flow
Merge 9d1860fb9 into 408340d1e
Pull Request #633: [pom] Sortpom

1408 of 1759 relevant lines covered (80.05%)

0.8 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

59.26
/src/main/java/org/mybatis/guice/transactional/TransactionAttribute.java
1
/*
2
 *    Copyright 2009-2023 the original author or authors.
3
 *
4
 *    Licensed under the Apache License, Version 2.0 (the "License");
5
 *    you may not use this file except in compliance with the License.
6
 *    You may obtain a copy of the License at
7
 *
8
 *       https://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 *    Unless required by applicable law or agreed to in writing, software
11
 *    distributed under the License is distributed on an "AS IS" BASIS,
12
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 *    See the License for the specific language governing permissions and
14
 *    limitations under the License.
15
 */
16
package org.mybatis.guice.transactional;
17

18
import jakarta.transaction.HeuristicMixedException;
19
import jakarta.transaction.HeuristicRollbackException;
20
import jakarta.transaction.InvalidTransactionException;
21
import jakarta.transaction.NotSupportedException;
22
import jakarta.transaction.RollbackException;
23
import jakarta.transaction.Status;
24
import jakarta.transaction.SystemException;
25
import jakarta.transaction.Transaction;
26
import jakarta.transaction.TransactionManager;
27

28
public enum TransactionAttribute {
1✔
29
  MANDATORY {
1✔
30
    @Override
31
    public TransactionToken begin(TransactionManager man) throws SystemException {
32
      if (man.getStatus() == Status.STATUS_NO_TRANSACTION) {
×
33
        throw new IllegalStateException(
×
34
            "A call is being made on a method that mandates a transaction but there is no current transaction.");
35
      }
36
      return new TransactionToken(man.getTransaction(), null, MANDATORY);
×
37
    }
38
  },
39
  NEVER {
1✔
40
    @Override
41
    public TransactionToken begin(TransactionManager man) throws SystemException {
42
      if (man.getStatus() == Status.STATUS_ACTIVE) {
×
43
        throw new IllegalStateException(
×
44
            "A call is being made on a method that forbids a transaction but there is a current transaction.");
45
      }
46
      return new TransactionToken(null, null, NEVER);
×
47
    }
48
  },
49
  NOTSUPPORTED {
1✔
50
    @Override
51
    public TransactionToken begin(TransactionManager man) throws SystemException {
52
      if (man.getStatus() == Status.STATUS_ACTIVE) {
×
53
        return new TransactionToken(null, man.suspend(), this);
×
54
      }
55
      return new TransactionToken(null, null, NOTSUPPORTED);
×
56
    }
57

58
    @Override
59
    public void finish(TransactionManager man, TransactionToken tranToken)
60
        throws SystemException, InvalidTransactionException, IllegalStateException {
61
      Transaction tran = tranToken.getSuspendedTransaction();
×
62
      if (tran != null) {
×
63
        man.resume(tran);
×
64
      }
65
    }
×
66
  },
67
  REQUIRED {
1✔
68
    @Override
69
    public TransactionToken begin(TransactionManager man) throws SystemException, NotSupportedException {
70
      if (man.getStatus() == Status.STATUS_NO_TRANSACTION) {
1✔
71
        man.begin();
1✔
72
        return new TransactionToken(man.getTransaction(), null, REQUIRED, true);
1✔
73
      }
74
      return new TransactionToken(man.getTransaction(), null, REQUIRED);
1✔
75
    }
76

77
    @Override
78
    public void finish(TransactionManager man, TransactionToken tranToken)
79
        throws SystemException, InvalidTransactionException, IllegalStateException, SecurityException,
80
        RollbackException, HeuristicMixedException, HeuristicRollbackException {
81

82
      if (tranToken.isCompletionAllowed()) {
1✔
83
        if (man.getStatus() == Status.STATUS_MARKED_ROLLBACK) {
1✔
84
          man.rollback();
1✔
85
        } else {
86
          man.commit();
1✔
87
        }
88
      }
89
    }
1✔
90
  },
91
  REQUIRESNEW {
1✔
92
    @Override
93
    public TransactionToken begin(TransactionManager man)
94
        throws SystemException, NotSupportedException, InvalidTransactionException, IllegalStateException {
95
      TransactionToken tranToken;
96
      if (man.getStatus() == Status.STATUS_ACTIVE) {
1✔
97
        tranToken = new TransactionToken(null, man.suspend(), REQUIRESNEW);
1✔
98
      } else {
99
        tranToken = new TransactionToken(null, null, REQUIRESNEW);
1✔
100
      }
101

102
      try {
103
        man.begin();
1✔
104
      } catch (NotSupportedException | SystemException e) {
×
105
        man.resume(tranToken.getSuspendedTransaction());
×
106
        throw e;
×
107
      }
1✔
108

109
      tranToken.setActiveTransaction(man.getTransaction());
1✔
110
      tranToken.setCompletionAllowed(true);
1✔
111

112
      return tranToken;
1✔
113
    }
114

115
    @Override
116
    public void finish(TransactionManager man, TransactionToken tranToken)
117
        throws SystemException, InvalidTransactionException, IllegalStateException, SecurityException,
118
        RollbackException, HeuristicMixedException, HeuristicRollbackException {
119
      if (tranToken.isCompletionAllowed()) {
1✔
120
        if (man.getStatus() == Status.STATUS_MARKED_ROLLBACK) {
1✔
121
          man.rollback();
1✔
122
        } else {
123
          man.commit();
1✔
124
        }
125
      }
126

127
      Transaction tran = tranToken.getSuspendedTransaction();
1✔
128
      if (tran != null) {
1✔
129
        man.resume(tran);
1✔
130
      }
131
    }
1✔
132
  },
133
  SUPPORTS {
1✔
134
    @Override
135
    public TransactionToken begin(TransactionManager man)
136
        throws SystemException, NotSupportedException, InvalidTransactionException, IllegalStateException {
137
      if (man.getStatus() == Status.STATUS_ACTIVE) {
×
138
        return new TransactionToken(man.getTransaction(), null, SUPPORTS);
×
139
      }
140

141
      return new TransactionToken(null, null, SUPPORTS);
×
142
    }
143
  };
144

145
  public static TransactionAttribute fromValue(String value) {
146
    return valueOf(value.toUpperCase());
×
147
  }
148

149
  public TransactionToken begin(TransactionManager man)
150
      throws SystemException, NotSupportedException, InvalidTransactionException, IllegalStateException {
151

152
    return null;
×
153
  }
154

155
  public void finish(TransactionManager man, TransactionToken tranToken)
156
      throws SystemException, InvalidTransactionException, IllegalStateException, SecurityException, RollbackException,
157
      HeuristicMixedException, HeuristicRollbackException {
158

159
  }
×
160
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc