blob: aa3a31c6483502f4dd88124621215bcfd57b8110 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.uima.ruta.ide.core;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.apache.uima.ruta.extensions.IEngineLoader;
import org.apache.uima.ruta.extensions.IRutaActionExtension;
import org.apache.uima.ruta.extensions.IRutaBooleanFunctionExtension;
import org.apache.uima.ruta.extensions.IRutaConditionExtension;
import org.apache.uima.ruta.extensions.IRutaNumberFunctionExtension;
import org.apache.uima.ruta.extensions.IRutaStringFunctionExtension;
import org.apache.uima.ruta.extensions.IRutaTypeFunctionExtension;
import org.apache.uima.ruta.ide.RutaIdeCorePlugin;
import org.apache.uima.ruta.ide.core.extensions.ICompletionExtension;
import org.apache.uima.ruta.ide.core.extensions.IIDEActionExtension;
import org.apache.uima.ruta.ide.core.extensions.IIDEBooleanFunctionExtension;
import org.apache.uima.ruta.ide.core.extensions.IIDEConditionExtension;
import org.apache.uima.ruta.ide.core.extensions.IIDENumberFunctionExtension;
import org.apache.uima.ruta.ide.core.extensions.IIDEStringFunctionExtension;
import org.apache.uima.ruta.ide.core.extensions.IIDETypeFunctionExtension;
import org.apache.uima.ruta.ide.core.extensions.IMatchLocatorExtension;
import org.apache.uima.ruta.ide.core.extensions.IMixinBuildVisitorExtension;
import org.apache.uima.ruta.ide.core.extensions.IRutaLanguageExtension;
import org.apache.uima.ruta.ide.core.extensions.ISelectionExtension;
import org.apache.uima.ruta.ide.core.extensions.ISourceElementRequestVisitorExtension;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.Platform;
import org.eclipse.dltk.core.PriorityClassDLTKExtensionManager;
import org.eclipse.dltk.core.PriorityDLTKExtensionManager.ElementInfo;
public class RutaExtensionManager {
PriorityClassDLTKExtensionManager manager = new PriorityClassDLTKExtensionManager(
RutaIdeCorePlugin.PLUGIN_ID + ".rutaExtension", "language");
private static RutaExtensionManager sInstance;
public static RutaExtensionManager getDefault() {
if (sInstance == null) {
sInstance = new RutaExtensionManager();
}
return sInstance;
}
public IRutaLanguageExtension[] getExtensions() {
ElementInfo[] infos = manager.getElementInfos();
if (infos == null) {
return new IRutaLanguageExtension[0];
}
List extensions = new ArrayList();
for (int i = 0; i < infos.length; i++) {
Object object = manager.getInitObject(infos[i]);
if (object instanceof IRutaLanguageExtension) {
extensions.add(object);
}
}
return (IRutaLanguageExtension[]) extensions.toArray(new IRutaLanguageExtension[extensions
.size()]);
}
public ISourceElementRequestVisitorExtension[] getSourceElementRequestoVisitorExtensions() {
IRutaLanguageExtension[] extensions = getExtensions();
List result = new ArrayList();
for (int i = 0; i < extensions.length; i++) {
ISourceElementRequestVisitorExtension visitorExtension = extensions[i]
.createSourceElementRequestVisitorExtension();
if (visitorExtension != null) {
result.add(visitorExtension);
}
}
return (ISourceElementRequestVisitorExtension[]) result
.toArray(new ISourceElementRequestVisitorExtension[result.size()]);
}
public IMixinBuildVisitorExtension[] getMixinVisitorExtensions() {
IRutaLanguageExtension[] extensions = getExtensions();
List result = new ArrayList();
for (int i = 0; i < extensions.length; i++) {
IMixinBuildVisitorExtension visitorExtension = extensions[i]
.createMixinBuildVisitorExtension();
if (visitorExtension != null) {
result.add(visitorExtension);
}
}
return (IMixinBuildVisitorExtension[]) result.toArray(new IMixinBuildVisitorExtension[result
.size()]);
}
public IMatchLocatorExtension[] getMatchLocatorExtensions() {
IRutaLanguageExtension[] extensions = getExtensions();
List result = new ArrayList();
for (int i = 0; i < extensions.length; i++) {
IMatchLocatorExtension visitorExtension = extensions[i].createMatchLocatorExtension();
if (visitorExtension != null) {
result.add(visitorExtension);
}
}
return (IMatchLocatorExtension[]) result.toArray(new IMatchLocatorExtension[result.size()]);
}
public ICompletionExtension[] getCompletionExtensions() {
IRutaLanguageExtension[] extensions = getExtensions();
List result = new ArrayList();
for (int i = 0; i < extensions.length; i++) {
ICompletionExtension visitorExtension = extensions[i].createCompletionExtension();
if (visitorExtension != null) {
result.add(visitorExtension);
}
}
return (ICompletionExtension[]) result.toArray(new ICompletionExtension[result.size()]);
}
public ISelectionExtension[] getSelectionExtensions() {
IRutaLanguageExtension[] extensions = getExtensions();
List result = new ArrayList();
for (int i = 0; i < extensions.length; i++) {
ISelectionExtension visitorExtension = extensions[i].createSelectionExtension();
if (visitorExtension != null) {
result.add(visitorExtension);
}
}
return (ISelectionExtension[]) result.toArray(new ISelectionExtension[result.size()]);
}
public IIDEConditionExtension[] getIDEConditionExtensions() {
Collection<IIDEConditionExtension> result = new ArrayList<IIDEConditionExtension>();
IExtension[] conditionExtensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "conditionExtension").getExtensions();
for (IExtension extension : conditionExtensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("class");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IIDEConditionExtension) {
result.add((IIDEConditionExtension) obj);
}
}
}
return result.toArray(new IIDEConditionExtension[0]);
}
public IIDEActionExtension[] getIDEActionExtensions() {
Collection<IIDEActionExtension> result = new ArrayList<IIDEActionExtension>();
IExtension[] conditionExtensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "actionExtension").getExtensions();
for (IExtension extension : conditionExtensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("class");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IIDEActionExtension) {
result.add((IIDEActionExtension) obj);
}
}
}
return result.toArray(new IIDEActionExtension[0]);
}
public IIDENumberFunctionExtension[] getIDENumberFunctionExtensions() {
Collection<IIDENumberFunctionExtension> result = new ArrayList<IIDENumberFunctionExtension>();
IExtension[] extensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "numberFunctionExtension").getExtensions();
for (IExtension extension : extensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("class");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IIDENumberFunctionExtension) {
result.add((IIDENumberFunctionExtension) obj);
}
}
}
return result.toArray(new IIDENumberFunctionExtension[0]);
}
public IIDEBooleanFunctionExtension[] getIDEBooleanFunctionExtensions() {
Collection<IIDEBooleanFunctionExtension> result = new ArrayList<IIDEBooleanFunctionExtension>();
IExtension[] extensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "booleanFunctionExtension").getExtensions();
for (IExtension extension : extensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("class");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IIDEBooleanFunctionExtension) {
result.add((IIDEBooleanFunctionExtension) obj);
}
}
}
return result.toArray(new IIDEBooleanFunctionExtension[0]);
}
public IIDEStringFunctionExtension[] getIDEStringFunctionExtensions() {
Collection<IIDEStringFunctionExtension> result = new ArrayList<IIDEStringFunctionExtension>();
IExtension[] extensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "stringFunctionExtension").getExtensions();
for (IExtension extension : extensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("class");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IIDEStringFunctionExtension) {
result.add((IIDEStringFunctionExtension) obj);
}
}
}
return result.toArray(new IIDEStringFunctionExtension[0]);
}
public IIDETypeFunctionExtension[] getIDETypeFunctionExtensions() {
Collection<IIDETypeFunctionExtension> result = new ArrayList<IIDETypeFunctionExtension>();
IExtension[] extensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "typeFunctionExtension").getExtensions();
for (IExtension extension : extensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("class");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IIDETypeFunctionExtension) {
result.add((IIDETypeFunctionExtension) obj);
}
}
}
return result.toArray(new IIDETypeFunctionExtension[0]);
}
public IRutaConditionExtension[] getRutaConditionExtensions() {
Collection<IRutaConditionExtension> result = new ArrayList<IRutaConditionExtension>();
IExtension[] conditionExtensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "conditionExtension").getExtensions();
for (IExtension extension : conditionExtensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("engine");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IRutaConditionExtension) {
result.add((IRutaConditionExtension) obj);
}
}
}
return result.toArray(new IRutaConditionExtension[0]);
}
public IRutaActionExtension[] getRutaActionExtensions() {
Collection<IRutaActionExtension> result = new ArrayList<IRutaActionExtension>();
IExtension[] conditionExtensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "actionExtension").getExtensions();
for (IExtension extension : conditionExtensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("engine");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IRutaActionExtension) {
result.add((IRutaActionExtension) obj);
}
}
}
return result.toArray(new IRutaActionExtension[0]);
}
public IRutaNumberFunctionExtension[] getRutaNumberFunctionExtensions() {
Collection<IRutaNumberFunctionExtension> result = new ArrayList<IRutaNumberFunctionExtension>();
IExtension[] extensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "numberFunctionExtension").getExtensions();
for (IExtension extension : extensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("engine");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IRutaNumberFunctionExtension) {
result.add((IRutaNumberFunctionExtension) obj);
}
}
}
return result.toArray(new IRutaNumberFunctionExtension[0]);
}
public IRutaBooleanFunctionExtension[] getRutaBooleanFunctionExtensions() {
Collection<IRutaBooleanFunctionExtension> result = new ArrayList<IRutaBooleanFunctionExtension>();
IExtension[] extensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "booleanFunctionExtension").getExtensions();
for (IExtension extension : extensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("engine");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IRutaBooleanFunctionExtension) {
result.add((IRutaBooleanFunctionExtension) obj);
}
}
}
return result.toArray(new IRutaBooleanFunctionExtension[0]);
}
public IRutaStringFunctionExtension[] getRutaStringFunctionExtensions() {
Collection<IRutaStringFunctionExtension> result = new ArrayList<IRutaStringFunctionExtension>();
IExtension[] extensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "stringFunctionExtension").getExtensions();
for (IExtension extension : extensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("engine");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IRutaStringFunctionExtension) {
result.add((IRutaStringFunctionExtension) obj);
}
}
}
return result.toArray(new IRutaStringFunctionExtension[0]);
}
public IRutaTypeFunctionExtension[] getRutaTypeFunctionExtensions() {
Collection<IRutaTypeFunctionExtension> result = new ArrayList<IRutaTypeFunctionExtension>();
IExtension[] extensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "typeFunctionExtension").getExtensions();
for (IExtension extension : extensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("engine");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IRutaTypeFunctionExtension) {
result.add((IRutaTypeFunctionExtension) obj);
}
}
}
return result.toArray(new IRutaTypeFunctionExtension[0]);
}
public IEngineLoader[] getEngineExtensions() {
Collection<IEngineLoader> result = new ArrayList<IEngineLoader>();
IExtension[] conditionExtensions = Platform.getExtensionRegistry()
.getExtensionPoint(RutaIdeCorePlugin.PLUGIN_ID, "engineExtension").getExtensions();
for (IExtension extension : conditionExtensions) {
IConfigurationElement[] configurationElements = extension.getConfigurationElements();
for (IConfigurationElement configurationElement : configurationElements) {
Object obj = null;
try {
obj = configurationElement.createExecutableExtension("class");
} catch (CoreException e) {
e.printStackTrace();
}
if (obj instanceof IEngineLoader) {
result.add((IEngineLoader) obj);
}
}
}
return result.toArray(new IEngineLoader[0]);
}
}