[jbosstools-commits] JBoss Tools SVN: r22030 - in trunk/jsf/plugins/org.jboss.tools.jsf: src/org/jboss/tools/jsf/jsf2 and 8 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Wed May 12 04:53:39 EDT 2010


Author: yzhishko
Date: 2010-05-12 04:53:34 -0400 (Wed, 12 May 2010)
New Revision: 22030

Added:
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/model/JSF2ComponentModelManager.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/JSF2RenameParticipant.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/JSf2MoveParticipant.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ComponentUtil.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ResourceUtil.java
Removed:
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentModelManager.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentUtil.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ResourceUtil.java
Modified:
   trunk/jsf/plugins/org.jboss.tools.jsf/plugin.xml
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/messages/JSFUIMessages.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/messages/messages.properties
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2ComponentsValidator.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2SourceValidator.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2XMLValidator.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2CompositeAttrsProposal.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2CompositeComponentProposal.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2QuickFixProcessor.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2ResourcesFolderProposal.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2AttrTempComponent.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2ComponentFactory.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2CompositeTempComponent.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2URITempComponent.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentRecognizer.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5942 - refactor to JSF2 composite components (rename/move) was added

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/plugin.xml
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/plugin.xml	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/plugin.xml	2010-05-12 08:53:34 UTC (rev 22030)
@@ -529,6 +529,9 @@
                    caseSensitive="false"
                    ext="jsp">
              </fileext>
+             <contentType
+                   id="org.eclipse.jst.jsp.core.jspsource">
+             </contentType>
           </rules>
        </include>
     </validator>
@@ -592,4 +595,54 @@
           super="org.eclipse.wst.sse.ui.temp.warning">
     </type>
  </extension>
+ <extension
+       point="org.eclipse.ltk.core.refactoring.renameParticipants">
+    <renameParticipant
+          class="org.jboss.tools.jsf.jsf2.refactoring.JSF2RenameParticipant"
+          id="org.jboss.tools.jsf.jsf2renameParticipant"
+          name="JSF 2 Rename Participant">
+       <enablement>
+          <with
+                variable="affectedNatures">
+             <iterate
+                   operator="or">
+                <equals
+                      value="org.jboss.tools.jsf.jsfnature">
+                </equals>
+             </iterate>
+          </with>
+          <with
+                variable="element">
+             <instanceof
+                   value="org.eclipse.core.resources.IFile">
+             </instanceof>
+          </with>
+       </enablement>
+    </renameParticipant>
+ </extension>
+ <extension
+       point="org.eclipse.ltk.core.refactoring.moveParticipants">
+    <moveParticipant
+          class="org.jboss.tools.jsf.jsf2.refactoring.JSf2MoveParticipant"
+          id="org.jboss.tools.jsf.jsf2moveParticipant"
+          name="JSF 2 Move Participant">
+       <enablement>
+          <with
+                variable="affectedNatures">
+             <iterate
+                   operator="or">
+                <equals
+                      value="org.jboss.tools.jsf.jsfnature">
+                </equals>
+             </iterate>
+          </with>
+          <with
+                variable="element">
+             <instanceof
+                   value="org.eclipse.core.resources.IFolder">
+             </instanceof>
+          </with>
+       </enablement>
+    </moveParticipant>
+ </extension>
 </plugin>

