/******************************************************************************* * Copyright (c) 2007-2010 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.jsf.web.validation.jsf2.components; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; import org.eclipse.wst.xml.core.internal.document.ElementImpl; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr; import org.jboss.tools.jsf.jsf2.model.CompositeComponentConstants; import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil; import org.jboss.tools.jsf.messages.JSFUIMessages; import org.jboss.tools.jsf.web.validation.JSFAbstractValidationComponent; import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ValidatorConstants; import org.w3c.dom.NamedNodeMap; /** * * @author yzhishko * */ @SuppressWarnings("restriction") public class JSF2CompositeTempComponent extends JSFAbstractValidationComponent { private List<String> attrNames = new ArrayList<String>(0); private ElementImpl element; private String componentResLoc; public JSF2CompositeTempComponent(ElementImpl element) { this.element = element; } public void createValidationMessage() { String nodeName = element.getLocalName(); setValidationMessage(MessageFormat.format( JSFUIMessages.Missing_JSF_2_Composite_Component, nodeName)); } @Override public void createMessageParams() { NamedNodeMap attrsMap = element.getAttributes(); if (attrsMap != null && attrsMap.getLength() != 0) { for (int i = 0; i < attrsMap.getLength(); i++) { IDOMAttr attr = (IDOMAttr) attrsMap.item(i); attrNames.add(attr.getName()); } } super.createMessageParams(); } public String[] getAttrNames() { return attrNames.toArray(new String[0]); } public String getType() { return JSF2ValidatorConstants.JSF2_COMPOSITE_COMPONENT_TYPE; } public String getComponentResourceLocation() { if (componentResLoc == null) { String uriString = element.getNamespaceURI(); String relativeLocation = uriString.replaceFirst( CompositeComponentConstants.COMPOSITE_XMLNS, ""); //$NON-NLS-1$ String nodeName = element.getLocalName(); componentResLoc = relativeLocation + "/" + nodeName + ".xhtml"; //$NON-NLS-1$ //$NON-NLS-2$ } return componentResLoc; } /** * @return the element */ public ElementImpl getElement() { return element; } }