gluu
公開メンバ関数 | 関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.gluu.credmanager.ui.vm.admin.PluginViewModel クラス
org.gluu.credmanager.ui.vm.admin.PluginViewModel の継承関係図
Inheritance graph
org.gluu.credmanager.ui.vm.admin.PluginViewModel 連携図
Collaboration graph

公開メンバ関数

List< PluginDatagetPluginList ()
 
PluginData getPluginToShow ()
 
boolean isUiAdding ()
 
void init ()
 
void showPlugin (@BindingParam("id") String pluginId)
 
void hidePluginDetails ()
 
void uploaded (@BindingParam("uplEvent") UploadEvent evt)
 
void deletePlugin (@BindingParam("id") String pluginId, @BindingParam("provider") String provider)
 
void addPlugin ()
 
void cancelAdd ()
 
void startPlugin (@BindingParam("id") String pluginId)
 
void stopPlugin (@BindingParam("id") String pluginId)
 
String getSubpage ()
 
List< AdminConsoleMenuItemgetExtraButtons ()
 
void loadSubPage (@BindingParam("page") String page)
 
MainSettings getSettings ()
 

関数

boolean updateMainSettings (String sucessMessage)
 
boolean updateMainSettings ()
 

非公開メンバ関数

void reloadPluginList ()
 
PluginData buildPluginData (PluginWrapper pw)
 
List< String > buildExtensionList (PluginWrapper wrapper)
 
String getExtensionLabel (String clsName, Object ...args)
 
Path getPluginDestinationPath (String fileName)
 

非公開変数類

Logger logger = LoggerFactory.getLogger(getClass())
 
ExtensionsManager extManager
 
List< PluginDatapluginList
 
PluginData pluginToShow
 
boolean uiAdding
 

静的非公開変数類

static final Class< AuthnMethodAUTHN_METHOD = AuthnMethod.class
 

詳解

著者
jgomer

関数詳解

◆ addPlugin()

void org.gluu.credmanager.ui.vm.admin.PluginViewModel.addPlugin ( )
inline
181  {
182  String id = pluginToShow.getDescriptor().getPluginId();
183  boolean success = extManager.startPlugin(id);
184 
185  if (success) {
186  String started = PluginState.STARTED.toString();
187  pluginToShow.setState(Labels.getLabel("adm.plugins_state." + started));
189 
190  //Update backend config file
191  PluginInfo info = new PluginInfo();
192  info.setId(id);
193  info.setRelativePath(Paths.get(pluginToShow.getPath()).getFileName().toString());
194  info.setState(started);
195 
196  List<PluginInfo> list = Optional.ofNullable(getSettings().getKnownPlugins()).orElse(new ArrayList<>());
197  list.add(info);
198 
202  } else {
203  UIUtils.showMessageUI(false);
204  }
205 
206  }
boolean updateMainSettings()
Definition: MainViewModel.java:94
dictionary info
Definition: interop_rohe_config.py:5
List< PluginData > pluginList
Definition: PluginViewModel.java:57
String getPath()
Definition: PluginData.java:30
PluginDescriptor getDescriptor()
Definition: PluginData.java:34
ExtensionsManager extManager
Definition: PluginViewModel.java:55
MainSettings getSettings()
Definition: MainViewModel.java:70
boolean startPlugin(String pluginId)
Definition: ExtensionsManager.java:240
void setState(String state)
Definition: PluginData.java:38
void hidePluginDetails()
Definition: PluginViewModel.java:89
PluginData pluginToShow
Definition: PluginViewModel.java:59
void setKnownPlugins(List< PluginInfo > knownPlugins)
Definition: MainSettings.java:198

◆ buildExtensionList()

List<String> org.gluu.credmanager.ui.vm.admin.PluginViewModel.buildExtensionList ( PluginWrapper  wrapper)
inlineprivate
301  {
302 
303  List<String> extList = new ArrayList<>();
304  PluginManager manager = wrapper.getPluginManager();
305  String pluginId = wrapper.getPluginId();
306 
307  for (String clsName : manager.getExtensionClassNames(pluginId)) {
308  if (!clsName.equals(AUTHN_METHOD.getName())) {
309  extList.add(getExtensionLabel(clsName));
310  }
311  }
312  for (AuthnMethod method : manager.getExtensions(AUTHN_METHOD, pluginId)) {
313  String text = getExtensionLabel(AUTHN_METHOD.getName(), Labels.getLabel(method.getUINameKey()));
314  String acr = method.getAcr();
315 
316  if (Optional.ofNullable(getSettings().getAcrPluginMap())
317  .map(mapping -> mapping.get(acr).equals(pluginId)).orElse(false)) {
318  text += Labels.getLabel("adm.plugins_acr_handler", new String[]{ acr });
319  }
320  extList.add(text);
321  }
322 
323  return extList;
324 
325  }
static final Class< AuthnMethod > AUTHN_METHOD
Definition: PluginViewModel.java:50
MainSettings getSettings()
Definition: MainViewModel.java:70
String getExtensionLabel(String clsName, Object ...args)
Definition: PluginViewModel.java:327

