Thanks Guys for helping. I am able to crack it now. After creating below 
two files it works.

*First Java File*

import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.DataBoundSetter;
import 
com.oracle.siebel.jenkins.BuildStepCommandInterpreter.OptionalTextBlock1;
import hudson.Extension;
import hudson.FilePath;
import hudson.Launcher;
import hudson.tasks.Messages;
import hudson.Proc;
import hudson.Util;
import hudson.EnvVars;
import hudson.model.AbstractBuild;
import hudson.model.AbstractDescribableImpl;
import hudson.model.BuildListener;
import hudson.model.Node;
import hudson.model.Result;
import hudson.model.TaskListener;
import hudson.remoting.ChannelClosedException;
import hudson.model.AbstractProject;
import hudson.tasks.BuildStepDescriptor;
import hudson.tasks.Builder;
import hudson.tasks.CommandInterpreter;
import java.io.IOException;
import java.io.ObjectStreamException;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;

public class BuildStepCreator extends BuildStepCommandInterpreter {
    
    @DataBoundConstructor
    public BuildStepCreator(OptionalTextBlock1 enableText1) {
        super(enableText1);
    }
    
    private Integer unstableReturn;

    public String[] buildCommandLine(FilePath script) {
        return new String[] {"cmd","/c","call",script.getRemote()};
    }

    protected String getContents() {
        return text1;
    }

    protected String getFileExtension() {
        return ".bat";
    }
    
    @CheckForNull
    public final Integer getUnstableReturn() {
        return new Integer(0).equals(unstableReturn) ? null : 
unstableReturn;
    }

    @DataBoundSetter
    public void setUnstableReturn(Integer unstableReturn) {
        this.unstableReturn = unstableReturn;
    }

    @Override
    protected boolean isErrorlevelForUnstableBuild(int exitCode) {
        return this.unstableReturn != null && exitCode != 0 && 
this.unstableReturn.equals(exitCode);
    }

    private Object readResolve() throws ObjectStreamException {
        return new BuildStepCreator(enableText1);
    }
    
    @Extension
    public static final class DescriptorImpl extends 
BuildStepDescriptor<Builder>{
        /*public FormValidation doCheckTask(@QueryParameter String value){
            try{
                if(value.equalsIgnoreCase(null) || 
value.equalsIgnoreCase("")){
                    return FormValidation.error("Invalid Details.");
                }
            }catch(Exception e){
                return FormValidation.error("Error validating the form 
details.");
            }
            return FormValidation.ok();
        }
        
        public FormValidation doCheckGoal(@QueryParameter String value){
            try{
                Integer.parseInt(value);
            }catch(Exception e){
                return FormValidation.error("Please provide integer in the 
Goal.");
            }
            return FormValidation.ok();
        }*/

        @Override
        public boolean isApplicable(Class<? extends AbstractProject> 
jobType) {
            // TODO Auto-generated method stub
            return true;
        }

        @Override
        public String getDisplayName() {
            // TODO Auto-generated method stub
            return "Job Orchestration";
        }
    }
}

*Second Java File*

import java.io.IOException;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nonnull;
import org.kohsuke.stapler.DataBoundConstructor;
import hudson.EnvVars;
import hudson.FilePath;
import hudson.Launcher;
import hudson.Messages;
import hudson.Proc;
import hudson.Util;
import hudson.model.AbstractBuild;
import hudson.model.BuildListener;
import hudson.model.Node;
import hudson.model.Result;
import hudson.model.TaskListener;
import hudson.remoting.ChannelClosedException;
import hudson.tasks.Builder;
import hudson.tasks.CommandInterpreter;

public abstract class BuildStepCommandInterpreter extends Builder {
    protected final String text1;
    //protected final String text2;
    //protected final String text3;
    
    public String getText1(){
        return text1;
    }
    
    /*public String getText2(){
        return text2;
    }
    
    public String getText3(){
        return text3;
    }*/
    
    protected OptionalTextBlock1 enableText1;
    //protected OptionalTextBlock2 enableText2;
    //protected OptionalTextBlock3 enableText3;
    
    /*public BuildStepCommandInterpreter(OptionalTextBlock1 enableText1, 
OptionalTextBlock2 enableText2, OptionalTextBlock3 enableText3) {
        this.text1 = (enableText1 != null) ? enableText1.text1 : null;
        this.text2 = (enableText2 != null) ? enableText2.text2 : null;
        this.text3 = (enableText3 != null) ? enableText3.text3 : null;
    }*/
    public BuildStepCommandInterpreter(OptionalTextBlock1 enableText1) {
        this.text1 = (enableText1 != null) ? enableText1.text1 : null;
    }
    public static class OptionalTextBlock1 {
        protected String text1;
        @DataBoundConstructor
        public OptionalTextBlock1(String text1) {
            this.text1 = text1;
        }
    }
    
    /*public static class OptionalTextBlock2 {
        private String text2;
        @DataBoundConstructor
        public OptionalTextBlock2(String text2) {
            this.text2 = text2;
        }
    }
    
    public static class OptionalTextBlock3 {
        private String text3;
        @DataBoundConstructor
        public OptionalTextBlock3(String text3) {
            this.text3 = text3;
        }
    }*/
    
    @Override
    public boolean perform(AbstractBuild<?,?> build, Launcher launcher, 
BuildListener listener) throws InterruptedException {
        return perform(build,launcher,(TaskListener)listener);
    }

    /**
     * Determines whether a non-zero exit code from the process should 
change the build
     * status to {@link Result#UNSTABLE} instead of default {@link 
Result#FAILURE}.
     *
     * Changing to {@link Result#UNSTABLE} does not abort the build, next 
steps are continued.
     *
     * @since 2.26
     */
    protected boolean isErrorlevelForUnstableBuild(int exitCode) {
        return false;
    }

