source: main/trunk/greenstone3/src/java/org/greenstone/server/Server3Settings.java@ 25388

Last change on this file since 25388 was 25388, checked in by ak19, 12 years ago

Correcting the behaviour of Server3 window's servlet combobox: it should have the current servlet selected and also deal with URL mappings that end with forwardslash-star.

File size: 3.8 KB
RevLine 
[18558]1package org.greenstone.server;
2
3import java.awt.*;
4import java.awt.event.*;
5import java.io.File;
6import java.util.ArrayList;
7import java.util.HashMap;
8import javax.swing.*;
9
10import org.w3c.dom.*;
11
[22085]12import org.greenstone.util.ScriptReadWrite;
13
14import org.greenstone.util.GlobalProperties;
[18558]15import org.greenstone.gsdl3.util.GSXML;
16import org.greenstone.gsdl3.util.XMLConverter;
17
18import org.greenstone.server.BaseServerSettings;
19
20public class Server3Settings extends BaseServerSettings
[18708]21{
22 protected String servletDefault = null;
23 protected JComboBox servlet_combobox;
24 protected HashMap url_mappings = null;
[18558]25
26 public Server3Settings(BaseServer server)
27 {
28 super(server);
29 }
30
31 protected JPanel createServletPanel()
32 {
[18693]33 JLabel servlet_label = new JLabel(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".URL"));
[18558]34
[25388]35 this.servletDefault = server.config_properties.getProperty(BaseServer.Property.DEFAULT_SERVLET);
36
[18558]37 servlet_combobox = new JComboBox();
38 servlet_combobox.setMaximumRowCount(5);
39 servlet_combobox.setBackground(bg_color);
40
41 File web_xml = new File(GlobalProperties.getProperty(BaseServer.Property.GSDL_HOME) + File.separator + "WEB-INF" + File.separator + "web.xml");
42 XMLConverter converter = new XMLConverter();
43 Document web_config = converter.getDOM(web_xml);
44 if (web_config == null) {
45 logger.error("web.xml is null! "+web_xml.getAbsolutePath());
46 return null;
47 }
48
49 NodeList servlet_mappings = web_config.getElementsByTagName("servlet-mapping");
50 // make a little map class
51 url_mappings = new HashMap();
52 for (int i = 0; i < servlet_mappings.getLength(); i++) {
53 Element map = (Element) servlet_mappings.item(i);
54 Element servlet_name_elem = (Element) GSXML.getChildByTagName(map, "servlet-name");
55 String name = GSXML.getNodeText(servlet_name_elem);
56 Element url_pattern_elem = (Element) GSXML.getChildByTagName(map, "url-pattern");
57 String pattern = GSXML.getNodeText(url_pattern_elem);
58 // Ignore the Axis servlets
59 if (!(name.equals("AxisServlet"))) {
60 servlet_combobox.addItem(name.trim());
61 url_mappings.put(name, pattern);
62 }
63
[25388]64 if (pattern.replaceAll("/\\*","").equals(servletDefault)) { // urlmapping maybe something like "/library/*", want "/library"
[18558]65 servlet_combobox.setSelectedItem(name);
66 }
67 }
68
69
70 JPanel comb_panel = new JPanel();
71 comb_panel.setLayout(new FlowLayout(FlowLayout.LEFT));
72 comb_panel.add(servlet_label);
73 comb_panel.add(servlet_combobox);
74
75 return comb_panel;
76 }
77
[20604]78 public boolean[] onSave()
[18708]79 {
[20604]80 boolean hasChanged = false;
81 boolean requireRestart = false;
[25388]82 String urlMapping = (String)url_mappings.get(servlet_combobox.getSelectedItem());
83 if(urlMapping.endsWith("/*")) { // urlmapping maybe something like "/library/*"
84 urlMapping = urlMapping.substring(0, urlMapping.length()-2);
85 }
86 if (!servletDefault.equals(urlMapping)) {
[20604]87 hasChanged = true;
88 requireRestart = true;
[18708]89 }
[20604]90 boolean[] returnValues = { hasChanged, requireRestart };
91 return returnValues;
[18708]92 }
93
94 public void save(ScriptReadWrite scriptReadWrite, ArrayList newFileLines)
95 {
[18868]96 String newAutoEnter = (new Boolean(autoEnter.isSelected())).toString();
97 newFileLines = scriptReadWrite.queryReplace(newFileLines, BaseServer.Property.AUTOSTART, newAutoEnter);
98
[24207]99 String newKeepPort = (new Boolean(keepPortToggle.isSelected())).toString();
100 newFileLines = scriptReadWrite.queryReplace(newFileLines, BaseServer.Property.KEEPPORT, newKeepPort);
101
[18708]102 String newServletDef = (String) servlet_combobox.getSelectedItem();
[25388]103 String servletDefName = (String) url_mappings.get(newServletDef);
104 if(servletDefName.endsWith("/*")) { // urlmapping maybe something like "/library/*"
105 servletDefName = servletDefName.substring(0, servletDefName.length()-2);
106 }
107 newFileLines = scriptReadWrite.queryReplace(newFileLines,BaseServer.Property.DEFAULT_SERVLET, servletDefName);
[18708]108 }
109
[18558]110}
Note: See TracBrowser for help on using the repository browser.