package org.jboss.tools.jsf.model.handlers; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.jboss.tools.common.meta.action.SpecialWizard; import org.jboss.tools.common.meta.action.impl.handlers.DefaultRemoveHandler; import org.jboss.tools.common.model.XModel; import org.jboss.tools.common.model.XModelObject; import org.jboss.tools.common.model.util.EclipseResourceUtil; import org.jboss.tools.jsf.JSFModelPlugin; import org.jboss.tools.jsf.model.JSFConstants; import org.jboss.tools.jst.web.kb.IKbProject; import org.jboss.tools.jst.web.model.helpers.WebAppHelper; public class RemoveJSFNatureContribution implements SpecialWizard { XModel model = null; public void setObject(Object object) { if(object instanceof XModel) { model = (XModel)object; } } public int execute() { if(model == null) return 1; XModelObject webxml = WebAppHelper.getWebApp(model); if(webxml != null) { XModelObject servlet = WebAppHelper.findServlet(webxml, JSFConstants.FACES_SERVLET_CLASS, "Faces Config"); //$NON-NLS-1$ String servletName = servlet == null ? null : servlet.getAttributeValue("servlet-name"); //$NON-NLS-1$ XModelObject mapping = WebAppHelper.findServletMapping(webxml, servletName); if(servlet != null) { DefaultRemoveHandler.removeFromParent(servlet); } if(mapping != null) { DefaultRemoveHandler.removeFromParent(mapping); } XModelObject folder = webxml.getChildByPath("Context Params"); //$NON-NLS-1$ XModelObject[] params = folder.getChildren(); for (int i = 0; i < params.length; i++) { String name = params[i].getAttributeValue("param-name"); //$NON-NLS-1$ if(name != null && name.startsWith("javax.faces.")) { //$NON-NLS-1$ DefaultRemoveHandler.removeFromParent(params[i]); } } } IProject project = EclipseResourceUtil.getProject(model.getRoot()); if(project != null) { try { EclipseResourceUtil.removeNatureFromProject(project, IKbProject.NATURE_ID); } catch (CoreException e) { JSFModelPlugin.getPluginLog().logError(e); } } return 0; } }