You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gk...@apache.org on 2007/05/05 15:02:51 UTC
svn commit: r535518 - in
/cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main:
java/org/apache/cocoon/servletservice/postable/components/
resources/META-INF/cocoon/spring/
Author: gkossakowski
Date: Sat May 5 06:02:50 2007
New Revision: 535518
URL: http://svn.apache.org/viewvc?view=rev&rev=535518
Log:
COCOON-2050: Implementation of ServletServiceTransformer.
Added:
cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceTransformer.java (with props)
cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/resources/META-INF/cocoon/spring/cocoon-servlet-service-transformer.xml (with props)
Added: cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceTransformer.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceTransformer.java?view=auto&rev=535518
==============================================================================
--- cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceTransformer.java (added)
+++ cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceTransformer.java Sat May 5 06:02:50 2007
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.servletservice.postable.components;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.source.util.SourceUtil;
+import org.apache.cocoon.core.xml.SAXParser;
+import org.apache.cocoon.servletservice.postable.PostableSource;
+import org.apache.cocoon.sitemap.DisposableSitemapComponent;
+import org.apache.cocoon.transformation.AbstractSAXTransformer;
+import org.apache.cocoon.util.avalon.CLLoggerWrapper;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.excalibur.source.SourceException;
+import org.xml.sax.SAXException;
+
+public class ServletServiceTransformer extends AbstractSAXTransformer implements DisposableSitemapComponent {
+ private Log logger = LogFactory.getLog(getClass());
+
+ private SAXParser saxParser;
+
+ private PostableSource servletSource;
+
+ public void init() {
+ this.enableLogging(new CLLoggerWrapper(this.logger));
+ }
+
+ public void setupTransforming() throws IOException, ProcessingException, SAXException {
+ super.setupTransforming();
+
+ String service;
+ try {
+ service = parameters.getParameter("service");
+ } catch (ParameterException e) {
+ throw new ProcessingException(e);
+ }
+
+ try {
+ servletSource = (PostableSource)resolver.resolveURI(service);
+ } catch (ClassCastException e) {
+ throw new ProcessingException("Resolved '" + service + "' to source that is not postable. Use servlet: protocol for service calls.");
+ } catch (SourceException se) {
+ throw SourceUtil.handle("Error during resolving of '" + service + "'.", se);
+ }
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Source " + service + " resolved to " + servletSource.getURI());
+ }
+
+ startSerializedXMLRecording(null);
+ }
+
+ public void endDocument() throws SAXException {
+ super.endDocument();
+ try {
+ String xml = endSerializedXMLRecording();
+ IOUtils.copy(new StringReader(xml), servletSource.getOutputStream());
+ SourceUtil.parse(saxParser, servletSource, contentHandler);
+ }
+ catch (Exception e) {
+ throw new SAXException("Exception occured while calling servlet service", e);
+ }
+ }
+
+ public void dispose() {
+ if (servletSource != null)
+ resolver.release(servletSource);
+ super.dispose();
+ }
+
+ public SAXParser getSaxParser() {
+ return saxParser;
+ }
+
+ public void setSaxParser(SAXParser saxParser) {
+ this.saxParser = saxParser;
+ }
+
+}
Propchange: cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceTransformer.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/resources/META-INF/cocoon/spring/cocoon-servlet-service-transformer.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/resources/META-INF/cocoon/spring/cocoon-servlet-service-transformer.xml?view=auto&rev=535518
==============================================================================
--- cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/resources/META-INF/cocoon/spring/cocoon-servlet-service-transformer.xml (added)
+++ cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/resources/META-INF/cocoon/spring/cocoon-servlet-service-transformer.xml Sat May 5 06:02:50 2007
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
+
+ <bean name="org.apache.cocoon.transformation.Transformer/servletService"
+ class="org.apache.cocoon.servletservice.postable.components.ServletServiceTransformer" init-method="init" scope="prototype">
+ <property name="saxParser" ref="org.apache.cocoon.core.xml.SAXParser"/>
+ </bean>
+
+</beans>
Propchange: cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/resources/META-INF/cocoon/spring/cocoon-servlet-service-transformer.xml
------------------------------------------------------------------------------
svn:eol-style = native