/* * 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 = "StatelessContainer") public class StatelessContainerBuilder extends Container { @XmlJavaTypeAdapter(DurationAdapter.class) @XmlAttribute private Duration accessTimeout = Duration.parse("30 seconds"); @XmlAttribute private int maxSize = 10; @XmlAttribute private int minSize; @XmlAttribute private boolean strictPooling = true; @XmlJavaTypeAdapter(DurationAdapter.class) @XmlAttribute private Duration maxAge = Duration.parse("0 hours"); @XmlAttribute private boolean replaceAged = true; @XmlAttribute private boolean replaceFlushed; @XmlAttribute private int maxAgeOffset = -1; @XmlJavaTypeAdapter(DurationAdapter.class) @XmlAttribute private Duration idleTimeout = Duration.parse("0 minutes"); @XmlAttribute private boolean garbageCollection; @XmlJavaTypeAdapter(DurationAdapter.class) @XmlAttribute private Duration sweepInterval = Duration.parse("5 minutes"); @XmlAttribute private int callbackThreads = 5; @XmlJavaTypeAdapter(DurationAdapter.class) @XmlAttribute private Duration closeTimeout = Duration.parse("5 minutes"); public StatelessContainerBuilder() { setClassName("org.apache.openejb.core.stateless.StatelessContainerFactory"); setType("STATELESS"); setId("StatelessContainer"); setFactoryName("create"); } public StatelessContainerBuilder id(final String id) { setId(id); return this; } public StatelessContainerBuilder withAccessTimeout(final Duration accessTimeout) { this.accessTimeout = accessTimeout; return this; } public void setAccessTimeout(final Duration accessTimeout) { this.accessTimeout = accessTimeout; } public Duration getAccessTimeout() { return accessTimeout; } public StatelessContainerBuilder 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 StatelessContainerBuilder withMaxSize(final int maxSize) { this.maxSize = maxSize; return this; } public void setMaxSize(final int maxSize) { this.maxSize = maxSize; } public int getMaxSize() { return maxSize; } public StatelessContainerBuilder withMinSize(final int minSize) { this.minSize = minSize; return this; } public void setMinSize(final int minSize) { this.minSize = minSize; } public int getMinSize() { return minSize; } public StatelessContainerBuilder withStrictPooling(final boolean strictPooling) { this.strictPooling = strictPooling; return this; } public void setStrictPooling(final boolean strictPooling) { this.strictPooling = strictPooling; } public boolean getStrictPooling() { return strictPooling; } public StatelessContainerBuilder withMaxAge(final Duration maxAge) { this.maxAge = maxAge; return this; } public void setMaxAge(final Duration maxAge) { this.maxAge = maxAge; } public Duration getMaxAge() { return maxAge; } public StatelessContainerBuilder withMaxAge(final long time, final TimeUnit unit) { return withMaxAge(new Duration(time, unit)); } public void setMaxAge(final long time, final TimeUnit unit) { setMaxAge(new Duration(time, unit)); } public StatelessContainerBuilder withReplaceAged(final boolean replaceAged) { this.replaceAged = replaceAged; return this; } public void setReplaceAged(final boolean replaceAged) { this.replaceAged = replaceAged; } public boolean getReplaceAged() { return replaceAged; } public StatelessContainerBuilder withReplaceFlushed(final boolean replaceFlushed) { this.replaceFlushed = replaceFlushed; return this; } public void setReplaceFlushed(final boolean replaceFlushed) { this.replaceFlushed = replaceFlushed; } public boolean getReplaceFlushed() { return replaceFlushed; } public StatelessContainerBuilder withMaxAgeOffset(final int maxAgeOffset) { this.maxAgeOffset = maxAgeOffset; return this; } public void setMaxAgeOffset(final int maxAgeOffset) { this.maxAgeOffset = maxAgeOffset; } public int getMaxAgeOffset() { return maxAgeOffset; } public StatelessContainerBuilder withIdleTimeout(final Duration idleTimeout) { this.idleTimeout = idleTimeout; return this; } public void setIdleTimeout(final Duration idleTimeout) { this.idleTimeout = idleTimeout; } public Duration getIdleTimeout() { return idleTimeout; } public StatelessContainerBuilder withIdleTimeout(final long time, final TimeUnit unit) { return withIdleTimeout(new Duration(time, unit)); } public void setIdleTimeout(final long time, final TimeUnit unit) { setIdleTimeout(new Duration(time, unit)); } public StatelessContainerBuilder withGarbageCollection(final boolean garbageCollection) { this.garbageCollection = garbageCollection; return this; } public void setGarbageCollection(final boolean garbageCollection) { this.garbageCollection = garbageCollection; } public boolean getGarbageCollection() { return garbageCollection; } public StatelessContainerBuilder withSweepInterval(final Duration sweepInterval) { this.sweepInterval = sweepInterval; return this; } public void setSweepInterval(final Duration sweepInterval) { this.sweepInterval = sweepInterval; } public Duration getSweepInterval() { return sweepInterval; } public StatelessContainerBuilder withSweepInterval(final long time, final TimeUnit unit) { return withSweepInterval(new Duration(time, unit)); } public void setSweepInterval(final long time, final TimeUnit unit) { setSweepInterval(new Duration(time, unit)); } public StatelessContainerBuilder withCallbackThreads(final int callbackThreads) { this.callbackThreads = callbackThreads; return this; } public void setCallbackThreads(final int callbackThreads) { this.callbackThreads = callbackThreads; } public int getCallbackThreads() { return callbackThreads; } public StatelessContainerBuilder withCloseTimeout(final Duration closeTimeout) { this.closeTimeout = closeTimeout; return this; } public void setCloseTimeout(final Duration closeTimeout) { this.closeTimeout = closeTimeout; } public Duration getCloseTimeout() { return closeTimeout; } public StatelessContainerBuilder withCloseTimeout(final long time, final TimeUnit unit) { return withCloseTimeout(new Duration(time, unit)); } public void setCloseTimeout(final long time, final TimeUnit unit) { setCloseTimeout(new Duration(time, unit)); } public Properties getProperties() { return Builders.getProperties(this); } }