You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2004/12/16 12:56:37 UTC
svn commit: r122546 - in cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal: application reading transformation
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:bluetkemeier@s-und-n.de">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:gernot.koller@rizit.at">Gernot Koller</a>
* @author <a href="mailto:friedrich.klenner@rzb.at">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);
}
}