Copied: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/model/JSF2ComponentModelManager.java (from rev 21981, trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentModelManager.java)
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/model/JSF2ComponentModelManager.java	                        (rev 0)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/model/JSF2ComponentModelManager.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -0,0 +1,507 @@
+/*******************************************************************************
+ * 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.jsf2.model;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Scanner;
+import java.util.Set;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.jdt.internal.core.JarEntryFile;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.wst.html.core.internal.encoding.HTMLModelLoader;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+import org.eclipse.wst.sse.core.internal.text.JobSafeStructuredDocument;
+import org.eclipse.wst.validation.ValidationFramework;
+import org.eclipse.wst.xml.core.internal.document.ElementImpl;
+import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.format.DocumentNodeFormatter;
+import org.jboss.tools.jsf.JSFModelPlugin;
+import org.jboss.tools.jsf.jsf2.util.JSF2ComponentUtil;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * 
+ * @author yzhishko
+ * 
+ */
+
+ at SuppressWarnings("restriction")
+public class JSF2ComponentModelManager {
+
+	private static JSF2ComponentModelManager instance = new JSF2ComponentModelManager();
+
+	private JSF2ComponentModelManager() {
+
+	}
+
+	public static JSF2ComponentModelManager getManager() {
+		return instance;
+	}
+
+	public IFile updateJSF2CompositeComponentFile(
+			final IFile componentFileContatiner, final String[] attrNames) {
+		IFile file = updateFileContent(new EditableDOMFile() {
+
+			@Override
+			public IFile getFile() {
+				return componentFileContatiner;
+			}
+
+			@Override
+			protected void edit(IDOMModel model) throws CoreException,
+					IOException {
+				IDOMDocument document = model.getDocument();
+				updateJSF2CompositeComponent(document, attrNames);
+				IStructuredDocument structuredDocument = document
+						.getStructuredDocument();
+				String text = structuredDocument.getText();
+				model.reload(new ByteArrayInputStream(text.getBytes()));
+				model.save();
+			}
+		});
+		return file;
+	}
+
+	public void renameCompositeComponents(IResource resource, String URI,
+			String oldName, String newName) throws CoreException {
+		if (resource instanceof IFile) {
+			IFile file = (IFile) resource;
+			renameCompositeComponentsInFile(file, URI, oldName, newName);
+		} else if (resource instanceof IProject) {
+			IResource[] children = ((IProject) resource).members();
+			if (children != null) {
+				for (int i = 0; i < children.length; i++) {
+					renameCompositeComponents(children[i], URI, oldName,
+							newName);
+				}
+			}
+		} else if (resource instanceof IFolder) {
+			IResource[] children = ((IFolder) resource).members();
+			if (children != null) {
+				for (int i = 0; i < children.length; i++) {
+					renameCompositeComponents(children[i], URI, oldName,
+							newName);
+				}
+			}
+		}
+	}
+
+	private boolean isFileCorrect(IFile file) {
+		if (file == null) {
+			return false;
+		}
+		if (!"xhtml".equals(file.getFileExtension()) && !"jsp".equals(file.getFileExtension())) { //$NON-NLS-1$ //$NON-NLS-2$
+			IContentType contentType = IDE.getContentType(file);
+			if (contentType == null) {
+				return false;
+			}
+			String id = contentType.getId();
+			if (!"org.eclipse.jst.jsp.core.jspsource".equals(id) && !"org.eclipse.wst.html.core.htmlsource".equals(id)) { //$NON-NLS-1$ //$NON-NLS-2$
+				return false;
+			}
+		}
+		return true;
+	}
+
+	private void renameCompositeComponentsInFile(final IFile file,
+			final String URI, final String oldName, final String newName) {
+		if (!isFileCorrect(file)) {
+			return;
+		}
+		updateFileContent(new EditableDOMFile() {
+
+			@Override
+			public IFile getFile() {
+				return file;
+			}
+
+			@Override
+			protected void edit(IDOMModel model) throws CoreException,
+					IOException {
+				IDOMDocument document = model.getDocument();
+				Map<String, List<Element>> compositeComponentsMap = JSF2ComponentUtil
+						.findCompositeComponents(document);
+				List<Element> compositeComponents = compositeComponentsMap
+						.get(URI);
+				if (compositeComponents != null) {
+					for (Element element : compositeComponents) {
+						if (oldName.equals(element.getLocalName())) {
+							renameElement((IDOMElement) element, oldName,
+									newName);
+						}
+					}
+					model.save();
+					ValidationFramework.getDefault().validate(file,
+							new NullProgressMonitor());
+				}
+			}
+		});
+	}
+
+	public void renameURIs(IResource resource, Map<String, String> urisMap)
+			throws CoreException {
+		if (resource instanceof IFile) {
+			IFile file = (IFile) resource;
+			renameURIsInFile(file, urisMap);
+		} else if (resource instanceof IProject) {
+			IResource[] children = ((IProject) resource).members();
+			if (children != null) {
+				for (int i = 0; i < children.length; i++) {
+					renameURIs(children[i], urisMap);
+				}
+			}
+		} else if (resource instanceof IFolder) {
+			IResource[] children = ((IFolder) resource).members();
+			if (children != null) {
+				for (int i = 0; i < children.length; i++) {
+					renameURIs(children[i], urisMap);
+				}
+			}
+		}
+	}
+
+	private void renameURIsInFile(final IFile file,
+			final Map<String, String> urisMap) {
+		if (!isFileCorrect(file)) {
+			return;
+		}
+		updateFileContent(new EditableDOMFile() {
+
+			@Override
+			public IFile getFile() {
+				return file;
+			}
+
+			@Override
+			protected void edit(IDOMModel model) throws CoreException,
+					IOException {
+				IDOMDocument document = model.getDocument();
+				IDOMAttr[] uriAttrs = JSF2ComponentUtil
+						.findURIContainers(document);
+				for (int i = 0; i < uriAttrs.length; i++) {
+					if (urisMap.containsKey(uriAttrs[i].getValue())) {
+						renameURIAttr(uriAttrs[i], urisMap.get(uriAttrs[i]
+								.getValue()));
+					}
+				}
+				model.save();
+				ValidationFramework.getDefault().validate(file,
+						new NullProgressMonitor());
+			}
+
+		});
+	}
+
+	private void renameURIAttr(IDOMAttr idomAttr, final String replaceValue) {
+		int startOffset = idomAttr.getStartOffset();
+		String attrValue = idomAttr.getValue();
+		IStructuredDocument document = idomAttr.getStructuredDocument();
+		String value = document.getText().substring(idomAttr.getStartOffset());
+		value = value.substring(0, value.indexOf(attrValue)
+				+ idomAttr.getValue().length());
+		try {
+			document.replace(startOffset + value.indexOf(attrValue), attrValue
+					.length(), replaceValue);
+		} catch (BadLocationException e) {
+			JSFModelPlugin.getPluginLog().logError(e);
+		}
+		idomAttr.getName();
+	}
+
+	private void renameElement(final IDOMElement element, final String oldName,
+			final String newName) {
+		String sourceString = element.getSource();
+		IStructuredDocument structuredDocument = element
+				.getStructuredDocument();
+		int startOffset = element.getStartOffset();
+		int endStartOffset = element.getEndStartOffset();
+		int endOffset = element.getEndOffset();
+		try {
+			if (endOffset != endStartOffset) {
+				structuredDocument.replace(sourceString.lastIndexOf(oldName)
+						+ startOffset, oldName.length(), newName);
+			}
+			structuredDocument.replace(element.getStartOffset()
+					+ sourceString.indexOf(oldName), oldName.length(), newName);
+		} catch (BadLocationException e) {
+			JSFModelPlugin.getPluginLog().logError(e);
+		}
+	}
+
+	private void updateJSF2CompositeComponent(IDOMDocument componentDoc,
+			String[] attrNames) {
+		IDOMElement[] interfaceElement = new IDOMElement[1];
+		findInterfaceComponent(componentDoc, interfaceElement);
+		createCompositeCompInterface(interfaceElement[0], attrNames);
+	}
+
+	private void findInterfaceComponent(Node node,
+			IDOMElement[] interfaceElement) {
+		if (node instanceof IDOMDocument) {
+			IDOMDocument document = (IDOMDocument) node;
+			findInterfaceComponent(document.getDocumentElement(),
+					interfaceElement);
+		}
+		if (node instanceof ElementImpl) {
+			ElementImpl impl = (ElementImpl) node;
+			String nameSpace = impl.getNamespaceURI();
+			if (JSF2ResourceUtil.JSF2_URI_PREFIX.equals(nameSpace)) {
+				String nodeName = impl.getLocalName();
+				if ("interface".equals(nodeName)) { //$NON-NLS-1$
+					interfaceElement[0] = impl;
+					return;
+				}
+			} else {
+				NodeList nodeList = node.getChildNodes();
+				if (nodeList != null) {
+					for (int i = 0; i < nodeList.getLength(); i++) {
+						findInterfaceComponent(nodeList.item(i),
+								interfaceElement);
+					}
+				}
+			}
+		}
+	}
+
+	private void createCompositeCompInterface(IDOMElement element,
+			String[] attrNames) {
+		Document document = (Document) element.getOwnerDocument();
+		String prefix = element.getPrefix();
+		Set<String> existInerfaceAttrs = getInterfaceAttrs(element);
+		if (prefix != null && !"".equals(prefix)) { //$NON-NLS-1$
+			for (int i = 0; i < attrNames.length; i++) {
+				if (!existInerfaceAttrs.contains(attrNames[i])) {
+					Element attrEl = document.createElementNS(
+							JSF2ResourceUtil.JSF2_URI_PREFIX, prefix
+									+ ":attribute"); //$NON-NLS-1$
+					attrEl.setAttribute("name", attrNames[i]); //$NON-NLS-1$
+					element.appendChild(attrEl);
+				}
+			}
+		} else {
+			for (int i = 0; i < attrNames.length; i++) {
+				if (!existInerfaceAttrs.contains(attrNames[i])) {
+					Element attrEl = document.createElementNS(
+							JSF2ResourceUtil.JSF2_URI_PREFIX, "attribute"); //$NON-NLS-1$
+					attrEl.setAttribute("name", attrNames[i]); //$NON-NLS-1$
+					element.appendChild(attrEl);
+				}
+			}
+		}
+		DocumentNodeFormatter formatter = new DocumentNodeFormatter();
+		formatter.format(document);
+	}
+
+	public IFile revalidateCompositeComponentFile(IFile file) {
+		IDOMDocument document = getReadableDOMDocument(file);
+		if (document == null) {
+			return null;
+		}
+		IDOMElement interfaceElement = checkCompositeInterface(document);
+		if (interfaceElement == null) {
+			return null;
+		}
+		return file;
+	}
+
+	public IDOMElement checkCompositeInterface(IDOMDocument document) {
+		if (document == null) {
+			return null;
+		}
+		Element element = document.getDocumentElement();
+		if (element == null) {
+			return null;
+		}
+		if (!"html".equals(element.getNodeName())) { //$NON-NLS-1$
+			return null;
+		}
+		ElementImpl elementImpl = (ElementImpl) element;
+		if (!"http://www.w3.org/1999/xhtml".equals(elementImpl.getNamespaceURI())) { //$NON-NLS-1$
+			return null;
+		}
+		IDOMElement[] interfaceElement = new IDOMElement[1];
+		findInterfaceComponent(element, interfaceElement);
+		return interfaceElement[0];
+	}
+
+	public static IDOMDocument getReadableDOMDocument(IFile file) {
+		IDOMDocument document = null;
+		IModelManager manager = StructuredModelManager.getModelManager();
+		if (manager == null) {
+			return document;
+		}
+		IStructuredModel model = null;
+		try {
+			model = manager.getModelForRead(file);
+			if (model instanceof IDOMModel) {
+				IDOMModel domModel = (IDOMModel) model;
+				document = domModel.getDocument();
+			}
+		} catch (CoreException e) {
+			JSFModelPlugin.getPluginLog().logError(e);
+		} catch (IOException e) {
+			JSFModelPlugin.getPluginLog().logError(e);
+		} finally {
+			if (model != null) {
+				model.releaseFromRead();
+			}
+		}
+		return document;
+	}
+
+	public static IDOMDocument getReadableDOMDocument(JarEntryFile file) {
+		IDOMDocument document = null;
+		IStructuredModel model = null;
+		InputStream inputStream;
+		try {
+			inputStream = file.getContents();
+			if (inputStream != null) {
+				StringBuffer buffer = new StringBuffer(""); //$NON-NLS-1$
+				Scanner in = new Scanner(inputStream);
+				while (in.hasNextLine()) {
+					buffer.append(in.nextLine());
+				}
+				model = new HTMLModelLoader().newModel();
+				model.setStructuredDocument(new JobSafeStructuredDocument(
+						new XMLSourceParser()));
+				model.getStructuredDocument().set(buffer.toString());
+				if (model instanceof IDOMModel) {
+					document = ((IDOMModel) model).getDocument();
+				}
+			}
+		} catch (CoreException e) {
+			JSFModelPlugin.getPluginLog().logError(e);
+		} finally {
+			model = null;
+		}
+		return document;
+	}
+
+	public static IDOMDocument getReadableDOMDocument(IDocument textDocument) {
+		IDOMDocument document = null;
+		if (!(textDocument instanceof IStructuredDocument)) {
+			return document;
+		}
+		IModelManager manager = StructuredModelManager.getModelManager();
+		if (manager == null) {
+			return document;
+		}
+		IStructuredModel model = null;
+		try {
+			model = manager.getModelForRead((IStructuredDocument) textDocument);
+			if (model instanceof IDOMModel) {
+				IDOMModel domModel = (IDOMModel) model;
+				document = domModel.getDocument();
+			}
+		} finally {
+			if (model != null) {
+				model.releaseFromRead();
+			}
+		}
+		return document;
+	}
+
+	public Set<String> getInterfaceAttrs(IDOMElement interfaceElement) {
+		Set<String> interfaceAttrs = new HashSet<String>(0);
+		if (interfaceElement != null) {
+			String prefix = interfaceElement.getPrefix();
+			String nodeName = "attribute"; //$NON-NLS-1$
+			if (prefix != null && !"".equals(prefix)) { //$NON-NLS-1$
+				nodeName = prefix + ":" + nodeName; //$NON-NLS-1$
+			}
+			NodeList attrsElements = interfaceElement
+					.getElementsByTagName(nodeName);
+			if (attrsElements != null) {
+				for (int i = 0; i < attrsElements.getLength(); i++) {
+					Node el = attrsElements.item(i);
+					if (el instanceof IDOMElement) {
+						IDOMElement element = (IDOMElement) el;
+						String attrvalue = element.getAttribute("name"); //$NON-NLS-1$
+						if (attrvalue != null && !"".equals(attrvalue)) { //$NON-NLS-1$
+							interfaceAttrs.add(attrvalue);
+						}
+					}
+				}
+			}
+		}
+		return interfaceAttrs;
+	}
+
+	private abstract class EditableDOMFile {
+
+		public EditableDOMFile() {
+		}
+
+		public IFile editFile() {
+			IFile file = getFile();
+			if (file == null) {
+				return file;
+			}
+			IModelManager manager = StructuredModelManager.getModelManager();
+			if (manager == null) {
+				return file;
+			}
+			IStructuredModel model = null;
+			try {
+				model = manager.getModelForEdit(file);
+				if (model instanceof IDOMModel) {
+					IDOMModel domModel = (IDOMModel) model;
+					edit(domModel);
+				}
+			} catch (CoreException e) {
+				JSFModelPlugin.getPluginLog().logError(e);
+			} catch (IOException e) {
+				JSFModelPlugin.getPluginLog().logError(e);
+			} finally {
+				if (model != null) {
+					model.releaseFromEdit();
+				}
+			}
+			return file;
+		};
+
+		protected abstract void edit(IDOMModel model) throws CoreException,
+				IOException;
+
+		public abstract IFile getFile();
+
+	}
+
+	private IFile updateFileContent(EditableDOMFile domFile) {
+		return domFile.editFile();
+	}
+
+}

