001: /*
002: * Copyright 2001 Sun Microsystems, Inc. All rights reserved.
003: * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms.
004: */
005: package com.sun.portal.rewriter.engines;
006:
007: import com.sun.portal.rewriter.Rewriter;
008: import com.sun.portal.rewriter.engines.css.CSSRewriter;
009: import com.sun.portal.rewriter.engines.html.HTMLRewriter;
010: import com.sun.portal.rewriter.engines.js.JSRewriter;
011: import com.sun.portal.rewriter.engines.markup.MarkupRewriter;
012: import com.sun.portal.rewriter.engines.xml.XMLRewriter;
013: import com.sun.portal.rewriter.rom.RuleSet;
014:
015: /**
016: * This is similar to servlet filter chain. Contains all the rewriters which
017: * can be directly used by its subclasses, which translate content of different
018: * MIME types.
019: *
020: * @version 1.0 12/15/2001
021: * @author Raja Nagendra Kumar, Nagendra.Raja@sun.com
022: * @see com.sun.portal.rewriter.engines.markup.MarkupRewriter
023: */
024: public final class RewriterBroker {
025: private final RuleSet ruleSet;
026:
027: private HTMLRewriter htmlRewriter;
028: private JSRewriter jsRewriter;
029: private XMLRewriter xmlRewriter;
030: private CSSRewriter cssRewriter;
031: private MarkupRewriter markupRewriter;
032:
033: public RewriterBroker(final RuleSet aRuleSet) {
034: ruleSet = aRuleSet;
035: }//constructor
036:
037: public Rewriter getInstance(final String aMIME) {
038: if (aMIME == null) {
039: return null;
040: }
041:
042: if (aMIME.indexOf(LanguageConstants.HTML_MIME) != -1) {
043: return getHTMLRewriter();
044: } else if (aMIME.indexOf(LanguageConstants.MARKUP_MIME) != -1) {
045: return getMarkupRewriter();
046: } else if (aMIME.indexOf(LanguageConstants.JS_MIME) != -1) {
047: return getJSRewriter();
048: } else if (aMIME.indexOf(LanguageConstants.CSS_MIME) != -1) {
049: return getCSSRewriter();
050: } else if (aMIME.indexOf(LanguageConstants.XML_MIME) != -1) {
051: return getXMLRewriter();
052: }
053:
054: return null;
055: }//getInstance()
056:
057: /**
058: * All these getter methods may need to be synchornized if only if
059: * for some kind of threaded condition the returned object is null.
060: * let me see this breaking in the filed and then only act..
061: */
062: public MarkupRewriter getMarkupRewriter() {
063: if (markupRewriter == null) {
064: markupRewriter = new MarkupRewriter(this );
065: }
066:
067: return markupRewriter;
068: }//getMarkupRewriter()
069:
070: public HTMLRewriter getHTMLRewriter() {
071: if (htmlRewriter == null) {
072: htmlRewriter = new HTMLRewriter(this );
073: }
074:
075: return htmlRewriter;
076: }//getHTMLRewriter()
077:
078: public JSRewriter getJSRewriter() {
079: if (jsRewriter == null) {
080: jsRewriter = new JSRewriter(this );
081: }
082:
083: return jsRewriter;
084: }//getJSRewriter()
085:
086: public XMLRewriter getXMLRewriter() {
087: if (xmlRewriter == null) {
088: xmlRewriter = new XMLRewriter(this );
089: }
090:
091: return xmlRewriter;
092: }//getXMLRewriter()
093:
094: public CSSRewriter getCSSRewriter() {
095: if (cssRewriter == null) {
096: cssRewriter = new CSSRewriter(this );
097: }
098:
099: return cssRewriter;
100: }//getCSSRewriter()
101:
102: public RuleSet getRuleSet() {
103: return ruleSet;
104: }//getRuleSet()
105:
106: }//class RewriterBroker
|