◆ buildPluginData()

PluginData org.gluu.credmanager.ui.vm.admin.PluginViewModel.buildPluginData ( PluginWrapper  pw)
inlineprivate
284  {
285 
286  PluginDescriptor pluginDescriptor = pw.getDescriptor();
287  PluginData pl = new PluginData();
288 
289  //In practice resolved (that is, just loaded not started) could be seen as stopped
290  String state = (pw.getPluginState().equals(PluginState.RESOLVED) ? PluginState.STOPPED : pw.getPluginState()).toString();
291 
292  pl.setState(Labels.getLabel("adm.plugins_state." + state));
293  pl.setExtensions(buildExtensionList(pw));
294  pl.setPath(pw.getPluginPath().toString());
295  pl.setDescriptor(pluginDescriptor);
296 
297  return pl;
298 
299  }
List< String > buildExtensionList(PluginWrapper wrapper)
Definition: PluginViewModel.java:301

◆ cancelAdd()

void org.gluu.credmanager.ui.vm.admin.PluginViewModel.cancelAdd ( )
inline
210  {
211 
212  String plugId = pluginToShow.getDescriptor().getPluginId();
214  if (!extManager.unloadPlugin(plugId)) {
215  UIUtils.showMessageUI(false, Labels.getLabel("adm.plugins_error_unloaded"));
216  }
217  /*
218  //IMPORTANT: See note at method getPluginDestinationPath
219  try {
220  String path = pluginToShow.getPath();
221  Files.delete(Paths.get(path));
222  } catch (Exception e) {
223  logger.error(e.getMessage(), e);
224  String message = Labels.getLabel("adm.plugins_error_delete", new String[] { path });
225  Messagebox.show(message, Labels.getLabel("general.warning"), Messagebox.OK, Messagebox.INFORMATION);
226  }
227  */
228 
229  }
boolean unloadPlugin(String pluginId)
Definition: ExtensionsManager.java:206
PluginDescriptor getDescriptor()
Definition: PluginData.java:34
ExtensionsManager extManager
Definition: PluginViewModel.java:55
void hidePluginDetails()
Definition: PluginViewModel.java:89
PluginData pluginToShow
Definition: PluginViewModel.java:59

◆ deletePlugin()

void org.gluu.credmanager.ui.vm.admin.PluginViewModel.deletePlugin ( @BindingParam("id") String  pluginId,
@BindingParam("provider") String  provider 
)
inline
149  {
150 
151  provider = Utils.isEmpty(provider) ? Labels.getLabel("adm.plugins_nodata") : provider;
152  String msg = Labels.getLabel("adm.plugins_confirm_del", new String[] {pluginId, provider});
153 
154  Messagebox.show(msg, null, Messagebox.YES | Messagebox.NO, Messagebox.QUESTION,
155  event -> {
156  if (Messagebox.ON_YES.equals(event.getName())) {
157  boolean success = extManager.unloadPlugin(pluginId);
158  //boolean success = extManager.deletePlugin(pluginId); //IMPORTANT: See note at method getPluginDestinationPath
159  if (success) {
160  PluginData pluginData = pluginList.stream()
161  .filter(pl -> pl.getDescriptor().getPluginId().equals(pluginId)).findAny().get();
162  pluginList.remove(pluginData);
163 
164  PluginInfo pl = getSettings().getKnownPlugins().stream().filter(apl -> apl.getId().equals(pluginId)).findAny().get();
165  getSettings().getKnownPlugins().remove(pl);
166  updateMainSettings();
167  BindUtils.postNotifyChange(null, null, PluginViewModel.this, "pluginList");
168  } else {
169  UIUtils.showMessageUI(false);
170  }
171  hidePluginDetails();
172  BindUtils.postNotifyChange(null, null, PluginViewModel.this, "pluginToShow");
173  BindUtils.postNotifyChange(null, null, PluginViewModel.this, "uiAdding");
174  }
175  }
176  );
177  }

◆ getExtensionLabel()

