use of fi.otavanopisto.pyramus.dao.plugins.PluginDAO in project pyramus by otavanopisto.
the class PyramusServletContextListener method loadPlugins.
@SuppressWarnings("unchecked")
private void loadPlugins() {
try {
PluginRepositoryDAO pluginRepositoryDAO = DAOFactory.getInstance().getPluginRepositoryDAO();
List<PluginRepository> pluginRepositories = pluginRepositoryDAO.listAll();
PluginManager pluginManager = PluginManager.initialize(getClass().getClassLoader(), pluginRepositories);
PluginDAO pluginDAO = DAOFactory.getInstance().getPluginDAO();
List<Plugin> enabledPlugins = pluginDAO.listByEnabled(Boolean.TRUE);
for (Plugin plugin : enabledPlugins) {
try {
pluginManager.loadPlugin(plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion());
} catch (Exception e) {
Logging.logException("Failed to load plugin: " + plugin.getGroupId() + "." + plugin.getArtifactId() + ":" + plugin.getVersion(), e);
}
}
pluginManager.registerPlugins();
// Load additional request mappings from plugins
List<PluginDescriptor> plugins = pluginManager.getPlugins();
for (PluginDescriptor plugin : plugins) {
Map<String, Class<?>> pageRequestControllers = plugin.getPageRequestControllers();
if (pageRequestControllers != null) {
for (Map.Entry<String, Class<?>> entry : pageRequestControllers.entrySet()) {
String className = entry.getValue().getName();
Class<? extends RequestController> pageController = (Class<? extends RequestController>) Class.forName(className, false, pluginManager.getPluginsClassLoader());
RequestController oldController = RequestControllerMapper.getRequestController(entry.getKey() + ".page");
if (oldController != null) {
// Save masked controllers for extending existing functionality by calling
// the masked controller's .process()
RequestControllerMapper.mapController(entry.getKey(), ".page.masked", oldController);
}
RequestControllerMapper.mapController(entry.getKey(), ".page", pageController.newInstance());
}
}
Map<String, Class<?>> jsonRequestControllers = plugin.getJSONRequestControllers();
if (jsonRequestControllers != null) {
for (Map.Entry<String, Class<?>> entry : jsonRequestControllers.entrySet()) {
String className = entry.getValue().getName();
Class<? extends RequestController> pageController = (Class<? extends RequestController>) Class.forName(className, false, pluginManager.getPluginsClassLoader());
RequestController oldController = RequestControllerMapper.getRequestController(entry.getKey() + ".json");
if (oldController != null) {
// Save masked controllers for extending existing functionality by calling
// the masked controller's .process()
RequestControllerMapper.mapController(entry.getKey(), ".json.masked", oldController);
}
RequestControllerMapper.mapController(entry.getKey(), ".json", pageController.newInstance());
}
}
Map<String, Class<?>> binaryRequestControllers = plugin.getBinaryRequestControllers();
if (binaryRequestControllers != null) {
for (Map.Entry<String, Class<?>> entry : binaryRequestControllers.entrySet()) {
String className = entry.getValue().getName();
Class<? extends RequestController> pageController = (Class<? extends RequestController>) Class.forName(className, false, pluginManager.getPluginsClassLoader());
RequestController oldController = RequestControllerMapper.getRequestController(entry.getKey() + ".binary");
if (oldController != null) {
// Save masked controllers for extending existing functionality by calling
// the masked controller's .process()
RequestControllerMapper.mapController(entry.getKey(), ".binary.masked", oldController);
}
RequestControllerMapper.mapController(entry.getKey(), ".binary", pageController.newInstance());
}
}
}
} catch (Exception e) {
Logging.logException("Plugins loading failed", e);
}
for (Webhook webhook : webhookDAO.listAll()) {
webhooks.addWebhook(webhook.getUrl(), webhook.getSecret());
}
;
}
use of fi.otavanopisto.pyramus.dao.plugins.PluginDAO in project pyramus by otavanopisto.
the class PluginsViewController method processForm.
@Override
public void processForm(PageRequestContext requestContext) {
PluginRepositoryDAO pluginRepositoryDAO = DAOFactory.getInstance().getPluginRepositoryDAO();
PluginDAO pluginDAO = DAOFactory.getInstance().getPluginDAO();
PluginManager pluginManager = PluginManager.getInstance();
List<PluginRepository> pluginRepositories = pluginRepositoryDAO.listAll();
List<Plugin> plugins = pluginDAO.listAll();
List<PluginBean> pluginBeans = new ArrayList<>(plugins.size());
for (Plugin plugin : plugins) {
String status;
boolean loaded = pluginManager.isLoaded(plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion());
boolean deletable = false;
if (loaded) {
if (plugin.getEnabled())
status = Messages.getInstance().getText(requestContext.getRequest().getLocale(), "system.plugins.pluginsTableStatusLoaded");
else
status = Messages.getInstance().getText(requestContext.getRequest().getLocale(), "system.plugins.pluginsTableStatusUnloadOnRestart");
} else {
if (plugin.getEnabled())
status = Messages.getInstance().getText(requestContext.getRequest().getLocale(), "system.plugins.pluginsTableStatusLoadOnRestart");
else
status = Messages.getInstance().getText(requestContext.getRequest().getLocale(), "system.plugins.pluginsTableStatusNotLoaded");
deletable = true;
}
PluginBean pluginBean = new PluginBean(plugin.getId(), plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion(), plugin.getEnabled(), deletable, status);
pluginBeans.add(pluginBean);
}
requestContext.getRequest().setAttribute("repositories", pluginRepositories);
requestContext.getRequest().setAttribute("plugins", pluginBeans);
/**
* Messages.getInstance().getText(requestContext.getRequest().getLocale(), "system.plugins.pluginsTableStatusNotLoaded");
* Messages.getInstance().getText(requestContext.getRequest().getLocale(), "system.plugins.pluginsTableStatusUnloadOnRestart");
* Messages.getInstance().getText(requestContext.getRequest().getLocale(), "system.plugins.pluginsTableStatusLoaded");
*/
requestContext.setIncludeJSP("/templates/system/plugins.jsp");
}
use of fi.otavanopisto.pyramus.dao.plugins.PluginDAO in project pyramus by otavanopisto.
the class PluginAPI method findIdByGroupIdAndArtifact.
public Long findIdByGroupIdAndArtifact(String groupId, String artifactId) {
PluginDAO pluginDAO = DAOFactory.getInstance().getPluginDAO();
Plugin plugin = pluginDAO.findByGroupIdAndArtifactId(groupId, artifactId);
return plugin != null ? plugin.getId() : null;
}
use of fi.otavanopisto.pyramus.dao.plugins.PluginDAO in project pyramus by otavanopisto.
the class PluginsViewController method processSend.
@Override
public void processSend(PageRequestContext requestContext) {
PluginDAO pluginDAO = DAOFactory.getInstance().getPluginDAO();
PluginRepositoryDAO pluginRepositoryDAO = DAOFactory.getInstance().getPluginRepositoryDAO();
Long pluginsRowCount = requestContext.getLong("pluginsTable.rowCount");
for (int i = 0; i < pluginsRowCount; i++) {
String colPrefix = "pluginsTable." + i;
Long id = requestContext.getLong(colPrefix + ".id");
Boolean enabled = "1".equals(requestContext.getString(colPrefix + ".enabled"));
Boolean remove = "1".equals(requestContext.getString(colPrefix + ".remove"));
String groupId = requestContext.getString(colPrefix + ".groupId");
String artifactId = requestContext.getString(colPrefix + ".artifactId");
String version = requestContext.getString(colPrefix + ".version");
if (id == null) {
pluginDAO.create(artifactId, groupId, version, enabled);
} else {
Plugin plugin = pluginDAO.findById(id);
if (remove == true) {
pluginDAO.delete(plugin);
} else {
pluginDAO.updateEnabled(plugin, enabled);
pluginDAO.updateArtifactId(plugin, artifactId);
pluginDAO.updateGroupId(plugin, groupId);
pluginDAO.updateVersion(plugin, version);
}
}
}
Long repositoriesRowCount = requestContext.getLong("repositoriesTable.rowCount");
for (int i = 0; i < repositoriesRowCount; i++) {
String colPrefix = "repositoriesTable." + i;
Long id = requestContext.getLong(colPrefix + ".id");
String url = requestContext.getString(colPrefix + ".url");
String repositoryId = requestContext.getString(colPrefix + ".repositoryId");
Boolean remove = "1".equals(requestContext.getString(colPrefix + ".remove"));
if (id == null) {
pluginRepositoryDAO.create(url, repositoryId);
} else {
PluginRepository repository = pluginRepositoryDAO.findById(id);
if (remove == true) {
pluginRepositoryDAO.delete(repository);
} else {
pluginRepositoryDAO.update(repository, url, repositoryId);
}
}
}
processForm(requestContext);
}
Aggregations