/*
* 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.openejb.config.typed;
import org.apache.openejb.config.sys.TransactionManager;
import org.apache.openejb.config.typed.util.Builders;
import org.apache.openejb.config.typed.util.DurationAdapter;
import org.apache.openejb.util.Duration;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "TransactionManager")
public class TransactionManagerBuilder extends TransactionManager {
@XmlJavaTypeAdapter(DurationAdapter.class)
@XmlAttribute
private Duration defaultTransactionTimeout = Duration.parse("10 minutes");
@XmlAttribute
private boolean txRecovery;
@XmlAttribute
private int bufferSizeKb = 32;
@XmlAttribute
private boolean checksumEnabled = true;
@XmlAttribute
private boolean adler32Checksum = true;
@XmlJavaTypeAdapter(DurationAdapter.class)
@XmlAttribute
private Duration flushSleepTime = Duration.parse("50 Milliseconds");
@XmlAttribute
private String logFileDir = "txlog";
@XmlAttribute
private String logFileExt = "log";
@XmlAttribute
private String logFileName = "howl";
@XmlAttribute
private int maxBlocksPerFile = -1;
@XmlAttribute
private int maxBuffers;
@XmlAttribute
private int maxLogFiles = 2;
@XmlAttribute
private int minBuffers = 4;
@XmlAttribute
private int threadsWaitingForceThreshold = -1;
public TransactionManagerBuilder() {
setClassName("org.apache.openejb.resource.GeronimoTransactionManagerFactory");
setType("TransactionManager");
setId("TransactionManager");
setConstructor("defaultTransactionTimeoutSeconds, defaultTransactionTimeout, txRecovery, tmId, bufferClassName, bufferSizeKb, checksumEnabled, adler32Checksum, flushSleepTimeMilliseconds, flushSleepTime, logFileDir, logFileExt, logFileName, maxBlocksPerFile, maxBuffers, maxLogFiles, minBuffers, threadsWaitingForceThreshold");
setFactoryName("create");
}
public TransactionManagerBuilder id(final String id) {
setId(id);
return this;
}
public TransactionManagerBuilder withDefaultTransactionTimeout(final Duration defaultTransactionTimeout) {
this.defaultTransactionTimeout = defaultTransactionTimeout;
return this;
}
public void setDefaultTransactionTimeout(final Duration defaultTransactionTimeout) {
this.defaultTransactionTimeout = defaultTransactionTimeout;
}
public Duration getDefaultTransactionTimeout() {
return defaultTransactionTimeout;
}
public TransactionManagerBuilder withDefaultTransactionTimeout(final long time, final TimeUnit unit) {
return withDefaultTransactionTimeout(new Duration(time, unit));
}
public void setDefaultTransactionTimeout(final long time, final TimeUnit unit) {
setDefaultTransactionTimeout(new Duration(time, unit));
}
public TransactionManagerBuilder withTxRecovery(final boolean txRecovery) {
this.txRecovery = txRecovery;
return this;
}
public void setTxRecovery(final boolean txRecovery) {
this.txRecovery = txRecovery;
}
public boolean getTxRecovery() {
return txRecovery;
}
public TransactionManagerBuilder withBufferSizeKb(final int bufferSizeKb) {
this.bufferSizeKb = bufferSizeKb;
return this;
}
public void setBufferSizeKb(final int bufferSizeKb) {
this.bufferSizeKb = bufferSizeKb;
}
public int getBufferSizeKb() {
return bufferSizeKb;
}
public TransactionManagerBuilder withChecksumEnabled(final boolean checksumEnabled) {
this.checksumEnabled = checksumEnabled;
return this;
}
public void setChecksumEnabled(final boolean checksumEnabled) {
this.checksumEnabled = checksumEnabled;
}
public boolean getChecksumEnabled() {
return checksumEnabled;
}
public TransactionManagerBuilder withAdler32Checksum(final boolean adler32Checksum) {
this.adler32Checksum = adler32Checksum;
return this;
}
public void setAdler32Checksum(final boolean adler32Checksum) {
this.adler32Checksum = adler32Checksum;
}
public boolean getAdler32Checksum() {
return adler32Checksum;
}
public TransactionManagerBuilder withFlushSleepTime(final Duration flushSleepTime) {
this.flushSleepTime = flushSleepTime;
return this;
}
public void setFlushSleepTime(final Duration flushSleepTime) {
this.flushSleepTime = flushSleepTime;
}
public Duration getFlushSleepTime() {
return flushSleepTime;
}
public TransactionManagerBuilder withFlushSleepTime(final long time, final TimeUnit unit) {
return withFlushSleepTime(new Duration(time, unit));
}
public void setFlushSleepTime(final long time, final TimeUnit unit) {
setFlushSleepTime(new Duration(time, unit));
}
public TransactionManagerBuilder withLogFileDir(final String logFileDir) {
this.logFileDir = logFileDir;
return this;
}
public void setLogFileDir(final String logFileDir) {
this.logFileDir = logFileDir;
}
public String getLogFileDir() {
return logFileDir;
}
public TransactionManagerBuilder withLogFileExt(final String logFileExt) {
this.logFileExt = logFileExt;
return this;
}
public void setLogFileExt(final String logFileExt) {
this.logFileExt = logFileExt;
}
public String getLogFileExt() {
return logFileExt;
}
public TransactionManagerBuilder withLogFileName(final String logFileName) {
this.logFileName = logFileName;
return this;
}
public void setLogFileName(final String logFileName) {
this.logFileName = logFileName;
}
public String getLogFileName() {
return logFileName;
}
public TransactionManagerBuilder withMaxBlocksPerFile(final int maxBlocksPerFile) {
this.maxBlocksPerFile = maxBlocksPerFile;
return this;
}
public void setMaxBlocksPerFile(final int maxBlocksPerFile) {
this.maxBlocksPerFile = maxBlocksPerFile;
}
public int getMaxBlocksPerFile() {
return maxBlocksPerFile;
}
public TransactionManagerBuilder withMaxBuffers(final int maxBuffers) {
this.maxBuffers = maxBuffers;
return this;
}
public void setMaxBuffers(final int maxBuffers) {
this.maxBuffers = maxBuffers;
}
public int getMaxBuffers() {
return maxBuffers;
}
public TransactionManagerBuilder withMaxLogFiles(final int maxLogFiles) {
this.maxLogFiles = maxLogFiles;
return this;
}
public void setMaxLogFiles(final int maxLogFiles) {
this.maxLogFiles = maxLogFiles;
}
public int getMaxLogFiles() {
return maxLogFiles;
}
public TransactionManagerBuilder withMinBuffers(final int minBuffers) {
this.minBuffers = minBuffers;
return this;
}
public void setMinBuffers(final int minBuffers) {
this.minBuffers = minBuffers;
}
public int getMinBuffers() {
return minBuffers;
}
public TransactionManagerBuilder withThreadsWaitingForceThreshold(final int threadsWaitingForceThreshold) {
this.threadsWaitingForceThreshold = threadsWaitingForceThreshold;
return this;
}
public void setThreadsWaitingForceThreshold(final int threadsWaitingForceThreshold) {
this.threadsWaitingForceThreshold = threadsWaitingForceThreshold;
}
public int getThreadsWaitingForceThreshold() {
return threadsWaitingForceThreshold;
}
public Properties getProperties() {
return Builders.getProperties(this);
}
}