Added: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/JSF2RenameParticipant.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/JSF2RenameParticipant.java	                        (rev 0)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/JSF2RenameParticipant.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * 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.jsf2.refactoring;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
+import org.eclipse.ltk.core.refactoring.participants.RenameParticipant;
+import org.eclipse.ui.ide.IDE;
+import org.jboss.tools.jsf.jsf2.model.JSF2ComponentModelManager;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
+import org.jboss.tools.jsf.messages.JSFUIMessages;
+
+/**
+ * 
+ * @author yzhishko
+ * 
+ */
+
+public class JSF2RenameParticipant extends RenameParticipant {
+
+	private IProject project;
+	private String URI;
+	private String oldFileName;
+
+	@Override
+	public RefactoringStatus checkConditions(IProgressMonitor pm,
+			CheckConditionsContext context) throws OperationCanceledException {
+		return new RefactoringStatus();
+	}
+
+	@Override
+	public Change createChange(IProgressMonitor pm) throws CoreException,
+			OperationCanceledException {
+		String newFileName = getArguments().getNewName();
+		if (project == null || newFileName == null || oldFileName == null) {
+			return null;
+		}
+		oldFileName = oldFileName.substring(0, oldFileName.lastIndexOf('.'));
+		newFileName = newFileName.substring(0, newFileName.lastIndexOf('.'));
+		JSF2ComponentModelManager.getManager().renameCompositeComponents(
+				project, URI, oldFileName, newFileName);
+		project = null;
+		URI = null;
+		oldFileName = null;
+		return null;
+	}
+
+	@Override
+	public String getName() {
+		return JSFUIMessages.Rename_JSF_2_Composite_Components;
+	}
+
+	@Override
+	protected boolean initialize(Object element) {
+		if (element instanceof IFile) {
+			IFile file = (IFile) element;
+			URI = calcURIFromPath(file.getFullPath());
+			if (checkContentType(file)) {
+				project = file.getProject();
+				oldFileName = file.getName();
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private boolean checkContentType(IFile file) {
+		if (URI == null || URI.equals("")) { //$NON-NLS-1$
+			return false;
+		}
+		if (!"xhtml".equals(file.getFileExtension())) { //$NON-NLS-1$
+			return false;
+		}
+		IContentType contentType = IDE.getContentType(file);
+		if (!"org.eclipse.wst.html.core.htmlsource".equals(contentType.getId())) { //$NON-NLS-1$
+			return false;
+		}
+		if ((JSF2ComponentModelManager.getManager()
+				.checkCompositeInterface(JSF2ComponentModelManager
+						.getReadableDOMDocument(file))) == null) {
+			return false;
+		}
+		return true;
+	}
+
+	private String calcURIFromPath(IPath path) {
+		StringBuilder uri = new StringBuilder(""); //$NON-NLS-1$
+		String[] segments = path.segments();
+		if (segments.length > 3) {
+			if (segments[2].equals("resources")) { //$NON-NLS-1$
+				for (int i = 3; i < segments.length - 1; i++) {
+					uri.append("/" + segments[i]); //$NON-NLS-1$
+				}
+				uri.insert(0, JSF2ResourceUtil.JSF2_URI_PREFIX);
+			}
+		}
+		return uri.toString();
+	}
+
+}

Added: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/JSf2MoveParticipant.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/JSf2MoveParticipant.java	                        (rev 0)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/JSf2MoveParticipant.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -0,0 +1,133 @@
+package org.jboss.tools.jsf.jsf2.refactoring;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
+import org.eclipse.ltk.core.refactoring.participants.MoveParticipant;
+import org.jboss.tools.jsf.JSFModelPlugin;
+import org.jboss.tools.jsf.jsf2.model.JSF2ComponentModelManager;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
+import org.jboss.tools.jsf.messages.JSFUIMessages;
+
+public class JSf2MoveParticipant extends MoveParticipant {
+
+	private IProject project;
+	private Map<String, String> urisMap;
+
+	@Override
+	public RefactoringStatus checkConditions(IProgressMonitor pm,
+			CheckConditionsContext context) throws OperationCanceledException {
+		return new RefactoringStatus();
+	}
+
+	@Override
+	public Change createChange(IProgressMonitor pm) throws CoreException,
+			OperationCanceledException {
+		if (project != null) {
+			JSF2ComponentModelManager.getManager().renameURIs(project, urisMap);
+		}
+		return null;
+	}
+
+	@Override
+	public String getName() {
+		return JSFUIMessages.Refactoring_JSF_2_resources;
+	}
+
+	@Override
+	protected boolean initialize(Object element) {
+		if (element instanceof IFolder) {
+			IFolder folder = (IFolder) element;
+			if (checkResourceFolderPath(folder.getFullPath())) {
+				Object object = getArguments().getDestination();
+				if (object instanceof IFolder) {
+					if (folder.getProject() != ((IFolder) object).getProject()) {
+						return false;
+					}
+					if (checkDistFolderPath(((IFolder) object).getFullPath())) {
+						project = folder.getProject();
+						invokePossibleURIs(folder, (IFolder) object);
+						return true;
+					}
+				}
+			}
+		}
+		return false;
+	}
+
+	private boolean checkDistFolderPath(IPath fullPath) {
+		String[] segments = fullPath.segments();
+		if (segments.length > 2) {
+			if (segments[2].equals("resources")) { //$NON-NLS-1$
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private void invokePossibleURIs(IFolder srcFolder, IFolder distFolder) {
+		String newFirstURIPart = createJSF2URIFromPath(distFolder.getFullPath());
+		String oldFirstURIPart = createJSF2URIFromPath(srcFolder.getFullPath());
+		oldFirstURIPart = oldFirstURIPart.substring(0, oldFirstURIPart
+				.lastIndexOf('/'));
+		Set<String> oldURIs = new HashSet<String>();
+		invokeOldPossibleURIs(srcFolder, oldURIs);
+		urisMap = new HashMap<String, String>();
+		for (String oldURI : oldURIs) {
+			urisMap.put(oldURI, newFirstURIPart
+					+ oldURI.replaceFirst(oldFirstURIPart, "")); //$NON-NLS-1$
+		}
+	}
+
+	private void invokeOldPossibleURIs(IFolder srcFolder, Set<String> uris) {
+		uris.add(createJSF2URIFromPath(srcFolder.getFullPath()));
+		try {
+			IResource[] children = srcFolder.members();
+			if (children != null) {
+				for (int i = 0; i < children.length; i++) {
+					if (children[i] instanceof IFolder) {
+						invokeOldPossibleURIs((IFolder) children[i], uris);
+					}
+				}
+			}
+		} catch (CoreException e) {
+			JSFModelPlugin.getPluginLog().logError(e);
+		}
+	}
+
+	private boolean checkResourceFolderPath(IPath path) {
+		String[] segments = path.segments();
+		if (segments.length > 3) {
+			if (segments[2].equals("resources")) { //$NON-NLS-1$
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private String createJSF2URIFromPath(IPath path) {
+		StringBuilder uri = new StringBuilder(""); //$NON-NLS-1$
+		String[] segments = path.segments();
+		if (segments.length > 3) {
+			if (segments[2].equals("resources")) { //$NON-NLS-1$
+				for (int i = 3; i < segments.length; i++) {
+					uri.append("/" + segments[i]); //$NON-NLS-1$
+				}
+			}
+		}
+		uri.insert(0, JSF2ResourceUtil.JSF2_URI_PREFIX);
+		return uri.toString();
+	}
+
+}

Copied: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ComponentUtil.java (from rev 21981, trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentUtil.java)
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ComponentUtil.java	                        (rev 0)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ComponentUtil.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * 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.jsf2.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.eclipse.wst.xml.core.internal.document.ElementImpl;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * 
+ * @author yzhishko
+ * 
+ */
+
+ at SuppressWarnings("restriction")
+public class JSF2ComponentUtil {
+
+	public static Map<String, List<Element>> findCompositeComponents(Node node) {
+		Map<String, List<Element>> elementsMap = new HashMap<String, List<Element>>(
+				0);
+		findChildCompositeComponents(node, elementsMap);
+		return elementsMap;
+	}
+
+	private static void findChildCompositeComponents(Node node,
+			Map<String, List<Element>> elementsMap) {
+		if (node instanceof IDOMDocument) {
+			node = ((IDOMDocument) node).getDocumentElement();
+			findChildCompositeComponents(node, elementsMap);
+		} else if (node instanceof ElementImpl) {
+			ElementImpl elementImpl = (ElementImpl) node;
+			String namespaceURI = elementImpl.getNamespaceURI();
+			if (namespaceURI != null
+					&& namespaceURI
+							.startsWith(JSF2ResourceUtil.JSF2_URI_PREFIX)
+					&& !namespaceURI.equals(JSF2ResourceUtil.JSF2_URI_PREFIX)) {
+				List<Element> elements = elementsMap.get(namespaceURI);
+				if (elements == null) {
+					elements = new ArrayList<Element>(0);
+				}
+				elements.add(elementImpl);
+				elementsMap.put(namespaceURI, elements);
+			}
+			NodeList children = node.getChildNodes();
+			if (children != null) {
+				for (int i = 0; i < children.getLength(); i++) {
+					findChildCompositeComponents(children.item(i), elementsMap);
+				}
+			}
+		}
+	}
+
+	public static IDOMAttr[] findURIContainers(Node scanNode) {
+		List<IDOMAttr> attrs = new ArrayList<IDOMAttr>(0);
+		findChildURIContainers(scanNode, attrs);
+		return attrs.toArray(new IDOMAttr[0]);
+	}
+
+	private static void findChildURIContainers(Node node,
+			List<IDOMAttr> attrsList) {
+		if (node instanceof IDOMDocument) {
+			node = ((IDOMDocument) node).getDocumentElement();
+			findChildURIContainers(node, attrsList);
+		} else if (node instanceof ElementImpl) {
+			ElementImpl elementImpl = (ElementImpl) node;
+			NamedNodeMap attrsMap = elementImpl.getAttributes();
+			if (attrsMap != null && attrsMap.getLength() != 0) {
+				for (int i = 0; i < attrsMap.getLength(); i++) {
+					IDOMAttr attr = (IDOMAttr) attrsMap.item(i);
+					String attrValue = attr.getValue();
+					if (attrValue != null
+							&& attrValue
+									.indexOf(JSF2ResourceUtil.JSF2_URI_PREFIX) > -1) {
+						String compPath = attrValue.replaceFirst(
+								JSF2ResourceUtil.JSF2_URI_PREFIX, ""); //$NON-NLS-1$
+						if (!"".equals(compPath.trim())) { //$NON-NLS-1$
+							if (isCorrectCompositeShemaAttrName(attr.getName())) {
+								attrsList.add(attr);
+							}
+						}
+					}
+				}
+			}
+			NodeList children = node.getChildNodes();
+			if (children != null) {
+				for (int i = 0; i < children.getLength(); i++) {
+					findChildURIContainers((IDOMNode) children.item(i),
+							attrsList);
+				}
+			}
+		}
+	}
+
+	private static boolean isCorrectCompositeShemaAttrName(String attrName) {
+		if (attrName == null) {
+			return false;
+		}
+		if ("xmlns".equals(attrName.trim()) || "uri".equals(attrName.trim())) { //$NON-NLS-1$ //$NON-NLS-2$
+			return true;
+		}
+		if (attrName.indexOf(':') < 0) {
+			return false;
+		}
+		attrName = attrName.substring(0, attrName.indexOf(':')).trim();
+		if ("xmlns".equals(attrName)) { //$NON-NLS-1$
+			return true;
+		}
+		return false;
+	}
+
+}

Copied: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ResourceUtil.java (from rev 21981, trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ResourceUtil.java)
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ResourceUtil.java	                        (rev 0)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ResourceUtil.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -0,0 +1,253 @@
+/*******************************************************************************
+ * 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.jsf2.util;
+
+import java.util.zip.ZipEntry;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.internal.core.JarEntryDirectory;
+import org.eclipse.jdt.internal.core.JarEntryFile;
+import org.eclipse.jdt.internal.core.JarEntryResource;
+import org.eclipse.jdt.internal.core.JarPackageFragmentRoot;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
+import org.eclipse.wst.xml.core.internal.document.ElementImpl;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.jboss.tools.jsf.JSFModelPlugin;
+import org.jboss.tools.jsf.jsf2.model.JSF2ComponentModelManager;
+import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2TemplateManager;
+
+/**
+ * 
+ * @author yzhishko
+ * 
+ */
+
+ at SuppressWarnings("restriction")
+public class JSF2ResourceUtil {
+
+	public static final String JSF2_URI_PREFIX = "http://java.sun.com/jsf/composite"; //$NON-NLS-1$
+
+	public static final String COMPONENT_RESOURCE_PATH_KEY = "component_resource_path_key"; //$NON-NLS-1$
+
+	public static final int JAR_FILE_RESOURCE_TYPE = 1;
+
+	public static final int JAR_DIRECTORY_RESOURCE_TYPE = JAR_FILE_RESOURCE_TYPE << 1;
+
+	public static Object findCompositeComponentContainer(IProject project,
+			IDOMElement jsf2Element) {
+		ElementImpl elementImpl = (ElementImpl) jsf2Element;
+		String nameSpaceURI = elementImpl.getNamespaceURI();
+		if (nameSpaceURI == null || nameSpaceURI.indexOf(JSF2_URI_PREFIX) == -1) {
+			return null;
+		}
+		String nodeName = jsf2Element.getLocalName();
+		String relativeLocation = "/resources" + nameSpaceURI.replaceFirst( //$NON-NLS-1$
+				JSF2ResourceUtil.JSF2_URI_PREFIX, ""); //$NON-NLS-1$
+		IVirtualComponent component = ComponentCore.createComponent(project);
+		if (component != null) {
+			IVirtualFolder webRootFolder = component.getRootFolder().getFolder(
+					new Path("/")); //$NON-NLS-1$
+			IContainer folder = webRootFolder.getUnderlyingFolder();
+			IPath path = folder.getFullPath().append(relativeLocation).append(
+					"/" + nodeName + ".xhtml"); //$NON-NLS-1$ //$NON-NLS-2$
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file.isAccessible()) {
+				return file;
+			}
+		}
+		return searchInClassPath(project, "META-INF" + relativeLocation //$NON-NLS-1$
+				+ "/" + nodeName + ".xhtml", JAR_FILE_RESOURCE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	private static JarEntryResource searchInClassPath(IProject project,
+			String classPathResource, int jarResourceType) {
+		IJavaProject javaProject = JavaCore.create(project);
+		try {
+			for (IPackageFragmentRoot fragmentRoot : javaProject
+					.getAllPackageFragmentRoots()) {
+				if (fragmentRoot instanceof JarPackageFragmentRoot) {
+					JarPackageFragmentRoot jarPackageFragmentRoot = (JarPackageFragmentRoot) fragmentRoot;
+					ZipEntry zipEntry = jarPackageFragmentRoot.getJar()
+							.getEntry(classPathResource);
+					if (zipEntry != null) {
+						if (jarResourceType == JAR_FILE_RESOURCE_TYPE) {
+							JarEntryFile fileInJar = new JarEntryFile(
+									classPathResource);
+							fileInJar.setParent(jarPackageFragmentRoot);
+							return fileInJar;
+						}
+						if (jarResourceType == JAR_DIRECTORY_RESOURCE_TYPE) {
+							JarEntryDirectory directoryInJar = new JarEntryDirectory(
+									classPathResource);
+							directoryInJar.setParent(jarPackageFragmentRoot);
+							return directoryInJar;
+						}
+					}
+				}
+			}
+		} catch (JavaModelException e) {
+			JSFModelPlugin.getPluginLog().logError(e);
+		} catch (CoreException e) {
+			JSFModelPlugin.getPluginLog().logError(e);
+		}
+		return null;
+	}
+
+	public static Object findResourcesFolderContainerByNameSpace(
+			IProject project, String nameSpaceURI) {
+		if (nameSpaceURI == null || nameSpaceURI.indexOf(JSF2_URI_PREFIX) == -1) {
+			return null;
+		}
+		String relativeLocation = "/resources" + nameSpaceURI.replaceFirst( //$NON-NLS-1$
+				JSF2ResourceUtil.JSF2_URI_PREFIX, ""); //$NON-NLS-1$
+		IVirtualComponent component = ComponentCore.createComponent(project);
+		if (component != null) {
+			IVirtualFolder webRootFolder = component.getRootFolder().getFolder(
+					new Path("/")); //$NON-NLS-1$
+			IContainer folder = webRootFolder.getUnderlyingFolder();
+			IPath path = folder.getFullPath().append(relativeLocation);
+			IFolder resFolder = ResourcesPlugin.getWorkspace().getRoot()
+					.getFolder(path);
+			if (resFolder.isAccessible()) {
+				return resFolder;
+			}
+		}
+		return searchInClassPath(project,
+				"META-INF" + relativeLocation, JAR_DIRECTORY_RESOURCE_TYPE); //$NON-NLS-1$
+	}
+
+	public static boolean isResourcesFolderExists(IProject project,
+			String nameSpaceURI) {
+		return findResourcesFolderContainerByNameSpace(project, nameSpaceURI) == null ? false
+				: true;
+	}
+
+	public static IFolder createResourcesFolderByNameSpace(IProject project,
+			String nameSpaceURI) throws CoreException {
+		IFolder compositeCompResFolder = null;
+		String relativeLocation = nameSpaceURI.replaceFirst(
+				JSF2ResourceUtil.JSF2_URI_PREFIX, ""); //$NON-NLS-1$
+		if (!project.exists()) {
+			return null;
+		}
+		if (!project.isAccessible()) {
+			try {
+				project.open(new NullProgressMonitor());
+			} catch (CoreException e) {
+				JSFModelPlugin.getPluginLog().logError(e);
+				return compositeCompResFolder;
+			}
+		}
+		IVirtualComponent component = ComponentCore.createComponent(project);
+		if (component != null) {
+			IVirtualFolder webRootFolder = component.getRootFolder().getFolder(
+					new Path("/")); //$NON-NLS-1$
+			IContainer folder = webRootFolder.getUnderlyingFolder();
+			IFolder webFolder = ResourcesPlugin.getWorkspace().getRoot()
+					.getFolder(folder.getFullPath());
+			IFolder resourcesFolder = webFolder.getFolder("resources"); //$NON-NLS-1$
+			NullProgressMonitor monitor = new NullProgressMonitor();
+			if (!resourcesFolder.exists()) {
+				resourcesFolder.create(true, true, monitor);
+			}
+			String[] segments = new Path(relativeLocation).segments();
+			compositeCompResFolder = resourcesFolder;
+			for (int i = 0; i < segments.length; i++) {
+				compositeCompResFolder = compositeCompResFolder
+						.getFolder(segments[i]);
+				if (!compositeCompResFolder.exists()) {
+					compositeCompResFolder.create(true, true, monitor);
+				}
+			}
+
+		}
+		return compositeCompResFolder;
+	}
+
+	public static IFile createCompositeComponentFile(IProject project,
+			IPath resourceRelativePath) throws CoreException {
+		IFile compositeCompResFile = null;
+		if (!project.exists()) {
+			return null;
+		}
+		if (!project.isAccessible()) {
+			try {
+				project.open(new NullProgressMonitor());
+			} catch (CoreException e) {
+				JSFModelPlugin.getPluginLog().logError(e);
+				return compositeCompResFile;
+			}
+		}
+		IVirtualComponent component = ComponentCore.createComponent(project);
+		if (component != null) {
+			IVirtualFolder webRootFolder = component.getRootFolder().getFolder(
+					new Path("/")); //$NON-NLS-1$
+			IContainer folder = webRootFolder.getUnderlyingFolder();
+			IFolder webFolder = ResourcesPlugin.getWorkspace().getRoot()
+					.getFolder(folder.getFullPath());
+			IFolder resourcesFolder = webFolder.getFolder("resources"); //$NON-NLS-1$
+			NullProgressMonitor monitor = new NullProgressMonitor();
+			if (!resourcesFolder.exists()) {
+				resourcesFolder.create(true, true, monitor);
+			}
+			String[] segments = resourceRelativePath.segments();
+			IFolder componentPathFolder = resourcesFolder;
+			for (int i = 0; i < segments.length - 1; i++) {
+				componentPathFolder = componentPathFolder
+						.getFolder(segments[i]);
+				if (!componentPathFolder.exists()) {
+					componentPathFolder.create(true, true, monitor);
+				}
+			}
+			compositeCompResFile = componentPathFolder
+					.getFile(segments[segments.length - 1]);
+			if (!compositeCompResFile.exists()) {
+				compositeCompResFile.create(JSF2TemplateManager.getManager()
+						.createStreamFromTemplate("composite.xhtml"), true, //$NON-NLS-1$
+						monitor);
+			} else {
+				compositeCompResFile = JSF2ComponentModelManager.getManager()
+						.revalidateCompositeComponentFile(compositeCompResFile);
+			}
+		}
+		return compositeCompResFile;
+	}
+
+	public static IFile createCompositeComponentFile(IProject project,
+			IPath resourceRelativePath, String[] attrNames)
+			throws CoreException {
+		IFile jsf2ResFile = createCompositeComponentFile(project,
+				resourceRelativePath);
+		if (jsf2ResFile == null) {
+			return null;
+		}
+		if (attrNames == null || attrNames.length == 0) {
+			return jsf2ResFile;
+		}
+		return JSF2ComponentModelManager.getManager()
+				.updateJSF2CompositeComponentFile(jsf2ResFile, attrNames);
+	}
+
+}

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/messages/JSFUIMessages.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/messages/JSFUIMessages.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/messages/JSFUIMessages.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -128,6 +128,8 @@
 	public static String Create_JSF_2_Interface_Attr;
 	public static String Missing_JSF_2_Resources_Folder;
 	public static String Create_JSF_2_Resources_Folder;
+	public static String Rename_JSF_2_Composite_Components;
+	public static String Refactoring_JSF_2_resources;
 	
 	static {
 		// load message values from bundle file

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/messages/messages.properties
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/messages/messages.properties	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/messages/messages.properties	2010-05-12 08:53:34 UTC (rev 22030)
@@ -104,4 +104,6 @@
 Missing_JSF_2_Component_Attr=Attribute "{0}" is not defined for "{1}" composite component
 Create_JSF_2_Interface_Attr=Create attribute in an interface declaration of a composite component
 Missing_JSF_2_Resources_Folder=Resources folder "{0}" is missing in a project root directory
-Create_JSF_2_Resources_Folder=Create a folder container for JSF 2 resources
\ No newline at end of file
+Create_JSF_2_Resources_Folder=Create a folder container for JSF 2 resources
+Rename_JSF_2_Composite_Components=Rename JSF 2 composite components
+Refactoring_JSF_2_resources=Refactoring JSF 2 resources
\ No newline at end of file

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2ComponentsValidator.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2ComponentsValidator.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2ComponentsValidator.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -26,11 +26,11 @@
 import org.eclipse.wst.xml.core.internal.validation.core.ValidationReport;
 import org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;
 import org.jboss.tools.jsf.JSFModelPlugin;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
 import org.jboss.tools.jsf.web.validation.jsf2.components.IJSF2ValidationComponent;
 import org.jboss.tools.jsf.web.validation.jsf2.components.JSF2AttrTempComponent;
 import org.jboss.tools.jsf.web.validation.jsf2.components.JSF2CompositeTempComponent;
 import org.jboss.tools.jsf.web.validation.jsf2.components.JSF2URITempComponent;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ResourceUtil;
 import org.jboss.tools.jst.web.kb.IKbProject;
 import org.jboss.tools.jst.web.kb.KbProjectFactory;
 

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2SourceValidator.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2SourceValidator.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2SourceValidator.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -26,12 +26,12 @@
 import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
 import org.eclipse.wst.validation.internal.provisional.core.IValidator;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.jboss.tools.jsf.jsf2.model.JSF2ComponentModelManager;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
 import org.jboss.tools.jsf.web.validation.jsf2.components.IJSF2ValidationComponent;
 import org.jboss.tools.jsf.web.validation.jsf2.components.JSF2AttrTempComponent;
 import org.jboss.tools.jsf.web.validation.jsf2.components.JSF2CompositeTempComponent;
 import org.jboss.tools.jsf.web.validation.jsf2.components.JSF2URITempComponent;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ComponentModelManager;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ResourceUtil;
 
 /**
  * 

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2XMLValidator.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2XMLValidator.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/JSF2XMLValidator.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -24,10 +24,10 @@
 import org.eclipse.wst.xml.core.internal.validation.core.ValidationReport;
 import org.jboss.tools.common.el.core.resolver.ELContext;
 import org.jboss.tools.jsf.JSFModelPlugin;
+import org.jboss.tools.jsf.jsf2.model.JSF2ComponentModelManager;
+import org.jboss.tools.jsf.jsf2.util.JSF2ComponentUtil;
 import org.jboss.tools.jsf.web.validation.jsf2.components.IJSF2ValidationComponent;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ComponentModelManager;
 import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ComponentRecognizer;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ComponentUtil;
 import org.jboss.tools.jst.web.kb.IPageContext;
 import org.jboss.tools.jst.web.kb.PageContextFactory;
 import org.jboss.tools.jst.web.kb.internal.XmlContextImpl;

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2CompositeAttrsProposal.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2CompositeAttrsProposal.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2CompositeAttrsProposal.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -19,10 +19,10 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.ide.IDE;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
 import org.jboss.tools.jsf.messages.JSFUIMessages;
 import org.jboss.tools.jsf.web.validation.jsf2.JSF2XMLValidator;
 import org.jboss.tools.jsf.web.validation.jsf2.components.IJSF2ValidationComponent;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ResourceUtil;
 
 /**
  * 

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2CompositeComponentProposal.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2CompositeComponentProposal.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2CompositeComponentProposal.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -22,10 +22,10 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.ide.IDE;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
 import org.jboss.tools.jsf.messages.JSFUIMessages;
 import org.jboss.tools.jsf.web.validation.jsf2.JSF2XMLValidator;
 import org.jboss.tools.jsf.web.validation.jsf2.components.IJSF2ValidationComponent;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ResourceUtil;
 
 /**
  * 

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2QuickFixProcessor.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2QuickFixProcessor.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2QuickFixProcessor.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -21,8 +21,8 @@
 import org.eclipse.jface.text.quickassist.IQuickAssistProcessor;
 import org.eclipse.jface.text.source.Annotation;
 import org.eclipse.wst.sse.ui.StructuredTextInvocationContext;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
 import org.jboss.tools.jsf.web.validation.jsf2.components.IJSF2ValidationComponent;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ResourceUtil;
 
 /**
  * 

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2ResourcesFolderProposal.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2ResourcesFolderProposal.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/action/JSF2ResourcesFolderProposal.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -14,10 +14,10 @@
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
 import org.jboss.tools.jsf.messages.JSFUIMessages;
 import org.jboss.tools.jsf.web.validation.jsf2.JSF2XMLValidator;
 import org.jboss.tools.jsf.web.validation.jsf2.components.IJSF2ValidationComponent;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ResourceUtil;
 
 /**
  * 

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2AttrTempComponent.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2AttrTempComponent.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2AttrTempComponent.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -14,8 +14,8 @@
 import java.text.MessageFormat;
 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.util.JSF2ResourceUtil;
 import org.jboss.tools.jsf.messages.JSFUIMessages;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ResourceUtil;
 
 /**
  * 

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2ComponentFactory.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2ComponentFactory.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2ComponentFactory.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -21,7 +21,7 @@
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ComponentModelManager;
+import org.jboss.tools.jsf.jsf2.model.JSF2ComponentModelManager;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2CompositeTempComponent.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2CompositeTempComponent.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2CompositeTempComponent.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -16,8 +16,8 @@
 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.util.JSF2ResourceUtil;
 import org.jboss.tools.jsf.messages.JSFUIMessages;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ResourceUtil;
 import org.w3c.dom.NamedNodeMap;
 
 /**

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2URITempComponent.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2URITempComponent.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/components/JSF2URITempComponent.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -12,8 +12,9 @@
 package org.jboss.tools.jsf.web.validation.jsf2.components;
 
 import java.text.MessageFormat;
+
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
 import org.jboss.tools.jsf.messages.JSFUIMessages;
-import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ResourceUtil;
 
 /**
  * 

Deleted: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentModelManager.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentModelManager.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentModelManager.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -1,293 +0,0 @@
-/*******************************************************************************
- * 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.util;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashSet;
-import java.util.Scanner;
-import java.util.Set;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jdt.internal.core.JarEntryFile;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.wst.html.core.internal.encoding.HTMLModelLoader;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.text.JobSafeStructuredDocument;
-import org.eclipse.wst.xml.core.internal.document.ElementImpl;
-import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.format.DocumentNodeFormatter;
-import org.jboss.tools.jsf.JSFModelPlugin;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * 
- * @author yzhishko
- * 
- */
-
- at SuppressWarnings("restriction")
-public class JSF2ComponentModelManager {
-
-	private static JSF2ComponentModelManager instance = new JSF2ComponentModelManager();
-
-	private JSF2ComponentModelManager() {
-
-	}
-
-	public static JSF2ComponentModelManager getManager() {
-		return instance;
-	}
-
-	public IFile updateJSF2CompositeComponentFile(
-			IFile componentFileContatiner, String[] attrNames) {
-		IDOMDocument document = null;
-		IModelManager manager = StructuredModelManager.getModelManager();
-		if (manager == null) {
-			return componentFileContatiner;
-		}
-		IStructuredModel model = null;
-		try {
-			model = manager.getModelForEdit(componentFileContatiner);
-			if (model instanceof IDOMModel) {
-				IDOMModel domModel = (IDOMModel) model;
-				model.reload(componentFileContatiner.getContents());
-				document = domModel.getDocument();
-				updateJSF2CompositeComponent(document, attrNames);
-				componentFileContatiner.setContents(new ByteArrayInputStream(
-						document.getStructuredDocument().getText().getBytes()),
-						true, false, new NullProgressMonitor());
-			}
-		} catch (CoreException e) {
-			JSFModelPlugin.getPluginLog().logError(e);
-		} catch (IOException e) {
-			JSFModelPlugin.getPluginLog().logError(e);
-		} finally {
-			if (model != null) {
-				model.releaseFromEdit();
-			}
-		}
-		return componentFileContatiner;
-	}
-
-	public void updateJSF2CompositeComponent(IDOMDocument componentDoc,
-			String[] attrNames) {
-		IDOMElement[] interfaceElement = new IDOMElement[1];
-		findInterfaceComponent(componentDoc, interfaceElement);
-		createCompositeCompInterface(interfaceElement[0], attrNames);
-	}
-
-	private void findInterfaceComponent(Node node,
-			IDOMElement[] interfaceElement) {
-		if (node instanceof IDOMDocument) {
-			IDOMDocument document = (IDOMDocument) node;
-			findInterfaceComponent(document.getDocumentElement(),
-					interfaceElement);
-		}
-		if (node instanceof ElementImpl) {
-			ElementImpl impl = (ElementImpl) node;
-			String nameSpace = impl.getNamespaceURI();
-			if (JSF2ResourceUtil.JSF2_URI_PREFIX.equals(nameSpace)) {
-				String nodeName = impl.getLocalName();
-				if ("interface".equals(nodeName)) { //$NON-NLS-1$
-					interfaceElement[0] = impl;
-					return;
-				}
-			} else {
-				NodeList nodeList = node.getChildNodes();
-				if (nodeList != null) {
-					for (int i = 0; i < nodeList.getLength(); i++) {
-						findInterfaceComponent(nodeList.item(i),
-								interfaceElement);
-					}
-				}
-			}
-		}
-	}
-
-	private void createCompositeCompInterface(IDOMElement element,
-			String[] attrNames) {
-		Document document = (Document) element.getOwnerDocument();
-		String prefix = element.getPrefix();
-		Set<String> existInerfaceAttrs = getInterfaceAttrs(element);
-		if (prefix != null && !"".equals(prefix)) { //$NON-NLS-1$
-			for (int i = 0; i < attrNames.length; i++) {
-				if (!existInerfaceAttrs.contains(attrNames[i])) {
-					Element attrEl = document.createElementNS(
-							JSF2ResourceUtil.JSF2_URI_PREFIX, prefix
-									+ ":attribute"); //$NON-NLS-1$
-					attrEl.setAttribute("name", attrNames[i]); //$NON-NLS-1$
-					element.appendChild(attrEl);
-				}
-			}
-		} else {
-			for (int i = 0; i < attrNames.length; i++) {
-				if (!existInerfaceAttrs.contains(attrNames[i])) {
-					Element attrEl = document.createElementNS(
-							JSF2ResourceUtil.JSF2_URI_PREFIX, "attribute"); //$NON-NLS-1$
-					attrEl.setAttribute("name", attrNames[i]); //$NON-NLS-1$
-					element.appendChild(attrEl);
-				}
-			}
-		}
-		DocumentNodeFormatter formatter = new DocumentNodeFormatter();
-		formatter.format(document);
-	}
-
-	public IFile revalidateCompositeComponentFile(IFile file) {
-		IDOMDocument document = getReadableDOMDocument(file);
-		if (document == null) {
-			return null;
-		}
-		IDOMElement interfaceElement = checkCompositeInterface(document);
-		if (interfaceElement == null) {
-			return null;
-		}
-		return file;
-	}
-
-	public IDOMElement checkCompositeInterface(IDOMDocument document) {
-		if (document == null) {
-			return null;
-		}
-		Element element = document.getDocumentElement();
-		if (element == null) {
-			return null;
-		}
-		if (!"html".equals(element.getNodeName())) { //$NON-NLS-1$
-			return null;
-		}
-		ElementImpl elementImpl = (ElementImpl) element;
-		if (!"http://www.w3.org/1999/xhtml".equals(elementImpl.getNamespaceURI())) { //$NON-NLS-1$
-			return null;
-		}
-		IDOMElement[] interfaceElement = new IDOMElement[1];
-		findInterfaceComponent(document, interfaceElement);
-		return interfaceElement[0];
-	}
-
-	public static IDOMDocument getReadableDOMDocument(IFile file) {
-		IDOMDocument document = null;
-		IModelManager manager = StructuredModelManager.getModelManager();
-		if (manager == null) {
-			return document;
-		}
-		IStructuredModel model = null;
-		try {
-			model = manager.getModelForRead(file);
-			if (model instanceof IDOMModel) {
-				IDOMModel domModel = (IDOMModel) model;
-				document = domModel.getDocument();
-			}
-		} catch (CoreException e) {
-			JSFModelPlugin.getPluginLog().logError(e);
-		} catch (IOException e) {
-			JSFModelPlugin.getPluginLog().logError(e);
-		} finally {
-			if (model != null) {
-				model.releaseFromRead();
-			}
-		}
-		return document;
-	}
-
-	public static IDOMDocument getReadableDOMDocument(JarEntryFile file) {
-		IDOMDocument document = null;
-		IStructuredModel model = null;
-		InputStream inputStream;
-		try {
-			inputStream = file.getContents();
-			if (inputStream != null) {
-				StringBuffer buffer = new StringBuffer(""); //$NON-NLS-1$
-				Scanner in = new Scanner(inputStream);
-				while (in.hasNextLine()) {
-					buffer.append(in.nextLine());
-				}
-				model = new HTMLModelLoader().newModel();
-				model.setStructuredDocument(new JobSafeStructuredDocument(
-						new XMLSourceParser()));
-				model.getStructuredDocument().set(buffer.toString());
-				if (model instanceof IDOMModel) {
-					document = ((IDOMModel) model).getDocument();
-				}
-			}
-		} catch (CoreException e) {
-			JSFModelPlugin.getPluginLog().logError(e);
-		} finally {
-			model = null;
-		}
-		return document;
-	}
-
-	public static IDOMDocument getReadableDOMDocument(IDocument textDocument) {
-		IDOMDocument document = null;
-		if (!(textDocument instanceof IStructuredDocument)) {
-			return document;
-		}
-		IModelManager manager = StructuredModelManager.getModelManager();
-		if (manager == null) {
-			return document;
-		}
-		IStructuredModel model = null;
-		try {
-			model = manager.getModelForRead((IStructuredDocument) textDocument);
-			if (model instanceof IDOMModel) {
-				IDOMModel domModel = (IDOMModel) model;
-				document = domModel.getDocument();
-			}
-		} finally {
-			if (model != null) {
-				model.releaseFromRead();
-			}
-		}
-		return document;
-	}
-
-	public Set<String> getInterfaceAttrs(IDOMElement interfaceElement) {
-		Set<String> interfaceAttrs = new HashSet<String>(0);
-		if (interfaceElement != null) {
-			String prefix = interfaceElement.getPrefix();
-			String nodeName = "attribute"; //$NON-NLS-1$
-			if (prefix != null && !"".equals(prefix)) { //$NON-NLS-1$
-				nodeName = prefix + ":" + nodeName; //$NON-NLS-1$
-			}
-			NodeList attrsElements = interfaceElement
-					.getElementsByTagName(nodeName);
-			if (attrsElements != null) {
-				for (int i = 0; i < attrsElements.getLength(); i++) {
-					Node el = attrsElements.item(i);
-					if (el instanceof IDOMElement) {
-						IDOMElement element = (IDOMElement) el;
-						String attrvalue = element.getAttribute("name"); //$NON-NLS-1$
-						if (attrvalue != null && !"".equals(attrvalue)) { //$NON-NLS-1$
-							interfaceAttrs.add(attrvalue);
-						}
-					}
-				}
-			}
-		}
-		return interfaceAttrs;
-	}
-
-}

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentRecognizer.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentRecognizer.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentRecognizer.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -17,6 +17,7 @@
 import org.eclipse.jdt.internal.core.JarEntryFile;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
 import org.jboss.tools.jsf.web.validation.jsf2.components.IJSF2ValidationComponent;
 import org.jboss.tools.jsf.web.validation.jsf2.components.JSF2ComponentFactory;
 

Deleted: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentUtil.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentUtil.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ComponentUtil.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * 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.util;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.eclipse.wst.xml.core.internal.document.ElementImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * 
- * @author yzhishko
- * 
- */
-
- at SuppressWarnings("restriction")
-public class JSF2ComponentUtil {
-
-	public static Map<String, List<Element>> findCompositeComponents(Node node) {
-		Map<String, List<Element>> elementsMap = new HashMap<String, List<Element>>(
-				0);
-		findChildCompositeComponents(node, elementsMap);
-		return elementsMap;
-	}
-
-	private static void findChildCompositeComponents(Node node,
-			Map<String, List<Element>> elementsMap) {
-		if (node instanceof IDOMDocument) {
-			node = ((IDOMDocument) node).getDocumentElement();
-			findChildCompositeComponents(node, elementsMap);
-		} else if (node instanceof ElementImpl) {
-			ElementImpl elementImpl = (ElementImpl) node;
-			String namespaceURI = elementImpl.getNamespaceURI();
-			if (namespaceURI != null
-					&& namespaceURI
-							.startsWith(JSF2ResourceUtil.JSF2_URI_PREFIX)
-					&& !namespaceURI.equals(JSF2ResourceUtil.JSF2_URI_PREFIX)) {
-				List<Element> elements = elementsMap.get(namespaceURI);
-				if (elements == null) {
-					elements = new ArrayList<Element>(0);
-				}
-				elements.add(elementImpl);
-				elementsMap.put(namespaceURI, elements);
-			}
-			NodeList children = node.getChildNodes();
-			if (children != null) {
-				for (int i = 0; i < children.getLength(); i++) {
-					findChildCompositeComponents(children.item(i), elementsMap);
-				}
-			}
-		}
-	}
-
-	public static IDOMAttr[] findURIContainers(Node scanNode) {
-		List<IDOMAttr> attrs = new ArrayList<IDOMAttr>(0);
-		findChildURIContainers(scanNode, attrs);
-		return attrs.toArray(new IDOMAttr[0]);
-	}
-
-	private static void findChildURIContainers(Node node,
-			List<IDOMAttr> attrsList) {
-		if (node instanceof IDOMDocument) {
-			node = ((IDOMDocument) node).getDocumentElement();
-			findChildURIContainers(node, attrsList);
-		} else if (node instanceof ElementImpl) {
-			ElementImpl elementImpl = (ElementImpl) node;
-			NamedNodeMap attrsMap = elementImpl.getAttributes();
-			if (attrsMap != null && attrsMap.getLength() != 0) {
-				for (int i = 0; i < attrsMap.getLength(); i++) {
-					IDOMAttr attr = (IDOMAttr) attrsMap.item(i);
-					String attrValue = attr.getValue();
-					if (attrValue != null
-							&& attrValue
-									.indexOf(JSF2ResourceUtil.JSF2_URI_PREFIX) > -1) {
-						String compPath = attrValue.replaceFirst(
-								JSF2ResourceUtil.JSF2_URI_PREFIX, ""); //$NON-NLS-1$
-						if (!"".equals(compPath.trim())) { //$NON-NLS-1$
-							if (isCorrectCompositeShemaAttrName(attr.getName())) {
-								attrsList.add(attr);
-							}
-						}
-					}
-				}
-			}
-			NodeList children = node.getChildNodes();
-			if (children != null) {
-				for (int i = 0; i < children.getLength(); i++) {
-					findChildURIContainers((IDOMNode) children.item(i),
-							attrsList);
-				}
-			}
-		}
-	}
-
-	private static boolean isCorrectCompositeShemaAttrName(String attrName) {
-		if (attrName == null) {
-			return false;
-		}
-		if ("xmlns".equals(attrName.trim()) || "uri".equals(attrName.trim())) { //$NON-NLS-1$ //$NON-NLS-2$
-			return true;
-		}
-		if (attrName.indexOf(':') < 0) {
-			return false;
-		}
-		attrName = attrName.substring(0, attrName.indexOf(':')).trim();
-		if ("xmlns".equals(attrName)) { //$NON-NLS-1$
-			return true;
-		}
-		return false;
-	}
-
-}

Deleted: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ResourceUtil.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ResourceUtil.java	2010-05-11 20:51:21 UTC (rev 22029)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/validation/jsf2/util/JSF2ResourceUtil.java	2010-05-12 08:53:34 UTC (rev 22030)
@@ -1,251 +0,0 @@
-/*******************************************************************************
- * 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.util;
-
-import java.util.zip.ZipEntry;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IPackageFragmentRoot;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.internal.core.JarEntryDirectory;
-import org.eclipse.jdt.internal.core.JarEntryFile;
-import org.eclipse.jdt.internal.core.JarEntryResource;
-import org.eclipse.jdt.internal.core.JarPackageFragmentRoot;
-import org.eclipse.wst.common.componentcore.ComponentCore;
-import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
-import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
-import org.eclipse.wst.xml.core.internal.document.ElementImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.jboss.tools.jsf.JSFModelPlugin;
-
-/**
- * 
- * @author yzhishko
- * 
- */
-
- at SuppressWarnings("restriction")
-public class JSF2ResourceUtil {
-
-	public static final String JSF2_URI_PREFIX = "http://java.sun.com/jsf/composite"; //$NON-NLS-1$
-
-	public static final String COMPONENT_RESOURCE_PATH_KEY = "component_resource_path_key"; //$NON-NLS-1$
-
-	public static final int JAR_FILE_RESOURCE_TYPE = 1;
-
-	public static final int JAR_DIRECTORY_RESOURCE_TYPE = JAR_FILE_RESOURCE_TYPE << 1;
-
-	public static Object findCompositeComponentContainer(IProject project,
-			IDOMElement jsf2Element) {
-		ElementImpl elementImpl = (ElementImpl) jsf2Element;
-		String nameSpaceURI = elementImpl.getNamespaceURI();
-		if (nameSpaceURI == null || nameSpaceURI.indexOf(JSF2_URI_PREFIX) == -1) {
-			return null;
-		}
-		String nodeName = jsf2Element.getLocalName();
-		String relativeLocation = "/resources" + nameSpaceURI.replaceFirst( //$NON-NLS-1$
-				JSF2ResourceUtil.JSF2_URI_PREFIX, ""); //$NON-NLS-1$
-		IVirtualComponent component = ComponentCore.createComponent(project);
-		if (component != null) {
-			IVirtualFolder webRootFolder = component.getRootFolder().getFolder(
-					new Path("/")); //$NON-NLS-1$
-			IContainer folder = webRootFolder.getUnderlyingFolder();
-			IPath path = folder.getFullPath().append(relativeLocation).append(
-					"/" + nodeName + ".xhtml"); //$NON-NLS-1$ //$NON-NLS-2$
-			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-			if (file.isAccessible()) {
-				return file;
-			}
-		}
-		return searchInClassPath(project, "META-INF" + relativeLocation //$NON-NLS-1$
-				+ "/" + nodeName + ".xhtml", JAR_FILE_RESOURCE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	private static JarEntryResource searchInClassPath(IProject project,
-			String classPathResource, int jarResourceType) {
-		IJavaProject javaProject = JavaCore.create(project);
-		try {
-			for (IPackageFragmentRoot fragmentRoot : javaProject
-					.getAllPackageFragmentRoots()) {
-				if (fragmentRoot instanceof JarPackageFragmentRoot) {
-					JarPackageFragmentRoot jarPackageFragmentRoot = (JarPackageFragmentRoot) fragmentRoot;
-					ZipEntry zipEntry = jarPackageFragmentRoot.getJar()
-							.getEntry(classPathResource);
-					if (zipEntry != null) {
-						if (jarResourceType == JAR_FILE_RESOURCE_TYPE) {
-							JarEntryFile fileInJar = new JarEntryFile(
-									classPathResource);
-							fileInJar.setParent(jarPackageFragmentRoot);
-							return fileInJar;
-						}
-						if (jarResourceType == JAR_DIRECTORY_RESOURCE_TYPE) {
-							JarEntryDirectory directoryInJar = new JarEntryDirectory(
-									classPathResource);
-							directoryInJar.setParent(jarPackageFragmentRoot);
-							return directoryInJar;
-						}
-					}
-				}
-			}
-		} catch (JavaModelException e) {
-			JSFModelPlugin.getPluginLog().logError(e);
-		} catch (CoreException e) {
-			JSFModelPlugin.getPluginLog().logError(e);
-		}
-		return null;
-	}
-
-	public static Object findResourcesFolderContainerByNameSpace(
-			IProject project, String nameSpaceURI) {
-		if (nameSpaceURI == null || nameSpaceURI.indexOf(JSF2_URI_PREFIX) == -1) {
-			return null;
-		}
-		String relativeLocation = "/resources" + nameSpaceURI.replaceFirst( //$NON-NLS-1$
-				JSF2ResourceUtil.JSF2_URI_PREFIX, ""); //$NON-NLS-1$
-		IVirtualComponent component = ComponentCore.createComponent(project);
-		if (component != null) {
-			IVirtualFolder webRootFolder = component.getRootFolder().getFolder(
-					new Path("/")); //$NON-NLS-1$
-			IContainer folder = webRootFolder.getUnderlyingFolder();
-			IPath path = folder.getFullPath().append(relativeLocation);
-			IFolder resFolder = ResourcesPlugin.getWorkspace().getRoot()
-					.getFolder(path);
-			if (resFolder.isAccessible()) {
-				return resFolder;
-			}
-		}
-		return searchInClassPath(project,
-				"META-INF" + relativeLocation, JAR_DIRECTORY_RESOURCE_TYPE); //$NON-NLS-1$
-	}
-
-	public static boolean isResourcesFolderExists(IProject project,
-			String nameSpaceURI) {
-		return findResourcesFolderContainerByNameSpace(project, nameSpaceURI) == null ? false
-				: true;
-	}
-
-	public static IFolder createResourcesFolderByNameSpace(IProject project,
-			String nameSpaceURI) throws CoreException {
-		IFolder compositeCompResFolder = null;
-		String relativeLocation = nameSpaceURI.replaceFirst(
-				JSF2ResourceUtil.JSF2_URI_PREFIX, ""); //$NON-NLS-1$
-		if (!project.exists()) {
-			return null;
-		}
-		if (!project.isAccessible()) {
-			try {
-				project.open(new NullProgressMonitor());
-			} catch (CoreException e) {
-				JSFModelPlugin.getPluginLog().logError(e);
-				return compositeCompResFolder;
-			}
-		}
-		IVirtualComponent component = ComponentCore.createComponent(project);
-		if (component != null) {
-			IVirtualFolder webRootFolder = component.getRootFolder().getFolder(
-					new Path("/")); //$NON-NLS-1$
-			IContainer folder = webRootFolder.getUnderlyingFolder();
-			IFolder webFolder = ResourcesPlugin.getWorkspace().getRoot()
-					.getFolder(folder.getFullPath());
-			IFolder resourcesFolder = webFolder.getFolder("resources"); //$NON-NLS-1$
-			NullProgressMonitor monitor = new NullProgressMonitor();
-			if (!resourcesFolder.exists()) {
-				resourcesFolder.create(true, true, monitor);
-			}
-			String[] segments = new Path(relativeLocation).segments();
-			compositeCompResFolder = resourcesFolder;
-			for (int i = 0; i < segments.length; i++) {
-				compositeCompResFolder = compositeCompResFolder
-						.getFolder(segments[i]);
-				if (!compositeCompResFolder.exists()) {
-					compositeCompResFolder.create(true, true, monitor);
-				}
-			}
-
-		}
-		return compositeCompResFolder;
-	}
-
-	public static IFile createCompositeComponentFile(IProject project,
-			IPath resourceRelativePath) throws CoreException {
-		IFile compositeCompResFile = null;
-		if (!project.exists()) {
-			return null;
-		}
-		if (!project.isAccessible()) {
-			try {
-				project.open(new NullProgressMonitor());
-			} catch (CoreException e) {
-				JSFModelPlugin.getPluginLog().logError(e);
-				return compositeCompResFile;
-			}
-		}
-		IVirtualComponent component = ComponentCore.createComponent(project);
-		if (component != null) {
-			IVirtualFolder webRootFolder = component.getRootFolder().getFolder(
-					new Path("/")); //$NON-NLS-1$
-			IContainer folder = webRootFolder.getUnderlyingFolder();
-			IFolder webFolder = ResourcesPlugin.getWorkspace().getRoot()
-					.getFolder(folder.getFullPath());
-			IFolder resourcesFolder = webFolder.getFolder("resources"); //$NON-NLS-1$
-			NullProgressMonitor monitor = new NullProgressMonitor();
-			if (!resourcesFolder.exists()) {
-				resourcesFolder.create(true, true, monitor);
-			}
-			String[] segments = resourceRelativePath.segments();
-			IFolder componentPathFolder = resourcesFolder;
-			for (int i = 0; i < segments.length - 1; i++) {
-				componentPathFolder = componentPathFolder
-						.getFolder(segments[i]);
-				if (!componentPathFolder.exists()) {
-					componentPathFolder.create(true, true, monitor);
-				}
-			}
-			compositeCompResFile = componentPathFolder
-					.getFile(segments[segments.length - 1]);
-			if (!compositeCompResFile.exists()) {
-				compositeCompResFile.create(JSF2TemplateManager.getManager()
-						.createStreamFromTemplate("composite.xhtml"), true, //$NON-NLS-1$
-						monitor);
-			} else {
-				compositeCompResFile = JSF2ComponentModelManager.getManager()
-						.revalidateCompositeComponentFile(compositeCompResFile);
-			}
-		}
-		return compositeCompResFile;
-	}
-
-	public static IFile createCompositeComponentFile(IProject project,
-			IPath resourceRelativePath, String[] attrNames)
-			throws CoreException {
-		IFile jsf2ResFile = createCompositeComponentFile(project,
-				resourceRelativePath);
-		if (jsf2ResFile == null) {
-			return null;
-		}
-		if (attrNames == null || attrNames.length == 0) {
-			return jsf2ResFile;
-		}
-		return JSF2ComponentModelManager.getManager()
-				.updateJSF2CompositeComponentFile(jsf2ResFile, attrNames);
-	}
-
-}



More information about the jbosstools-commits mailing list