1 45 package org.openejb.server.ejbd; 46 47 import java.rmi.RemoteException ; 48 import java.util.HashMap ; 49 50 import org.openejb.DeploymentInfo; 51 import org.openejb.OpenEJB; 52 import org.openejb.client.EJBRequest; 53 import org.openejb.util.Messages; 54 55 58 public class DeploymentIndex { 59 60 Messages messages = new Messages( "org.openejb.server.ejbd" ); 61 62 DeploymentInfo[] deployments = null; 63 64 HashMap index = null; 65 66 public DeploymentIndex(){ 67 DeploymentInfo[] ds = OpenEJB.deployments(); 68 69 deployments = new DeploymentInfo[ ds.length +1 ]; 72 73 System.arraycopy( ds, 0, deployments, 1, ds.length); 74 75 index = new HashMap ( deployments.length ); 76 for (int i=1; i < deployments.length; i++){ 77 index.put( deployments[i].getDeploymentID(), new Integer (i)); 78 } 79 } 80 81 public DeploymentInfo getDeployment(EJBRequest req) throws RemoteException { 82 84 DeploymentInfo info = null; 85 86 if (req.getDeploymentCode() > 0 && req.getDeploymentCode() < deployments.length) { 87 info = deployments[ req.getDeploymentCode() ]; 88 if ( info == null ) { 89 throw new RemoteException ("The deployement with this ID is null"); 90 } 91 req.setDeploymentId((String ) info.getDeploymentID() ); 92 return info; 93 } 94 95 if ( req.getDeploymentId() == null ) { 96 throw new RemoteException ("Invalid deployment id and code: id="+req.getDeploymentId()+": code="+req.getDeploymentCode()); 97 } 98 99 int idCode = getDeploymentIndex( req.getDeploymentId() ); 100 101 if ( idCode == -1 ) { 102 throw new RemoteException ("No such deployment id and code: id="+req.getDeploymentId()+": code="+req.getDeploymentCode()); 103 } 104 105 req.setDeploymentCode( idCode ); 106 107 if (req.getDeploymentCode() < 0 || req.getDeploymentCode() >= deployments.length){ 108 throw new RemoteException ("Invalid deployment id and code: id="+req.getDeploymentId()+": code="+req.getDeploymentCode()); 109 } 110 111 info = deployments[ req.getDeploymentCode() ]; 112 if ( info == null ) { 113 throw new RemoteException ("The deployement with this ID is null"); 114 } 115 return info; 116 } 117 118 public int getDeploymentIndex(DeploymentInfo deployment){ 119 return getDeploymentIndex( (String )deployment.getDeploymentID() ); 120 } 121 122 public int getDeploymentIndex(String deploymentID){ 123 Integer idCode = (Integer )index.get( deploymentID ); 124 125 return ( idCode == null )? -1: idCode.intValue(); 126 } 127 128 public DeploymentInfo getDeployment(String deploymentID){ 129 return getDeployment(getDeploymentIndex(deploymentID)); 130 } 131 132 public DeploymentInfo getDeployment(Integer index){ 133 return (index == null)? null: getDeployment(index.intValue()); 134 } 135 136 public DeploymentInfo getDeployment(int index){ 137 return deployments[index]; 138 } 139 } 140 141 142 | Popular Tags |