1 23 24 29 30 package com.sun.jdo.spi.persistence.support.ejb.ejbc; 31 32 import java.io.BufferedReader ; 33 import java.io.File ; 34 import java.io.FileReader ; 35 import java.io.IOException ; 36 37 import java.sql.Connection ; 38 import java.sql.Statement ; 39 import java.sql.SQLException ; 40 41 import java.util.Iterator ; 42 import java.util.ResourceBundle ; 43 import java.util.Properties ; 44 import java.util.Collection ; 45 46 import com.sun.enterprise.util.io.FileUtils; 47 48 import com.sun.enterprise.deployment.Application; 49 import com.sun.enterprise.deployment.EjbBundleDescriptor; 50 import com.sun.enterprise.deployment.IASEjbCMPEntityDescriptor; 51 import com.sun.enterprise.deployment.PersistenceUnitsDescriptor; 52 import com.sun.enterprise.deployment.PersistenceUnitDescriptor; 53 import com.sun.enterprise.deployment.ResourceReferenceDescriptor; 54 55 import com.sun.enterprise.deployment.backend.DeploymentEvent; 56 import com.sun.enterprise.deployment.backend.DeploymentEventInfo; 57 import com.sun.enterprise.deployment.backend.DeploymentEventListener; 58 import com.sun.enterprise.deployment.backend.DeploymentEventManager; 59 import com.sun.enterprise.deployment.backend.DeploymentRequest; 60 import com.sun.enterprise.deployment.backend.DeploymentStatus; 61 import com.sun.enterprise.deployment.backend.IASDeploymentException; 62 63 import com.sun.enterprise.server.Constants; 64 65 import com.sun.jdo.api.persistence.support.JDOFatalUserException; 66 67 import com.sun.jdo.spi.persistence.support.sqlstore.LogHelperSQLStore; 68 69 import com.sun.jdo.spi.persistence.utility.logging.Logger; 70 import com.sun.jdo.spi.persistence.utility.I18NHelper; 71 import com.sun.jdo.spi.persistence.utility.database.DatabaseConstants; 72 74 79 public class DeploymentEventListenerImpl 80 implements DeploymentEventListener, DatabaseConstants { 81 82 83 private final static ResourceBundle messages = I18NHelper.loadBundle( 84 "com.sun.jdo.spi.persistence.support.ejb.ejbc.Bundle", DeploymentEventListenerImpl.class.getClassLoader()); 86 87 88 private static Logger logger = LogHelperSQLStore.getLogger(); 89 90 93 static { 94 DeploymentEventManager.addListener (new DeploymentEventListenerImpl()); 95 } 96 97 98 DeploymentEventListenerImpl() { } 99 100 105 public void notifyDeploymentEvent(DeploymentEvent event) { 106 int type = event.getEventType(); 107 switch (type) { 108 case DeploymentEvent.POST_DEPLOY: 109 processEvent(event.getEventInfo(), true); 110 break; 111 case DeploymentEvent.PRE_UNDEPLOY: 112 processEvent(event.getEventInfo(), false); 113 break; 114 default: 115 break; 116 } 117 } 118 119 123 private void processEvent(DeploymentEventInfo info, boolean deploy) { 124 String cliCreateTables = null; 126 String cliDropAndCreateTables = null; 127 String cliDropTables = null; 128 129 DeploymentRequest request = info.getDeploymentRequest(); 130 Properties cliOverrides = request.getOptionalArguments(); 131 if (deploy) { 132 cliDropAndCreateTables = cliOverrides.getProperty( 133 Constants.CMP_DROP_AND_CREATE_TABLES, Constants.UNDEFINED); 134 135 cliCreateTables = cliOverrides.getProperty( 136 Constants.CMP_CREATE_TABLES, Constants.UNDEFINED); 137 138 if (cliCreateTables.equals(Constants.UNDEFINED)) { 139 cliCreateTables = cliDropAndCreateTables; 141 } 142 } else { 143 cliDropTables = cliOverrides.getProperty( 144 Constants.CMP_DROP_TABLES, Constants.UNDEFINED); 145 } 146 147 Application application = info.getApplicationDescriptor(); 148 if ( application == null) { 149 return; 150 } 151 152 processApplication(request, info, deploy, cliCreateTables, 153 cliDropAndCreateTables, cliDropTables); 154 } 156 167 private void processApplication(DeploymentRequest request, 168 DeploymentEventInfo info, boolean deploy, 169 String cliCreateTables, String cliDropAndCreateTables, 170 String cliDropTables) { 171 boolean debug = logger.isLoggable(logger.FINE); 172 boolean redeploy = isRedeploy(deploy, request); 173 174 if (debug) { 175 logger.fine("ejb.DeploymentEventListenerImpl.processingevent", ((deploy)? ((redeploy)? "redeploy" : "deploy") : "undeploy"), info.getApplicationDescriptor().getRegistrationName()); 178 } 179 180 DeploymentStatus status = request.getCurrentDeploymentStatus(); 182 status.setStageStatus(DeploymentStatus.SUCCESS); 183 status.setStageStatusMessage(""); 184 185 BaseProcessor processor = 186 new CMPProcessor(info, deploy, redeploy, cliCreateTables, 187 cliDropAndCreateTables, cliDropTables); 188 processor.processApplication(); 189 190 processor = 191 new PersistenceProcessor(info, deploy, redeploy, cliCreateTables, 192 cliDropAndCreateTables, cliDropTables); 193 processor.processApplication(); 194 } 195 196 203 private boolean isRedeploy(boolean deploy, DeploymentRequest request) { 204 boolean redeploy = deploy; 205 try { 206 if (request != null) { 207 redeploy = request.isReDeploy(); 208 } 209 } catch (IASDeploymentException e) { 210 } 212 return redeploy; 213 } 214 215 } | Popular Tags |