You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by tj...@apache.org on 2019/07/08 16:36:54 UTC
svn commit: r1862759 - in
/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl: Activator.java
metadata/MetadataStoreHelper.java
Author: tjwatson
Date: Mon Jul 8 16:36:54 2019
New Revision: 1862759
URL: http://svn.apache.org/viewvc?rev=1862759&view=rev
Log:
FELIX-6155 - Add version to metadata store file
If the stored version is not the current version
of the implementation then the cached metadata is
ignored.
Modified:
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/Activator.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/metadata/MetadataStoreHelper.java
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/Activator.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/Activator.java?rev=1862759&r1=1862758&r2=1862759&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/Activator.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/Activator.java Mon Jul 8 16:36:54 2019
@@ -241,6 +241,11 @@ public class Activator extends AbstractE
new BufferedInputStream(new FileInputStream(store))))
{
MetaDataReader metaDataReader = new MetaDataReader();
+ if (!metaDataReader.isVersionSupported(in))
+ {
+ // the stored version is not compatible
+ return result;
+ }
int numStrings = in.readInt();
for (int i = 0; i < numStrings; i++)
{
@@ -302,6 +307,7 @@ public class Activator extends AbstractE
new BufferedOutputStream(new FileOutputStream(store))))
{
MetaDataWriter metaDataWriter = new MetaDataWriter();
+ metaDataWriter.writeVersion(out);
Set<String> allStrings = new HashSet<>();
for (List<ComponentMetadata> components : componentsMap.values())
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/metadata/MetadataStoreHelper.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/metadata/MetadataStoreHelper.java?rev=1862759&r1=1862758&r2=1862759&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/metadata/MetadataStoreHelper.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/metadata/MetadataStoreHelper.java Mon Jul 8 16:36:54 2019
@@ -29,6 +29,10 @@ import java.util.Set;
public class MetadataStoreHelper
{
+ // The version of the component metadata store. If the
+ // stored metadata is not this version then the cache is ignored
+ static final int STORE_VERSION = 1;
+
static final byte STRING_NULL = 0;
static final byte STRING_OBJECT = 1;
static final byte STRING_INDEX = 2;
@@ -38,6 +42,11 @@ public class MetadataStoreHelper
{
private final List<String> stringTable = new ArrayList<String>();
+ public boolean isVersionSupported(DataInputStream in) throws IOException
+ {
+ return STORE_VERSION == in.readInt();
+ }
+
public String readIndexedString(DataInputStream in) throws IOException
{
String s = readString(in);
@@ -97,6 +106,11 @@ public class MetadataStoreHelper
{
private final Map<String, Integer> stringTable = new HashMap<>();
+ public void writeVersion(DataOutputStream out) throws IOException
+ {
+ out.writeInt(STORE_VERSION);
+ }
+
public void writeIndexedString(String s, DataOutputStream out) throws IOException
{
writeString(s, out);