Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.jst.j2ee.core/j2ee-validation/org/eclipse/jst/j2ee/model/internal/validation/EJBValidator.java')
-rw-r--r--plugins/org.eclipse.jst.j2ee.core/j2ee-validation/org/eclipse/jst/j2ee/model/internal/validation/EJBValidator.java520
1 files changed, 0 insertions, 520 deletions
diff --git a/plugins/org.eclipse.jst.j2ee.core/j2ee-validation/org/eclipse/jst/j2ee/model/internal/validation/EJBValidator.java b/plugins/org.eclipse.jst.j2ee.core/j2ee-validation/org/eclipse/jst/j2ee/model/internal/validation/EJBValidator.java
deleted file mode 100644
index 058e987f5..000000000
--- a/plugins/org.eclipse.jst.j2ee.core/j2ee-validation/org/eclipse/jst/j2ee/model/internal/validation/EJBValidator.java
+++ /dev/null
@@ -1,520 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.j2ee.model.internal.validation;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.jem.java.JavaClass;
-import org.eclipse.jem.util.logger.LogEntry;
-import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.jst.j2ee.ejb.EJBJar;
-import org.eclipse.jst.j2ee.ejb.EnterpriseBean;
-import org.eclipse.jst.j2ee.ejb.Entity;
-import org.eclipse.jst.j2ee.internal.J2EEConstants;
-import org.eclipse.wst.validation.internal.core.ValidationException;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
-
-/**
- * @version 1.0
- * @author
- */
-public class EJBValidator extends AbstractEJBValidator {
- private static EJBValidator _inst = null;
- private static TargetObjectPool _targetObjectPoolSingleton = null;
- private LogEntry logEntry = null;
-
-
- public EJBValidator() {
- _inst = this;
- }
-
- public static EJBValidator getValidator() {
- return _inst;
- }
-
- private LogEntry getLogEntry(){
- if(logEntry == null)
- logEntry = new LogEntry(IEJBValidatorConstants.BUNDLE_NAME);
- return logEntry;
- }
-
- public String getBaseName() {
- return "ejbvalidator"; //$NON-NLS-1$
- }
-
- public void commonValidate(IValidationContext helper, IReporter reporter) throws ValidationException {
- long start = System.currentTimeMillis();
- Logger logger = Logger.getLogger(IEJBValidatorConstants.J2EE_CORE_PLUGIN);
- if (logger != null && logger.isLoggingLevel(Level.FINER)) {
- long end = System.currentTimeMillis();
- LogEntry entry = getLogEntry();
- entry.setSourceID("EJBValidator::validate"); //$NON-NLS-1$
- entry.setText("validate took " + (end - start) + " milliseconds."); //$NON-NLS-1$ //$NON-NLS-2$
- logger.write(Level.FINER, entry);
- }
- try {
- EJBValidationContext vc = new EJBValidationContext(this, helper, reporter);
- setValidationContext(vc);
- if (isFullValidate(vc)) {
- fullValidate(vc);
- } else {
- incrementalValidate(vc);
- }
- if (logger != null && logger.isLoggingLevel(Level.FINER)) {
- long end = System.currentTimeMillis();
- LogEntry entry = getLogEntry();
- entry.setSourceID("EJBValidator::validate"); //$NON-NLS-1$
- entry.setText("validate took " + (end - start) + " milliseconds."); //$NON-NLS-1$ //$NON-NLS-2$
- logger.write(Level.FINER, entry);
- }
- } finally {
- if (ValidationRuleUtility.helperMap != null) {
- ValidationRuleUtility.helperMap.clear();
- ValidationRuleUtility.helperMap = null;
- }
- }
- }
-
-
- public void validate(IValidationContext helper, IReporter reporter) throws ValidationException {
- commonValidate(helper, reporter);
- }
- /*
- * @see IValidator#validate(IValidationContext, IReporter, IFileDelta[])
- */
- public IStatus validateInJob(IValidationContext helper, IReporter reporter) throws ValidationException {
- commonValidate(helper, reporter);
- return status;
- }
-
- public boolean isFullValidate(IEJBValidationContext vc) {
- String[] fileURIs = vc.getURIs();
- if(fileURIs == null) {
- return true;
- }
- if(fileURIs.length == 0) {
- return true;
- }
-
- for(int i=0; i<fileURIs.length; i++) {
- String uri = fileURIs[i];
- if(uri.endsWith(J2EEConstants.EJBJAR_DD_SHORT_NAME)) {
- return true;
- }
- }
-
- return false;
- }
-
- public void runDependents(IEJBValidationContext vc, IValidationRule rule, Object targetParent, Object target) throws ValidationException {
- // If a class is being run only because it depends on a rule which has changed,
- // i.e., it's a dependent, then we don't want to run its dependents because the
- // class itself hasn't changed.
- Set dependents = rule.getDependents();
- if(dependents == null) {
- return;
- }
-
- Iterator iterator = dependents.iterator();
- while(iterator.hasNext()) {
- try {
- IValidationRule dRule = (IValidationRule)iterator.next();
- Object dRuleTarget = dRule.getTarget(targetParent, target);
- if(dRuleTarget != null) {
- run(dRule, targetParent, dRuleTarget); // false=not full validation
- }
- }
- catch(ValidationCancelledException e) {
- throw e;
- }
- catch(ValidationException e) {
- throw e;
- }
- catch(Throwable exc) {
- addInternalErrorMessage(getValidationContext(), exc);
- }
- finally {
- EJBValidationRuleFactory.getFactory().release(rule);
- }
- }
- }
-
- protected String internalErrorMessage() {
- return IEJBValidatorMessageConstants.CHKJ2900;
- }
-
-
-
- protected void logMissingRule(IEJBValidationContext vc, Object ruleId) {
- Logger logger = vc.getMsgLogger();
- if (logger != null && logger.isLoggingLevel(Level.SEVERE)) {
- logger.write(Level.SEVERE, ruleId + " = null"); //$NON-NLS-1$
- }
- addInternalErrorMessage(vc);
- }
-
- protected void preRemoveOldMessages(IEJBValidationContext vc, Map targets) throws ValidationException {
- List validatedClasses = new ArrayList();
-
- try {
- String[] uris = vc.getURIs();
- for(int i=0; i<uris.length; i++) {
- String uriInst = uris[i];
- if((uriInst == null) || (uriInst.length() == 0)) {
- continue;
- }
-
- Object id = EJBValidationRuleFactory.getFactory().getRuleId(vc, uriInst);
- if(id == null) {
- Object[] clazzAndBean = (Object[])vc.loadModel(uriInst, null); // Don't need a second parameter, but can't cast a RefObject to an Object[], so use the second load method.
- if(clazzAndBean == null) {
- // Log, add "Cannot validate" to task list, and return.
- logMissingRule(vc, id);
- continue;
- }
-
- // In the clazzAndBean object array, the first entry is the JavaClass,
- // and the rest of the entries are the EnterpriseBean instances which
- // use the JavaClass.
- JavaClass clazz = (JavaClass)clazzAndBean[0];
- List beans = (List)clazzAndBean[1];
-
- // The validatedClass set keeps track of JavaClasses
- // that have changed, and this set is used to determine
- // whose children need to be found and validated.
- // Validation is performed after all of the changed files
- // are validated so that all of the children of all of
- // the changed files can be searched for at once. Searching
- // once on a group produces performance savings because
- // the type hierarchy method takes a non-trivial amount
- // of time when there's a large group of deltas.
- validatedClasses.add(clazz);
-
- if((beans == null) || (beans.size() == 0)) {
- // The JavaClass itself is not part of an enterprise bean, but one of its children may be.
- }
- else {
- Iterator iterator = beans.iterator();
- while(iterator.hasNext()) {
- EnterpriseBean bean = (EnterpriseBean)iterator.next();
- id = EJBValidationRuleFactory.getFactory().getRuleId(vc, clazz, bean);
-
- IValidationRule clazzRule = EJBValidationRuleFactory.getFactory().getRule(vc, id);
- if(clazzRule == null) {
- // This has already been logged by the AbstractEJBValidationRuleFactory (if it's
- // an error - this is expected if the key is a primitive primary key).
- continue;
- }
-
- setValidated(clazzRule.getId(), bean, clazz);
- }
- }
-
- }
- else {
- EJBJar ejbJar = (EJBJar)vc.loadModel(EJBValidatorModelEnum.EJB_MODEL);
- if(ejbJar == null) {
- // Log, add "Cannot validate" to task list, and return.
- continue;
- }
-
- IValidationRule ejbExtRule = EJBValidationRuleFactory.getFactory().getRule(vc, id);
- if(ejbExtRule == null) {
- // This has already been logged by the AbstractEJBValidationRuleFactory, so just
- // need to add "Cannot validate" to the task list.
- continue;
- }
-
- setValidated(ejbExtRule.getId(), null, ejbJar);
- }
- } // end for
-
- // Always validate ejb-jar.xml, because a change to one of the files it references
- // may mean that it needs to be revalidated.
- EJBJar ejbJar = (EJBJar)vc.loadModel(EJBValidatorModelEnum.EJB_MODEL);
- if(ejbJar != null) {
- Object id = EJBValidationRuleFactory.getFactory().getRuleId(vc, J2EEConstants.EJBJAR_DD_SHORT_NAME);
- if(id == null) {
- // Log, add "Cannot validate" to task list, and return.
- logMissingRule(vc, id);
- }
- else {
- IValidationRule ejbJarRule = EJBValidationRuleFactory.getFactory().getRule(vc, id);
- if(ejbJarRule == null) {
- logMissingRule(vc, id);
- }
- setValidated(ejbJarRule.getId(), null, ejbJar);
- }
- }
-
- if(validatedClasses.size() > 0) {
- // Check the children of the changed classes.
- // This check must be done before the dependents, because
- // the dependents of the children classes must be checked
- // as well.
-
- // Class never validated before, so check its children
- for (int vC = 0; vC<validatedClasses.size(); vC++) {
- List beans = (List)vc.loadModel(EJBValidatorModelEnum.EJB, new Object[]{validatedClasses.get(vC)});
- if((beans == null) || (beans.size() == 0)) {
- // The class is not a member of an enterprise bean.
- continue;
- }
- Set rootValidatedClass = new HashSet();
- rootValidatedClass.add(validatedClasses.get(vC));
- JavaClass[] children = (JavaClass[])vc.loadModel(EJBValidatorModelEnum.CHILDREN, new Object[]{vc.getReporter(), rootValidatedClass});
- if((children != null) && (children.length > 0)) {
- Iterator bciterator = null;
- Object id = null;
- for(int c=0; c<children.length; c++) {
- JavaClass child = children[c];
- beans = (List)vc.loadModel(EJBValidatorModelEnum.EJB, new Object[]{child});
- // The child is not a member of an enterprise bean.
- if((beans == null) || (beans.size() == 0))
- continue;
- bciterator = beans.iterator();
- while(bciterator.hasNext()) {
- EnterpriseBean bean = (EnterpriseBean)bciterator.next();
- id = EJBValidationRuleFactory.getFactory().getRuleId(vc, child, bean);
- IValidationRule clazzRule = EJBValidationRuleFactory.getFactory().getRule(vc, id);
- // This has already been logged by the AbstractEJBValidationRuleFactory, so just need to add "Cannot validate" to the task list.
- if(clazzRule == null)
- continue;
- setValidated(clazzRule.getId(), bean, child);
- }
- }
- }
- }
- validatedClasses.clear(); // Don't need this cache any more; free the memory.
- }
-
- // Now, validate the dependents.
- targets.putAll(_validated);
- Iterator iterator = targets.keySet().iterator();
- while(iterator.hasNext()) {
- Object id = iterator.next();
- IValidationRule rule = EJBValidationRuleFactory.getFactory().getRule(vc, id);
- if(rule == null) {
- continue;
- }
-
- Set contexts = (Set)targets.get(id);
- if(contexts == null) {
- continue;
- }
-
- Iterator cIterator = contexts.iterator();
- while(cIterator.hasNext()) {
- TargetObject to = (TargetObject)cIterator.next();
- Object targetParent = to.getTargetParent();
- Object target = to.getTarget();
- Set dependents = rule.getDependents();
- if(dependents == null) {
- continue;
- }
-
- Iterator dIterator = dependents.iterator();
- while(dIterator.hasNext()) {
- try {
- IValidationRule dRule = (IValidationRule)dIterator.next();
- Object dRuleTarget = dRule.getTarget(targetParent, target);
- if(dRuleTarget != null) {
- setValidated(dRule.getId(), targetParent, dRuleTarget);
- }
- }
- catch(ValidationCancelledException e) {
- throw e;
- }
- catch(Throwable exc) {
- addInternalErrorMessage(getValidationContext(), exc);
- }
- finally {
- EJBValidationRuleFactory.getFactory().release(rule);
- }
- }
- }
- }
- }
- finally {
- // No matter what, clear the temporary caches.
- targets.clear();
- validatedClasses.clear();
-
- // Now put the "validated" results in "done", because they weren't
- // really validated; it was just a tracking mechanism.
- targets.putAll(_validated);
- _validated.clear(); // Clear the "validated" cache because the targets weren't really validated; they were just tracked.
- }
- }
-
- protected String removeOldMessagesString() {
- return EJBValidatorModelEnum.REMOVE_OLD_MESSAGES;
- }
-
- public void fullValidate(IEJBValidationContext vc) throws ValidationException {
- removeOldMessages(vc,null); // null == no IFileDelta, null = don't track targets
-
-
- EJBJar ejbJar = (EJBJar)vc.loadModel(EJBValidatorModelEnum.EJB_MODEL);
- if(ejbJar == null) {
- // Log, add "Cannot validate" to task list, and return.
- // EJBProjectResources will already have logged the problem.
-
- IMessage mssg = vc.getMessage();
- mssg.setId(IEJBValidatorMessageConstants.CHKJ2905);
- vc.addMessage(mssg);
- return;
- }
-
- Object id = EJBValidationRuleFactory.getFactory().getRuleId(vc, J2EEConstants.EJBJAR_DD_SHORT_NAME);
- if(id == null) {
- // Log, add "Cannot validate" to task list, and return.
- logMissingRule(vc, J2EEConstants.EJBJAR_DD_SHORT_NAME);
- return;
- }
- IValidationRule ejbJarRule = EJBValidationRuleFactory.getFactory().getRule(vc, id);
- if(ejbJarRule == null) {
- logMissingRule(vc, id);
- return;
- }
- run(ejbJarRule, null, ejbJar); // true= full validation
-
- List beans = ejbJar.getEnterpriseBeans();
- Iterator iterator = beans.iterator();
- id = null;
-
- while(iterator.hasNext()) {
- EnterpriseBean bean = (EnterpriseBean)iterator.next();
- JavaClass[] classes = getJavaClass(bean);
- for(int i=0; i<classes.length; i++) {
- JavaClass clazz = classes[i];
- id = EJBValidationRuleFactory.getFactory().getRuleId(vc, clazz, bean);
-
- IValidationRule clazzRule = EJBValidationRuleFactory.getFactory().getRule(vc, id);
- if(clazzRule == null) {
- // This has already been logged by the AbstractEJBValidationRuleFactory (if it's
- // an error - this is expected if the key is a primitive primary key).
- continue;
- }
-
- run(clazzRule, bean, clazz); // true = full validation
- }
- }
- }
-
- protected JavaClass[] getJavaClass(EnterpriseBean bean) {
- int count = 0;
- JavaClass[] classes = new JavaClass[6];
-
- JavaClass ejbClass = bean.getEjbClass();
- if((ejbClass != null) && (ejbClass.isExistingType())) {
- classes[count++] = ejbClass;
- }
-
- JavaClass remoteClass = bean.getRemoteInterface();
- if((remoteClass != null) && (remoteClass.isExistingType())) {
- classes[count++] = remoteClass;
- }
-
- JavaClass localClass = bean.getLocalInterface();
- if((localClass != null) && (localClass.isExistingType())) {
- classes[count++] = localClass;
- }
-
- JavaClass homeClass = bean.getHomeInterface();
- if((homeClass != null) && (homeClass.isExistingType())) {
- classes[count++] = homeClass;
- }
-
- JavaClass localHomeClass = bean.getLocalHomeInterface();
- if((localHomeClass != null) && (localHomeClass.isExistingType())) {
- classes[count++] = localHomeClass;
- }
-
- if(bean instanceof Entity) {
- JavaClass key = ((Entity)bean).getPrimaryKey();
- if((key != null) && (key.isExistingType())) {
- classes[count++] = key;
- }
- }
-
- if(count == 6) {
- return classes;
- }
-
- JavaClass[] result = new JavaClass[count];
- System.arraycopy(classes, 0, result, 0, count);
- return result;
- }
-
- public void incrementalValidate(IEJBValidationContext vc) throws ValidationException {
- Map targets = new HashMap();
- try {
- removeOldMessages(vc,targets);
-
- Iterator iterator = targets.keySet().iterator();
- while(iterator.hasNext()) {
- Object id = iterator.next();
- IValidationRule rule = EJBValidationRuleFactory.getFactory().getRule(vc, id);
- if(rule == null) {
- continue;
- }
-
- Set contexts = (Set)targets.get(id);
- if(contexts == null) {
- continue;
- }
-
- Iterator cIterator = contexts.iterator();
- while(cIterator.hasNext()) {
- TargetObject to = (TargetObject)cIterator.next();
- run(rule, to.getTargetParent(), to.getTarget());
- }
- }
- }
- finally {
- targets.clear();
- targets = null;
- }
- }
-
- protected TargetObjectPool getTargetObjectPool() {
- if(_targetObjectPoolSingleton == null) {
- _targetObjectPoolSingleton = new TargetObjectPool(100);
- }
- return _targetObjectPoolSingleton;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jst.j2ee.internal.model.validation.AbstractEJBValidator#releaseRules(org.eclipse.jst.j2ee.internal.model.validation.ejb.IValidationRule)
- */
- protected void releaseRules(IValidationRule rule) {
- EJBValidationRuleFactory.getFactory().release(rule);
-
- }
-
- public ISchedulingRule getSchedulingRule(IValidationContext helper) {
- // TODO Auto-generated method stub
- return null;
- }
-
-}

Back to the top