Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.jst.j2ee.core/j2ee-validation/org/eclipse/jst/j2ee/model/internal/validation/ABeanClassVRule.java')
-rw-r--r--plugins/org.eclipse.jst.j2ee.core/j2ee-validation/org/eclipse/jst/j2ee/model/internal/validation/ABeanClassVRule.java506
1 files changed, 0 insertions, 506 deletions
diff --git a/plugins/org.eclipse.jst.j2ee.core/j2ee-validation/org/eclipse/jst/j2ee/model/internal/validation/ABeanClassVRule.java b/plugins/org.eclipse.jst.j2ee.core/j2ee-validation/org/eclipse/jst/j2ee/model/internal/validation/ABeanClassVRule.java
deleted file mode 100644
index c09dbaa9f..000000000
--- a/plugins/org.eclipse.jst.j2ee.core/j2ee-validation/org/eclipse/jst/j2ee/model/internal/validation/ABeanClassVRule.java
+++ /dev/null
@@ -1,506 +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.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jem.java.Field;
-import org.eclipse.jem.java.JavaClass;
-import org.eclipse.jem.java.JavaHelpers;
-import org.eclipse.jem.java.Method;
-import org.eclipse.jst.j2ee.ejb.EnterpriseBean;
-import org.eclipse.wst.validation.internal.core.ValidationException;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-
-
-/**
- * @version 1.0
- * @author
- */
-public abstract class ABeanClassVRule extends ATypeVRule implements IEJBType {
- protected final static long[] BASE_TYPES = new long[]{ITypeConstants.JAVA_LANG_OBJECT};
- protected final static int MESSAGE_REMOTE_EXCEPTION_SEVERITY = IEJBValidationContext.WARNING; // Deprecated use of RemoteException.
-
- public long[] getBaseTypes() {
- return BASE_TYPES;
- }
-
- public Object getTarget(Object parent, Object clazz) {
- if(parent == null) {
- return null;
- }
-
- return ((EnterpriseBean)parent).getEjbClass();
- }
-
- public long getDefaultMethodType() {
- return HELPER;
- }
-
- public void validate(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz) throws ValidationCancelledException, InvalidInputException, ValidationException {
- if(!followAbstractRules(clazz)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IEJBValidatorMessageConstants.CHKJ2014, IEJBValidationContext.WARNING, bean, clazz, this);
- vc.addMessage(message);
- }
-
- if(!followPublicRules(clazz)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IEJBValidatorMessageConstants.CHKJ2022, IEJBValidationContext.WARNING, bean, clazz, this);
- vc.addMessage(message);
- }
-
- if(!followFinalRules(clazz)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IEJBValidatorMessageConstants.CHKJ2015, IEJBValidationContext.WARNING, bean, clazz, this);
- vc.addMessage(message);
- }
-
- validateAppendixB(vc, bean, clazz);
- }
-
- public final static List getRemoteHomeMethodsExtended(List[] methodsExtendedList) {
- return methodsExtendedList[0];
- }
-
- public final static List getLocalHomeMethodsExtended(List[] methodsExtendedList) {
- return methodsExtendedList[1];
- }
-
- public final static List getRemoteComponentMethodsExtended(List[] methodsExtendedList) {
- return methodsExtendedList[2];
- }
-
- public final static List getLocalComponentMethodsExtended(List[] methodsExtendedList) {
- return methodsExtendedList[3];
- }
-
- public final static List getBeanClassMethodsExtended(List[] methodsExtendedList) {
- return methodsExtendedList[4];
- }
-
- public final List[] getMethodsExtended(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz) {
- // A bean class needs the following classes' extended methods:
- // 1. remote home
- // 2. local home
- // 3. remote component
- // 4. local component
- // 5. bean class (when searching for a matching ejbPostCreate method).
- // If a particular bean doesn't use a remote view or local view,
- // then the corresponding entry in the array will be null.
- List[] result = new List[5];
- JavaClass remoteHome = bean.getHomeInterface();
- if(remoteHome != null) {
- result[0] = remoteHome.getMethodsExtended();
- }
- else {
- result[0] = null;
- }
-
- JavaClass localHome = bean.getLocalHomeInterface();
- if(localHome != null) {
- result[1] = localHome.getMethodsExtended();
- }
- else {
- result[1] = null;
- }
-
- JavaClass remoteComponent = bean.getRemoteInterface();
- if(remoteComponent != null) {
- result[2] = remoteComponent.getMethodsExtended();
- }
- else {
- result[2] = null;
- }
-
- JavaClass localComponent = bean.getLocalInterface();
- if(localComponent != null) {
- result[3] = localComponent.getMethodsExtended();
- }
- else {
- result[3] = null;
- }
-
- JavaClass beanClass = bean.getEjbClass();
- if(beanClass != null) {
- result[4] = beanClass.getMethodsExtended();
- }
- else {
- result[4] = null;
- }
-
- return result;
- }
-
- public final List[] getFieldsExtended(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz) {
- // Never check that a bean class' field is defined on another class
- // of the bean.
- return null;
- }
-
- protected abstract boolean shouldBeFinal(JavaClass clazz);
- protected abstract boolean shouldBePublic(JavaClass clazz);
- protected abstract boolean shouldBeAbstract(JavaClass clazz);
- protected abstract boolean shouldValidateTransientField();
- protected abstract JavaHelpers getEjbCreateReturnType(EnterpriseBean bean, Method method) throws InvalidInputException;
- protected abstract String getEjbCreateReturnTypeName(EnterpriseBean bean, Method method) throws InvalidInputException;
- public abstract String getMatchingHomeMethodName(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method, List[] methodsExtendedList);
-
- public String getMatchingEjbHomeMethodName(IEJBValidationContext vc, Method method) {
- // Section number stating this name convention?
- String methodName = method.getName();
- // Strip the "ejbHome" off, strip off the next character, and replace that character with a lowercase version of that character
- StringBuffer buffer = new StringBuffer(Character.toLowerCase(methodName.charAt(0)));
- buffer.append(method.getName().substring(8));
- return buffer.toString();
- }
-
- public String getMatchingEjbCreateMethodName(IEJBValidationContext vc, Method method) {
- StringBuffer buffer = new StringBuffer(IMethodAndFieldConstants.PREFIX_C);
- // Strip the "ejbC" off of "create" and replace with "c"
- buffer.append(method.getName().substring(4));
- return buffer.toString();
- }
-
- public String getMatchingEjbPostCreateMethodName(IEJBValidationContext vc, Method method) {
- StringBuffer buffer = new StringBuffer(IMethodAndFieldConstants.PREFIX_C);
- // Strip the "ejbPostC" off of "create" and replace with "c"
- buffer.append(method.getName().substring(8));
- return buffer.toString();
- }
-
-
-
- public String getMatchingEjbFindMethodName(IEJBValidationContext vc, Method method) {
- StringBuffer buffer = new StringBuffer(IMethodAndFieldConstants.PREFIX_F);
- // Strip the "ejbF" off of "ejbFind" and replace with "f"
- buffer.append(method.getName().substring(4));
- return buffer.toString();
- }
-
- public String getMatchingBusinessMethodName(IEJBValidationContext vc, Method method) {
- return method.getName();
- }
-
- /*
- * The given method is not supposed to have a matching method.
- */
- public String getNoMatchingMethodName(IEJBValidationContext vc, Method method) {
- return null; // not supposed to have a matching method
- }
-
- public final boolean followFinalRules(JavaClass clazz) {
- if(shouldBeFinal(clazz)) {
- return clazz.isFinal();
- }
- return !clazz.isFinal();
- }
-
- public final boolean followPublicRules(JavaClass clazz) {
- if(shouldBePublic(clazz)) {
- return clazz.isPublic();
- }
- return !clazz.isPublic();
- }
-
- public final boolean followAbstractRules(JavaClass clazz) {
- if(shouldBeAbstract(clazz)) {
- return clazz.isAbstract();
- }
- return !clazz.isAbstract();
- }
-
-
- public void validateEjbCreateMethod(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method, List[] methodsExtendedLists) throws ValidationCancelledException, InvalidInputException, ValidationException {
- if(!ValidationRuleUtility.isPublic(method)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2421, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- if(method.isFinal()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2422, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- if(method.isStatic()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2423, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- JavaHelpers retType = getEjbCreateReturnType(bean, method);
- if((retType == null) || (!ValidationRuleUtility.isAssignableFrom(method.getReturnType(), retType))) {
- String retTypeName = (retType == null) ? getEjbCreateReturnTypeName(bean, method) : retType.getJavaName();
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2424, IEJBValidationContext.WARNING, bean, clazz, method, new String[]{retTypeName}, this);
- vc.addMessage(message);
- }
-
- validateRMI_IIOPTypeRules(vc, bean, clazz, method, methodsExtendedLists, true);
-
- if(validateEjbCreateMethodExceptions()) {
- if(!followRemoteExceptionRules(bean, method)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2503_ejbCreate, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
- }
- }
-
- public boolean validateEjbCreateMethodExceptions() {
- return true;
- }
-
- public void validateEjbPostCreateMethod(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method) throws ValidationCancelledException, InvalidInputException, ValidationException {
- if(!ValidationRuleUtility.isPublic(method)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2426, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- if(method.isFinal()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2427, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- if(method.isStatic()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2428, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- if(!method.isVoid()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2505_ejbPostCreate, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- if(!followRemoteExceptionRules(bean, method)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2503_ejbPostCreate, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
- }
-
- public final void validateEjbHomeMethod(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method, List[] methodsExtendedLists) throws ValidationCancelledException, InvalidInputException, ValidationException {
- if(!ValidationRuleUtility.isPublic(method)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2431, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- if(method.isStatic()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2439, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- validateRMI_IIOPTypeRules(vc, bean, clazz, method, methodsExtendedLists, true);
-
- if(!followRemoteExceptionRules(bean, method)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2503_ejbHome, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- // "ejbHome" is 7 characters
- // method will follow the convention, "ejbHome" + Char.toUpper(0) + substring(1), so reverse that convention here
- StringBuffer buffer = new StringBuffer();
- buffer.append(Character.toLowerCase(method.getName().charAt(7))); // put the character back into lower-case
- buffer.append(method.getName().substring(8)); // substring starts at the character following "ejbHome" and the first character -- substring is 0 indexed
- String methodToMatchName = buffer.toString();
-
- Method matchingRemoteHomeMethod = ValidationRuleUtility.getMethod(method, methodToMatchName, getRemoteHomeMethodsExtended(methodsExtendedLists));
- if(matchingRemoteHomeMethod != null) {
- return;
- }
-
- Method matchingLocalHomeMethod = ValidationRuleUtility.getMethod(method, methodToMatchName, getLocalHomeMethodsExtended(methodsExtendedLists));
- if(matchingLocalHomeMethod != null) {
- return;
- }
-
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2430, IEJBValidationContext.INFO, bean, clazz, method, new String[]{methodToMatchName}, this);
- vc.addMessage(message);
- }
-
- public final void validateBusinessMethod(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method, List[] methodsExtendedLists) throws ValidationCancelledException, InvalidInputException, ValidationException {
- // IWAD4048 = Business methods must not start with "ejb". Read section 7.10.4 of the EJB 2.0 specification.
- // IWAD4201 = This method name must not start with "ejb". Read section 10.6.8 of the EJB 2.0 specification.
- // IWAD4317 = The method name must not start with "ejb". Read section 12.2.7 of the EJB 2.0 specification.
- if(method.getName().startsWith(IMethodAndFieldConstants.PREFIX_EJB)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IEJBValidatorMessageConstants.CHKJ2411, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- // IWAD4049 = This method must be public. Read section 7.10.4 of the EJB 2.0 specification.
- // IWAD4202 = This method must be public. Read section 10.6.8 of the EJB 2.0 specification.
- // IWAD4318 = The method must be public. Read section 12.2.7 of the EJB 2.0 specification.
- if(!ValidationRuleUtility.isPublic(method)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2441, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- // IWAD4050 = This method must not be final. Read section 7.10.4 of the EJB 2.0 specification.
- // IWAD4203 = This method must not be final. Read section 10.6.8 of the EJB 2.0 specification.
- // IWAD4319 = The method must not be final. Read section 12.2.7 of the EJB 2.0 specification.
- if(method.isFinal()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2442, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- // IWAD4051 = This method must not be static. Read section 7.10.4 of the EJB 2.0 specification.
- // IWAD4204 = This method must not be static. Read section 10.6.8 of the EJB 2.0 specification.
- // IWAD4320 = The method must not be static. Read section 12.2.7 of the EJB 2.0 specification.
- if(method.isStatic()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2443, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- // IWAD4052 = {0} must be a legal RMI-IIOP type. Read section 7.10.4 of the EJB 2.0 specification.
- // IWAD4205 = {0} must be a legal RMI-IIOP type. Read section 10.6.8 of the EJB 2.0 specification.
- // IWAD4321 = {0} must be a legal type for RMI-IIOP. Read section 12.2.7 of the EJB 2.0 specification.
- validateRMI_IIOPTypeRules(vc, bean, clazz, method, methodsExtendedLists, true);
-
- // IWAD4053 = This method cannot throw java.rmi.RemoteException. Read section 7.10.4, 18.3.8, 18.6 of the EJB 2.0 specification.
- // IWAD4206 = This method must not throw java.rmi.RemoteException. Read section 10.6.8, 18.3.8, 18.6 of the EJB 2.0 specification.
- // IWAD4322 = This method must not throw java.rmi.RemoteException. Read section 12.2.7, 18.3.8, 18.6 of the EJB 2.0 specification.
- if(!followRemoteExceptionRules(bean, method)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2503_bus, getMessageRemoteExceptionSeverity(), bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- validateMatchingComponentMethod(vc, bean, clazz, method, methodsExtendedLists);
- }
-
- public void validateEjbRemoveMethod(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method) throws ValidationCancelledException, InvalidInputException, ValidationException {
- // IWAD4402 = This method must be public. Read section 15.7.5 of the EJB 2.0 specification.
- if(!ValidationRuleUtility.isPublic(method)) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2492, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- // IWAD4403 = This method must not be final. Read section 15.7.5 of the EJB 2.0 specification.
- if(method.isFinal()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2493, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- // IWAD4404 = This method must not be static. Read section 15.7.5 of the EJB 2.0 specification.
- if(method.isStatic()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2494, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
-
- // IWAD4405 = This method must return void. Read section 15.7.5 of the EJB 2.0 specification.
- if(!method.isVoid()) {
- IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb20Constants.CHKJ2505_ejbRemove, IEJBValidationContext.WARNING, bean, clazz, method, this);
- vc.addMessage(message);
- }
- }
-
- /*
- * @see IClassVRule#validate(IEJBValidationContext, JavaClass, Field)
- */
- public void validate(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Field field, List[] fieldExtendedLists) throws ValidationCancelledException, InvalidInputException, ValidationException {
- // IWAD4024 = A transient field should not be the {0} type. Read section 7.4.1 of the EJB 2.0 specification.
- // IWAD4025 = Transient fields are discouraged. Read section 7.4.1 of the EJB 2.0 specification.
- // IWAD4115 = {0} must not be defined in this class. Read section 10.3.1 of the EJB 2.0 specification.
- // IWAD4259 = <cmp-field> field must be the {0} type. Read section 11.2.1 of the EJB 2.0 specification.
- // IWAD4260 = <cmr-field> field must be the {0} type. Read section 11.2.1 of the EJB 2.0 specification.
- if(shouldValidateTransientField()) {
- validateTransientField(vc, bean, clazz, field);
- }
- }
-
- public void validateTransientField(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Field field) throws ValidationCancelledException, InvalidInputException, ValidationException {
- // By default do nothing
- }
-
- public long getFieldType(EnterpriseBean bean, JavaClass clazz, Field field) {
- if(field == null) {
- return EXCLUDED_FIELD;
- }
- else if(field.getName().equals(IMethodAndFieldConstants.FIELDNAME_SERIALVERSIONUID)) {
- return SERIALVERSIONUID;
- }
- else {
- return OTHER_FIELD;
- }
- }
-
- public void validateMatchingMethodExceptions(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method, JavaClass matchingClazz, Method matchingMethod) {
- // Every exception thrown on the bean class' method must be thrown on the component/home method
- /* Don't check for this here - let the home & component do it.
- Set exceptions = ValidationRuleUtility.getNotSubsetExceptions(bean, method, matchingMethod);
- Iterator eiterator = exceptions.iterator();
- while(eiterator.hasNext()) {
- }
- */
-
- // Every exception thrown by the component/home method should be thrown or there may be compile errors
- Set exceptions = ValidationRuleUtility.getNotSubsetSubtypeExceptions(bean, matchingMethod, method);
- Iterator eiterator = exceptions.iterator();
- while(eiterator.hasNext()) {
- JavaClass exception = (JavaClass)eiterator.next();
- IMessage message = MessageUtility.getUtility().getMessage(vc, IEJBValidatorMessageConstants.CHKJ2456, IEJBValidationContext.WARNING, bean, clazz, method, new String[]{exception.getJavaName(), matchingClazz.getJavaName()}, this);
- vc.addMessage(message);
- }
- }
-
- public final void validateMatchingHomeMethod(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method, List[] methodsExtendedLists) {
- Method remoteMethod = ValidationRuleUtility.getMethod(method, getMatchingHomeMethodName(vc, bean, clazz, method, methodsExtendedLists), getRemoteHomeMethodsExtended(methodsExtendedLists));
- if(remoteMethod != null) {
- validateMatchingMethodExceptions(vc, bean, clazz, method, bean.getHomeInterface(), remoteMethod);
- }
-
- Method localMethod = ValidationRuleUtility.getMethod(method, getMatchingHomeMethodName(vc, bean, clazz, method, methodsExtendedLists), getLocalHomeMethodsExtended(methodsExtendedLists));
- if(localMethod != null) {
- validateMatchingMethodExceptions(vc, bean, clazz, method, bean.getLocalHomeInterface(), localMethod);
- }
- }
-
- public final void validateMatchingComponentMethod(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method, List[] methodsExtendedLists) {
- Method remoteMethod = ValidationRuleUtility.getMethod(method, method.getName(), getRemoteComponentMethodsExtended(methodsExtendedLists));
- if(remoteMethod != null) {
- validateMatchingMethodExceptions(vc, bean, clazz, method, bean.getRemoteInterface(), remoteMethod);
- }
-
- Method localMethod = ValidationRuleUtility.getMethod(method, method.getName(), getLocalComponentMethodsExtended(methodsExtendedLists));
- if(localMethod != null) {
- validateMatchingMethodExceptions(vc, bean, clazz, method, bean.getLocalInterface(), localMethod);
- }
- }
-
- protected void validateAppendixB(IEJBValidationContext vc, EnterpriseBean bean, JavaClass thisEjbObject) {
- // The Java inheritance structure must match the EJB inheritance structure.
- // e.g. if EJB B is a child of EJB A, then class B must be a child of class A.
- // B could be a grandchild (or great-grandchild or ...) of A.
- if(bean == null) {
- return;
- }
- EnterpriseBean supertype = getSuperType(bean);
- JavaClass parentEjbObject = null;
- if (supertype != null) {
- parentEjbObject = supertype.getEjbClass();
-
- // EJBObject a Xchild of parent EJBObject (X = child, grandchild, great-grandchild, etc.)
- try {
- ValidationRuleUtility.isValidType(thisEjbObject);
- ValidationRuleUtility.isValidType(parentEjbObject);
- if (!ValidationRuleUtility.isAssignableFrom(thisEjbObject, parentEjbObject)) {
- String[] msgParm = new String[] { thisEjbObject.getQualifiedName(), parentEjbObject.getQualifiedName()};
- IMessage message = MessageUtility.getUtility().getMessage(vc, IEJBValidatorMessageConstants.CHKJ2103, IEJBValidationContext.ERROR, bean, thisEjbObject, msgParm, this);
- vc.addMessage(message);
- }
- }
- catch (InvalidInputException e) {
- String[] msgParm = { e.getJavaClass().getQualifiedName(), bean.getName()};
- IMessage message = MessageUtility.getUtility().getMessage(vc, IEJBValidatorMessageConstants.CHKJ2849, IEJBValidationContext.WARNING, bean, msgParm, this);
- vc.addMessage(message);
- }
- }
- }
-
- public final boolean followRemoteExceptionRules(EnterpriseBean bean, Method method) throws InvalidInputException, ValidationCancelledException {
- // must not throw RemoteException
- return ValidationRuleUtility.doesNotThrowRemoteException(bean, method);
- }
-}

Back to the top