[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xml-cocoon-cvs
Subject:    svn commit: r1043189 -
From:       simonetripodi () apache ! org
Date:       2010-12-07 20:32:06
Message-ID: 20101207203206.F201123888D2 () eris ! apache ! org
[Download RAW message or body]

Author: simonetripodi
Date: Tue Dec  7 20:32:06 2010
New Revision: 1043189

URL: http://svn.apache.org/viewvc?rev=1043189&view=rev
Log:
first checkin of Pipeline DSL to easily setup and run pipelines

Added:
    cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/
  cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineBuilder.java \
(with props)  cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineComponentBuilder.java \
(with props)  cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineConfigurationBuilder.java \
(with props)  cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineSetupBuilder.java \
(with props)  cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineStarterBuilder.java \
(with props)  cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/PipelineBuilder.java \
(with props)

Added: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineBuilder.java
                
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/o \
rg/apache/cocoon/pipeline/builder/LinkedPipelineBuilder.java?rev=1043189&view=auto \
                ==============================================================================
                
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineBuilder.java \
                (added)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineBuilder.java \
Tue Dec  7 20:32:06 2010 @@ -0,0 +1,35 @@
+/*
+ * 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.pipeline.builder;
+
+import org.apache.cocoon.pipeline.component.PipelineComponent;
+
+/**
+ * Simple DSL to easily manipulate pipelines.
+ *
+ * @param <PC> the {@link PipelineComponent} type.
+ * @version $Id$
+ */
+public interface LinkedPipelineBuilder<PC extends PipelineComponent> {
+
+    LinkedPipelineStarterBuilder<PC> newAsyncCachePipeline();
+
+    LinkedPipelineStarterBuilder<PC> newCachingPipeline();
+
+    LinkedPipelineStarterBuilder<PC> newNonCachingPipeline();
+
+}

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineBuilder.java
                
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineBuilder.java
                
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineBuilder.java
                
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineComponentBuilder.java
                
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/o \
rg/apache/cocoon/pipeline/builder/LinkedPipelineComponentBuilder.java?rev=1043189&view=auto
 ==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineComponentBuilder.java \
                (added)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineComponentBuilder.java \
Tue Dec  7 20:32:06 2010 @@ -0,0 +1,33 @@
+/*
+ * 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.pipeline.builder;
+
+import org.apache.cocoon.pipeline.component.PipelineComponent;
+
+/**
+ * 
+ *
+ * @param <PC> the {@link PipelineComponent} type.
+ * @version $Id$
+ */
+public interface LinkedPipelineComponentBuilder<PC extends PipelineComponent> {
+
+    LinkedPipelineComponentBuilder<PC> addComponent(PC pipelineComponent);
+
+    LinkedPipelineConfigurationBuilder<PC> setFinisher(PC finisher);
+
+}

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineComponentBuilder.java
                
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineComponentBuilder.java
                
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineComponentBuilder.java
                
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineConfigurationBuilder.java
                
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/o \
rg/apache/cocoon/pipeline/builder/LinkedPipelineConfigurationBuilder.java?rev=1043189&view=auto
 ==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineConfigurationBuilder.java \
                (added)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineConfigurationBuilder.java \
Tue Dec  7 20:32:06 2010 @@ -0,0 +1,35 @@
+/*
+ * 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.pipeline.builder;
+
+import java.util.Map;
+
+import org.apache.cocoon.pipeline.component.PipelineComponent;
+
+/**
+ * 
+ *
+ * @param <PC> the {@link PipelineComponent} type.
+ * @version $Id$
+ */
+public interface LinkedPipelineConfigurationBuilder<PC extends PipelineComponent> {
+
+    LinkedPipelineSetupBuilder<PC> withEmptyConfiguration();
+
+    LinkedPipelineSetupBuilder<PC> setConfiguration(Map<String, ? extends Object> \
parameters); +
+}

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineConfigurationBuilder.java
                
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineConfigurationBuilder.java
                
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineConfigurationBuilder.java
                
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineSetupBuilder.java
                
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/o \
rg/apache/cocoon/pipeline/builder/LinkedPipelineSetupBuilder.java?rev=1043189&view=auto
 ==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineSetupBuilder.java \
                (added)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineSetupBuilder.java \
Tue Dec  7 20:32:06 2010 @@ -0,0 +1,34 @@
+/*
+ * 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.pipeline.builder;
+
+import java.io.OutputStream;
+
+import org.apache.cocoon.pipeline.Pipeline;
+import org.apache.cocoon.pipeline.component.PipelineComponent;
+
+/**
+ * 
+ *
+ * @param <PC> the {@link PipelineComponent} type.
+ * @version $Id$
+ */
+public interface LinkedPipelineSetupBuilder<PC extends PipelineComponent> {
+
+    Pipeline<PC> setup(OutputStream outputStream);
+
+}

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineSetupBuilder.java
                
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineSetupBuilder.java
                
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineSetupBuilder.java
                
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineStarterBuilder.java
                
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/o \
rg/apache/cocoon/pipeline/builder/LinkedPipelineStarterBuilder.java?rev=1043189&view=auto
 ==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineStarterBuilder.java \
                (added)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineStarterBuilder.java \
Tue Dec  7 20:32:06 2010 @@ -0,0 +1,31 @@
+/*
+ * 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.pipeline.builder;
+
+import org.apache.cocoon.pipeline.component.PipelineComponent;
+
+/**
+ * 
+ *
+ * @param <PC> the {@link PipelineComponent} type.
+ * @version $Id$
+ */
+public interface LinkedPipelineStarterBuilder<PC extends PipelineComponent> {
+
+    LinkedPipelineComponentBuilder<PC> setStarter(PC starter);
+
+}

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineStarterBuilder.java
                
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineStarterBuilder.java
                
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/LinkedPipelineStarterBuilder.java
                
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/PipelineBuilder.java
                
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/PipelineBuilder.java?rev=1043189&view=auto
 ==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/PipelineBuilder.java \
                (added)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/PipelineBuilder.java \
Tue Dec  7 20:32:06 2010 @@ -0,0 +1,126 @@
+/*
+ * 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.pipeline.builder;
+
+import java.io.OutputStream;
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.cocoon.pipeline.AsyncCachePipeline;
+import org.apache.cocoon.pipeline.CachingPipeline;
+import org.apache.cocoon.pipeline.NonCachingPipeline;
+import org.apache.cocoon.pipeline.Pipeline;
+import org.apache.cocoon.pipeline.component.Finisher;
+import org.apache.cocoon.pipeline.component.PipelineComponent;
+import org.apache.cocoon.pipeline.component.Starter;
+
+/**
+ * 
+ *
+ * @param <PC> the {@link PipelineComponent} type.
+ * @version $Id$
+ */
+public final class PipelineBuilder<PC extends PipelineComponent> implements \
LinkedPipelineBuilder<PC> { +
+    /**
+     * {@inheritDoc}
+     */
+    public LinkedPipelineStarterBuilder<PC> newAsyncCachePipeline() {
+        return this.newPipeline(new AsyncCachePipeline<PC>());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public LinkedPipelineStarterBuilder<PC> newCachingPipeline() {
+        return this.newPipeline(new CachingPipeline<PC>());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public LinkedPipelineStarterBuilder<PC> newNonCachingPipeline() {
+        return this.newPipeline(new NonCachingPipeline<PC>());
+    }
+
+    private LinkedPipelineStarterBuilder<PC> newPipeline(final Pipeline<PC> \
pipeline) { +        return new LinkedPipelineStarterBuilder<PC>() {
+
+            public LinkedPipelineComponentBuilder<PC> setStarter(final PC starter) {
+                if (starter == null) {
+                    throw new IllegalArgumentException("Parameter 'starter' must be \
not null"); +                }
+                if (!(starter instanceof Starter)) {
+                    throw new IllegalArgumentException("Parameter 'starter' must be \
org.apache.cocoon.pipeline.component.Starter instance"); +                }
+                pipeline.addComponent(starter);
+
+                return new LinkedPipelineComponentBuilder<PC>() {
+
+                    public LinkedPipelineComponentBuilder<PC> addComponent(final PC \
pipelineComponent) { +                        if (pipelineComponent == null) {
+                            throw new IllegalArgumentException("Parameter \
'pipelineComponent' must be not null"); +                        }
+                        pipeline.addComponent(pipelineComponent);
+                        return this;
+                    }
+
+                    public LinkedPipelineConfigurationBuilder<PC> setFinisher(final \
PC finisher) { +                        if (finisher == null) {
+                            throw new IllegalArgumentException("Parameter 'finisher' \
must be not null"); +                        }
+                        if (!(finisher instanceof Finisher)) {
+                            throw new IllegalArgumentException("Parameter 'finisher' \
must be org.apache.cocoon.pipeline.component.Finisher instance"); +                   \
} +                        pipeline.addComponent(finisher);
+
+                        return new LinkedPipelineConfigurationBuilder<PC>() {
+
+                            @SuppressWarnings("unchecked")
+                            public LinkedPipelineSetupBuilder<PC> \
withEmptyConfiguration() { +                                return \
this.setConfiguration(Collections.EMPTY_MAP); +                            }
+
+                            public LinkedPipelineSetupBuilder<PC> \
setConfiguration(final Map<String, ? extends Object> parameters) { +                  \
if (parameters == null) { +                                    throw new \
IllegalArgumentException("Parameter 'parameters' must be not null"); +                \
} +                                pipeline.setConfiguration(parameters);
+
+                                return new LinkedPipelineSetupBuilder<PC>() {
+
+                                    public Pipeline<PC> setup(final OutputStream \
outputStream) { +                                        if (outputStream == null) {
+                                            throw new \
IllegalArgumentException("Parameter 'outputStream' must be not null"); +              \
} +                                        pipeline.setup(outputStream);
+                                        return pipeline;
+                                    }
+
+                                };
+                            }
+
+                        };
+                    }
+
+                };
+            }
+
+        };
+    }
+
+}

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/PipelineBuilder.java
                
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/PipelineBuilder.java
                
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/builder/PipelineBuilder.java
                
------------------------------------------------------------------------------
    svn:mime-type = text/plain


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic