Author: thorsten Date: Tue Sep 9 06:06:25 2008 New Revision: 693454 URL: http://svn.apache.org/viewvc?rev=693454&view=rev Log: Starting the rewrite with the contracts
Added: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/api/Contract.java (with props) forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/Loggable.java (with props) forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/StAX.java (with props) forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/XSLContractHelper.java (with props) forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/impl/XSLContract.java (with props) forrest/trunk/whiteboard/dispatcher/lib/commons-logging-1.1.1.jar (with props) forrest/trunk/whiteboard/dispatcher/lib/log4j-1.2.14.jar (with props) Modified: forrest/trunk/whiteboard/dispatcher/build.xml Modified: forrest/trunk/whiteboard/dispatcher/build.xml URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/dispatcher/build.xml?rev=693454&r1=693453&r2=693454&view=diff ============================================================================== --- forrest/trunk/whiteboard/dispatcher/build.xml (original) +++ forrest/trunk/whiteboard/dispatcher/build.xml Tue Sep 9 06:06:25 2008 @@ -37,7 +37,7 @@ <property name="dispatcher.build.compiler.type" value="classic"/> <property name="dispatcher.build.compiler.vm" value="1.5"/> <property name="name" value="apache-dispatcher"/> - <property name="dispatcher.version" value="0.0.1-dev"/> + <property name="dispatcher.version" value="0.0.2-dev"/> <property name="dispatcher.home" location="."/> <property file="${dispatcher.home}/local.build.properties" /> <property file="${dispatcher.home}/build.properties" /> Added: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/api/Contract.java URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/api/Contract.java?rev=693454&view=auto ============================================================================== --- forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/api/Contract.java (added) +++ forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/api/Contract.java Tue Sep 9 06:06:25 2008 @@ -0,0 +1,81 @@ +/* + * 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.forrest.dispatcher.api; + +import java.io.InputStream; +import java.io.OutputStream; +import java.util.HashMap; + +public interface Contract { + /** + * Some contracts are based on text based files. Best known example are the + * xsl contracts as the first implementation. + * + * @param stream + * that contains all information of the contract as description, + * name, usage, ... + */ + void initializeFromStream(InputStream stream); + + /** + * Execute the contract with the given DataStream. The dataStream serves as + * base to do a transformation (in xsl based contracts) or invocation of + * business logic if used in java based contracts. + * + * @param dataStream + * base to do the transformation or invoked business logic + * @param properties + * the parameter that configure the contract (customizing it) + * @return the resulting transformation of the dataStream with the given + * properties. + */ + OutputStream execute(InputStream dataStream, HashMap properties); + + /** + * @return the name of the contract + */ + String getName(); + + /** + * @param contractName + * - the name of the contract + */ + void setName(String contractName); + + /** + * @return the description of the contract + */ + String getDescription(); + + /** + * @param Description + * - the description of the contract + */ + void setDescription(String contractDescription); + + /** + * @return how to use the contract + */ + String getUsage(); + + /** + * @param contractUsage + * - how to use the contract + */ + void setUsage(String contractUsage); + +} Propchange: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/api/Contract.java ------------------------------------------------------------------------------ svn:eol-style = native Added: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/Loggable.java URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/Loggable.java?rev=693454&view=auto ============================================================================== --- forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/Loggable.java (added) +++ forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/Loggable.java Tue Sep 9 06:06:25 2008 @@ -0,0 +1,36 @@ +/* + * 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.forrest.dispatcher.helper; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Simple wrapper class to easier debug/log. + * + * @author thorsten + * @version 1.0 + */ +public class Loggable { + + protected final Log log = LogFactory.getLog(this.getClass() + .getCanonicalName()); + + protected Loggable() { + } + +} \ No newline at end of file Propchange: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/Loggable.java ------------------------------------------------------------------------------ svn:eol-style = native Added: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/StAX.java URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/StAX.java?rev=693454&view=auto ============================================================================== --- forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/StAX.java (added) +++ forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/StAX.java Tue Sep 9 06:06:25 2008 @@ -0,0 +1,117 @@ +/* + * 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.forrest.dispatcher.helper; + +import java.io.InputStream; +import java.io.OutputStream; + +import javax.xml.stream.XMLEventFactory; +import javax.xml.stream.XMLEventReader; +import javax.xml.stream.XMLEventWriter; +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * Helper class that eases the usage of StAX in your plugins. + * + * @author thorsten + * @version 1.0 + * + */ +public class StAX extends Loggable { + private XMLOutputFactory outputFactory = null; + + private XMLEventFactory eventFactory = null; + + private XMLInputFactory inputFactory = null; + + /** + * Easy helper to get StAX based parser and writer. + */ + public StAX() { + inputFactory = XMLInputFactory.newInstance(); + outputFactory = XMLOutputFactory.newInstance(); + eventFactory = XMLEventFactory.newInstance(); + } + + /** + * Get an event writer based on the incoming stream + * + * @param stream + * the stream we want to write to + * @return ready to use event writer + * @throws XMLStreamException + */ + public XMLEventWriter getWriter(OutputStream stream) + throws XMLStreamException { + XMLEventWriter writer = outputFactory.createXMLEventWriter(stream); + return writer; + } + + /** + * Get a stream writer based on the incoming stream + * + * @param stream + * the stream we want to write to + * @return ready to use stream writer + * @throws XMLStreamException + */ + public XMLStreamWriter getStreamWriter(OutputStream stream) + throws XMLStreamException { + XMLStreamWriter writer = outputFactory.createXMLStreamWriter(stream); + return writer; + } + + /** + * Get an event Parser based on the incoming stream + * + * @param in + * the stream we want to read from + * @return ready to use event parser + * @throws XMLStreamException + */ + public XMLEventReader getEventParser(InputStream in) + throws XMLStreamException { + XMLEventReader parser = inputFactory.createXMLEventReader(in); + return parser; + } + + /** + * Get a stream Parser based on the incoming stream + * + * @param in + * the stream we want to read from + * @return ready to use stream parser + * @throws XMLStreamException + */ + public XMLStreamReader getParser(InputStream in) throws XMLStreamException { + XMLStreamReader parser = inputFactory.createXMLStreamReader(in); + return parser; + } + + /** + * Get the ready to used EventFactory + * + * @return ready to used EventFactory + */ + public XMLEventFactory getEventFactory() { + return eventFactory; + } +} Propchange: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/StAX.java ------------------------------------------------------------------------------ svn:eol-style = native Added: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/XSLContractHelper.java URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/XSLContractHelper.java?rev=693454&view=auto ============================================================================== --- forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/XSLContractHelper.java (added) +++ forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/XSLContractHelper.java Tue Sep 9 06:06:25 2008 @@ -0,0 +1,45 @@ +/* + * 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.forrest.dispatcher.helper; + +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; + +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamWriter; + +import org.apache.forrest.dispatcher.helper.StAX; + +public class XSLContractHelper extends StAX { + public ByteArrayOutputStream createEmptyXmlOutput() throws XMLStreamException { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + XMLStreamWriter writer = getStreamWriter(out); + writer.writeStartDocument("UTF-8", "1.0"); + writer.writeStartElement("foo"); + writer.writeEndDocument(); + writer.flush(); + writer.close(); + return out; + } + + public InputStream createEmptyXml() throws XMLStreamException { + ByteArrayOutputStream out = createEmptyXmlOutput(); + return new BufferedInputStream(new ByteArrayInputStream(out.toByteArray())); + } +} Propchange: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/helper/XSLContractHelper.java ------------------------------------------------------------------------------ svn:eol-style = native Added: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/impl/XSLContract.java URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/impl/XSLContract.java?rev=693454&view=auto ============================================================================== --- forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/impl/XSLContract.java (added) +++ forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/impl/XSLContract.java Tue Sep 9 06:06:25 2008 @@ -0,0 +1,85 @@ +/* + * 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.forrest.dispatcher.impl; + +import java.io.InputStream; +import java.io.OutputStream; +import java.util.HashMap; + +import javax.xml.stream.XMLStreamException; + + +import org.apache.forrest.dispatcher.api.Contract; + +import org.apache.forrest.dispatcher.helper.Loggable; +import org.apache.forrest.dispatcher.helper.XSLContractHelper; + +public class XSLContract extends Loggable implements Contract { + + private String name="", usage="", description=""; + private XSLContractHelper helper=null; + + public OutputStream execute(InputStream dataStream, HashMap properties) { + /* + * get a new instance of the corresponding helper class since the helper + * is doing the actual work + */ + helper = new XSLContractHelper(); + /* + * If no dataStream is present we need to create an empty xml doc + * to be able to invoke the xsl transformation. + */ + if (null == dataStream) { + try { + dataStream = helper.createEmptyXml(); + } catch (XMLStreamException e) { + log.fatal(e); + } + } + + return null; + } + + public void initializeFromStream(InputStream stream) { + // TODO Auto-generated method stub + + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getUsage() { + return usage; + } + + public void setUsage(String usage) { + this.usage = usage; + } +} Propchange: forrest/trunk/whiteboard/dispatcher/java/org/apache/forrest/dispatcher/impl/XSLContract.java ------------------------------------------------------------------------------ svn:eol-style = native Added: forrest/trunk/whiteboard/dispatcher/lib/commons-logging-1.1.1.jar URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/dispatcher/lib/commons-logging-1.1.1.jar?rev=693454&view=auto ============================================================================== Binary file - no diff available. Propchange: forrest/trunk/whiteboard/dispatcher/lib/commons-logging-1.1.1.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: forrest/trunk/whiteboard/dispatcher/lib/log4j-1.2.14.jar URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/dispatcher/lib/log4j-1.2.14.jar?rev=693454&view=auto ============================================================================== Binary file - no diff available. Propchange: forrest/trunk/whiteboard/dispatcher/lib/log4j-1.2.14.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream