You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by apurva zaveri <az...@yahoo.com> on 2002/07/30 04:09:21 UTC

XMLFORM WizardAction compilation problem

Hello,

I am new to XMLFORM. I followed the howto
instructions. I use Jbuilder tool. I beleive, the
userbean and WizardAction has to compiled. While
compiling I get tht following error:

************************************
"WizardAction.java": Error #: 300 : class UserBean1
not found in class rertn_frontapp.WizardAction at line
172, column 5


"WizardAction.java": Error #: 300 : class UserBean1
not found in class rertn_frontapp.WizardAction at line
172, column 25

************************************


The WizardAction is not able to access the userbean.
and the compilation fails. Is there something I am
missing? Please excuse my naievty to XMLFORM.

The code is below , basicaly i modified and remarked
the cocoon's sample code:


**************************************

/*
 * $Header:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/samples/xmlform/WizardActio
n.java,v 1.5 2002/07/04 20:57:47 ivelin Exp $
 * $Revision: 1.5 $
 * $Date: 2002/07/04 20:57:47 $
 *
 *
====================================================================
 * The Apache Software License, Version 1.1
 *
 *
 *
 * Copyright (c) 1999-2001 The Apache Software
Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms,
with or without
 * modification, are permitted provided that the
following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the
above copyright
 *    notice, this list of conditions and the
following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce
the above copyright
 *    notice, this list of conditions and the
following disclaimer in
 *    the documentation and/or other materials
provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the
redistribution, if
 *    any, must include the following acknowlegement:
 *       "This product includes software developed by
the
 *        Apache Software Foundation
(http://www.apache.org/)."
 *    Alternately, this acknowlegement may appear in
the software
itself,
 *    if and wherever such third-party acknowlegements
normally appear.
 *
 * 4. The names "The Jakarta Project", "Commons", and
"Apache Software
 *    Foundation" must not be used to endorse or
promote products
derived
 *    from this software without prior written
permission. For written
 *    permission, please contact apache@apache.org.
 *
 * 5. Products derived from this software may not be
called "Apache"
 *    nor may "Apache" appear in their names without
prior written
 *    permission of the Apache Group.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY
EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE
FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF
 * SUCH DAMAGE.
 *
====================================================================
 *
 * This software consists of voluntary contributions
made by many
 * individuals on behalf of the Apache Software
Foundation and was
 * originally based on software copyright (c) 2001,
Plotnix, Inc,
 * <http://www.plotnix.com/>.
 * For more information on the Apache Software
Foundation, please see
 * <http://www.apache.org/>.
 */
//package org.apache.cocoon.samples.xmlform;

package rertn_frontapp;

// Java classes
import java.util.Map;

// Framework classes
import org.apache.excalibur.source.Source;


// Cocoon Form
import org.apache.cocoon.acting.AbstractXMLFormAction;
import org.apache.cocoon.components.xmlform.Form;
import
org.apache.cocoon.components.xmlform.FormListener;

//import rertn_frontapp.xmlform.UserBean1;

/**
 * This action demonstrates
 * a relatively complex form handling scenario.
 *
 * @author Ivelin Ivanov <iv...@apache.org>
 */
public class WizardAction
  extends AbstractXMLFormAction
  implements FormListener

