001: /*
002: * Copyright 1999-2004 The Apache Software Foundation
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.apache.jk.config;
018:
019: import java.io.File;
020: import java.io.FileWriter;
021: import java.io.IOException;
022: import java.io.PrintWriter;
023: import java.util.Vector;
024:
025: /* Naming conventions:
026:
027: JK_CONF_DIR == serverRoot/work ( XXX /jkConfig ? )
028:
029: - Each vhost has a sub-dir named after the canonycal name
030:
031: - For each webapp in a vhost, there is a separate WEBAPP_NAME.jkmap
032:
033: - In httpd.conf ( or equivalent servers ), in each virtual host you
034: should "Include JK_CONF_DIR/VHOST/jk_apache.conf". The config
035: file will contain the Alias declarations and other rules required
036: for apache operation. Same for other servers.
037:
038: - WebXml2Jk will be invoked by a config tool or automatically for each
039: webapp - it'll generate the WEBAPP.jkmap files and config fragments.
040:
041: WebXml2Jk will _not_ generate anything else but mappings.
042: It should _not_ try to guess locations or anything else - that's
043: another components' job.
044:
045: */
046:
047: /**
048: *
049: * @author Costin Manolache
050: */
051: public class GeneratorJk2 implements WebXml2Jk.MappingGenerator {
052: WebXml2Jk wxml;
053: String vhost;
054: String cpath;
055: String worker;
056: PrintWriter out;
057:
058: public void setWebXmlReader(WebXml2Jk wxml) {
059: this .wxml = wxml;
060: vhost = wxml.vhost;
061: cpath = wxml.cpath;
062: worker = wxml.worker;
063: }
064:
065: public void generateStart() throws IOException {
066: File base = wxml.getJkDir();
067: File outF = new File(base, "jk2map.properties");
068: out = new PrintWriter(new FileWriter(outF));
069:
070: out.println("# Autogenerated from web.xml");
071: }
072:
073: public void generateEnd() {
074: out.close();
075: }
076:
077: public void generateServletMapping(String servlet, String url) {
078: out.println("[uri:" + vhost + cpath + url + "]");
079: out.println("group=" + worker);
080: out.println("servlet=" + servlet);
081: out.println("host=" + vhost);
082: out.println("context=" + cpath);
083: out.println();
084: }
085:
086: public void generateFilterMapping(String servlet, String url) {
087: out.println("[url:" + vhost + cpath + url + "]");
088: out.println("group=" + worker);
089: out.println("filter=" + servlet);
090: out.println("host=" + vhost);
091: out.println("context=" + cpath);
092: out.println();
093: }
094:
095: public void generateLoginConfig(String loginPage, String errPage,
096: String authM) {
097: out.println("[url:" + vhost + cpath + loginPage + "]");
098: out.println("group=" + worker);
099: out.println("host=" + vhost);
100: out.println("context=" + cpath);
101: out.println();
102: out.println("[url:" + vhost + cpath + errPage + "]");
103: out.println("group=" + worker);
104: out.println("host=" + vhost);
105: out.println("context=" + cpath);
106: out.println();
107: }
108:
109: public void generateErrorPage(int err, String location) {
110:
111: }
112:
113: public void generateMimeMapping(String ext, String type) {
114:
115: }
116:
117: public void generateWelcomeFiles(Vector wf) {
118:
119: }
120:
121: public void generateConstraints(Vector urls, Vector methods,
122: Vector roles, boolean isSSL) {
123: for (int i = 0; i < urls.size(); i++) {
124: String url = (String) urls.elementAt(i);
125:
126: out.println("[url:" + vhost + cpath + url + "]");
127: out.println("group=" + worker);
128: out.println("host=" + vhost);
129: out.println("context=" + cpath);
130: for (int j = 0; j < roles.size(); j++) {
131: String role = (String) roles.elementAt(j);
132: out.println("role=" + role);
133: }
134: for (int j = 0; j < methods.size(); j++) {
135: String m = (String) methods.elementAt(j);
136: out.println("method=" + m);
137: }
138: if (isSSL)
139: out.println("ssl=true");
140: }
141: }
142: }
|