
org.apache.openejb.server.ejbd.DeploymentIndex Maven / Gradle / Ivy
/**
* 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.server.ejbd;
import org.apache.openejb.BeanContext;
import org.apache.openejb.client.EJBRequest;
import org.apache.openejb.util.Messages;
import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.Map;
public class DeploymentIndex {
Messages messages = new Messages("org.apache.openejb.server.ejbd");
BeanContext[] deployments = null;
Map index = null;
@SuppressWarnings("unchecked")
public DeploymentIndex(final BeanContext[] beanContexts) {
deployments = new BeanContext[beanContexts.length + 1];
System.arraycopy(beanContexts, 0, deployments, 1, beanContexts.length);
index = new HashMap(deployments.length);
for (int i = 1; i < deployments.length; i++) {
index.put(deployments[i].getDeploymentID(), i);
}
}
public BeanContext getDeployment(final EJBRequest req) throws RemoteException {
final BeanContext info;
final int deploymentCode = req.getDeploymentCode();
if (deploymentCode > 0 && deploymentCode < deployments.length) {
info = deployments[deploymentCode];
req.setDeploymentId((String) info.getDeploymentID());
return info;
}
if (req.getDeploymentId() == null) {
throw new RemoteException(messages.format("invalidDeploymentIdAndCode", req.getDeploymentId(), req.getDeploymentCode()));
}
final int idCode = getDeploymentIndex(req.getDeploymentId());
if (idCode == -1) {
throw new RemoteException(messages.format("noSuchDeploymentIdAndCode", req.getDeploymentId(), req.getDeploymentCode()));
}
req.setDeploymentCode(idCode);
if (req.getDeploymentCode() < 0 || req.getDeploymentCode() >= deployments.length) {
throw new RemoteException(messages.format("invalidDeploymentIdAndCode", req.getDeploymentId(), req.getDeploymentCode()));
}
return deployments[req.getDeploymentCode()];
}
public int getDeploymentIndex(final BeanContext deployment) {
return getDeploymentIndex((String) deployment.getDeploymentID());
}
public int getDeploymentIndex(final String deploymentID) {
final Integer idCode = (Integer) index.get(deploymentID);
return (idCode == null) ? -1 : idCode;
}
public BeanContext getDeployment(final String deploymentID) {
return getDeployment(getDeploymentIndex(deploymentID));
}
public BeanContext getDeployment(final Integer index) {
return (index == null) ? null : getDeployment(index.intValue());
}
public BeanContext getDeployment(final int index) {
return deployments[index];
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy