code: public void submitFaxJob(FaxJob faxJob)
      {
          //validate fax job
          this.invokeFaxJobNullValidation(faxJob);
  
          //validate fax job target address
          String targetAddress=faxJob.getTargetAddress();
          if((targetAddress==null)||(targetAddress.length()==0))
          {
              throw new FaxException("Fax job target address not provided.");
          }
  
          //validate fax job file
          File file=faxJob.getFile();
          if(file==null)
          {
              throw new FaxException("Fax job file not provided.");
          }
          else if(!file.exists())
          {
              throw new FaxException("Fax job file "+file.getPath()+" does not exist.");
          }
          else if(!file.isFile())
          {
              throw new FaxException("Fax job file "+file.getPath()+" is not a file.");
          }
          else if(file.length()==0)
          {
              throw new FaxException("Fax job file "+file.getPath()+" is empty.");
          }
  
          //invoke action
          this.submitFaxJobImpl(faxJob);
          
          //fire event
          this.fireFaxEvent(FaxClientActionEventID.SUBMIT_FAX_JOB,faxJob);
  
          //start monitoring fax job if and only if monitoring is supported and there are existing listeners
          if(this.isFaxMonitorEventsSupported())
          {
              synchronized(this.faxMonitorEventListeners)
              {
                  if(!this.faxMonitorEventListeners.isEmpty())
                  {
                      //monitor the submitted fax job
                      this.spiFaxJobMonitor.monitorFaxJob(this,faxJob);
                  }
              }
          }
      }
docs: This function will submit a new fax job.<br>
  The fax job ID may be populated by this method in the provided
  fax job object.
  
  @param   faxJob
  The fax job object containing the needed information