String org.gluu.credmanager.ui.vm.admin.PluginViewModel.getExtensionLabel ( String  clsName,
Object ...  args 
)
inlineprivate
327  {
328  String text = Labels.getLabel("adm.plugins_extension." + clsName, args);
329  return text == null ? clsName.substring(clsName.lastIndexOf(".") + 1) : text;
330  }

◆ getExtraButtons()

List<AdminConsoleMenuItem> org.gluu.credmanager.ui.vm.admin.MainViewModel.getExtraButtons ( )
inlineinherited
49  {
50  return extraButtons;
51  }
List< AdminConsoleMenuItem > extraButtons
Definition: MainViewModel.java:41

◆ getPluginDestinationPath()

Path org.gluu.credmanager.ui.vm.admin.PluginViewModel.getPluginDestinationPath ( String  fileName)
inlineprivate
332  {
333  /*
334  Add some "random" suffix since the same file can be uploaded multiples because as it's explained at
335  https://github.com/pf4j/pf4j/issues/217 there is no effective means to delete a plugin jar file
336  */
337  String suffix = Long.toString(System.currentTimeMillis());
338  int aux = suffix.length();
339  suffix = "_" + suffix.substring(aux - 5, aux);
340 
341  aux = fileName.lastIndexOf(".");
342  aux = aux == -1 ? fileName.length() : aux;
343  fileName = fileName.substring(0, aux) + suffix + ".jar";
344  return Paths.get(extManager.getPluginsRoot().toString(), fileName);
345 
346  }
ExtensionsManager extManager
Definition: PluginViewModel.java:55
Path getPluginsRoot()
Definition: ExtensionsManager.java:188

◆ getPluginList()

List<PluginData> org.gluu.credmanager.ui.vm.admin.PluginViewModel.getPluginList ( )
inline
63  {
64  return pluginList;
65  }
List< PluginData > pluginList
Definition: PluginViewModel.java:57

◆ getPluginToShow()

PluginData org.gluu.credmanager.ui.vm.admin.PluginViewModel.getPluginToShow ( )
inline
67  {
68  return pluginToShow;
69  }
PluginData pluginToShow
Definition: PluginViewModel.java:59

◆ getSettings()

MainSettings org.gluu.credmanager.ui.vm.admin.MainViewModel.getSettings ( )
inlineinherited
70  {
71  return confHandler.getSettings();
72  }
ConfigurationHandler confHandler
Definition: MainViewModel.java:36
MainSettings getSettings()
Definition: ConfigurationHandler.java:126

◆ getSubpage()

String org.gluu.credmanager.ui.vm.admin.MainViewModel.getSubpage ( )
inlineinherited
45  {
46  return subpage;
47  }
String subpage
Definition: MainViewModel.java:43

◆ hidePluginDetails()

void org.gluu.credmanager.ui.vm.admin.PluginViewModel.hidePluginDetails ( )
inline
89  {
90  pluginToShow = null;
91  uiAdding = false;
92  }
boolean uiAdding
Definition: PluginViewModel.java:61
PluginData pluginToShow
Definition: PluginViewModel.java:59

◆ init()

void org.gluu.credmanager.ui.vm.admin.PluginViewModel.init ( )
inline
76  {
78  }
void reloadPluginList()
Definition: PluginViewModel.java:277

◆ isUiAdding()

boolean org.gluu.credmanager.ui.vm.admin.PluginViewModel.isUiAdding ( )
inline
71  {
72  return uiAdding;
73  }
boolean uiAdding
Definition: PluginViewModel.java:61

◆ loadSubPage()

void org.gluu.credmanager.ui.vm.admin.MainViewModel.loadSubPage ( @BindingParam("page") String  page)
inlineinherited

Changes the page loaded in the content area. Also sets values needed in the UI (these are taken directly from calls to AdminService's getConfigSettings method.

引数
pageThe (string) url of the page that must be loaded (by default /admin/default.zul is being shown)
66  {
67  subpage = page;
68  }
String subpage
Definition: MainViewModel.java:43

◆ reloadPluginList()

void org.gluu.credmanager.ui.vm.admin.PluginViewModel.reloadPluginList ( )
inlineprivate
277  {
278  //a grid row might look like this: id version (details), state, implements + buttons to stop
279  pluginList = new ArrayList<>();
280  //extManager.getPlugins().stream().forEach(w -> logger.debug("Found {} {} ",w.getPluginId(), w.getPluginState().toString()));
281  extManager.getPlugins().forEach(wrapper -> pluginList.add(buildPluginData(wrapper)));
282  }
List< PluginData > pluginList
Definition: PluginViewModel.java:57
ExtensionsManager extManager
Definition: PluginViewModel.java:55
PluginData buildPluginData(PluginWrapper pw)
Definition: PluginViewModel.java:284
List< PluginWrapper > getPlugins()
Definition: ExtensionsManager.java:192

◆ showPlugin()

void org.gluu.credmanager.ui.vm.admin.PluginViewModel.showPlugin ( @BindingParam("id") String  pluginId)
inline
82  {
83  pluginToShow = pluginList.stream().filter(pl -> pl.getDescriptor().getPluginId().equals(pluginId)).findAny().orElse(null);
84  uiAdding = false;
85  }
List< PluginData > pluginList
Definition: PluginViewModel.java:57
boolean uiAdding
Definition: PluginViewModel.java:61
PluginData pluginToShow
Definition: PluginViewModel.java:59

◆ startPlugin()

void org.gluu.credmanager.ui.vm.admin.PluginViewModel.startPlugin ( @BindingParam("id") String  pluginId)
inline
233  {
234 
235  boolean success = extManager.startPlugin(pluginId);
236  if (success) {
237  String started = PluginState.STARTED.toString();
238  PluginData pluginData = pluginList.stream().filter(pl -> pl.getDescriptor().getPluginId().equals(pluginId))
239  .findAny().get();
240  pluginData.setState(Labels.getLabel("adm.plugins_state." + started));
241 
242  PluginInfo pl = getSettings().getKnownPlugins().stream().filter(apl -> apl.getId().equals(pluginId)).findAny().get();
243  pl.setState(started);
245  } else {
246  UIUtils.showMessageUI(false);
247  }
249 
250  }
boolean updateMainSettings()
Definition: MainViewModel.java:94
List< PluginData > pluginList
Definition: PluginViewModel.java:57
List< PluginInfo > getKnownPlugins()
Definition: MainSettings.java:130
ExtensionsManager extManager
Definition: PluginViewModel.java:55
MainSettings getSettings()
Definition: MainViewModel.java:70
boolean startPlugin(String pluginId)
Definition: ExtensionsManager.java:240
void hidePluginDetails()
Definition: PluginViewModel.java:89

◆ stopPlugin()

void org.gluu.credmanager.ui.vm.admin.PluginViewModel.stopPlugin ( @BindingParam("id") String  pluginId)
inline
254  {
255 
256  if (getSettings().getAcrPluginMap().values().contains(pluginId)) {
257  Messagebox.show(Labels.getLabel("adm.plugin_plugin_bound_method"), null, Messagebox.OK, Messagebox.EXCLAMATION);
258  } else {
259  boolean success = extManager.stopPlugin(pluginId);
260  if (success) {
261  String stopped = PluginState.STOPPED.toString();
262  PluginData pluginData = pluginList.stream().filter(pl -> pl.getDescriptor().getPluginId().equals(pluginId))
263  .findAny().get();
264  pluginData.setState(Labels.getLabel("adm.plugins_state." + stopped));
265 
266  PluginInfo pl = getSettings().getKnownPlugins().stream().filter(apl -> apl.getId().equals(pluginId)).findAny().get();
267  pl.setState(stopped);
269  } else {
270  UIUtils.showMessageUI(false);
271  }
272  }
274 
275  }
boolean updateMainSettings()
Definition: MainViewModel.java:94
List< PluginData > pluginList
Definition: PluginViewModel.java:57
List< PluginInfo > getKnownPlugins()
Definition: MainSettings.java:130
ExtensionsManager extManager
Definition: PluginViewModel.java:55
boolean stopPlugin(String pluginId)
Definition: ExtensionsManager.java:212
MainSettings getSettings()
Definition: MainViewModel.java:70
void hidePluginDetails()
Definition: PluginViewModel.java:89

◆ updateMainSettings() [1/2]

boolean org.gluu.credmanager.ui.vm.admin.MainViewModel.updateMainSettings ( String  sucessMessage)
inlinepackageinherited
74  {
75 
76  boolean success = false;
77  try {
78  //update app-level config and persist
79  getSettings().save();
80  if (sucessMessage == null) {
81  UIUtils.showMessageUI(true);
82  } else {
83  Messagebox.show(sucessMessage, null, Messagebox.OK, Messagebox.INFORMATION);
84  }
85  success = true;
86  } catch (Exception e) {
87  logger.error(e.getMessage(), e);
88  UIUtils.showMessageUI(false, Labels.getLabel("adm.conffile_error_update"));
89  }
90  return success;
91 
92  }
void save()
Definition: MainSettings.java:85
MainSettings getSettings()
Definition: MainViewModel.java:70
Logger logger
Definition: MainViewModel.java:33

◆ updateMainSettings() [2/2]

boolean org.gluu.credmanager.ui.vm.admin.MainViewModel.updateMainSettings ( )
inlinepackageinherited
94  {
95  return updateMainSettings(null);
96  }
boolean updateMainSettings()
Definition: MainViewModel.java:94

◆ uploaded()

void org.gluu.credmanager.ui.vm.admin.PluginViewModel.uploaded ( @BindingParam("uplEvent") UploadEvent  evt)
inline
96  {
97  try {
98  pluginToShow = null;
99  byte[] blob = evt.getMedia().getByteData();
100  logger.debug("Size of blob received: {} bytes", blob.length);
101 
102  try (JarInputStream jis = new JarInputStream(new ByteArrayInputStream(blob), false)) {
103 
104  Manifest m = jis.getManifest();
105  if (m != null) {
106  String id = m.getMainAttributes().getValue("Plugin-Id");
107  String version = m.getMainAttributes().getValue("Plugin-Version");
108 
109  if (pluginList.stream().anyMatch(pl -> pl.getDescriptor().getPluginId().equals(id))) {
110  UIUtils.showMessageUI(false, Labels.getLabel("adm.plugins_already_existing", new String[] { id }));
111  } else if (Stream.of(id, version).allMatch(Utils::isNotEmpty)) {
112  //Copy the jar to plugins dir
113  try {
114  Path path = Files.write(getPluginDestinationPath(evt.getMedia().getName()), blob, StandardOpenOption.CREATE_NEW);
115  String pluginId = extManager.loadPlugin(path);
116 
117  if (pluginId == null) {
118  logger.warn("Loading plugin from {} returned no pluginId.", path.toString());
119  //Files.delete(path); //IMPORTANT: See note at method getPluginDestinationPath
120  UIUtils.showMessageUI(false);
121  } else {
122  Optional<PluginWrapper> owrp = extManager.getPlugins().stream()
123  .filter(wrapper -> wrapper.getPluginId().equals(pluginId)).findAny();
124  if (owrp.isPresent()) {
125  pluginToShow = buildPluginData(owrp.get());
126  uiAdding = true;
127  } else {
128  UIUtils.showMessageUI(false);
129  }
130  }
131  } catch (Exception e) {
132  logger.error(e.getMessage(), e);
133  UIUtils.showMessageUI(false);
134  }
135  } else {
136  UIUtils.showMessageUI(false, Labels.getLabel("adm.plugins_invalid_plugin"));
137  }
138 
139  } else {
140  UIUtils.showMessageUI(false, Labels.getLabel("adm.plugins_invalid_plugin"));
141  }
142  }
143  } catch (Exception e) {
144  logger.error(e.getMessage(), e);
145  }
146  }
List< PluginData > pluginList
Definition: PluginViewModel.java:57
Logger logger
Definition: PluginViewModel.java:52
boolean uiAdding
Definition: PluginViewModel.java:61
static boolean isNotEmpty(String string)
Definition: Utils.java:51
String loadPlugin(Path path)
Definition: ExtensionsManager.java:196
ExtensionsManager extManager
Definition: PluginViewModel.java:55
PluginData buildPluginData(PluginWrapper pw)
Definition: PluginViewModel.java:284
List< PluginWrapper > getPlugins()
Definition: ExtensionsManager.java:192
Path getPluginDestinationPath(String fileName)
Definition: PluginViewModel.java:332
PluginData pluginToShow
Definition: PluginViewModel.java:59

メンバ詳解

◆ AUTHN_METHOD

final Class<AuthnMethod> org.gluu.credmanager.ui.vm.admin.PluginViewModel.AUTHN_METHOD = AuthnMethod.class
staticprivate

◆ extManager

ExtensionsManager org.gluu.credmanager.ui.vm.admin.PluginViewModel.extManager
private

◆ logger

Logger org.gluu.credmanager.ui.vm.admin.PluginViewModel.logger = LoggerFactory.getLogger(getClass())
private

◆ pluginList

List<PluginData> org.gluu.credmanager.ui.vm.admin.PluginViewModel.pluginList
private

◆ pluginToShow

PluginData org.gluu.credmanager.ui.vm.admin.PluginViewModel.pluginToShow
private

◆ uiAdding

boolean org.gluu.credmanager.ui.vm.admin.PluginViewModel.uiAdding
private

このクラス詳解は次のファイルから抽出されました: