001
014
015 package com.liferay.portal.kernel.transaction;
016
017
020 public class TransactionAttribute {
021
022 public Isolation getIsolation() {
023 return _isolation;
024 }
025
026 public Class<?>[] getNoRollbackForClasses() {
027 return _noRollbackForClasses;
028 }
029
030 public String[] getNoRollbackForClassNames() {
031 return _noRollbackForClassNames;
032 }
033
034 public Propagation getPropagation() {
035 return _propagation;
036 }
037
038 public Class<?>[] getRollbackForClasses() {
039 return _rollbackForClasses;
040 }
041
042 public String[] getRollbackForClassNames() {
043 return _rollbackForClassNames;
044 }
045
046 public int getTimeout() {
047 return _timeout;
048 }
049
050 public boolean isReadOnly() {
051 return _readOnly;
052 }
053
054 public static class Builder {
055
056 public TransactionAttribute build() {
057 return new TransactionAttribute(this);
058 }
059
060 public Builder setIsolation(Isolation isolation) {
061 _isolation = isolation;
062
063 return this;
064 }
065
066 public Builder setNoRollbackForClasses(
067 Class<?>... noRollbackForClasses) {
068
069 _noRollbackForClasses = noRollbackForClasses;
070
071 return this;
072 }
073
074 public Builder setNoRollbackForClassNames(
075 String... noRollbackForClassNames) {
076
077 _noRollbackForClassNames = noRollbackForClassNames;
078
079 return this;
080 }
081
082 public Builder setPropagation(Propagation propagation) {
083 _propagation = propagation;
084
085 return this;
086 }
087
088 public Builder setReadOnly(boolean readOnly) {
089 _readOnly = readOnly;
090
091 return this;
092 }
093
094 public Builder setRollbackForClasses(Class<?>... rollbackForClasses) {
095 _rollbackForClasses = rollbackForClasses;
096
097 return this;
098 }
099
100 public Builder setRollbackForClassNames(
101 String... rollbackForClassNames) {
102
103 _rollbackForClassNames = rollbackForClassNames;
104
105 return this;
106 }
107
108 public Builder setTimeout(int timeout) {
109 _timeout = timeout;
110
111 return this;
112 }
113
114 private Isolation _isolation = Isolation.DEFAULT;
115 private Class<?>[] _noRollbackForClasses = {};
116 private String[] _noRollbackForClassNames = {};
117 private Propagation _propagation = Propagation.REQUIRED;
118 private boolean _readOnly;
119 private Class<?>[] _rollbackForClasses = {};
120 private String[] _rollbackForClassNames = {};
121 private int _timeout = TransactionDefinition.TIMEOUT_DEFAULT;
122
123 }
124
125 public static class Factory {
126
127 public static TransactionAttribute create(
128 Isolation isolation, Propagation propagation, boolean readOnly,
129 int timeout, Class<?>[] rollbackForClasses,
130 String[] rollbackForClassNames, Class<?>[] noRollbackForClasses,
131 String[] noRollbackForClassNames) {
132
133 Builder builder = new Builder();
134
135 builder.setIsolation(isolation);
136 builder.setPropagation(propagation);
137 builder.setReadOnly(readOnly);
138 builder.setTimeout(timeout);
139 builder.setRollbackForClasses(rollbackForClasses);
140 builder.setRollbackForClassNames(rollbackForClassNames);
141 builder.setNoRollbackForClasses(noRollbackForClasses);
142 builder.setNoRollbackForClassNames(noRollbackForClassNames);
143
144 return builder.build();
145 }
146
147 public static TransactionAttribute create(
148 Propagation propagation, Class<?>[] rollbackForClasses,
149 Class<?>... noRollbackForClasses) {
150
151 return create(
152 Isolation.PORTAL, propagation, false, -1, rollbackForClasses,
153 new String[0], noRollbackForClasses, new String[0]);
154 }
155
156 }
157
158 private TransactionAttribute(Builder builder) {
159 _isolation = builder._isolation;
160 _noRollbackForClassNames = builder._noRollbackForClassNames;
161 _noRollbackForClasses = builder._noRollbackForClasses;
162 _propagation = builder._propagation;
163 _readOnly = builder._readOnly;
164 _rollbackForClassNames = builder._rollbackForClassNames;
165 _rollbackForClasses = builder._rollbackForClasses;
166 _timeout = builder._timeout;
167 }
168
169 private final Isolation _isolation;
170 private final Class<?>[] _noRollbackForClasses;
171 private final String[] _noRollbackForClassNames;
172 private final Propagation _propagation;
173 private final boolean _readOnly;
174 private final Class<?>[] _rollbackForClasses;
175 private final String[] _rollbackForClassNames;
176 private final int _timeout;
177
178 }