/**
 * <copyright>
 * 
 * Copyright (c) 2011 See4sys and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
 * 
 * Contributors: 
 *     See4sys - Initial API and implementation
 * 
 * </copyright>
 */

context instancemodel::Component ERROR "Property 'name' not set for component "+toString() : name != null && name.length > 0;

context instancemodel::ParameterValue ERROR "Property 'value' not set for parameter value "+name : name != null && name.length > 0;

context instancemodel::Connection ERROR
"Target component '" + targetComponent.name + "' of connection '" + name + "' does not implement required interface '" + sourcePort.requiredInterface.name + "'" :
targetComponent.type.providedInterfaces.contains(sourcePort.requiredInterface);