/******************************************************************************* * Copyright (c) 2012 Pivotal Software, Inc. * All rights reserved. This program and the accompanying materials * are 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: * Pivotal Software, Inc. - initial API and implementation *******************************************************************************/ package org.grails.ide.eclipse.editor.gsp.model; import java.util.List; import org.eclipse.jst.jsp.core.internal.modelhandler.JSPModelLoader; import org.eclipse.jst.jsp.core.internal.modelquery.ModelQueryAdapterFactoryForJSP; import org.eclipse.wst.sse.core.internal.document.IDocumentLoader; import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser; import org.eclipse.wst.sse.core.internal.provisional.IModelLoader; import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory; import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.grails.ide.eclipse.editor.gsp.parser.GSPDocumentLoader; import org.grails.ide.eclipse.editor.gsp.parser.GSPSourceParser; import org.grails.ide.eclipse.editor.gsp.tags.ModelQueryAdapterFactoryForGSP; /** * Make {@link GSPTranslation} create .groovy compilation units instead of .java. * @author Andrew Eisenberg * @created Nov 6, 2009 */ public class GSPModelLoader extends JSPModelLoader implements IModelLoader { @Override public IStructuredModel newModel() { return new GSPStructuredModel(); } /** * Swap the JSP adapter factory with GSP adapter factory */ @Override public List<INodeAdapterFactory> getAdapterFactories() { List<INodeAdapterFactory> result = super.getAdapterFactories(); int i = 0; for (INodeAdapterFactory factory : result) { if (factory instanceof ModelQueryAdapterFactoryForJSP) { break; } i++; } if (i < result.size()) { result.remove(i); result.add(i, new ModelQueryAdapterFactoryForGSP()); } return result; } /** * stub for when we have our gsp parser ready */ @Override public RegionParser getParser() { return new GSPSourceParser(); } /** * stub for when we have our gsp parser ready */ public IDocumentLoader getDocumentLoader() { return new GSPDocumentLoader(); } }