/******************************************************************************* * 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.Map; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.xmi.XMIResource; import org.eclipse.jem.java.Field; import org.eclipse.jem.java.JavaClass; import org.eclipse.jem.java.Method; import org.eclipse.jst.j2ee.common.SecurityRole; import org.eclipse.jst.j2ee.common.SecurityRoleRef; import org.eclipse.jst.j2ee.ejb.AssemblyDescriptor; import org.eclipse.jst.j2ee.ejb.CommonRelationshipRole; import org.eclipse.jst.j2ee.ejb.EJBJar; import org.eclipse.jst.j2ee.ejb.EJBRelation; import org.eclipse.jst.j2ee.ejb.EJBRelationshipRole; import org.eclipse.jst.j2ee.ejb.EnterpriseBean; import org.eclipse.jst.j2ee.ejb.MethodElement; import org.eclipse.jst.j2ee.ejb.MethodPermission; import org.eclipse.jst.j2ee.ejb.MethodTransaction; import org.eclipse.wst.validation.internal.provisional.core.IMessage; /** * @version 1.0 * @author */ public final class MessageUtility { public static final String NO_MESSAGE_ID = ""; //$NON-NLS-1$ private static MessageUtility inst = null; private MessageUtility() { //Default } public static MessageUtility getUtility() { if(inst == null) { inst = new MessageUtility(); } return inst; } public static String getGroupName(Object targetParent) { if(targetParent == null) { // No context to associate the message with return null; } // So far, the only target parent which is used as a group name is the EnterpriseBean if(targetParent instanceof EnterpriseBean) { EnterpriseBean bean = (EnterpriseBean)targetParent; if(bean.getName() != null) { return bean.getName(); } return ((XMIResource)bean.eResource()).getID(bean); } return null; } protected String getMessageId(Object messageNumber, EnterpriseBean bean, IValidationRule rule) { if(messageNumber == null) { return NO_MESSAGE_ID; } Map ids = rule.getMessageIds(); if((ids == null) || (ids.size() == 0)) { return messageNumber.toString(); } int index = -1; String[] result = (String[])ids.get(messageNumber); if(result == null) { return messageNumber.toString(); } else if(result.length == 1) { if(result[0].equals("")) { //$NON-NLS-1$ return messageNumber.toString(); } return result[0]; } else { // By convention, this is the order of the entries in the String[] if(bean.isSession()) { index = 0; } else if(bean.isContainerManagedEntity()) { index = 1; } else if(bean.isBeanManagedEntity()) { index = 2; } else if(bean.isMessageDriven()) { index = 3; } else { // what the heck is it? return messageNumber.toString(); } if((result.length <= index) || (result[index].equals(""))) { //$NON-NLS-1$ return messageNumber.toString(); } return result[index]; } } /* * Use this method when the message is not registered on a method. */ protected String getMessageId(Object messageNumber, IValidationRule rule) { if(messageNumber == null) { return NO_MESSAGE_ID; } Map ids = rule.getMessageIds(); if((ids == null) || (ids.size() == 0)) { return messageNumber.toString(); } String[] result = (String[])ids.get(messageNumber); if((result == null) || (result.length == 0) || (result[0].equals(""))) { //$NON-NLS-1$ return messageNumber.toString(); } return result[0]; } /* * Use this method when the message is registered on a method. */ protected String getMessageId(Object messageNumber, IValidationRule rule, boolean isMethodOnClass) { if(messageNumber == null) { return NO_MESSAGE_ID; } Map ids = rule.getMessageIds(); if((ids == null) || (ids.size() == 0)) { return messageNumber.toString(); } String[] messages = (String[])ids.get(messageNumber); String result = null; if(messages != null) { if(isMethodOnClass && messages.length == 2) { result = messages[1]; } else if (messages.length >= 1) { result = messages[0]; } } if((result == null) || (result.equals(""))) { //$NON-NLS-1$ return messageNumber.toString(); } return result; } protected IMessage getMessage(IEJBValidationContext vc, int severity, String id, String[] parms, Object target, String groupName) { IMessage message = vc.getMessage(); message.setSeverity(severity); message.setId(id); message.setParams(parms); message.setTargetObject(target); message.setGroupName(groupName); return message; } /** * For use only by the DD VRules. */ public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EJBJar target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, SecurityRole target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, SecurityRoleRef target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, MethodElement target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, MethodTransaction target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, MethodPermission target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EJBRelationshipRole target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, CommonRelationshipRole target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EJBRelation target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, AssemblyDescriptor target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, null); } /** * For use only by the DD VRules. */ public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EJBJar target, String[] parms, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, parms, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, MethodElement target, String[] parms, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, parms, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EJBRelationshipRole target, String[] parms, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, parms, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, SecurityRoleRef target, String[] parms, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, parms, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EJBRelation target, String[] parms, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, parms, target, null); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EnterpriseBean bean, Object target, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, target, getGroupName(bean)); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EnterpriseBean bean, Object target, String[] parms, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, parms, target, getGroupName(bean)); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EnterpriseBean bean, IValidationRule rule) { String id = getMessageId(messageNumber, bean, rule); return getMessage(vc, severity, id, null, bean, getGroupName(bean)); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EnterpriseBean bean, String[] parms, IValidationRule rule) { String id = getMessageId(messageNumber, bean, rule); return getMessage(vc, severity, id, parms, bean, getGroupName(bean)); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EnterpriseBean bean, JavaClass clazz, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, null, clazz, getGroupName(bean)); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EnterpriseBean bean, JavaClass clazz, String[] additionalParms, IValidationRule rule) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, additionalParms, clazz, getGroupName(bean)); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EnterpriseBean bean, JavaClass clazz, Method method, IValidationRule rule) { if(method == null) { return getMessage(vc, messageNumber, severity, bean, clazz, rule); } return getMessage(vc, messageNumber, severity, null, clazz, method, method.getMethodElementSignature(), ValidationRuleUtility.onClass(clazz, method), getGroupName(bean), rule); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EnterpriseBean bean, JavaClass clazz, Method method, String[] additionalParms, IValidationRule rule) { if(method == null) { return getMessage(vc, messageNumber, severity, bean, clazz, additionalParms, rule); } return getMessage(vc, messageNumber, severity, additionalParms, clazz, method, method.getMethodElementSignature(), ValidationRuleUtility.onClass(clazz, method), getGroupName(bean), rule); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EnterpriseBean bean, JavaClass clazz, Field field, IValidationRule rule) { if(field == null) { return getMessage(vc, messageNumber, severity, bean, clazz, rule); } //return getMessage(vc, messageNumber, severity, null, clazz, field, field.getName(), ValidationRuleUtility.onClass(clazz, field), getGroupName(bean), rule); String [] additionalParms = new String[1]; additionalParms[0] = ValidationRuleUtility.getType(field).getJavaName(); return getMessage(vc, messageNumber, severity, additionalParms, clazz, field, field.getName(), ValidationRuleUtility.onClass(clazz, field), getGroupName(bean), rule); } public IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, EnterpriseBean bean, JavaClass clazz, Field field, String[] additionalParms, IValidationRule rule) { if(field == null) { return getMessage(vc, messageNumber, severity, bean, clazz, additionalParms, rule); } return getMessage(vc, messageNumber, severity, additionalParms, clazz, field, field.getName(), ValidationRuleUtility.onClass(clazz, field), getGroupName(bean), rule); } protected IMessage getMessage(IEJBValidationContext vc, Object messageNumber, int severity, String[] additionalParms, JavaClass clazz, EObject fieldOrMethod, String fieldOrMethodName, boolean isMethodOnClass, String groupName, IValidationRule rule) { if(fieldOrMethod == null) { String id = getMessageId(messageNumber, rule); return getMessage(vc, severity, id, additionalParms, clazz, groupName); } String[] parms = null; EObject target = null; if(isMethodOnClass) { // leave parms null since no parms are needed target = fieldOrMethod; parms = additionalParms; } else { if(additionalParms == null) { parms = new String[]{fieldOrMethodName}; } else { parms = new String[additionalParms.length + 1]; parms[0] = fieldOrMethodName; System.arraycopy(additionalParms, 0, parms, 1, additionalParms.length); } target = clazz; } String id = getMessageId(messageNumber, rule, isMethodOnClass); return getMessage(vc, severity, id, parms, target, groupName); } }