/*
* 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.Container;
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 = "StatefulContainer")
public class StatefulContainerBuilder extends Container {
@XmlJavaTypeAdapter(DurationAdapter.class)
@XmlAttribute
private Duration accessTimeout = Duration.parse("30 seconds");
@XmlAttribute
private String cache = "org.apache.openejb.core.stateful.SimpleCache";
@XmlAttribute
private String passivator = "org.apache.openejb.core.stateful.SimplePassivater";
@XmlJavaTypeAdapter(DurationAdapter.class)
@XmlAttribute
private Duration timeOut = Duration.parse("20");
@XmlAttribute
private int frequency = 60;
@XmlAttribute
private int capacity = 1000;
@XmlAttribute
private int bulkPassivate = 100;
public StatefulContainerBuilder() {
setClassName("org.apache.openejb.core.stateful.StatefulContainerFactory");
setType("STATEFUL");
setId("StatefulContainer");
setFactoryName("create");
}
public StatefulContainerBuilder id(final String id) {
setId(id);
return this;
}
public StatefulContainerBuilder withAccessTimeout(final Duration accessTimeout) {
this.accessTimeout = accessTimeout;
return this;
}
public void setAccessTimeout(final Duration accessTimeout) {
this.accessTimeout = accessTimeout;
}
public Duration getAccessTimeout() {
return accessTimeout;
}
public StatefulContainerBuilder withAccessTimeout(final long time, final TimeUnit unit) {
return withAccessTimeout(new Duration(time, unit));
}
public void setAccessTimeout(final long time, final TimeUnit unit) {
setAccessTimeout(new Duration(time, unit));
}
public StatefulContainerBuilder withCache(final String cache) {
this.cache = cache;
return this;
}
public void setCache(final String cache) {
this.cache = cache;
}
public String getCache() {
return cache;
}
public StatefulContainerBuilder withPassivator(final String passivator) {
this.passivator = passivator;
return this;
}
public void setPassivator(final String passivator) {
this.passivator = passivator;
}
public String getPassivator() {
return passivator;
}
public StatefulContainerBuilder withTimeOut(final Duration timeOut) {
this.timeOut = timeOut;
return this;
}
public void setTimeOut(final Duration timeOut) {
this.timeOut = timeOut;
}
public Duration getTimeOut() {
return timeOut;
}
public StatefulContainerBuilder withTimeOut(final long time, final TimeUnit unit) {
return withTimeOut(new Duration(time, unit));
}
public void setTimeOut(final long time, final TimeUnit unit) {
setTimeOut(new Duration(time, unit));
}
public StatefulContainerBuilder withFrequency(final int frequency) {
this.frequency = frequency;
return this;
}
public void setFrequency(final int frequency) {
this.frequency = frequency;
}
public int getFrequency() {
return frequency;
}
public StatefulContainerBuilder withCapacity(final int capacity) {
this.capacity = capacity;
return this;
}
public void setCapacity(final int capacity) {
this.capacity = capacity;
}
public int getCapacity() {
return capacity;
}
public StatefulContainerBuilder withBulkPassivate(final int bulkPassivate) {
this.bulkPassivate = bulkPassivate;
return this;
}
public void setBulkPassivate(final int bulkPassivate) {
this.bulkPassivate = bulkPassivate;
}
public int getBulkPassivate() {
return bulkPassivate;
}
public Properties getProperties() {
return Builders.getProperties(this);
}
}