org.uberfire.backend.plugin.PluginProcessor Maven / Gradle / Ivy
/*
* Copyright 2017 Red Hat, Inc. and/or its affiliates.
*
* Licensed 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.uberfire.backend.plugin;
/**
* A simple marker to keep track of all plugins processors.
*/
public interface PluginProcessor {
/**
* Checks if a plugin file has the valid extension
* @param fileName the file name of the plugin
*/
static boolean isAValidPluginFileExtension(String fileName) {
for (PluginProcessorType type : PluginProcessorType.values()) {
if (fileName.endsWith(type.getExtension())) {
return true;
}
}
return false;
}
/**
* Checks if this processor should process a given plugin
* @param pluginName the name of the plugin, must not be null.
*/
boolean shouldProcess(String pluginName);
/**
* Removes all plugins from this processor.
*/
void removeAll();
/**
* Processes a deployed plugin and optionally notifies clients
* @param pluginName the name of the plugin, must not be null.
* @param pluginDeploymentDir the directory to deploy plugin contents to, must not be null.
* @param notifyClients trigger a event after plugin processing
*/
void process(String pluginName,
String pluginDeploymentDir,
boolean notifyClients);
/**
* Checks if a plugin with the given name is registered.
* @param pluginName the name of the plugin, must not be null.
* @return true if registered, otherwise false.
*/
boolean isRegistered(String pluginName);
enum PluginProcessorType {
GWT("nocache.js",
false),
PERSPECTIVE_EDITOR("layout.json",
true),
HTML_TEMPLATE(".html",
true),
JS(".js",
true);
private String extension;
private boolean isRuntimePlugin;
PluginProcessorType(String extension,
boolean isRuntimePlugin) {
this.extension = extension;
this.isRuntimePlugin = isRuntimePlugin;
}
public String getExtension() {
return extension;
}
public boolean isRuntimePlugin() {
return isRuntimePlugin;
}
}
}