Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 66A13200B33 for ; Wed, 29 Jun 2016 13:48:29 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 65116160A57; Wed, 29 Jun 2016 11:48:29 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 8779D160A4D for ; Wed, 29 Jun 2016 13:48:28 +0200 (CEST) Received: (qmail 83305 invoked by uid 500); 29 Jun 2016 11:48:27 -0000 Mailing-List: contact commits-help@felix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@felix.apache.org Delivered-To: mailing list commits@felix.apache.org Received: (qmail 83296 invoked by uid 99); 29 Jun 2016 11:48:27 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Jun 2016 11:48:27 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 06803186D35 for ; Wed, 29 Jun 2016 11:48:27 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.374 X-Spam-Level: X-Spam-Status: No, score=0.374 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-1.426] autolearn=disabled Received: from mx2-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id VpafJ8QRy2CO for ; Wed, 29 Jun 2016 11:48:25 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx2-lw-eu.apache.org (ASF Mail Server at mx2-lw-eu.apache.org) with ESMTP id 595695FB2F for ; Wed, 29 Jun 2016 11:48:24 +0000 (UTC) Received: from svn01-us-west.apache.org (svn.apache.org [10.41.0.6]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 4218AE0178 for ; Wed, 29 Jun 2016 11:48:23 +0000 (UTC) Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id 6E6113A0096 for ; Wed, 29 Jun 2016 11:48:22 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1750620 - in /felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl: Configurator.java TypeConverter.java model/Config.java yaml/YAMLUtil.java Date: Wed, 29 Jun 2016 11:48:21 -0000 To: commits@felix.apache.org From: cziegeler@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20160629114822.6E6113A0096@svn01-us-west.apache.org> archived-at: Wed, 29 Jun 2016 11:48:29 -0000 Author: cziegeler Date: Wed Jun 29 11:48:21 2016 New Revision: 1750620 URL: http://svn.apache.org/viewvc?rev=1750620&view=rev Log: Binary handling Modified: felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/TypeConverter.java felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/model/Config.java felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/yaml/YAMLUtil.java Modified: felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java?rev=1750620&r1=1750619&r2=1750620&view=diff ============================================================================== --- felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java (original) +++ felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java Wed Jun 29 11:48:21 2016 @@ -362,6 +362,11 @@ public class Configurator { while ( iter.hasNext() ) { final Config cfg = iter.next(); if ( cfg.getState() == ConfigState.UNINSTALL || cfg.getState() == ConfigState.UNINSTALLED ) { + if ( cfg.getFiles() != null ) { + for(final File f : cfg.getFiles()) { + f.delete(); + } + } iter.remove(); } else if ( cfg.getState() == ConfigState.INSTALLED ) { if ( foundInstalled ) { Modified: felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/TypeConverter.java URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/TypeConverter.java?rev=1750620&r1=1750619&r2=1750620&view=diff ============================================================================== --- felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/TypeConverter.java (original) +++ felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/TypeConverter.java Wed Jun 29 11:48:21 2016 @@ -20,6 +20,7 @@ package org.apache.felix.configurator.im import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import org.apache.felix.converter.impl.ConverterService; @@ -33,6 +34,10 @@ public class TypeConverter { return new ConverterService(); // TODO use OSGi service } + private final List allFiles = new ArrayList(); + + private final List files = new ArrayList(); + private final Bundle bundle; /** @@ -84,7 +89,6 @@ public class TypeConverter { } // binary - // TODO - keep track of files and delete them when configuration is UNINSTALLED/removed if ( "binary".equals(typeInfo) ) { if ( bundle == null ) { throw new IOException("Binary files only allowed within a bundle"); @@ -97,6 +101,8 @@ public class TypeConverter { if ( filePath == null ) { throw new IOException("Invalid path for binary property: " + value); } + files.add(filePath); + allFiles.add(filePath); return filePath.getAbsolutePath(); } else if ( "binary[]".equals(typeInfo) ) { @@ -114,6 +120,8 @@ public class TypeConverter { if ( filePath == null ) { throw new IOException("Invalid path for binary property: " + value); } + files.add(filePath); + allFiles.add(filePath); filePaths[i] = filePath.getAbsolutePath(); i++; } @@ -237,6 +245,18 @@ public class TypeConverter { } public void cleanupFiles() { - // TODO + for(final File f : allFiles) { + f.delete(); + } + } + + public List flushFiles() { + if ( this.files.isEmpty() ) { + return null; + } else { + final List result = new ArrayList<>(this.files); + this.files.clear(); + return result; + } } } Modified: felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/model/Config.java URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/model/Config.java?rev=1750620&r1=1750619&r2=1750620&view=diff ============================================================================== --- felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/model/Config.java (original) +++ felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/model/Config.java Wed Jun 29 11:48:21 2016 @@ -18,9 +18,11 @@ */ package org.apache.felix.configurator.impl.model; +import java.io.File; import java.io.IOException; import java.io.Serializable; import java.util.Dictionary; +import java.util.List; import java.util.Set; import org.apache.felix.configurator.impl.Util; @@ -56,6 +58,8 @@ public class Config implements Serializa /** The configuration state. */ private volatile ConfigState state = ConfigState.INSTALL; + private volatile List files; + public Config(final String pid, final Set environments, final Dictionary properties, @@ -88,6 +92,7 @@ public class Config implements Serializa out.writeInt(ranking); out.writeInt(index); out.writeObject(state.name()); + out.writeObject(files); } /** @@ -95,6 +100,7 @@ public class Config implements Serializa * - read version id * - deserialize fields */ + @SuppressWarnings("unchecked") private void readObject(final java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { final int version = in.readInt(); @@ -109,6 +115,7 @@ public class Config implements Serializa Util.setField(this, "ranking", in.readInt()); this.index = in.readInt(); this.state = ConfigState.valueOf((String)in.readObject()); + this.files = (List) in.readObject(); } /** @@ -192,6 +199,14 @@ public class Config implements Serializa return this.environments; } + public void setFiles(final List f) { + this.files = f; + } + + public List getFiles() { + return this.files; + } + /** * A configuration is active if * - it has no environments specified Modified: felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/yaml/YAMLUtil.java URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/yaml/YAMLUtil.java?rev=1750620&r1=1750619&r2=1750620&view=diff ============================================================================== --- felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/yaml/YAMLUtil.java (original) +++ felix/sandbox/cziegeler/configurator/src/main/java/org/apache/felix/configurator/impl/yaml/YAMLUtil.java Wed Jun 29 11:48:21 2016 @@ -207,6 +207,7 @@ public class YAMLUtil { if ( valid ) { final Config c = new Config(pid, environments, properties, bundleId, ranking, policy); + c.setFiles(converter.flushFiles()); configurations.add(c); } }