public File getDirectory() { return this.application.getDirectory(); }
private File findCommandFile( Application app, String commandName ) { String name = commandName; if( ! name.endsWith( Constants.FILE_EXT_COMMANDS )) name += Constants.FILE_EXT_COMMANDS; File cmdDir = new File( app.getDirectory(), Constants.PROJECT_DIR_COMMANDS ); return new File( cmdDir, name ); } }
@Override public List<String> listCommands( Application app ) { List<String> result = new ArrayList<> (); File cmdDir = new File( app.getDirectory(), Constants.PROJECT_DIR_COMMANDS ); if( cmdDir.isDirectory()) { for( File f : Utils.listAllFiles( cmdDir )) { if( f.getName().endsWith( Constants.FILE_EXT_COMMANDS )) { String cmdName = f.getName().replace( Constants.FILE_EXT_COMMANDS, "" ); result.add( cmdName ); } } } return result; }
/** * @param app * @param ctx * @param ruleName */ static void loadRule( Application app, AutonomicApplicationContext ctx, String ruleFileName ) { final Logger logger = Logger.getLogger( AutonomicMngrImpl.class.getName()); File autonomicRulesDirectory = new File( app.getDirectory(), Constants.PROJECT_DIR_RULES_AUTONOMIC ); if( autonomicRulesDirectory.exists()) { if( ruleFileName != null ) { String fileName = ruleFileName; if( ! fileName.endsWith( Constants.FILE_EXT_RULE )) fileName += Constants.FILE_EXT_RULE; File f = new File( autonomicRulesDirectory, fileName ); if( f.exists()) readRule( f, ctx, logger ); } else for( File f : Utils.listAllFiles( autonomicRulesDirectory )) { if( ! f.getName().endsWith( Constants.FILE_EXT_RULE )) { logger.warning( "Invalid file extension for rule " + f.getName() + ", it is skipped." ); continue; } readRule( f, ctx, logger ); } } }
/** * Loads the application bindings into an application. * @param app a non-null application * @param configurationDirectory the DM's configuration directory */ public static void loadApplicationBindings( Application app ) { File descDir = new File( app.getDirectory(), Constants.PROJECT_DIR_DESC ); File appBindingsFile = new File( descDir, APP_BINDINGS_FILE ); Logger logger = Logger.getLogger( ConfigurationUtils.class.getName()); Properties props = Utils.readPropertiesFileQuietly( appBindingsFile, logger ); for( Map.Entry<?,?> entry : props.entrySet()) { for( String part : Utils.splitNicely((String) entry.getValue(), "," )) { if( ! Utils.isEmptyOrWhitespaces( part )) app.bindWithApplication((String) entry.getKey(), part ); } } }
/** * Saves the instances into a file. * @param app the application (not null) * @param configurationDirectory the configuration directory */ public static void saveInstances( Application app ) { File targetFile = new File( app.getDirectory(), Constants.PROJECT_DIR_INSTANCES + "/" + INSTANCES_FILE ); try { Utils.createDirectory( targetFile.getParentFile()); RuntimeModelIo.writeInstances( targetFile, app.getRootInstances()); } catch( IOException e ) { Logger logger = Logger.getLogger( ConfigurationUtils.class.getName()); logger.severe( "Failed to save instances. " + e.getMessage()); Utils.logException( logger, e ); } }
File descDir = new File( app.getDirectory(), Constants.PROJECT_DIR_DESC ); File appBindingsFile = new File( descDir, APP_BINDINGS_FILE );
@Override public void updateApplication( ManagedApplication ma, String newDesc ) throws IOException { // Basic checks this.messagingMngr.checkMessagingConfiguration(); // Update it Application app = ma.getApplication(); app.setDescription( newDesc ); File targetDirectory = app.getDirectory(); File descFile = new File( targetDirectory, Constants.PROJECT_DIR_DESC + "/" + Constants.PROJECT_FILE_DESCRIPTOR ); Utils.createDirectory( descFile.getParentFile()); ApplicationDescriptor.save( descFile, app ); // Notify listeners this.notificationMngr.application( ma.getApplication(), EventType.CHANGED ); this.logger.fine( "The description of application " + ma.getApplication().getName() + " was successfully updated." ); }
@Test public void testFindIconUrl() throws Exception { // Create fake icons ApplicationTemplate tpl = new ApplicationTemplate( "tpl" ).version( "v1" ).directory( this.folder.newFolder()); File descDir = new File( tpl.getDirectory(), Constants.PROJECT_DIR_DESC ); Assert.assertTrue( descDir.mkdirs()); Assert.assertTrue( new File( descDir, "tp.jpg" ).createNewFile()); Application app = new Application( "app", tpl ).directory( this.folder.newFolder()); descDir = new File( app.getDirectory(), Constants.PROJECT_DIR_DESC ); Assert.assertTrue( descDir.mkdirs()); Assert.assertTrue( new File( descDir, "whatever.jpg" ).createNewFile()); // Check the URLs Assert.assertEquals( "/tpl/v1/tp.jpg", IconUtils.findIconUrl( tpl )); Assert.assertEquals( "/app/whatever.jpg", IconUtils.findIconUrl( app )); // And we delete the icon Utils.deleteFilesRecursively( descDir ); Assert.assertEquals( "", IconUtils.findIconUrl( app )); }