{


  // different form views
  // participating in the wizard
  final String VIEW_START = "start";
  final String VIEW_USERID = "userIdentity";
//  final String VIEW_DEPLOYMENT = "deployment";
//  final String VIEW_SYSTEM = "system";
  final String VIEW_CONFIRM = "confirm";
  final String VIEW_END = "end";

  // action commands used in the wizard
  final String CMD_START = "start";
  final String CMD_NEXT = "next";
  final String CMD_PREV = "prev";


  /**
   * The first callback method which is called
   * when an action is invoked.
   *
   * It is called before population.
   *
   *
   * @return null if the Action is prepared to
continue.
   * an objectModel map which will be immediately
returned by the
action.
   *
   * This method is a good place to handle buttons
with Cancel
   * kind of semantics. For example
   * <pre>if getCommand().equals("Cancel") return
page("input");</pre>
   *
   */
  protected Map prepare()
  {

    if ( getCommand() == null )
      {
        // initial link
        return page( VIEW_START );
      }
    else if ( getCommand().equals( CMD_START ) )
    {
      // reset state by removing old form
      // if one exists
      Form.remove( getObjectModel(), getFormId() );
      getForm().addFormListener( this );

      return page( VIEW_USERID );
    }
    else if ( Form.lookup ( getObjectModel(),
getFormId() ) == null)
      {
        // session expired
        return page( VIEW_START );
      }


    // get ready for action
    // if not ready return page("whereNext");
    return null;
  }


  /**
   * Invoked after form population
   *
   * Semanticly similar to Struts Action.perform()
   *
   * Take appropriate action based on the command
   *
   */
  public Map perform ()
  {

    // get the actual model which this Form
encapsulates
    // and apply additional buziness logic to the
model
    UserBean  jBean = (UserBean) getForm().getModel();
    jBean.incrementCount();

    // set the page control flow parameter
    // according to the validation result
    if ( getCommand().equals( CMD_NEXT ) &&
      getForm().getViolations () != null )
    {
      // errors, back to the same page
      return page( getFormView() );
    }
    else
    {
      // validation passed
      // continue with control flow

      // clear validation left overs in case the user
      // did not press the Next button
      getForm().clearViolations();

      // get the user submitted command (through a
submit button)
      String command = getCommand();
      // get the form view which was submitted
      String formView = getFormView();

      // apply control flow rules
      if ( formView.equals ( VIEW_USERID ) )
      {
        if ( command.equals( CMD_NEXT ) )
        {
          return page(  VIEW_CONFIRM );
//          return page( VIEW_DEPLOYMENT );
        }
      }
/*      else if ( formView.equals ( VIEW_DEPLOYMENT )
)
      {
        if ( command.equals( CMD_NEXT ) )
        {
          return page( VIEW_SYSTEM );
        }
        else if( command.equals( CMD_PREV ) )
          return page( VIEW_USERID );
      }
      else if ( formView.equals ( VIEW_SYSTEM ) )
      {
        if ( command.equals( CMD_NEXT ) )
        {
          return page(  VIEW_CONFIRM );
        }
        else if( command.equals( CMD_PREV ) )
          return page( VIEW_DEPLOYMENT );
      }
  */    else if ( formView.equals ( VIEW_CONFIRM ) )
      {
        if ( command.equals( CMD_NEXT ) )
        {
          Form.remove( getObjectModel(), getFormId()
);
          return page( VIEW_END );
        }
        else if( command.equals( CMD_PREV ) )
          return page( VIEW_USERID );
      }
    }

    // should never reach this statement
    return page( VIEW_START );

  }





  /**
   *
   * FormListener callback
   * called in the beginning Form.populate()
   * before population starts.
   *
   * This is the place to handle unchecked checkboxes.
   *
   */
  public void reset( Form form )
  {
    // based on the current form view
    // make some decisions regarding checkboxes, etc.
    String formView = getFormView();
/*    if ( formView.equals ( VIEW_DEPLOYMENT ) )
    {
      // deal with the publish checkbox
      form.setValue( "/publish", Boolean.FALSE );
    }
    else if ( formView.equals ( VIEW_USERID ) )
    {
      // deal with the publish checkbox
      UserBean ub = (UserBean) form.getModel();
      ub.initRoles ();
    }
 */
  }


  /**
   * FormListener callback
   *
   * Invoked during Form.populate();
   *
   * It is invoked before a request parameter is
mapped to
   * an attribute of the form model.
   *
   * It is appropriate to use this method for
filtering
   * custom request parameters which do not reference
   * the model.
   *
   * Another appropriate use of this method is for
graceful filtering
of
invalid
   * values, in case that knowledge of the system
state or
   * other circumstainces make the standard validation
   * insufficient. For example if a registering user
choses a username
which
   * is already taken - the check requires database
transaction, which
is
   * beyond the scope of document validating schemas.
   * Of course customized Validators can be
implemented to do
   * this kind of domain specific validation
   * instead of using this method.
   *
   *
   * @return false if the request parameter should not
be filtered.
   * true otherwise.
   */
  public boolean filterRequestParameter (Form form,
String
parameterName)
  {
    // TBD
    return false;
  }


    public  String getFile( String FileName ) {
        Source source = null;
        try {
            source =
getSourceResolver().resolveURI(FileName);
            final String  FILE_PREFIX = "file:";
            String path = source.getSystemId();
            if(path.startsWith(FILE_PREFIX))
                path =
path.substring(FILE_PREFIX.length());
            return path;
        } catch(Exception e) {
            getLogger().error("could not read mapping
file",e);
            return null;
        } finally {
            this.getSourceResolver().release( source
);
        }
  }

}



**************************************
 and this is the userbean1 which compiles fine without
any error:

***************************************
//package org.apache.cocoon.samples.xmlform;

package rertn_frontapp;

import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.util.ArrayList;

import org.w3c.dom.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;

