/**
* 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.jee.oejb3;
import org.apache.openejb.jee.EnterpriseBean;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.LinkedHashMap;
import java.util.Iterator;
import java.util.Properties;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {"jndi", "ejbLink", "resourceLink", "query", "roleMapping", "properties"})
@XmlRootElement(name = "ejb-deployment")
public class EjbDeployment {
@XmlElement(name = "jndi", required = true)
protected List<Jndi> jndi;
@XmlElement(name = "ejb-link", required = true)
protected List<EjbLink> ejbLink;
@XmlElement(name = "resource-link", required = true)
protected List<ResourceLink> resourceLink;
@XmlElement(required = true)
protected List<Query> query;
@XmlElement(name = "role-mapping")
protected List<RoleMapping> roleMapping;
@XmlAttribute(name = "container-id")
protected String containerId;
@XmlAttribute(name = "deployment-id")
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
protected String deploymentId;
@XmlAttribute(name = "ejb-name")
protected String ejbName;
@XmlElement(name = "properties")
@XmlJavaTypeAdapter(PropertiesAdapter.class)
protected Properties properties;
public EjbDeployment() {
}
public EjbDeployment(final String containerId, final String deploymentId, final String ejbName) {
this.containerId = containerId;
this.deploymentId = deploymentId;
this.ejbName = ejbName;
}
public EjbDeployment(final EnterpriseBean bean) {
this.deploymentId = bean.getEjbName();
this.ejbName = bean.getEjbName();
}
public List<EjbLink> getEjbLink() {
if (ejbLink == null) {
ejbLink = new ArrayList<EjbLink>();
}
return this.ejbLink;
}
public List<Jndi> getJndi() {
if (jndi == null) {
jndi = new ArrayList<Jndi>();
}
return jndi;
}
public List<ResourceLink> getResourceLink() {
if (resourceLink == null) {
resourceLink = new ArrayList<ResourceLink>();
}
return this.resourceLink;
}
public List<Query> getQuery() {
if (query == null) {
query = new ArrayList<Query>();
}
return this.query;
}
public ResourceLink getResourceLink(final String refName) {
return getResourceLinksMap().get(refName);
}
public Map<String, ResourceLink> getResourceLinksMap() {
final Map<String, ResourceLink> map = new LinkedHashMap<String, ResourceLink>();
for (final ResourceLink link : getResourceLink()) {
map.put(link.getResRefName(), link);
}
return map;
}
public EjbLink getEjbLink(final String refName) {
return getEjbLinksMap().get(refName);
}
public Map<String, EjbLink> getEjbLinksMap() {
final Map<String, EjbLink> map = new LinkedHashMap<String, EjbLink>();
for (final EjbLink link : getEjbLink()) {
map.put(link.getEjbRefName(), link);
}
return map;
}
public String getContainerId() {
return containerId;
}
public void setContainerId(final String value) {
this.containerId = value;
}
public String getDeploymentId() {
return deploymentId;
}
public void setDeploymentId(final String value) {
this.deploymentId = value;
}
public String getEjbName() {
return ejbName;
}
public void setEjbName(final String value) {
this.ejbName = value;
}
public void addResourceLink(final ResourceLink resourceLink) {
getResourceLink().add(resourceLink);
}
public void removeResourceLink(final String resRefName) {
for (final Iterator<ResourceLink> iterator = resourceLink.iterator(); iterator.hasNext(); ) {
final ResourceLink link = iterator.next();
if (resRefName.equals(link.getResRefName())) {
iterator.remove();
}
}
}
public void addEjbLink(final EjbLink ejbLink) {
getEjbLink().add(ejbLink);
}
public void addQuery(final Query query) {
getQuery().add(query);
}
public Properties getProperties() {
if (properties == null) {
properties = new Properties();
}
return properties;
}
public void addProperty(final String key, final String value) {
getProperties().setProperty(key, value);
}
public List<RoleMapping> getRoleMapping() {
if (roleMapping == null) {
roleMapping = new ArrayList<RoleMapping>();
}
return roleMapping;
}
}