Jindent - Java Source Code Formatter http://www.jindent.com
 



title

9 Jindent's Open API


Jindent provides an easy to use open API for developers. This API can be very helpful to beautify generated source code or to write your own Jindent plugins.



Required jar files


To be able to use Jindent's open API you have to add all jar files from Jindent's /lib directory to your CLASSPATH. That's all.



How to use Jindent's Open API


  1. Example: Explicit invocation of the Java formatter module. Jindent settings will be read from a user defined settings file.

    import jindent.JindentException;        
    import jindent.JindentSettings;         
    import jindent.JindentSystem;           
    import jindent.java.JavaFormatter;      
                                            
    public class Example {                  
                                            
        
    public static void main(String args[]) {
                                            
            
    // read JindentSettings from file  
            
    JindentSettings settings = null;
                                            
            
    try {                           
                settings = (JindentSettings) JindentSettings.createFromFile(
    "MySettings.xml");
            } 
    catch (FileNotFoundException e1) {
                
    System.err.println(e1);     
            } 
    catch (JindentException e2) {     // catch settings format exceptions
                
    System.err.println(e2);     
            }                               
                                            
            
    // create Java formatter        
            
    JavaFormatter formatter = new JavaFormatter();
                                            
            
    // set settings                 
            
    formatter.setSettings(settings);
                                            
            
    // create sample input          
            
    String input = "class Test{int x,y,z;public int method(int a){return a*2;}}";
                                            
            
    try {                           
                
    // run formatter            
                
    String output = formatter.format(input);
                                            
                
    // write output             
                
    System.out.println(output); 
            } 
    catch(JindentException e) {   
                
    System.err.println(e);      
            }                               
        }                                   
    }                                       


  2. Example: Usage of the extension manager to format a sample input file. Jindent's default settings are used.

    import java.io.BufferedReader;          
    import java.io.File;                    
    import java.io.FileNotFoundException;   
    import java.io.FileReader;              
    import java.io.StringWriter;            
                                            
    import jindent.ExtensionManager;        
    import jindent.Formatter;               
    import jindent.JindentException;        
    import jindent.JindentSettings;         
    import jindent.JindentSystem;           
    import jindent.MessageList;             
    import jindent.SettingsUtils;           
    import jindent.message.ErrorMessage;    
    import jindent.message.Message;         
    import jindent.message.WarningMessage;          
                                            
    public class Example {                  
                                            
        
    public static void main(String args[]) {
                                            
            
    // get Jindent's default settings
            
    JindentSettings settings = JindentSystem.getDefaultJindentSettings();
                                            
            
    // get extension manager from settings
            
    ExtensionManager extensionManager = settings.getExtensionManager();
                                            
            
    // open handle to an example input file
            
    File file = new File("/path/MyExampleFile.sqlj");
                                            
            
    // get filename of file         
            
    String filename = file.getName();
                                            
            
    // extract extension from filename ("sqlj" in this case)
            
    String extension = SettingsUtils.extractExtensionFromFilename(filename);
                                            
            
    // get formatter by extension (returns Java/SQLJ Formatter)
            
    Formatter formatter = extensionManager.getFormatterByExtension(extension);
                                            
            
    // set settings                 
            
    formatter.setSettings(settings);
                                            
            
    // get Reader from input file   
            
    BufferedReader in = null;       
            
    try {                           
                in = 
    new BufferedReader(new FileReader(file));
            } 
    catch (FileNotFoundException e) {
                
    System.err.println(e);      
            }                               
                                            
            
    // write output to String       
            
    StringWriter out = new StringWriter();
                                            
            
    try {                           
                                            
                
    // run formatter            
                
    formatter.format(in, out);  
                                            
                
    // write output             
                
    System.out.println(out.toString());
            } 
    catch(JindentException e) {   
                
    System.err.println(e);      
            }                               
                                            
            
    // get messages from formatter  
            
    MessageList messageList = formatter.getMessageList();
                                            
            
    // write messages               
            
    int n = messageList.countMessages();
                                            
            
    for (int i = 0; i < n; i++) {   
                Message message = messageList.getMessageAt(i);

                                            
                
    if (message instanceof WarningMessage) {
                    
    System.out.println("Warning: " + message.getMessage());
                } 
    else if (message instanceof ErrorMessage) {
                    
    System.out.println("Error:   " + message.getMessage());
                } 
    else {                    
                    
    System.out.println("Message: " + message.getMessage());
                }                           
            }                               
        }                                   
    }