You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by st...@apache.org on 2004/04/01 14:40:40 UTC

cvs commit: cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java CalculatorFlow.java FormFlow.java PersistenceFlow.java

stephan     2004/04/01 04:40:40

  Modified:    src/blocks/javaflow/java/org/apache/cocoon/components/flow/java
                        ContinuationClassLoader.java
               src/blocks/javaflow/java/org/apache/cocoon/forms/flow/java
                        FormInstance.java
               src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java
                        CalculatorFlow.java FormFlow.java
                        PersistenceFlow.java
  Added:       src/blocks/javaflow/java/org/apache/cocoon/components/flow/java
                        AbstractContinuable.java
  Removed:     src/blocks/javaflow/java/org/apache/cocoon/components/flow/java
                        AbstractCocoonFlow.java
  Log:
  AbstractCocoonFlow -> AbstractContinuable
  This name is more meaningful for peripheral classes.
  
  Revision  Changes    Path
  1.3       +6 -10     cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/ContinuationClassLoader.java
  
  Index: ContinuationClassLoader.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/ContinuationClassLoader.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ContinuationClassLoader.java	29 Mar 2004 19:02:23 -0000	1.2
  +++ ContinuationClassLoader.java	1 Apr 2004 12:40:40 -0000	1.3
  @@ -71,19 +71,20 @@
       public ContinuationClassLoader(ClassLoader parent) {
           super(parent);
   
  -        if (parent instanceof ContinuationClassLoader)
  -            throw new IllegalArgumentException("Cannot cascade ContinuationClassLoader");
  -
           Repository.setRepository(new ClassLoaderRepository(parent));
       }
   
       protected synchronized Class loadClass(String name, boolean resolve)
               throws ClassNotFoundException {
   
  -        //System.out.println("load class "+name+" classloader="+this);
  +        //System.out.println("load class "+name);
   
  +        // this finds also classes, which are already transformed, 
  +        // via findLoadedClass
           Class c = super.loadClass(name, resolve);
   
  +        // transform class if class is continuable 
  +        // and not continuation capable
           if ((Continuable.class.isAssignableFrom(c)) && 
               (!ContinuationCapable.class.isAssignableFrom(c)) && 
               (!c.isInterface())) {
  @@ -144,11 +145,6 @@
                   // add intercepting code 
                   //System.out.println("rewriting " + methods[i].getName());
                   rewrite(method, cfg);
  -
  -                /*InstructionHandle handle = method.getInstructionList().getStart();
  -                do {
  -                  System.out.println(handle);
  -                } while ((handle = handle.getNext()) != null);*/
   
                   // make last optional check for consistency
                   //System.out.println("check " + methods[i].getName());
  
  
  
  1.1                  cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/AbstractContinuable.java
  
  Index: AbstractContinuable.java
  ===================================================================
  /*
   * Copyright 1999-2004 The Apache Software Foundation.
   *
   * Licensed 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.components.flow.java;
  
  import org.apache.avalon.framework.CascadingRuntimeException;
  import org.apache.avalon.framework.logger.Logger;
  import org.apache.cocoon.components.ContextHelper;
  import org.apache.cocoon.components.flow.FlowHelper;
  import org.apache.cocoon.components.flow.util.PipelineUtil;
  import org.apache.cocoon.environment.Request;
  import org.apache.excalibur.source.SourceUtil;
  
  import java.io.OutputStream;
  
  /**
   * Abstract class to add basic methods for flow handling.
   *
   * @author <a href="mailto:tcurdt@apache.org">Torsten Curdt</a>
   * @author <a href="mailto:stephan@apache.org">Stephan Michels</a>
   * @version CVS $Id: AbstractContinuable.java,v 1.1 2004/04/01 12:40:40 stephan Exp $
   */
  public abstract class AbstractContinuable implements Continuable {
  
      private ContinuationContext getContext() {
          if (Continuation.currentContinuation()==null)
              throw new IllegalStateException("No continuation is running");
          return (ContinuationContext) Continuation.currentContinuation().getContext();
      }
    
      public Logger getLogger() {
          return getContext().getLogger();
      }
  
      public void sendPageAndWait(String uri) {
          sendPageAndWait(uri, new VarMap());
      }
  
      public void sendPageAndWait(String uri, Object bizdata) {
  
          ContinuationContext context = getContext();
  
          context.getLogger().debug("send page and wait '" + uri + "'");
  
          FlowHelper.setContextObject(ContextHelper.getObjectModel(context.getAvalonContext()), bizdata);
  
          if (SourceUtil.indexOfSchemeColon(uri) == -1) {
              uri = "cocoon:/" + uri;
              if (getContext().getRedirector().hasRedirected()) {
                  throw new IllegalStateException("Pipeline has already been processed for this request");
              }
              try {
                  context.getRedirector().redirect(false, uri);
              } catch (Exception e) {
                  throw new CascadingRuntimeException("Cannot redirect to '"+uri+"'", e);
              } 
          } else {
              throw new IllegalArgumentException("uri is not allowed to contain a scheme (cocoon:/ is always automatically used)");
          }
  
          Continuation.suspend();
      }
  
      public void sendPage(String uri) {
          sendPage(uri, new VarMap());
      }
  
      public void sendPage(String uri, Object bizdata) {
  
          ContinuationContext context = getContext();
  
          context.getLogger().debug("send page '" + uri + "'");
  
          FlowHelper.setContextObject(ContextHelper.getObjectModel(context.getAvalonContext()), bizdata);
  
          if (SourceUtil.indexOfSchemeColon(uri) == -1) {
              uri = "cocoon:/" + uri;
              if (getContext().getRedirector().hasRedirected()) {
                  throw new IllegalStateException("Pipeline has already been processed for this request");
              }
              try {
                  context.getRedirector().redirect(false, uri);
              } catch (Exception e) {
                  throw new CascadingRuntimeException("Cannot redirect to '"+uri+"'", e);
              }
          } else {
              throw new IllegalArgumentException("uri is not allowed to contain a scheme (cocoon:/ is always automatically used)");
          }
      }
  
      public Request getRequest() {
          return ContextHelper.getRequest(getContext().getAvalonContext());
      }
  
      public void processPipelineTo(String uri, Object bizdata, OutputStream out) {
  
          ContinuationContext context = getContext();
  
          try {
              PipelineUtil pipeUtil = new PipelineUtil();
              pipeUtil.contextualize(context.getAvalonContext());
              pipeUtil.service(context.getServiceManager());
              pipeUtil.processToStream(uri, bizdata, out);
          } catch (Exception e) {
              throw new CascadingRuntimeException("Cannot process pipeline to '"+uri+"'", e);
          }
      }
  
      public void redirectTo(String uri) {
          try {
              getContext().getRedirector().redirect(false, uri);
          } catch (Exception e) {
              throw new CascadingRuntimeException("Cannot redirect to '"+uri+"'", e);
          }
      }
  
      public void sendStatus(int sc) {
          getContext().getRedirector().sendStatus(sc);
      }
  
      /**
       * Access components.
       */
      public Object getComponent(String id) {
          try {
              return getContext().getServiceManager().lookup(id);
          } catch (Exception e) {
              throw new CascadingRuntimeException("Cannot lookup component '"+id+"'", e);
          }
      }
  
      /**
       * Release pooled components.
       *
       * @param component a component
       */
      public void releaseComponent( Object component ) {
          if (component != null) {
              getContext().getServiceManager().release(component);
          }
      }
  }
  
  
  
  1.3       +2 -2      cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/forms/flow/java/FormInstance.java
  
  Index: FormInstance.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/forms/flow/java/FormInstance.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FormInstance.java	31 Mar 2004 14:16:30 -0000	1.2
  +++ FormInstance.java	1 Apr 2004 12:40:40 -0000	1.3
  @@ -36,7 +36,7 @@
    * @author <a href="mailto:stephan@apache.org">Stephan Michels</a>
    * @version CVS $Id$
    */
  -public class FormInstance extends AbstractCocoonFlow {
  +public class FormInstance extends AbstractContinuable {
   
       private Form form;
       private Binding binding;
  
  
  
  1.3       +1 -1      cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java/CalculatorFlow.java
  
  Index: CalculatorFlow.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java/CalculatorFlow.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CalculatorFlow.java	29 Mar 2004 20:56:14 -0000	1.2
  +++ CalculatorFlow.java	1 Apr 2004 12:40:40 -0000	1.3
  @@ -17,7 +17,7 @@
   
   import org.apache.cocoon.components.flow.java.*;
   
  -public class CalculatorFlow extends AbstractCocoonFlow {
  +public class CalculatorFlow extends AbstractContinuable {
   
       private int count = 1;
   
  
  
  
  1.5       +1 -1      cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java/FormFlow.java
  
  Index: FormFlow.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java/FormFlow.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FormFlow.java	31 Mar 2004 14:16:30 -0000	1.4
  +++ FormFlow.java	1 Apr 2004 12:40:40 -0000	1.5
  @@ -23,7 +23,7 @@
                    
   import java.util.Date;
   
  -public class FormFlow extends AbstractCocoonFlow {
  +public class FormFlow extends AbstractContinuable {
   
       public void doEditForm1() {
   
  
  
  
  1.7       +1 -1      cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java/PersistenceFlow.java
  
  Index: PersistenceFlow.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java/PersistenceFlow.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- PersistenceFlow.java	31 Mar 2004 13:32:57 -0000	1.6
  +++ PersistenceFlow.java	1 Apr 2004 12:40:40 -0000	1.7
  @@ -29,7 +29,7 @@
   import org.apache.ojb.broker.*;
   import org.apache.ojb.broker.query.*;
   
  -public class PersistenceFlow extends AbstractCocoonFlow {
  +public class PersistenceFlow extends AbstractContinuable {
   
       private transient PersistenceBroker broker = null;