    public boolean perform(AbstractBuild<?,?> build, Launcher launcher, 
TaskListener listener) throws InterruptedException {
        FilePath ws = build.getWorkspace();
        if (ws == null) {
            Node node = build.getBuiltOn();
            if (node == null) {
                throw new NullPointerException("no such build node: " + 
build.getBuiltOnStr());
            }
            throw new NullPointerException("no workspace from node " + node 
+ " which is computer " + node.toComputer() + " and has channel " + 
node.getChannel());
        }
        FilePath script=null;
        int r = -1;
        try {
            try {
                script = createScriptFile(ws);
            } catch (IOException e) {
                Util.displayIOException(e,listener);
                e.printStackTrace(listener.fatalError("Error in 
createScriptFile step."));
                return false;
            }

            try {
                EnvVars envVars = build.getEnvironment(listener);
                // on Windows environment variables are converted to all 
upper case,
                // but no such conversions are done on Unix, so to make 
this cross-platform,
                // convert variables to all upper cases.
                for(Map.Entry<String,String> e : 
build.getBuildVariables().entrySet())
                    envVars.put(e.getKey(),e.getValue());

                r = 
join(launcher.launch().cmds(buildCommandLine(script)).envs(envVars).stdout(listener).pwd(ws).start());

                if(isErrorlevelForUnstableBuild(r)) {
                    build.setResult(Result.FAILURE);
                    r = 0;
                }
            } catch (IOException e) {
                Util.displayIOException(e, listener);
                e.printStackTrace(listener.fatalError(""));
            }
            return r==0;
        } finally {
            try {
                if(script!=null)
                    script.delete();
            } catch (IOException e) {
                if (r==-1 && e.getCause() instanceof 
ChannelClosedException) {
                    // JENKINS-5073
                    // r==-1 only when the execution of the command 
resulted in IOException,
                    // and we've already reported that error. A common 
error there is channel
                    // losing a connection, and in that case we don't want 
to confuse users
                    // by reporting the 2nd problem. Technically the 1st 
exception may not be
                    // a channel closed error, but that's rare enough, and 
JENKINS-5073 is common enough
                    // that this suppressing of the error would be justified
                    LOGGER.log(Level.FINE, "Script deletion failed or 
Channel Closed Exception.", e);
                } else {
                    Util.displayIOException(e,listener);
                    e.printStackTrace( listener.fatalError("") );
                }
            } catch (Exception e) {
                e.printStackTrace( listener.fatalError("Unable to Delete") 
);
            }
        }
    }

    /**
     * Reports the exit code from the process.
     *
     * This allows subtypes to treat the exit code differently (for example 
by treating non-zero exit code
     * as if it's zero, or to set the status to {@link Result#UNSTABLE}). 
Any non-zero exit code will cause
     * the build step to fail. Use {@link #isErrorlevelForUnstableBuild(int 
exitCode)} to redefine the default
     * behaviour.
     *
     * @since 1.549
     */
    protected int join(Proc p) throws IOException, InterruptedException {
        return p.join();
    }

    /**
     * Creates a script file in a temporary name in the specified directory.
     */
    public FilePath createScriptFile(@Nonnull FilePath dir) throws 
IOException, InterruptedException {
        return dir.createTextTempFile("jenkins", getFileExtension(), 
getContents(), false);
    }

    public abstract String[] buildCommandLine(FilePath script);

    protected abstract String getContents();

    protected abstract String getFileExtension();

    private static final Logger LOGGER = 
Logger.getLogger(CommandInterpreter.class.getName());
    
}



On Thursday, 17 November 2016 13:54:00 UTC+5:30, Kul Bhushan Srivastava 
wrote:
>
> Agree with your point.
>
> I have change the code accordingly. Compiles properly through Maven. But 
> now Jenkins at Runtime throwing exception when saving the job 
> configuration, saying -
>
> Caused by: java.lang.IllegalArgumentException: Failed to instantiate class 
> com.oracle.siebel.jenkins.ABC from 
> {"enableText1":{"text1":"hello"},"enableText2":{"text2":"kul"},"enableText3":{"text3":"bhushan"},"stapler-class":"com.oracle.siebel.jenkins.ABC","$class":"com.oracle.siebel.jenkins.ABC"}
>     at 
> org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
>     at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:476)
>     at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:472)
>     at hudson.model.Descriptor.newInstance(Descriptor.java:588)
>     ... 81 more
> Caused by: org.kohsuke.stapler.NoStaplerConstructorException: There's no 
> @DataBoundConstructor on any constructor of class 
> com.oracle.siebel.jenkins.ABC
>     at 
> org.kohsuke.stapler.ClassDescriptor.loadConstructorParamNames(ClassDescriptor.java:177)
>     at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:756)
>     at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
>     at 
> org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:672)
>     ... 84 more
>
> *New Java File*
>
> import org.kohsuke.stapler.DataBoundConstructor;
> import hudson.Extension;
> import hudson.FilePath;
> import hudson.Launcher;
> import hudson.tasks.Messages;
> import hudson.Proc;
> import hudson.Util;
> import hudson.EnvVars;
> import hudson.model.AbstractBuild;
> import hudson.model.AbstractDescribableImpl;
> import hudson.model.BuildListener;
> import hudson.model.Node;
> import hudson.model.Result;
> import hudson.model.TaskListener;
> import hudson.remoting.ChannelClosedException;
> import hudson.model.AbstractProject;
> import hudson.tasks.BuildStepDescriptor;
> import hudson.tasks.Builder;
> import hudson.tasks.CommandInterpreter;
> import java.io.IOException;
> import java.util.Map;
> import java.util.logging.Level;
> import java.util.logging.Logger;
> import javax.annotation.Nonnull;
>
> public class BuildStepCreator extends Builder{
>     
>     private String text1, text2, text3;
>     
>     public String getText1(){
>         return text1;
>     }
>     public String getText2(){
>         return text2;
>     }
>     public String getText3(){
>         return text3;
>     }
>     
>     @DataBoundConstructor
>     public BuildStepCreator(OptionalTextBlock1 enableText1, 
> OptionalTextBlock2 enableText2, OptionalTextBlock3 enableText3) {
>         this.text1 = (enableText1 != null) ? enableText1.text1 : null;
>         this.text2 = (enableText2 != null) ? enableText2.text2 : null;
>         this.text3 = (enableText3 != null) ? enableText3.text3 : null;
>     }
>
>     public static class OptionalTextBlock1 {
>         private String text1;
>         @DataBoundConstructor
>         public OptionalTextBlock1(String text1) {
>             this.text1 = text1;
>         }
>     }
>     public static class OptionalTextBlock2 {
>         private String text2;
>         @DataBoundConstructor
>         public OptionalTextBlock2(String text2) {
>             this.text2 = text2;
>         }
>     }
>     public static class OptionalTextBlock3 {
>         private String text3;
>         @DataBoundConstructor
>         public OptionalTextBlock3(String text3) {
>             this.text3 = text3;
>         }
>     }   
> }
>
> abstract class ABC extends BuildStepCreator{
>     
>     public ABC(OptionalTextBlock1 enableText1, OptionalTextBlock2 
> enableText2, OptionalTextBlock3 enableText3) {
>         super(enableText1, enableText2, enableText3);
>         // TODO Auto-generated constructor stub
>     }
>
>     public abstract String[] buildCommandLine(FilePath script);
>
>     protected abstract String getContents();
>
>     protected abstract String getFileExtension();
>     
>     @Extension
>     public static final class DescriptorImpl extends 
> BuildStepDescriptor<Builder>{
>         
>         @Override
>         public boolean isApplicable(Class<? extends AbstractProject> 
> jobType) {
>             // TODO Auto-generated method stub
>             return true;
>         }
>
>         @Override
>         public String getDisplayName() {
>             // TODO Auto-generated method stub
>             return "Job Orchestration";
>         }
>     }
>     
>     
>     
>     @Override
>     public boolean perform(AbstractBuild<?,?> build, Launcher launcher, 
> BuildListener listener) throws InterruptedException {
>         return perform(build,launcher,(TaskListener)listener);
>     }
>     
>     /**
>      * Determines whether a non-zero exit code from the process should 
> change the build
>      * status to {@link Result#UNSTABLE} instead of default {@link 
> Result#FAILURE}.
>      *
>      * Changing to {@link Result#UNSTABLE} does not abort the build, next 
> steps are continued.
>      *
>      */
>     protected boolean isErrorlevelForUnstableBuild(int exitCode) {
>         return false;
>     }
>     
>     public boolean perform(AbstractBuild<?,?> build, Launcher launcher, 
> TaskListener listener) throws InterruptedException{
>         FilePath ws = build.getWorkspace();
>         if (ws == null) {
>             Node node = build.getBuiltOn();
>             if (node == null) {
>                 throw new NullPointerException("no such build node: " + 
> build.getBuiltOnStr());
>             }
>             throw new NullPointerException("no workspace from node " + 
> node + " which is computer " + node.toComputer() + " and has channel " + 
> node.getChannel());
>         }
>         FilePath script=null;
>         int r = -1;
>         try {
>             try {
>                 script = createScriptFile(ws);
>             } catch (IOException e) {
>                 Util.displayIOException(e,listener);
>                 
> e.printStackTrace(listener.fatalError(Messages.CommandInterpreter_UnableToProduceScript()));
>                 return false;
>             }
>
>             try {
>                 EnvVars envVars = build.getEnvironment(listener);
>                 // on Windows environment variables are converted to all 
> upper case,
>                 // but no such conversions are done on Unix, so to make 
> this cross-platform,
>                 // convert variables to all upper cases.
>                 for(Map.Entry<String,String> e : 
> build.getBuildVariables().entrySet())
>                     envVars.put(e.getKey(),e.getValue());
>
>                 r = 
> join(launcher.launch().cmds(buildCommandLine(script)).envs(envVars).stdout(listener).pwd(ws).start());
>
>                 if(isErrorlevelForUnstableBuild(r)) {
>                     build.setResult(Result.FAILURE);
>                     r = 0;
>                 }
>             } catch (IOException e) {
>                 Util.displayIOException(e, listener);
>                 
> e.printStackTrace(listener.fatalError(Messages.CommandInterpreter_CommandFailed()));
>             }
>             return r==0;
>         } finally {
>             try {
>                 if(script!=null)
>                     script.delete();
>             } catch (IOException e) {
>                 if (r==-1 && e.getCause() instanceof 
> ChannelClosedException) {
>                     // JENKINS-5073
>                     // r==-1 only when the execution of the command 
> resulted in IOException,
>                     // and we've already reported that error. A common 
> error there is channel
>                     // losing a connection, and in that case we don't want 
> to confuse users
>                     // by reporting the 2nd problem. Technically the 1st 
> exception may not be
>                     // a channel closed error, but that's rare enough, and 
> JENKINS-5073 is common enough
>                     // that this suppressing of the error would be 
> justified
>                     LOGGER.log(Level.FINE, "Script deletion failed", e);
>                 } else {
>                     Util.displayIOException(e,listener);
>                     e.printStackTrace( 
> listener.fatalError(Messages.CommandInterpreter_UnableToDelete(script)) );
>                 }
>             } catch (Exception e) {
>                 e.printStackTrace( 
> listener.fatalError(Messages.CommandInterpreter_UnableToDelete(script)) );
>             }
>         }
>     }
>     
>     /**
>      * Reports the exit code from the process.
>      *
>      * This allows subtypes to treat the exit code differently (for 
> example by treating non-zero exit code
>      * as if it's zero, or to set the status to {@link Result#UNSTABLE}). 
> Any non-zero exit code will cause
>      * the build step to fail. Use {@link 
> #isErrorlevelForUnstableBuild(int exitCode)} to redefine the default
>      * behaviour.
>      *
>      * @since 1.549
>      */
>     protected int join(Proc p) throws IOException, InterruptedException {
>         return p.join();
>     }
>
>     /**
>      * Creates a script file in a temporary name in the specified 
> directory.
>      */
>     public FilePath createScriptFile(@Nonnull FilePath dir) throws 
> IOException, InterruptedException {
>         return dir.createTextTempFile("hudson", getFileExtension(), 
> getContents(), false);
>     }
>
>     private static final Logger LOGGER = 
> Logger.getLogger(CommandInterpreter.class.getName());
>     
> }
>
> On Wednesday, 16 November 2016 23:00:36 UTC+5:30, Robert Sandell wrote:
>>
>> Abstract classes cannot be instanciated, so you can't annotate the 
>> constructor with DataBoundConstructor since the class can't be directly 
>> instanciated but will need to be subclassed.
>>
>> /B
>>
>> On Wed, Nov 16, 2016 at 3:59 PM, Kul Bhushan Srivastava <
>> cool...@gmail.com> wrote:
>>
>>> Thanks Robert.
>>>
>>> I am facing maven compilation issue. Saying @DataBoundConstructor cannot 
>>> be used inside abstract class.
>>>
>>> Please suggest.
>>>
>>> My Java File:
>>>
>>> import org.kohsuke.stapler.DataBoundConstructor;
>>> import hudson.Extension;
>>> import hudson.FilePath;
>>> import hudson.Launcher;
>>> import hudson.tasks.Messages;
>>> import hudson.Proc;
>>> import hudson.Util;
>>> import hudson.EnvVars;
>>> import hudson.model.AbstractBuild;
>>> import hudson.model.BuildListener;
>>> import hudson.model.Node;
>>> import hudson.model.Result;
>>> import hudson.model.TaskListener;
>>> import hudson.remoting.ChannelClosedException;
>>> import hudson.model.AbstractProject;
>>> import hudson.tasks.BuildStepDescriptor;
>>> import hudson.tasks.Builder;
>>> import hudson.tasks.CommandInterpreter;
>>> import java.io.IOException;
>>> import java.util.Map;
>>> import java.util.logging.Level;
>>> import java.util.logging.Logger;
>>> import javax.annotation.Nonnull;
>>>
>>> public abstract class BuildStepCreator extends Builder {
>>>     
>>>     private String text1, text2, text3;
>>>     
>>>     public String getText1(){
>>>         return text1;
>>>     }
>>>     public String getText2(){
>>>         return text2;
>>>     }
>>>     public String getText3(){
>>>         return text3;
>>>     }
>>>     
>>>
>>>     @DataBoundConstructor
>>>     public BuildStepCreator(OptionalTextBlock1 enableText1, 
>>> OptionalTextBlock2 enableText2, OptionalTextBlock3 enableText3) {
>>>         this.text1 = (enableText1 != null) ? enableText1.text1 : null;
>>>         this.text2 = (enableText2 != null) ? enableText2.text2 : null;
>>>         this.text3 = (enableText3 != null) ? enableText3.text3 : null;
>>>     }
>>>
>>>     public static class OptionalTextBlock1 {
>>>         private String text1;
>>>         @DataBoundConstructor
>>>         public OptionalTextBlock1(String text1) {
>>>             this.text1 = text1;
>>>         }
>>>     }
>>>     public static class OptionalTextBlock2 {
>>>         private String text2;
>>>         @DataBoundConstructor
>>>         public OptionalTextBlock2(String text2) {
>>>             this.text2 = text2;
>>>         }
>>>     }
>>>     public static class OptionalTextBlock3 {
>>>         private String text3;
>>>         @DataBoundConstructor
>>>         public OptionalTextBlock3(String text3) {
>>>             this.text3 = text3;
>>>         }
>>>     }
>>>
>>>     @Extension
>>>     public static final class DescriptorImpl extends 
>>> BuildStepDescriptor<Builder>{
>>>         
>>>         /*public FormValidation doCheckTask(@QueryParameter String 
>>> value){
>>>             try{
>>>                 if(value.equalsIgnoreCase(null) || 
>>> value.equalsIgnoreCase("")){
>>>                     return FormValidation.error("Invalid Details.");
>>>                 }
>>>             }catch(Exception e){
>>>                 return FormValidation.error("Error validating the form 
>>> details.");
>>>             }
>>>             return FormValidation.ok();
>>>         }
>>>         
>>>         public FormValidation doCheckGoal(@QueryParameter String value){
>>>             try{
>>>                 Integer.parseInt(value);
>>>             }catch(Exception e){
>>>                 return FormValidation.error("Please provide integer in 
>>> the Goal.");
>>>             }
>>>             return FormValidation.ok();
>>>         }*/
>>>
>>>         @Override
>>>         public boolean isApplicable(Class<? extends AbstractProject> 
>>> jobType) {
>>>             // TODO Auto-generated method stub
>>>             return true;
>>>         }
>>>
>>>         @Override
>>>         public String getDisplayName() {
>>>             // TODO Auto-generated method stub
>>>             return "Job Orchestration";
>>>         }
>>>     }
>>>     
>>>     /*@Override
>>>     public boolean perform(hudson.model.AbstractBuild build, 
>>> hudson.Launcher launcher, hudson.model.BuildListener listener) {
>>>         listener.getLogger().println("OptionalBlockSampleBuilder " + 
>>> text1);
>>>         return true;
>>>     }*/
>>>     
>>>     @Override
>>>     public boolean perform(AbstractBuild<?,?> build, Launcher launcher, 
>>> BuildListener listener) throws InterruptedException {
>>>         return perform(build,launcher,(TaskListener)listener);
>>>     }
>>>     
>>>     /**
>>>      * Determines whether a non-zero exit code from the process should 
>>> change the build
>>>      * status to {@link Result#UNSTABLE} instead of default {@link 
>>> Result#FAILURE}.
>>>      *
>>>      * Changing to {@link Result#UNSTABLE} does not abort the build, 
>>> next steps are continued.
>>>      *
>>>      */
>>>     protected boolean isErrorlevelForUnstableBuild(int exitCode) {
>>>         return false;
>>>     }
>>>     
>>>     public boolean perform(AbstractBuild<?,?> build, Launcher launcher, 
>>> TaskListener listener) throws InterruptedException{
>>>         FilePath ws = build.getWorkspace();
>>>         if (ws == null) {
>>>             Node node = build.getBuiltOn();
>>>             if (node == null) {
>>>                 throw new NullPointerException("no such build node: " + 
>>> build.getBuiltOnStr());
>>>             }
>>>             throw new NullPointerException("no workspace from node " + 
>>> node + " which is computer " + node.toComputer() + " and has channel " + 
>>> node.getChannel());
>>>         }
>>>         FilePath script=null;
>>>         int r = -1;
>>>         try {
>>>             try {
>>>                 script = createScriptFile(ws);
>>>             } catch (IOException e) {
>>>                 Util.displayIOException(e,listener);
>>>                 
>>> e.printStackTrace(listener.fatalError(Messages.CommandInterpreter_UnableToProduceScript()));
>>>                 return false;
>>>             }
>>>
>>>             try {
>>>                 EnvVars envVars = build.getEnvironment(listener);
>>>                 // on Windows environment variables are converted to all 
>>> upper case,
>>>                 // but no such conversions are done on Unix, so to make 
>>> this cross-platform,
>>>                 // convert variables to all upper cases.
>>>                 for(Map.Entry<String,String> e : 
>>> build.getBuildVariables().entrySet())
>>>                     envVars.put(e.getKey(),e.getValue());
>>>
>>>                 r = 
>>> join(launcher.launch().cmds(buildCommandLine(script)).envs(envVars).stdout(listener).pwd(ws).start());
>>>
>>>                 if(isErrorlevelForUnstableBuild(r)) {
>>>                     build.setResult(Result.UNSTABLE);
>>>                     r = 0;
>>>                 }
>>>             } catch (IOException e) {
>>>                 Util.displayIOException(e, listener);
>>>                 
>>> e.printStackTrace(listener.fatalError(Messages.CommandInterpreter_CommandFailed()));
>>>             }
>>>             return r==0;
>>>         } finally {
>>>             try {
>>>                 if(script!=null)
>>>                     script.delete();
>>>             } catch (IOException e) {
>>>                 if (r==-1 && e.getCause() instanceof 
>>> ChannelClosedException) {
>>>                     // JENKINS-5073
>>>                     // r==-1 only when the execution of the command 
>>> resulted in IOException,
>>>                     // and we've already reported that error. A common 
>>> error there is channel
>>>                     // losing a connection, and in that case we don't 
>>> want to confuse users
>>>                     // by reporting the 2nd problem. Technically the 1st 
>>> exception may not be
>>>                     // a channel closed error, but that's rare enough, 
>>> and JENKINS-5073 is common enough
>>>                     // that this suppressing of the error would be 
>>> justified
>>>                     LOGGER.log(Level.FINE, "Script deletion failed", e);
>>>                 } else {
>>>                     Util.displayIOException(e,listener);
>>>                     e.printStackTrace( 
>>> listener.fatalError(Messages.CommandInterpreter_UnableToDelete(script)) );
>>>                 }
>>>             } catch (Exception e) {
>>>                 e.printStackTrace( 
>>> listener.fatalError(Messages.CommandInterpreter_UnableToDelete(script)) );
>>>             }
>>>         }
>>>     }
>>>     
>>>     /**
>>>      * Reports the exit code from the process.
>>>      *
>>>      * This allows subtypes to treat the exit code differently (for 
>>> example by treating non-zero exit code
>>>      * as if it's zero, or to set the status to {@link 
>>> Result#UNSTABLE}). Any non-zero exit code will cause
>>>      * the build step to fail. Use {@link 
>>> #isErrorlevelForUnstableBuild(int exitCode)} to redefine the default
>>>      * behaviour.
>>>      *
>>>      * @since 1.549
>>>      */
>>>     protected int join(Proc p) throws IOException, InterruptedException {
>>>         return p.join();
>>>     }
>>>
>>>     /**
>>>      * Creates a script file in a temporary name in the specified 
>>> directory.
>>>      */
>>>     public FilePath createScriptFile(@Nonnull FilePath dir) throws 
>>> IOException, InterruptedException {
>>>         return dir.createTextTempFile("hudson", getFileExtension(), 
>>> getContents(), false);
>>>     }
>>>
>>>     public abstract String[] buildCommandLine(FilePath script);
>>>
>>>     protected abstract String getContents();
>>>
>>>     protected abstract String getFileExtension();
>>>
>>>     private static final Logger LOGGER = 
>>> Logger.getLogger(CommandInterpreter.class.getName());
>>>     
>>> }
>>>
>>> On Wednesday, 16 November 2016 17:15:12 UTC+5:30, Robert Sandell wrote:
>>>>
>>>> Here are the classes involved in "execute script" step.
>>>>
>>>>
>>>> https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/tasks/BatchFile.java
>>>>
>>>> https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/tasks/Shell.java
>>>>
>>>> https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/tasks/CommandInterpreter.java
>>>>
>>>> /B
>>>>
>>>>
>>>> On Wed, Nov 16, 2016 at 8:41 AM, Kul Bhushan Srivastava <
>>>> cool...@gmail.com> wrote:
>>>>
>>>>> If anyone can guide how the windows bactch command execution are 
>>>>> handled from backend JAVA API. Then I may create one of my own.
>>>>>
>>>>> On Monday, 14 November 2016 13:37:49 UTC+5:30, Kul Bhushan Srivastava 
>>>>> wrote:
>>>>>>
>>>>>>  
>>>>>
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "Jenkins Developers" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to jenkinsci-de...@googlegroups.com.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/jenkinsci-dev/76d6ddbf-14a2-405d-8197-f2dd549e8248%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/jenkinsci-dev/76d6ddbf-14a2-405d-8197-f2dd549e8248%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>>
>>>>
>>>> -- 
>>>> Robert Sandell
>>>> *Software Engineer*
>>>> *CloudBees Inc.*
>>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Jenkins Developers" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to jenkinsci-de...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/jenkinsci-dev/39ff5e49-dcf3-4098-a505-de706522682e%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/jenkinsci-dev/39ff5e49-dcf3-4098-a505-de706522682e%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> -- 
>> Robert Sandell
>> *Software Engineer*
>> *CloudBees Inc.*
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/73658dfb-83c6-4839-867b-dd43791b2e21%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to