protected static String getReturnTypeName(Method getter) { if (getter == null) return null; JavaHelpers retType = getter.getReturnType(); return getTypeName(retType); }
public void validateMatchingReturnTypeMatches(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method homeMethod, Method beanMethod, List[] methodsExtendedMethod) { if(!ValidationRuleUtility.isAssignableFrom(homeMethod.getReturnType(), beanMethod.getReturnType())) { IMessage message = MessageUtility.getUtility().getMessage(vc, IEJBValidatorMessageConstants.CHKJ2402, IEJBValidationContext.ERROR, bean, clazz, homeMethod, new String[]{beanMethod.getReturnType().getJavaName()}, this); vc.addMessage(message); } }
protected boolean returnsComponentInterface(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method) throws ValidationCancelledException { JavaClass componentInterface = getComponentInterface(bean); return ValidationRuleUtility.isAssignableFrom(method.getReturnType(), componentInterface); }
/** * @see org.eclipse.wst.validation.internal.provisional.core.core.ejb.ejb20.rules.impl.AHomeVRule#returnsComponentInterfaceOrCollection(IEJBValidationContext, EnterpriseBean, JavaClass, Method) */ protected boolean returnsComponentInterfaceOrCollection(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method) throws ValidationCancelledException, InvalidInputException { if(returnsComponentInterface(vc, bean, clazz, method)) { return true; } JavaHelpers returnParm = method.getReturnType(); JavaHelpers javaUtilCollection = ValidationRuleUtility.getType(ITypeConstants.CLASSNAME_JAVA_UTIL_COLLECTION, bean); if(ValidationRuleUtility.isAssignableFrom(returnParm, javaUtilCollection)) { return true; } return false; }
public static final boolean followsObjectNotFoundExceptionRules(EnterpriseBean bean, Method method) throws InvalidInputException { JavaHelpers javaUtilEnumeration = ValidationRuleUtility.getType(ITypeConstants.CLASSNAME_JAVA_UTIL_ENUMERATION, bean); if(ValidationRuleUtility.isAssignableFrom(method.getReturnType(), javaUtilEnumeration)) { // Only single object finder and select methods may throw this exception return !ValidationRuleUtility.throwsObjectNotFoundException(bean, method); } JavaHelpers javaUtilCollection = ValidationRuleUtility.getType(ITypeConstants.CLASSNAME_JAVA_UTIL_COLLECTION, bean); if(ValidationRuleUtility.isAssignableFrom(method.getReturnType(), javaUtilCollection)) { // Only single object finder and select methods may throw this exception return !ValidationRuleUtility.throwsObjectNotFoundException(bean, method); } // It's a single finder/select method, so it can throw the exception, though it is not required to. return true; }
public org.eclipse.emf.ecore.EClassifier getAccessorType() { if (getEjbClass() != null) { Method getter = getEjbClass().getMethodExtended(getGetterName(), Collections.EMPTY_LIST); if (getter != null) return getter.getReturnType(); } return null; } public ContainerManagedEntity getCMPEntity() {
/** * Precondition: setter must take one parameter, and getter must return * a type, not void */ protected static boolean typesAgree(Method getter, Method setter) { if (getter == null || getter.isVoid() || setter == null) return false; JavaParameter[] parameters = setter.listParametersWithoutReturn(); if (parameters.length != 1) return false; JavaParameter param = parameters[0]; return param.getEType() != null && param.getEType() == getter.getReturnType(); }
public EClassifier get20Type() { EClassifier type = null; if (getEjbClass() != null) { String getterName = getGetterName(); if (getterName != null && getterName.length() > 0) { Method getter = getEjbClass().getMethodExtended(getterName, Collections.EMPTY_LIST); if (getter != null) type = getter.getReturnType(); } } if (type == null) type = getKeyFieldTypeFromKeyClass(); return type; } /**
/** * This method returns true if the given method returns the remote interface, * and false otherwise. */ public boolean isSingleObjectFinder(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method) throws InvalidInputException { vc.terminateIfCancelled(); if (method == null) { return false; } // The findByPrimaryKey method is always a single-object finder. JavaClass remoteIntf = bean.getRemoteInterface(); ValidationRuleUtility.isValidTypeHierarchy(bean, remoteIntf); if (!ValidationRuleUtility.isAssignableFrom(method.getReturnType(), remoteIntf)) { return false; } // The method is a single-object finder. return true; }
public static final boolean usesLocalTypes(EnterpriseBean bean, Method method) { if((bean == null) || (method == null)) { return false; } JavaParameter[] parms = method.listParametersWithoutReturn(); if(parms != null) { for(int i=0; i<parms.length; i++) { JavaParameter parm = parms[i]; if(isLocalType(bean, parm.getJavaType())) { return true; } } } // Now check the return type if(isLocalType(bean, method.getReturnType())) { return true; } return false; } }
protected boolean returnsComponentInterfaceOrCollection(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method) throws ValidationCancelledException, InvalidInputException { if(returnsComponentInterface(vc, bean, clazz, method)) { return true; } JavaHelpers returnParm = method.getReturnType(); JavaHelpers javaUtilEnumeration = ValidationRuleUtility.getType(ITypeConstants.CLASSNAME_JAVA_UTIL_ENUMERATION, bean); if(ValidationRuleUtility.isAssignableFrom(returnParm, javaUtilEnumeration)) { return true; } JavaHelpers javaUtilCollection = ValidationRuleUtility.getType(ITypeConstants.CLASSNAME_JAVA_UTIL_COLLECTION, bean); if(ValidationRuleUtility.isAssignableFrom(returnParm, javaUtilCollection)) { return true; } return false; }
/** * Verifies that a given method is RMI legal, but doesn't check the exceptions. * This means that the method's argument and return values must be of valid types * for RMI/IIOP. */ public final void validateLegalRMIMethodReturnType(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method) throws InvalidInputException { vc.terminateIfCancelled(); if (method == null) { return; } if (!ValidationRuleUtility.isLegalRMI_IIOPType(bean, method.getReturnType())) { IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb11Constants.CHKJ2412, IEJBValidationContext.INFO, bean, clazz, method, this); vc.addMessage(message); } }
if(isAssignableFromCollection(method.getReturnType(), bean)) { return true;
public final JavaHelpers getOverExposedLocalType(EnterpriseBean bean, JavaClass clazz, Method method) { if((isRemote() & IEJBType.REMOTE) == IEJBType.REMOTE) { // need to check that the method doesn't expose any of the local types of the bean JavaParameter[] parms = method.listParametersWithoutReturn(); if(parms != null) { for(int i=0; i<parms.length; i++) { JavaParameter parm = parms[i]; if(ValidationRuleUtility.isLocalType(bean, parm.getJavaType())) { return parm.getJavaType(); } } } // Now check the return type JavaHelpers parm = method.getReturnType(); if(ValidationRuleUtility.isLocalType(bean, parm)) { return parm; } return null; } return null; }
/** * EJB 1.1 specification * Section: 6.8, 6.10.6 and 9.2.8 */ protected void validateCreateMethod_remoteDep(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method) throws InvalidInputException { if (method == null) { return; } JavaClass remoteIntf = bean.getRemoteInterface(); ValidationRuleUtility.isValidTypeHierarchy(bean, remoteIntf); // The return type for a create method must be the remote interface type. if (!ValidationRuleUtility.isAssignableFrom(method.getReturnType(), remoteIntf)) { IMessage message = MessageUtility.getUtility().getMessage(vc, IEJBValidatorMessageConstants.CHKJ2402, IEJBValidationContext.WARNING, bean, clazz, method, new String[] { remoteIntf.getName()}, this); vc.addMessage(message); } }
/** * Test that the supplied ejbCreate method follows the EJB 1.1 spec rules. * Section: 6.10.3 */ public void validateEjbCreateMethod(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method) throws InvalidInputException { vc.terminateIfCancelled(); // The method which calls this method has already tested that the method name is ejbCreate. if (method == null) { return; } // The return type must be void. JavaHelpers parmType = method.getReturnType(); String returnTypeName = ((parmType == null) ? "" : parmType.getQualifiedName()); //$NON-NLS-1$ if (!returnTypeName.equals(ITypeConstants.VOID)) { IMessage message = MessageUtility.getUtility().getMessage(vc, IMessagePrefixEjb11Constants.CHKJ2401, IEJBValidationContext.ERROR, bean, clazz, method, new String[] {clazz.getQualifiedName()}, this); vc.addMessage(message); } // The method arguments must be legal types for RMI/IIOP. validateLegalRMIMethodArguments(vc, bean, clazz, method); validateEjbCreateModifiersAndExceptions(vc, bean, clazz, method); validateEjbCreateMethod_homeDep(vc, bean, clazz, method); }
/** * EJB 1.1 specification * Section: 9.2.5 */ public void validateEjbFindMethod_key(IEJBValidationContext vc, EnterpriseBean bean, JavaClass clazz, Method method) throws InvalidInputException { if (method == null) { return; } // The return type of a finder method must be the entity bean's primary key type, // or a collection of primary keys (see Section Subsection 9.1.8). vc.terminateIfCancelled(); JavaHelpers returnType = method.getReturnType(); JavaClass primaryKey = ((Entity) bean).getPrimaryKey(); ValidationRuleUtility.isValidTypeHierarchy(bean, primaryKey); if( !(ValidationRuleUtility.isAssignableFrom(returnType, primaryKey) || ValidationRuleUtility.isAssignableFromCollection(returnType, bean) || ValidationRuleUtility.isAssignableFromEnumeration(returnType, bean) )) { IMessage message = MessageUtility.getUtility().getMessage(vc, IEJBValidatorMessageConstants.CHKJ2407, IEJBValidationContext.WARNING, bean, clazz, method, new String[] { primaryKey.getQualifiedName()}, this); vc.addMessage(message); } }
JavaHelpers parmType = method.getReturnType();
JavaHelpers homeRetType = homeMethod.getReturnType(); JavaHelpers beanRetType = beanMethod.getReturnType(); if (!ValidationRuleUtility.isAssignableFrom(homeRetType, beanRetType)) {
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); } } }