code: public static void save( File f, ApplicationTemplateDescriptor descriptor ) throws IOException {
  
  		Properties properties = new Properties();
  		if( descriptor.name != null )
  			properties.setProperty( APPLICATION_NAME, descriptor.name );
  
  		if( descriptor.version != null )
  			properties.setProperty( APPLICATION_VERSION, descriptor.version );
  
  		if( descriptor.dslId != null )
  			properties.setProperty( APPLICATION_DSL_ID, descriptor.dslId );
  
  		if( descriptor.description != null )
  			properties.setProperty( APPLICATION_DESCRIPTION, descriptor.description );
  
  		if( descriptor.graphEntryPoint != null )
  			properties.setProperty( APPLICATION_GRAPH_EP, descriptor.graphEntryPoint );
  
  		if( descriptor.instanceEntryPoint != null )
  			properties.setProperty( APPLICATION_INSTANCES_EP, descriptor.instanceEntryPoint );
  
  		if( descriptor.externalExportsPrefix != null )
  			properties.setProperty( APPLICATION_EXTERNAL_EXPORTS_PREFIX, descriptor.externalExportsPrefix );
  
  		StringBuilder sb = new StringBuilder();
  		for( Iterator<Map.Entry<String,String>> it = descriptor.externalExports.entrySet().iterator(); it.hasNext(); ) {
  			Map.Entry<String,String> entry = it.next();
  			sb.append( entry.getKey());
  			sb.append( " " );
  			sb.append( APPLICATION_EXTERNAL_EXPORTS_AS );
  			sb.append( " " );
  			sb.append( entry.getValue());
  			if( it.hasNext())
  				sb.append( ", " );
  		}
  
  		if( sb.length() > 0 )
  			properties.setProperty( APPLICATION_EXTERNAL_EXPORTS, sb.toString());
  
  		properties.setProperty( APPLICATION_TAGS, Utils.format( descriptor.tags, ", " ));
  		Utils.writePropertiesFile( properties, f );
  	}
docs: Saves an application template's descriptor.
  @param f the file where the properties will be saved
  @param descriptor an application descriptor (not null)
  @throws IOException if the file could not be written