/** * Copyright 2015-2016 Red Hat, Inc, and individual contributors. * * Licensed 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.wildfly.swarm.teiid; import org.wildfly.swarm.config.Teiid; import org.wildfly.swarm.config.runtime.AttributeDocumentation; import org.wildfly.swarm.config.teiid.Transport; import org.wildfly.swarm.spi.api.Defaultable; import org.wildfly.swarm.spi.api.Fraction; import org.wildfly.swarm.spi.api.annotations.Configurable; import org.wildfly.swarm.spi.api.annotations.MarshalDMR; import org.wildfly.swarm.spi.api.annotations.WildFlyExtension; import static org.wildfly.swarm.spi.api.Defaultable.integer; import static org.wildfly.swarm.teiid.TeiidProperties.DEFAULT_JDBC_PORT; import static org.wildfly.swarm.teiid.TeiidProperties.DEFAULT_ODBC_PORT; import static org.wildfly.swarm.teiid.TeiidProperties.PREPARED_INFINISPAN_CACHE_CONTAINER_NAME; import static org.wildfly.swarm.teiid.TeiidProperties.RESULTSET_INFINISPAN_CACHE_CONTAINER_NAME; import static org.wildfly.swarm.teiid.TeiidProperties.PREPARED_INFINISPAN_CACHE_NAME; import static org.wildfly.swarm.teiid.TeiidProperties.RESULTSET_INFINISPAN_CACHE_NAME; import static org.wildfly.swarm.teiid.TeiidProperties.JDBC_TRANSPORT_NAME; import static org.wildfly.swarm.teiid.TeiidProperties.JDBC_SOCKET_BINDING_NAME; import static org.wildfly.swarm.teiid.TeiidProperties.ODBC_TRANSPORT_NAME; import static org.wildfly.swarm.teiid.TeiidProperties.ODBC_SOCKET_BINDING_NAME; @MarshalDMR @WildFlyExtension(module = "org.jboss.teiid", classname = "org.teiid.jboss.TeiidExtension") public class TeiidFraction extends Teiid<TeiidFraction> implements Fraction<TeiidFraction> { private static final long serialVersionUID = -6070901334377803127L; @Configurable("swarm.teiid.jdbc.port") @AttributeDocumentation("Set the port for the default JDBC socket listener") private Defaultable<Integer> jdbcPort = integer(DEFAULT_JDBC_PORT); @Configurable("swarm.teiid.odbc.port") @AttributeDocumentation("Set the port for the default ODBC socket listener") private Defaultable<Integer> odbcPort = integer(DEFAULT_ODBC_PORT); private boolean isJdbcTransportInstalled = false; public TeiidFraction() { } @Override public TeiidFraction applyDefaults() { return jdbcTransport(); } public TeiidFraction jdbcTransport() { if (!isJdbcTransportInstalled) { transport(JDBC_TRANSPORT_NAME, t -> t.socketBinding(JDBC_SOCKET_BINDING_NAME).protocol(Transport.Protocol.TEIID)); this.isJdbcTransportInstalled = true; } return this; } public TeiidFraction odbcTransport() { return transport(ODBC_TRANSPORT_NAME, t -> t.socketBinding(ODBC_SOCKET_BINDING_NAME).protocol(Transport.Protocol.TEIID)); } public TeiidFraction jdbcPort(int jdbcPort) { this.jdbcPort.set(jdbcPort); return this; } public int jdbcPort() { return this.jdbcPort.get(); } public TeiidFraction odbcPort(int jdbcPort) { this.odbcPort.set(jdbcPort); return this; } public int odbcPort() { return this.odbcPort.get(); } @Override public String preparedplanCacheInfinispanContainer() { if (super.preparedplanCacheInfinispanContainer() == null) { super.preparedplanCacheInfinispanContainer(PREPARED_INFINISPAN_CACHE_CONTAINER_NAME); } return super.preparedplanCacheInfinispanContainer(); } @Override public String preparedplanCacheName() { if (super.preparedplanCacheName() == null) { super.preparedplanCacheName(PREPARED_INFINISPAN_CACHE_NAME); } return super.preparedplanCacheName(); } @Override public String resultsetCacheInfinispanContainer() { if (super.resultsetCacheInfinispanContainer() == null) { super.resultsetCacheInfinispanContainer(RESULTSET_INFINISPAN_CACHE_CONTAINER_NAME); } return super.resultsetCacheInfinispanContainer(); } @Override public String resultsetCacheName() { if (super.resultsetCacheName() == null) { super.resultsetCacheName(RESULTSET_INFINISPAN_CACHE_NAME); } return super.resultsetCacheName(); } }