home *** CD-ROM | disk | FTP | other *** search
- package lotus.domino.servlet;
-
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.Reader;
- import java.io.StringReader;
- import java.util.Hashtable;
- import javax.servlet.ServletContext;
-
- public class ServletManagerConfig {
- public static final String ALIAS_DIRECTIVE = "ALIAS";
- public static final String SERVICE_DIRECTIVE = "SERVICE";
- public static final String SSI_DIRECTIVE = "SSI";
- public static final String SERVLET_DIRECTIVE = "SERVLET";
- private String i_configurationInfo;
- private Hashtable i_servletTable = ServletManager.getServletTable();
- private Hashtable i_invokerTable = new Hashtable();
- private StringListTable i_serviceTable;
- private Hashtable i_ssiTable;
- private ServletContext i_context;
-
- public ServletManagerConfig() {
- String var1 = System.getProperty("os.name");
- boolean var2 = var1.equals("Windows 95") || var1.equals("Windows NT") || var1.equals("OS2");
- this.i_serviceTable = new StringListTable(var2);
- this.i_ssiTable = new Hashtable();
- this.i_configurationInfo = "";
- }
-
- protected void destroy() {
- }
-
- private String formatConfigFile(String var1) {
- String var2 = "#";
- String var3 = "";
-
- try {
- BufferedReader var6 = new BufferedReader(new StringReader(var1));
-
- for(String var5 = var6.readLine(); var5 != null; var5 = var6.readLine()) {
- if (var5.indexOf(var2) != -1) {
- var5 = var5.substring(0, var5.indexOf(var2));
- }
-
- if (!var5.equals("")) {
- var3 = var3 + var5.trim() + "\n";
- }
- }
-
- var6 = new BufferedReader(new StringReader(var3));
- var3 = "";
- String var13 = var6.readLine();
- String var7 = "";
- boolean var9 = false;
-
- while(var13 != null) {
- var9 = false;
- var7 = var13;
- int var4 = var13.indexOf("{");
- if (var4 == -1) {
- var13 = var6.readLine();
- if (var13 == null) {
- var3 = var3 + "\n" + var7;
- break;
- }
-
- var4 = var13.indexOf("{");
- if (var4 == -1) {
- var9 = true;
- } else if (var13.indexOf("{") == 0) {
- var7 = var7 + var13.substring(0, var4).trim() + "{";
- var13 = var7.substring(var4 + 1);
- } else {
- var9 = true;
- }
- } else {
- String var8 = var13.substring(var4 + 1);
- var7 = var13.substring(0, var4).trim() + "{";
- int var10 = var8.indexOf("}");
- if (var10 != -1) {
- System.out.println("Close brace is on same line....moving to next");
- if (var8.equals("}")) {
- var7 = var7 + "\n" + var8;
- var13 = var6.readLine();
- } else {
- if (!var8.substring(0, var10).trim().equals("")) {
- var7 = var7 + "\n" + var8.substring(0, var10).trim();
- }
-
- var7 = var7 + "\n}";
- if (var8.length() > var10) {
- System.out.println("There is another direct after the close brace");
- var13 = var8.substring(var10 + 1).trim();
- System.out.println("Directive: " + var13);
- } else {
- var13 = var6.readLine();
- }
- }
-
- var9 = true;
- } else if (!var8.equals("")) {
- var7 = var7 + "\n" + var8;
- }
- }
-
- if (!var9) {
- for(var13 = var6.readLine(); var13 != null && var13.indexOf("}") == -1; var13 = var6.readLine()) {
- var7 = var7 + "\n" + var13;
- }
-
- if (var13 != null) {
- var7 = var7 + "\n" + var13.substring(0, var13.indexOf("}") + 1);
- }
-
- var13 = var6.readLine();
- }
-
- if (var7 != null) {
- if (!var3.equals("")) {
- var3 = var3 + "\n";
- }
-
- var3 = var3 + var7;
- }
- }
- } catch (IOException var11) {
- ((Throwable)var11).printStackTrace();
- }
-
- return var3;
- }
-
- public void initialize(String var1, String var2) {
- try {
- DominoServletContext var3 = new DominoServletContext(this.i_servletTable, NativeStub.extract("SERVER_SOFTWARE"), var2, NativeStub.getAttributeTable());
- FileReader var4 = new FileReader(var1);
- this.initialize((Reader)var4, (ServletContext)var3);
- ((InputStreamReader)var4).close();
- } catch (IOException var5) {
- this.logError("I/O Error while reading the configuration file: " + var1);
- } catch (Throwable var6) {
- this.logError(var6.toString());
- var6.printStackTrace();
- }
- }
-
- public void initialize(Reader var1, String var2) {
- try {
- DominoServletContext var3 = new DominoServletContext(this.i_servletTable, NativeStub.extract("SERVER_SOFTWARE"), var2, NativeStub.getAttributeTable());
- this.initialize((Reader)var1, (ServletContext)var3);
- var1.close();
- } catch (IOException var4) {
- this.logError("I/O Error while reading configuration file");
- } catch (Throwable var5) {
- this.logError(var5.toString());
- var5.printStackTrace();
- }
- }
-
- public void initialize(Reader var1, ServletContext var2) {
- this.i_context = var2;
-
- try {
- BufferedReader var3 = new BufferedReader(var1);
- String var4 = "";
-
- for(String var5 = var3.readLine(); var5 != null; var5 = var3.readLine()) {
- var4 = var4 + var5 + "\n";
- }
-
- var4 = this.formatConfigFile(var4);
- this.addConfigurationInfo(var4);
- } catch (IOException var6) {
- this.logError("I/O error while reading configuration file");
- ((Throwable)var6).printStackTrace();
- } catch (Throwable var7) {
- this.logError(var7.toString());
- var7.printStackTrace();
- }
- }
-
- private void addConfigurationInfo(String var1) {
- this.i_configurationInfo = this.i_configurationInfo + var1 + "\n";
- String var2 = "";
-
- try {
- BufferedReader var3 = new BufferedReader(new StringReader(var1));
-
- for(String var4 = var3.readLine(); var4 != null; var4 = var3.readLine()) {
- try {
- var2 = "";
- int var5 = 0;
- int var6 = var4.indexOf(" ");
- if (var6 == -1) {
- throw new MalformedConfigurationException("No arguments were supplied for directive:" + var4);
- }
-
- String var7 = var4.substring(var5, var6).toUpperCase();
- if (var4.indexOf("{") == -1) {
- var2 = var4;
- } else {
- while(var4 != null && !var4.equals("}")) {
- var2 = var2 + var4 + "\n";
- var4 = var3.readLine();
- }
-
- if (var4.equals("}")) {
- var2 = var2 + var4;
- }
-
- if (var4 == null) {
- throw new MalformedConfigurationException("End of file detected early. Servlet directive did not end with a closing brace:");
- }
- }
-
- if (this.isServletDirective(var7)) {
- DominoServletInvoker var8 = this.toDominoServletInvoker(var2);
- if (var8 != null) {
- String var9 = var8.getName();
- this.i_invokerTable.put(var9, var8);
- } else {
- System.err.println("Could not create a Servlet from the following block:\n" + var2);
- }
- } else if (this.isMappingDirective(var7)) {
- if (var7.equals("SERVICE")) {
- this.addMappingDirective(var2, this.i_serviceTable);
- }
- } else {
- if (!var7.equals("SSI")) {
- this.logError("Unknown directive was detected in configuration file. Directive=" + var7);
- throw new MalformedConfigurationException("Found unknown directive in configuration: " + var7);
- }
-
- var5 = var2.indexOf(" ");
- if (var5 == -1) {
- throw new MalformedConfigurationException("Invalid SSI configuration:" + var2);
- }
-
- String var14 = var2.substring(var5 + 1, var2.length());
- DominoServletInvoker var15 = (DominoServletInvoker)this.i_invokerTable.get(var14);
- if (var15 == null) {
- System.err.println("SSI directive failed: No servlet with name=" + var14 + " has been configured");
- } else {
- this.i_ssiTable.put(var14, var15);
- }
- }
- } catch (MalformedConfigurationException var10) {
- this.logError("Error found in configuration file: " + ((Throwable)var10).toString());
- System.err.println("Malformed servlet configuration block found in configuration file:");
- System.err.println(var2);
- ((Throwable)var10).printStackTrace(System.err);
- }
- }
-
- } catch (IOException var11) {
- this.logError("I/O error while reading configuration file");
- ((Throwable)var11).printStackTrace();
- } catch (Throwable var12) {
- this.logError(var12.toString());
- var12.printStackTrace();
- }
- }
-
- private DominoServletInvoker toDominoServletInvoker(String var1) {
- Object var2 = null;
- Object var3 = null;
- Object var4 = null;
- Hashtable var5 = new Hashtable();
-
- try {
- BufferedReader var6 = new BufferedReader(new StringReader(var1));
- String var14 = var6.readLine();
- int var7 = var14.indexOf(" ");
- if (var7 == -1) {
- throw new MalformedConfigurationException("Malformed Servlet Directive: no iarguments were supplied in Servlet directive");
- } else {
- ++var7;
- int var8 = var14.indexOf(" ", var7);
- String var16;
- if (var8 != -1) {
- var16 = var14.substring(var7, var8);
- } else {
- var8 = var14.indexOf("{", var7);
- if (var8 == -1) {
- throw new MalformedConfigurationException("Malformed Servlet Directive: no class name was found on Servlet Directive line");
- }
-
- var16 = var14.substring(var7, var8);
- var8 = var7 - 1;
- }
-
- var7 = var8 + 1;
- var8 = var14.indexOf("{", var7);
- if (var8 == -1) {
- throw new MalformedConfigurationException("Malformed Servlet block: no open brace({) was found on Servlet Directive line");
- } else {
- String var17 = var14.substring(var7, var8).trim();
-
- for(String var15 = var6.readLine(); var15 != null && !var15.equals("}"); var15 = var6.readLine()) {
- var7 = 0;
- var8 = var15.indexOf("=");
- if (var8 == -1) {
- throw new MalformedConfigurationException("Malformed Servlet block: no equals was found in parameter list");
- }
-
- String var9 = var15.substring(var7, var8);
- if (var9.equals("")) {
- throw new MalformedConfigurationException("Malformed Servlet block: no parameter name was supplied in parameter list");
- }
-
- var7 = var8 + 1;
- var8 = var15.length();
- String var10 = var15.substring(var7, var8);
- var10 = var10.trim();
- if (var10.equals("")) {
- throw new MalformedConfigurationException("Malformed Servlet block: no parameter value was supplied in parameter list");
- }
-
- var5.put(var9, var10);
- }
-
- DominoServletConfig var26 = new DominoServletConfig(this.i_context, var5);
- DominoServletInvoker var28 = new DominoServletInvoker(var17, var26, var16);
- return var28;
- }
- }
- } catch (IOException var11) {
- this.logError("I/O error while reading configuration file");
- System.err.println("Error found in servlet configuration block from configuration file:");
- System.err.println(var1);
- ((Throwable)var11).printStackTrace(System.err);
- return null;
- } catch (MalformedConfigurationException var12) {
- this.logError("Error found in configuration file: " + ((Throwable)var12).toString());
- System.err.println("Malformed servlet configuration block found in configuration file:");
- System.err.println(var1);
- ((Throwable)var12).printStackTrace(System.err);
- return null;
- } catch (Throwable var13) {
- this.logError("servlet trace: " + var13.toString());
- System.err.println("Error found in servlet configuration block found in configuration file:");
- System.err.println(var1);
- var13.printStackTrace(System.err);
- return null;
- }
- }
-
- private String addMappingDirective(String var1, String var2) {
- int var3 = var1.indexOf(" ");
- if (var3 == -1) {
- this.logError("Could not map servlet to step because no instance name was supplied: (" + var1 + ") is invalid");
- } else {
- String var4 = var1.substring(var3).trim();
- if (this.i_invokerTable.get(var4) == null) {
- this.logError("Could not map servlet to step because Servlet instance " + var4 + "is not defined: (" + var1 + ") is invalid");
- } else if (var2.equals("")) {
- var2 = var2 + var4;
- } else {
- var2 = var2 + "," + var4;
- }
- }
-
- return var2;
- }
-
- private String addMappingDirective(String var1, StringListTable var2) {
- int var5 = var1.indexOf(" ") + 1;
- int var6 = var1.indexOf(" ", var5);
- String var3 = var1.substring(var5, var6);
- String var4 = var1.substring(var6 + 1).trim();
- if (this.i_invokerTable.get(var3) != null) {
- var2.put(var4, var3);
- } else {
- this.logError("Alias for " + var4 + " failed: servlet " + var3 + " does not exist");
- }
-
- return var3;
- }
-
- private boolean isMappingDirective(String var1) {
- return var1.equals("SERVICE");
- }
-
- private boolean isServletDirective(String var1) {
- return var1.equals("SERVLET");
- }
-
- private void logError(String var1) {
- NativeStub.log_error("Servlet configuration error: ");
- NativeStub.log_error(var1);
- System.out.println(var1);
- }
-
- public String getConfigurationInfo() {
- return this.i_configurationInfo;
- }
-
- public Hashtable getSSITable() {
- return this.i_ssiTable;
- }
-
- public Hashtable getInvokerTable() {
- return this.i_invokerTable;
- }
-
- public Hashtable getServletTable() {
- return this.i_servletTable;
- }
-
- public StringListTable getServiceTable() {
- return this.i_serviceTable;
- }
- }
-