blob: 154ae2450dd7cad7b7799edc8e4192a1f42d776b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2007 Oracle 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:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.jsf.validation.internal.appconfig;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigPackage;
import org.eclipse.jst.jsf.facesconfig.emf.ListEntriesType;
import org.eclipse.jst.jsf.facesconfig.emf.ManagedPropertyType;
import org.eclipse.jst.jsf.facesconfig.emf.MapEntriesType;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
/**
* Validates managed bean properties
*
*/
public class ManagedPropertyValidationVisitor extends EObjectValidationVisitor
{
/**
* @param version
*/
public ManagedPropertyValidationVisitor(String version) {
super(FacesConfigPackage.eINSTANCE.getManagedBeanType_ManagedProperty()
,version);
}
protected void doValidate(final EObject object, final List messages, final IFile file)
{
// TODO: do a bean look-up for propertyName to verify that it a) matches the type
// and b) exists on the bean
final ManagedPropertyType managedPropertyType =
(ManagedPropertyType) object;
if (managedPropertyType.getPropertyName() == null
|| managedPropertyType.getPropertyClass() == null)
{
// don't bother if the basics aren't correct
return;
}
final String propertyName =
managedPropertyType.getPropertyName().getTextContent();
final String propertyClass =
managedPropertyType.getPropertyClass().getTextContent();
if (propertyName == null || propertyClass == null
|| "".equals(propertyName.trim()) //$NON-NLS-1$
|| "".equals(propertyClass.trim())) //$NON-NLS-1$
{
return;
}
IMessage message = null;
EObject eObj = null;
if (managedPropertyType.getMapEntries() != null)
{
eObj = managedPropertyType.getMapEntries();
message =
AppConfigValidationUtil
.validateMapEntries
(propertyName
, propertyClass
, (MapEntriesType) eObj
, file.getProject());
}
else if (managedPropertyType.getListEntries() != null)
{
eObj = managedPropertyType.getListEntries();
message =
AppConfigValidationUtil
.validateListEntries(
propertyName
, propertyClass
, (ListEntriesType) eObj
, file.getProject());
}
addMessageInfo(messages, message, eObj, file);
}
protected EObjectValidationVisitor[] getChildNodeValidators() {
return new EObjectValidationVisitor[]
{
new PropertyNameValidationVisitor(FacesConfigPackage.eINSTANCE.getManagedPropertyType_PropertyName(),
FacesConfigPackage.eINSTANCE.getManagedBeanType_ManagedBeanClass(), getVersion())
};
}
}