/******************************************************************************* * Copyright (c) 2008 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.smooks.configuration.validate; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.edit.domain.EditingDomain; import org.jboss.tools.smooks.configuration.editors.utils.SmooksUIUtils; import org.jboss.tools.smooks.model.smooks.DocumentRoot; import org.jboss.tools.smooks.model.smooks.SmooksResourceListType; /** * @author Dart (dpeng@redhat.com) * */ public class BeanIdRefValidator extends AbstractValidator { private List<String> idList = new ArrayList<String>(); /* * (non-Javadoc) * * @seeorg.jboss.tools.smooks.configuration.validate.AbstractValidator# * preStartValidation() */ @Override protected void preStartValidation() { } /* * (non-Javadoc) * * @see * org.jboss.tools.smooks.configuration.validate.AbstractValidator#validate * (java.util.Collection, org.eclipse.emf.edit.domain.EditingDomain) */ @Override public List<Diagnostic> validate(Collection<?> selectedObjects, EditingDomain editingDomain) { return super.validate(selectedObjects, editingDomain); } /* * (non-Javadoc) * * @see * org.jboss.tools.smooks.configuration.validate.AbstractValidator#validateModel * (java.lang.Object, org.eclipse.emf.edit.domain.EditingDomain) */ @Override protected Diagnostic validateModel(Object model, EditingDomain editingDomain) { String idRef = null; EStructuralFeature beanIDRefFeature = null; if (model instanceof EObject) { beanIDRefFeature = SmooksUIUtils.getBeanIDRefFeature((EObject) model); if (beanIDRefFeature != null) { Object data = ((EObject) model).eGet(beanIDRefFeature); if (data != null) { idRef = data.toString(); } } } if (idRef != null) { if (!idList.contains(idRef) && beanIDRefFeature != null && beanIDRefFeature instanceof EAttribute) { return newWaringDiagnostic(Messages.BeanIdRefValidator_Warning_Java_Bean + idRef + Messages.BeanIdRefValidator_Warning_Does_Not_Exist, model, (EAttribute) beanIDRefFeature); } } // if (model instanceof WiringType) { // String idRef = ((WiringType) model).getBeanIdRef(); // if (!idList.contains(idRef)) { // return newWaringDiagnostic("Reference BeanId '" + idRef + "' dosen't exist.", model, // JavabeanPackage.Literals.WIRING_TYPE__BEAN_ID_REF); // } // } // // if (model instanceof JmsRouter) { // String idRef = ((JmsRouter) model).getBeanId(); // if (!idList.contains(idRef)) { // return newWaringDiagnostic("Reference BeanId '" + idRef + "' dosen't exist.", model, // JmsroutingPackage.Literals.JMS_ROUTER__BEAN_ID); // } // } return super.validateModel(model, editingDomain); } public void initValidator(Collection<?> selectedObjects, EditingDomain editingDomain) { idList.clear(); Resource resource = editingDomain.getResourceSet().getResources().get(0); Object obj = resource.getContents().get(0); if (obj instanceof DocumentRoot) { SmooksResourceListType listType = ((DocumentRoot) obj).getSmooksResourceList(); List<String> ids = SmooksUIUtils.getBeanIdStringList(listType); if (ids != null) { idList.addAll(ids); } } if (idList.isEmpty()) { // return } } }