blob: ca067922dd7dba82ff9cd91be8f53b106b3a0fb9 [file] [log] [blame]
/*
* 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.netbeans.modules.payara.jakartaee;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.netbeans.modules.payara.jakartaee.db.ResourcesHelper;
import org.netbeans.modules.j2ee.deployment.common.api.ConfigurationException;
import org.netbeans.modules.j2ee.deployment.common.api.Datasource;
import org.netbeans.modules.j2ee.deployment.common.api.DatasourceAlreadyExistsException;
import org.netbeans.modules.j2ee.deployment.common.api.MessageDestination;
import org.netbeans.modules.j2ee.deployment.common.api.MessageDestination.Type;
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
import org.netbeans.modules.j2ee.deployment.plugins.spi.config.DatasourceConfiguration;
import org.netbeans.modules.j2ee.deployment.plugins.spi.config.EjbResourceConfiguration;
import org.netbeans.modules.j2ee.deployment.plugins.spi.config.ContextRootConfiguration;
import org.netbeans.modules.j2ee.deployment.plugins.spi.config.ModuleConfiguration;
import org.netbeans.modules.j2ee.deployment.plugins.spi.config.DeploymentPlanConfiguration;
import org.netbeans.modules.j2ee.deployment.plugins.spi.config.MessageDestinationConfiguration;
import org.openide.util.Lookup;
import org.openide.util.lookup.Lookups;
/**
* Implementation of ModuleConfiguration.
* <p/>
* Primarily serves to delegate directly to the specified
* DeploymentConfiguration instance, as that is in shared code
* and has appropriate access and this instance is not.
*/
public class ModuleConfigurationImpl implements
ModuleConfiguration,
ContextRootConfiguration,
DeploymentPlanConfiguration,
DatasourceConfiguration,
MessageDestinationConfiguration,
EjbResourceConfiguration
{
private Hk2Configuration config;
private J2eeModule module;
private Lookup lookup;
private static final Map<J2eeModule,ModuleConfigurationImpl> configs =
new HashMap<J2eeModule,ModuleConfigurationImpl>();
@SuppressWarnings("LeakingThisInConstructor")
ModuleConfigurationImpl(J2eeModule module, Hk2Configuration config, Hk2DeploymentManager hk2Dm) throws ConfigurationException {
synchronized (configs) {
this.module = module;
this.config = config;
ResourcesHelper.addSampleDatasource(module, hk2Dm);
configs.put(module, this);
}
}
static public ModuleConfigurationImpl get(J2eeModule j2eemodule) {
synchronized (configs) {
return configs.get(j2eemodule);
}
}
// ------------------------------------------------------------------------
// J2EE Server API implementations
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
// Implementation of ModuleConfiguration
// ------------------------------------------------------------------------
@Override
public synchronized Lookup getLookup() {
if (null == lookup) {
lookup = Lookups.fixed(this);
}
return lookup;
}
@Override
public J2eeModule getJ2eeModule() {
return module;
}
@Override
public void dispose() {
config.dispose();
}
// ------------------------------------------------------------------------
// Implementation of ContextRootConfiguration
// ------------------------------------------------------------------------
@Override
public String getContextRoot() throws ConfigurationException {
return config.getContextRoot();
}
@Override
public void setContextRoot(String contextRoot) throws ConfigurationException {
config.setContextRoot(contextRoot);
}
// ------------------------------------------------------------------------
// Implementation of DeploymentPlanConfiguration
// ------------------------------------------------------------------------
@Override
public void save(OutputStream outputStream) throws ConfigurationException {
config.saveConfiguration(outputStream);
}
// ------------------------------------------------------------------------
// Implementation of DatasourceConfiguration
// ------------------------------------------------------------------------
@Override
public Set<Datasource> getDatasources() throws ConfigurationException {
return config.getDatasources();
}
@Override
public boolean supportsCreateDatasource() {
return config.supportsCreateDatasource();
}
@Override
public Datasource createDatasource(String jndiName, String url, String username, String password, String driver) throws UnsupportedOperationException, ConfigurationException, DatasourceAlreadyExistsException {
return config.createDatasource(jndiName, url, username, password, driver);
}
@Override
public void bindDatasourceReference(String referenceName, String jndiName) throws ConfigurationException {
config.bindDatasourceReference(referenceName, jndiName);
}
@Override
public void bindDatasourceReferenceForEjb(String ejbName, String ejbType, String referenceName, String jndiName) throws ConfigurationException {
config.bindDatasourceReferenceForEjb(ejbName, ejbType, referenceName, jndiName);
}
@Override
public String findDatasourceJndiName(String referenceName) throws ConfigurationException {
return config.findDatasourceJndiName(referenceName);
}
@Override
public String findDatasourceJndiNameForEjb(String ejbName, String referenceName) throws ConfigurationException {
return config.findDatasourceJndiNameForEjb(ejbName, referenceName);
}
// ------------------------------------------------------------------------
// Implementation of EjbResourceConfiguration
// ------------------------------------------------------------------------
@Override
public String findJndiNameForEjb(String ejbName) throws ConfigurationException {
return config.findJndiNameForEjb(ejbName);
}
@Override
public void bindEjbReference(String referenceName, String jndiName) throws ConfigurationException {
config.bindEjbReference(referenceName, jndiName);
}
@Override
public void bindEjbReferenceForEjb(String ejbName, String ejbType, String referenceName, String jndiName) throws ConfigurationException {
config.bindEjbReferenceForEjb(ejbName, ejbType, referenceName, jndiName);
}
@Override
public Set<MessageDestination> getMessageDestinations() throws ConfigurationException {
return config.getMessageDestinations();
}
@Override
public boolean supportsCreateMessageDestination() {
return config.supportsCreateMessageDestination();
}
@Override
public MessageDestination createMessageDestination(String name, Type type) throws UnsupportedOperationException, ConfigurationException {
return config.createMessageDestination(name, type);
}
@Override
public void bindMdbToMessageDestination(String mdbName, String name, Type type) throws ConfigurationException {
config.bindMdbToMessageDestination(mdbName, name, type);
}
@Override
public String findMessageDestinationName(String mdbName) throws ConfigurationException {
return config.findMessageDestinationName(mdbName);
}
@Override
public void bindMessageDestinationReference(String referenceName, String connectionFactoryName, String destName, Type type) throws ConfigurationException {
config.bindMessageDestinationReference(referenceName, connectionFactoryName, destName, type);
}
@Override
public void bindMessageDestinationReferenceForEjb(String ejbName, String ejbType, String referenceName, String connectionFactoryName, String destName, Type type) throws ConfigurationException {
config.bindMessageDestinationReferenceForEjb(ejbName, ejbType, referenceName, connectionFactoryName, destName, type);
}
}