/** If the transformation has at least one step in a transformation, which writes it's data straight to a servlet output we should wait transformation's termination. Otherwise the servlet's response lifecycle may come to an end and the response will be closed by container while the transformation will be still trying writing data into it. */ @VisibleForTesting void finishProcessing( Trans trans, PrintWriter out ) { if ( trans.getSteps().stream().anyMatch( step -> step.meta.passDataToServletOutput() ) ) { trans.waitUntilFinished(); } else { WebResult webResult = new WebResult( WebResult.STRING_OK, "Transformation started", trans.getContainerObjectId() ); out.println( webResult.getXML() ); out.flush(); } }
/** * Cleanup the slave server as part of a clustered transformation. * * @param transSplitter the TransSplitter object * @param slaveServer the slave server * @param slaveTransMeta the slave transformation meta-data * @throws KettleException if any errors occur during cleanup */ public static void cleanupSlaveServer( TransSplitter transSplitter, SlaveServer slaveServer, TransMeta slaveTransMeta ) throws KettleException { String transName = slaveTransMeta.getName(); try { String carteObjectId = transSplitter.getCarteObjectMap().get( slaveTransMeta ); WebResult webResult = slaveServer.cleanupTransformation( transName, carteObjectId ); if ( !WebResult.STRING_OK.equals( webResult.getResult() ) ) { throw new KettleException( "Unable to run clean-up on slave server '" + slaveServer + "' for transformation '" + transName + "' : " + webResult.getMessage() ); } } catch ( Exception e ) { throw new KettleException( "Unexpected error contacting slave server '" + slaveServer + "' to clear up transformation '" + transName + "'", e ); } }
public WebResult pauseResumeTransformation( String transName, String carteObjectId ) throws Exception { String xml = execService( PauseTransServlet.CONTEXT_PATH + "/?name=" + URLEncoder.encode( transName, "UTF-8" ) + "&id=" + Const.NVL( carteObjectId, "" ) + "&xml=Y" ); return WebResult.fromXMLString( xml ); }
WebResult webResult = WebResult.fromXMLString( slaveReply ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "An error occurred sending a slave transformation: " + webResult .getMessage() ); carteObjectMap.put( slaveTrans, webResult.getId() ); } catch ( Throwable t ) { errors[ index ] = t;
@Override WebResult generateBody( HttpServletRequest request, HttpServletResponse response, boolean useXML ) throws IOException, KettleException { final String xml = IOUtils.toString( request.getInputStream() ); // Parse the XML, create a job configuration JobConfiguration jobConfiguration = JobConfiguration.fromXML( xml ); Job job = createJob( jobConfiguration ); String message = "Job '" + job.getJobname() + "' was added to the list with id " + job.getContainerObjectId(); return new WebResult( WebResult.STRING_OK, message, job.getContainerObjectId() ); } }
@Override public String toString() { return getXML(); }
RegisterPackageServlet.TYPE_TRANS, topLevelResource.getBaseResourceName() ); WebResult webResult = WebResult.fromXMLString( result ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "There was an error passing the exported transformation to the remote server: " + Const.CR + webResult.getMessage() ); carteObjectId = webResult.getId(); } else { WebResult webResult = WebResult.fromXMLString( reply ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "There was an error posting the transformation on the remote server: " + Const.CR + webResult.getMessage() ); carteObjectId = webResult.getId(); slaveServer.execService( PrepareExecutionTransServlet.CONTEXT_PATH + "/?name=" + URLEncoder.encode( transMeta .getName(), "UTF-8" ) + "&xml=Y&id=" + carteObjectId ); WebResult webResult = WebResult.fromXMLString( reply ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "There was an error preparing the transformation for excution on the remote server: " + Const.CR + webResult.getMessage() ); slaveServer.execService( StartExecutionTransServlet.CONTEXT_PATH + "/?name=" + URLEncoder.encode( transMeta .getName(), "UTF-8" ) + "&xml=Y&id=" + carteObjectId ); webResult = WebResult.fromXMLString( reply ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) {
@Override WebResult generateBody( HttpServletRequest request, HttpServletResponse response, boolean useXML ) throws IOException, KettleException { final String xml = IOUtils.toString( request.getInputStream() ); // Parse the XML, create a transformation configuration TransConfiguration transConfiguration = TransConfiguration.fromXML( xml ); Trans trans = createTrans( transConfiguration ); String message = "Transformation '" + trans.getName() + "' was added to Carte with id " + trans.getContainerObjectId(); return new WebResult( WebResult.STRING_OK, message, trans.getContainerObjectId() ); }
slaveServer.sendExport( topLevelResource.getArchiveName(), RegisterPackageServlet.TYPE_JOB, topLevelResource .getBaseResourceName() ); WebResult webResult = WebResult.fromXMLString( result ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "There was an error passing the exported job to the remote server: " + Const.CR + webResult.getMessage() ); carteObjectId = webResult.getId(); } else { String xml = new JobConfiguration( jobMeta, executionConfiguration ).getXML(); WebResult webResult = WebResult.fromXMLString( reply ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "There was an error posting the job on the remote server: " + Const.CR + webResult .getMessage() ); carteObjectId = webResult.getId(); slaveServer.execService( StartJobServlet.CONTEXT_PATH + "/?name=" + URLEncoder.encode( jobMeta.getName(), "UTF-8" ) + "&xml=Y&id=" + carteObjectId ); WebResult webResult = WebResult.fromXMLString( reply ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "There was an error starting the job on the remote server: " + Const.CR + webResult .getMessage() );
protected void pause() { TreeEntry treeEntry = getTreeEntry(); if ( treeEntry == null ) { return; } if ( treeEntry.isTransformation() ) { // Transformation try { WebResult webResult = slaveServer.pauseResumeTransformation( treeEntry.name, treeEntry.id ); if ( !WebResult.STRING_OK.equalsIgnoreCase( webResult.getResult() ) ) { EnterTextDialog dialog = new EnterTextDialog( shell, BaseMessages.getString( PKG, "SpoonSlave.ErrorPausingOrResumingTrans.Title" ), BaseMessages.getString( PKG, "SpoonSlave.ErrorPausingOrResumingTrans.Message" ), webResult.getMessage() ); dialog.setReadOnly(); dialog.open(); } } catch ( Exception e ) { new ErrorDialog( shell, BaseMessages.getString( PKG, "SpoonSlave.ErrorPausingOrResumingTrans.Title" ), BaseMessages.getString( PKG, "SpoonSlave.ErrorPausingOrResumingTrans.Message" ), e ); } } }
public static WebResult fromXMLString( String xml ) throws KettleXMLException { try { Document doc = XMLHandler.loadXMLString( xml ); Node node = XMLHandler.getSubNode( doc, XML_TAG ); return new WebResult( node ); } catch ( Exception e ) { throw new KettleXMLException( BaseMessages.getString( PKG, "WebResult.Error.UnableCreateResult" ), e ); } }
public WebResult stopJob( String transName, String carteObjectId ) throws Exception { String xml = execService( StopJobServlet.CONTEXT_PATH + "/?name=" + URLEncoder.encode( transName, "UTF-8" ) + "&xml=Y&id=" + Const.NVL( carteObjectId, "" ) ); return WebResult.fromXMLString( xml ); }
out.println( new WebResult( WebResult.STRING_OK, message, id ).getXML() ); } else { out.println( "<H1>" + Encode.forHtml( message ) + "</H1>" ); out.println( new WebResult( WebResult.STRING_ERROR, message, id ).getXML() ); } else { out.println( "<H1>" + Encode.forHtml( message ) + "</H1>" ); out.println( new WebResult( WebResult.STRING_ERROR, Const.getStackTracker( ex ) ).getXML() ); } else { out.println( "<p>" );
WebResult webResult = WebResult.fromXMLString( masterReply ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "An error occurred sending the master transformation: " + webResult .getMessage() ); carteObjectMap.put( master, webResult.getId() ); masterServer.execService( PrepareExecutionTransServlet.CONTEXT_PATH + "/?name=" + URLEncoder.encode( master.getName(), "UTF-8" ) + "&id=" + URLEncoder.encode( carteObjectId, "UTF-8" ) + "&xml=Y" ); WebResult webResult = WebResult.fromXMLString( masterReply ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "An error occurred while preparing the execution of the master transformation: " + webResult .getMessage() ); slaves[ i ].execService( PrepareExecutionTransServlet.CONTEXT_PATH + "/?name=" + URLEncoder.encode( slaveTrans.getName(), "UTF-8" ) + "&id=" + URLEncoder.encode( carteObjectId, "UTF-8" ) + "&xml=Y" ); WebResult webResult = WebResult.fromXMLString( slaveReply ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "An error occurred while preparing the execution of a slave transformation: " + webResult.getMessage() ); masterServer.execService( StartExecutionTransServlet.CONTEXT_PATH + "/?name=" + URLEncoder.encode( master.getName(), "UTF-8" ) + "&id=" + URLEncoder.encode( carteObjectId, "UTF-8" ) + "&xml=Y" ); WebResult webResult = WebResult.fromXMLString( masterReply ); if ( !webResult.getResult().equalsIgnoreCase( WebResult.STRING_OK ) ) { throw new KettleException( "An error occurred while starting the execution of the master transformation: " + webResult.getMessage() );
if ( !WebResult.STRING_OK.equals( webResult.getResult() ) ) { log.logError( transName, "Unable to run clean-up on remote transformation '" + transName + "' : " + webResult .getMessage() ); errors += 1;
return new WebResult( WebResult.STRING_OK, fileUrl, resultId );
public WebResult startTransformation( String transName, String carteObjectId ) throws Exception { String xml = execService( StartTransServlet.CONTEXT_PATH + "/?name=" + URLEncoder.encode( transName, "UTF-8" ) + "&id=" + Const.NVL( carteObjectId, "" ) + "&xml=Y" ); return WebResult.fromXMLString( xml ); }
out.println( new WebResult( WebResult.STRING_OK, message ).getXML() ); } else { out.println( "<H1>" + Encode.forHtml( message ) + "</H1>" ); String message = BaseMessages.getString( PKG, "StopJobServlet.Log.CoundNotFindJob", jobName ); if ( useXML ) { out.println( new WebResult( WebResult.STRING_ERROR, message ).getXML() ); } else { out.println( "<H1>" + Encode.forHtml( message ) + "</H1>" ); out.println( new WebResult( WebResult.STRING_ERROR, Const.getStackTracker( ex ) ).getXML() ); } else { out.println( "<p>" );
try { WebResult webResult = slaveServer.startTransformation( treeEntry.name, transStatus.getId() ); if ( !WebResult.STRING_OK.equalsIgnoreCase( webResult.getResult() ) ) { EnterTextDialog dialog = new EnterTextDialog( shell, BaseMessages.getString( PKG, "SpoonSlave.ErrorStartingTrans.Title" ), BaseMessages .getString( PKG, "SpoonSlave.ErrorStartingTrans.Message" ), webResult.getMessage() ); dialog.setReadOnly(); dialog.open(); try { WebResult webResult = slaveServer.startJob( treeEntry.name, jobStatus.getId() ); if ( !WebResult.STRING_OK.equalsIgnoreCase( webResult.getResult() ) ) { EnterTextDialog dialog = new EnterTextDialog( shell, BaseMessages.getString( PKG, "SpoonSlave.ErrorStartingJob.Title" ), BaseMessages .getString( PKG, "SpoonSlave.ErrorStartingJob.Message" ), webResult.getMessage() ); dialog.setReadOnly(); dialog.open();