/**
 *
 * A sample domain object used as a Form model.
 * Notice that it has mixed content:
 * JavaBean properties and
 * DOM Nodes, which are handled correctly by the
 * framework when referenced via XPath.
 *
 */

public class UserBean1
{
  private String city = "MUMBAI";
  private String propTypeCat = "RESIDENTIAL";
  private String propType = "";

/*  private String email =
"donald_duck@disneyland.com";
  private int age = 5;
  private int count = 1;
  private short numInstalls = 1;
  private String liveUrl = "http://";
  private boolean publish = true;
  private List favorites = new ArrayList();
  private List roles = new ArrayList();
  private String hobbies[];
*/
  private boolean hidden = false;

  private Node system;

  public UserBean1 ()
  {
   // initDomNode();
   // initRoles();
   // initFavorites();
   // initHobbies();
  }

  public String getCity() {
    return city;
  }

  public void setCity(String vcity) {
    city = vcity;
  }

  public String getPropTypeCat() {
    return propTypeCat;
  }

  public void setPropTypeCat(String vpropTypeCat) {
    propTypeCat = vpropTypeCat;
  }

  public String getPropType()
    {
    return propType;
    }

  public void setPropType(String vpropType )
    {
    propType = vpropType;
    }
/*
  public boolean getPublish()
    {
    return publish;
    }

  public void setPublish( boolean newPublish )
    {
    publish = newPublish;
    }


   public Node getSystem()
      {
      return system;
     }

    public void setSystem( Node newSystem )
      {
      system = newSystem;
     }
*/
   public boolean getHidden()
      {
      return hidden;
     }

    public void setHidden( boolean newHidden )
      {
      hidden = newHidden;
     }
/*
  public int getCount() {
    return count;
  }

  public void incrementCount() {
    count++;
  }
*/
/*
  public void initDomNode()
  {
    DOMImplementation impl;
    try
    {
      // Find the implementation
      DocumentBuilderFactory factory
       = DocumentBuilderFactory.newInstance();
      factory.setNamespaceAware(false);
      factory.setValidating ( false );
      DocumentBuilder builder =
factory.newDocumentBuilder();
      impl = builder.getDOMImplementation();
    }
    catch (Exception ex)
    {
      throw new RuntimeException("Failed to initialize
DOM factory.
Root
cause: \n" + ex);
    }

    // initialize system as dom node
    Document doc = impl.createDocument( null,
"XMLForm_Wizard_System_Node",
null);
    Node rootElement = doc.getDocumentElement();

    Node os = doc.createElement ( "os" );
    Text text = doc.createTextNode( "Linux" );
    os.appendChild(text);
    rootElement.appendChild( os );

    Node processor = doc.createElement ( "processor"
);
    text = doc.createTextNode( "p4" );
    processor.appendChild(text);
    rootElement.appendChild( processor );

    Attr ram = doc.createAttribute ( "ram" );
    ram.setValue ( "512" );
    NamedNodeMap nmap = rootElement.getAttributes();
    nmap.setNamedItem ( ram );

    Node servletEngine = doc.createElement (
"servletEngine" );
    text = doc.createTextNode( "Tomcat" );
    servletEngine.appendChild(text);
    rootElement.appendChild( servletEngine );

    Node javaVersion = doc.createElement (
"javaVersion" );
    text = doc.createTextNode( "1.3" );
    javaVersion.appendChild(text);
    rootElement.appendChild( javaVersion );

    system = rootElement;

  }
*/
/*
  public List getRole()
  {
    return roles;
  }

  public void setRole( List newRoles )
  {
    roles = newRoles;
  }

  public String[] getHobby()
  {
    return hobbies;
  }

  public void setHobby( String[] newHobbies )
  {
    hobbies = newHobbies;
  }

  public List getFavorite()
  {
    return favorites;
  }

  public void setFavorite( List newFavorites )
  {
    favorites = newFavorites;
  }

  public void initRoles()
  {
    roles = new ArrayList();
  }


  public void initHobbies()
  {
    hobbies = new String[] {"swim", "movies", "ski",
"gym", "soccer"};
  }


  public void initFavorites()
  {
    favorites.add( "http://xml.apache.org/cocoon" );
    favorites.add( "http://jakarta.apache.org" );
    favorites.add( "http://www.google.com" );
    favorites.add( "http://www.slashdot.org" );
    favorites.add( "http://www.yahoo.com" );
  }
*/
}
***********************************************


Thankyou in advance.

-Apurva Zaveri



__________________________________________________
Do You Yahoo!?
Yahoo! Health - Feel better, live better
http://health.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org