Author: cziegeler Date: Thu Dec 16 03:56:30 2004 New Revision: 122546 URL: http://svn.apache.org/viewcvs?view=rev&rev=122546 Log: Make transformer configurable Fix some bugs Cleanup code Removed: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/application/PortalApplicationConfig.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/application/PortalApplicationConfigFactory.java Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/reading/ProxyReader.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/EventLinkTransformer.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/LinkTransformer.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/NewEventLinkTransformer.java
Deleted: /cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/application/PortalApplicationConfig.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/application/PortalApplicationConfig.java?view=auto&rev=122545 ============================================================================== Deleted: /cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/application/PortalApplicationConfigFactory.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/application/PortalApplicationConfigFactory.java?view=auto&rev=122545 ============================================================================== Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/reading/ProxyReader.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/reading/ProxyReader.java?view=diff&rev=122546&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/reading/ProxyReader.java&r1=122545&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/reading/ProxyReader.java&r2=122546 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/reading/ProxyReader.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/reading/ProxyReader.java Thu Dec 16 03:56:30 2004 @@ -64,15 +64,17 @@ */ protected Request request; + /** The prefix */ + protected String prefix; + /** * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(SourceResolver, Map, String, Parameters) */ - public void setup( - SourceResolver resolver, - Map objectModel, - String src, - Parameters par) - throws ProcessingException, SAXException, IOException { + public void setup(SourceResolver resolver, + Map objectModel, + String src, + Parameters par) + throws ProcessingException, SAXException, IOException { super.setup(resolver, objectModel, src, par); request = ObjectModelHelper.getRequest(objectModel); @@ -86,7 +88,7 @@ this.manager, copletID, portalName); - + this.prefix = par.getParameter("prefix", ProxyTransformer.PROXY_PREFIX); } /** @@ -99,22 +101,13 @@ } /** - * @see org.apache.cocoon.reading.Reader#generate() - */ - public void generate() throws IOException { - processRequest(); - } - - /** * Send the request to the external WebServer * @throws IOException on any exception that occures + * @see org.apache.cocoon.reading.Reader#generate() */ - protected void processRequest() throws IOException { + public void generate() throws IOException { String link = request.getRequestURI(); - link = - link.substring( - link.indexOf(ProxyTransformer.PROXY_PREFIX) - + ProxyTransformer.PROXY_PREFIX.length()); + link = link.substring(link.indexOf(this.prefix) + this.prefix.length()); String documentBase = (String) copletInstanceData.getAttribute( Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/EventLinkTransformer.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/EventLinkTransformer.java?view=diff&rev=122546&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/EventLinkTransformer.java&r1=122545&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/EventLinkTransformer.java&r2=122546 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/EventLinkTransformer.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/EventLinkTransformer.java Thu Dec 16 03:56:30 2004 @@ -49,7 +49,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Björn Lütkemeier</a> * - * @version CVS $Id: EventLinkTransformer.java,v 1.9 2004/04/25 20:02:27 haul Exp $ + * @version CVS $Id$ */ public class EventLinkTransformer extends AbstractCopletTransformer { @@ -82,12 +82,12 @@ /** * The attribute defining the link inside an EVENT_ELEM tag. */ - private String attributeName = null; + private String attributeName; /** * The element defining the link inside an EVENT_ELEM tag. */ - private String elementName = null; + private String elementName; /** * Used to store elements' attributes between startTransformingElement and endTransformingElement. @@ -167,7 +167,7 @@ // if attribute found that contains a link if (link != null) { - CopletInstanceData cid = this.getCopletInstanceData(); + CopletInstanceData cid = this.getCopletInstanceData(attr.getValue("coplet")); LinkService linkService = this.getPortalService().getComponentManager().getLinkService(); // create event link Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/LinkTransformer.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/LinkTransformer.java?view=diff&rev=122546&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/LinkTransformer.java&r1=122545&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/LinkTransformer.java&r2=122546 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/LinkTransformer.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/LinkTransformer.java Thu Dec 16 03:56:30 2004 @@ -30,9 +30,9 @@ import org.apache.cocoon.portal.Constants; import org.apache.cocoon.portal.coplet.CopletInstanceData; import org.apache.cocoon.transformation.AbstractTransformer; +import org.apache.cocoon.xml.AttributesImpl; import org.xml.sax.Attributes; import org.xml.sax.SAXException; -import org.xml.sax.helpers.AttributesImpl; /** * This Transformer deals with tags containing links to external applications that need to be converted so @@ -54,7 +54,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Gernot Koller</a> * @author <a href="mailto:[EMAIL PROTECTED]">Friedrich Klenner</a> * - * @version CVS $Id: LinkTransformer.java,v 1.5 2004/03/05 13:02:16 bdelacretaz Exp $ + * @version CVS $Id$ */ public class LinkTransformer extends AbstractTransformer @@ -68,22 +68,22 @@ /** * Used for appending a request parameter containing the coplet id */ - protected String copletIdParamString = null; + protected String copletIdParamString; /** * Used for appending a request parameter containing the portal name */ - protected String portalNameParamString = null; + protected String portalNameParamString; /** * The coplet instance data */ - protected CopletInstanceData copletInstanceData = null; + protected CopletInstanceData copletInstanceData; /** * The html document base uri */ - protected String documentBase = null; + protected String documentBase; /** * Used to store elements' name between startTransformingElement and endTransformingElement. @@ -102,28 +102,31 @@ this.manager = manager; } + /** The prefix */ + protected String prefix; + /** * @see AbstractTransformer#setup(SourceResolver, Map, String, Parameters) */ - public void setup( - SourceResolver resolver, - Map objectModel, - String src, - Parameters par) - throws ProcessingException, SAXException, IOException { - copletInstanceData = + public void setup(SourceResolver resolver, + Map objectModel, + String src, + Parameters par) + throws ProcessingException, SAXException, IOException { + this.copletInstanceData = ProxyTransformer.getInstanceData( this.manager, objectModel, par); - copletIdParamString = + this.copletIdParamString = ProxyTransformer.COPLETID + "=" + copletInstanceData.getId(); Map context = (Map) objectModel.get(ObjectModelHelper.PARENT_CONTEXT); - portalNameParamString = + this.portalNameParamString = ProxyTransformer.PORTALNAME + "=" + (String) context.get(Constants.PORTAL_NAME_KEY); + this.prefix = par.getParameter("prefix", ProxyTransformer.PROXY_PREFIX); } /** @@ -131,10 +134,11 @@ * All instance variables are set to <code>null</code>. */ public void recycle() { - copletInstanceData = null; - elementStack.clear(); - copletIdParamString = null; - portalNameParamString = null; + super.recycle(); + this.copletInstanceData = null; + this.elementStack.clear(); + this.copletIdParamString = null; + this.portalNameParamString = null; } /** @@ -172,17 +176,13 @@ attributes, true, (attributes.getIndex("target") > -1)); - } - else if ("script".equalsIgnoreCase(name)) { + } else if ("script".equalsIgnoreCase(name)) { handleTag("src", uri, name, raw, attributes, false, false); - } - else if ("img".equalsIgnoreCase(name)) { + } else if ("img".equalsIgnoreCase(name)) { handleTag("src", uri, name, raw, attributes, false, false); - } - else if ("link".equalsIgnoreCase(name)) { + } else if ("link".equalsIgnoreCase(name)) { handleTag("href", uri, name, raw, attributes, false, false); - } - else if ("a".equalsIgnoreCase(name)) { + } else if ("a".equalsIgnoreCase(name)) { handleTag( "href", uri, @@ -191,19 +191,15 @@ attributes, true, (attributes.getIndex("target") > -1)); - } - else if ("menu-item".equalsIgnoreCase(name)) { + } else if ("menu-item".equalsIgnoreCase(name)) { handleTag("href", uri, name, raw, attributes, true, false); - } - else if ("input".equalsIgnoreCase(name)) { + } else if ("input".equalsIgnoreCase(name)) { handleTag("src", uri, name, raw, attributes, false, false); - } - else if ("applet".equalsIgnoreCase(name)) { + } else if ("applet".equalsIgnoreCase(name)) { if (attributes.getIndex("codebase") > -1) { handleTag("codebase", uri, name, raw, attributes, false, true); } - } - else { + } else { super.startElement(uri, name, raw, attributes); } } @@ -220,12 +216,12 @@ } if (elementName != null && elementName.equals(name)) { + elementStack.pop(); super.endElement( NewEventLinkTransformer.NAMESPACE_URI, NewEventLinkTransformer.EVENT_ELEM, NAMESPACE_PREFIX + ":" + NewEventLinkTransformer.EVENT_ELEM); - } - else { + } else { super.endElement(uri, name, raw); } } @@ -262,15 +258,14 @@ * @param direct True signals that the uri should point directly to the external resource (no proxys) * @throws SAXException if an invalid URL was detected. */ - public void handleTag( - String attributeName, - String uri, - String elementName, - String raw, - Attributes attributes, - boolean eventLink, - boolean direct) - throws SAXException { + public void handleTag(String attributeName, + String uri, + String elementName, + String raw, + Attributes attributes, + boolean eventLink, + boolean direct) + throws SAXException { String remoteURI = attributes.getValue(attributeName); if ((remoteURI == null) @@ -281,21 +276,18 @@ || remoteURI.startsWith("javascript:") || remoteURI.startsWith("mailto:")) { super.startElement(uri, elementName, raw, attributes); - } - else { + } else { if (attributes.getIndex("target") > -1 || direct) { try { remoteURI = ProxyTransformer.resolveURI(remoteURI, documentBase); eventLink = false; - } - catch (MalformedURLException ex) { + } catch (MalformedURLException ex) { throw new SAXException( "Invalid URL encountered: " + remoteURI, ex); } - } - else { + } else { remoteURI = this.buildUrlString(remoteURI, !eventLink); } @@ -307,8 +299,7 @@ elementName, attributeName, newAttributes); - } - else { + } else { super.startElement(uri, elementName, raw, newAttributes); } } @@ -321,10 +312,9 @@ * @param attributes List of attributes * @return The modified List of attributes */ - protected Attributes modifyLinkAttribute( - String attribute, - String remoteURI, - Attributes attributes) { + protected Attributes modifyLinkAttribute(String attribute, + String remoteURI, + Attributes attributes) { AttributesImpl newAttributes = new AttributesImpl(attributes); int index = newAttributes.getIndex(attribute); @@ -340,32 +330,21 @@ * @param attributes Original list of attributes * @throws SAXException */ - protected void startEventLinkElement( - String element, - String attribute, - Attributes attributes) - throws SAXException { + protected void startEventLinkElement(String element, + String attribute, + Attributes attributes) + throws SAXException { elementStack.push(element); AttributesImpl eventAttributes = null; if (attributes instanceof AttributesImpl) { eventAttributes = (AttributesImpl) attributes; - } - else { + } else { eventAttributes = new AttributesImpl(attributes); } + eventAttributes.addCDATAAttribute(NewEventLinkTransformer.ATTRIBUTE_ATTR, attribute); + eventAttributes.addCDATAAttribute(NewEventLinkTransformer.ELEMENT_ATTR, element); + eventAttributes.addCDATAAttribute("coplet", this.copletInstanceData.getId()); - eventAttributes.addAttribute( - "", - NewEventLinkTransformer.ATTRIBUTE_ATTR, - NewEventLinkTransformer.ATTRIBUTE_ATTR, - "CDATA", - attribute); - eventAttributes.addAttribute( - "", - NewEventLinkTransformer.ELEMENT_ATTR, - NewEventLinkTransformer.ELEMENT_ATTR, - "CDATA", - element); super.startElement( NewEventLinkTransformer.NAMESPACE_URI, NewEventLinkTransformer.EVENT_ELEM, @@ -380,9 +359,8 @@ * @return the converted uri * FIXME: anchors (#) should be treated right! */ - protected String buildUrlString( - String uri, - boolean applyPrefixAndPortalParams) { + protected String buildUrlString(String uri, + boolean applyPrefixAndPortalParams) { StringBuffer uriBuffer = new StringBuffer(uri.length()); int index_semikolon = uri.indexOf(";"); @@ -399,7 +377,7 @@ } if (applyPrefixAndPortalParams) { - uriBuffer.append(ProxyTransformer.PROXY_PREFIX); + uriBuffer.append(this.prefix); } uriBuffer.append(uri); @@ -413,4 +391,4 @@ return uriBuffer.toString(); } -} \ No newline at end of file +} Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/NewEventLinkTransformer.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/NewEventLinkTransformer.java?view=diff&rev=122546&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/NewEventLinkTransformer.java&r1=122545&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/NewEventLinkTransformer.java&r2=122546 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/NewEventLinkTransformer.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/transformation/NewEventLinkTransformer.java Thu Dec 16 03:56:30 2004 @@ -15,8 +15,6 @@ */ package org.apache.cocoon.portal.transformation; -import java.util.Stack; - import org.apache.cocoon.portal.coplet.CopletInstanceData; import org.apache.cocoon.portal.event.impl.CopletLinkEvent; import org.xml.sax.Attributes; @@ -25,7 +23,7 @@ import org.xml.sax.helpers.AttributesImpl; /** - * This transformer ist used to replace links (URIs) from elements + * This transformer is used to replace links (URIs) from elements * like <a href="URI"> or <form action="URI"> with portal * event uris. Therefore the transformer searches for <eventlink> * elements replaces the URI form the attribute which is specified within @@ -80,19 +78,6 @@ public static final String ELEMENT_ATTR = "element"; /** - * Used to store elements' name between startTransformingElement and endTransformingElement. - */ - private Stack elementStack = new Stack(); - - /** - * @see org.apache.avalon.excalibur.pool.Recyclable#recycle() - */ - public void recycle() { - super.recycle(); - this.elementStack.clear(); - } - - /** * @see java.lang.Object#Object() */ public NewEventLinkTransformer() { @@ -170,7 +155,7 @@ // if attribute found that contains a link if (link != null) { - CopletInstanceData cid = this.getCopletInstanceData(); + CopletInstanceData cid = this.getCopletInstanceData(attributes.getValue("coplet")); // create event link CopletLinkEvent event = new CopletLinkEvent(cid, link); String eventLink = this.getPortalService().getComponentManager().getLinkService().getLinkURI(event); @@ -204,7 +189,7 @@ newAttributes.setValue(index, eventLink); } - elementStack.push(elementName); + this.stack.push(elementName); contentHandler.startElement( "", @@ -262,7 +247,7 @@ */ public void endTransformingElement(String uri, String name, String raw) throws SAXException { - String elementName = (String) elementStack.pop(); + String elementName = (String) this.stack.pop(); contentHandler.endElement("", elementName, elementName); } }
