Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.apache.helix;
  
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 import java.util.List;
 import java.util.Map;
 
Generic Record Format to store data at a Node This can be used to store simpleFields mapFields listFields
 
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class ZNRecord {
   static Logger _logger = Logger.getLogger(ZNRecord.class);
   private final String id;
 
   @JsonIgnore(true)
   public static final String LIST_FIELD_BOUND = "listField.bound";
 
   @JsonIgnore(true)
   public static final int SIZE_LIMIT = 1000 * 1024; // leave a margin out of 1M
 
   // We don't want the _deltaList to be serialized and deserialized
   private List<ZNRecordDelta_deltaList = new ArrayList<ZNRecordDelta>();
 
   private Map<StringStringsimpleFields;
   private Map<StringMap<StringString>> mapFields;
   private Map<StringList<String>> listFields;
   private byte[] rawPayload;
 
 
   // the version field of zookeeper Stat
   private int _version;
 
   private long _creationTime;
 
   private long _modifiedTime;

  
Initialize with an identifier

Parameters:
id
 
   public ZNRecord(@JsonProperty("id"String id) {
     this. = id;
      = new TreeMap<StringString>();
      = new TreeMap<StringMap<StringString>>();
      = new TreeMap<StringList<String>>();
      = null;
   }

  
Initialize with a pre-populated ZNRecord

Parameters:
record
 
   public ZNRecord(ZNRecord record) {
     this(recordrecord.getId());
   }

  
Initialize with a pre-populated ZNRecord, overwriting the identifier

Parameters:
record
id
 
   public ZNRecord(ZNRecord recordString id) {
     this(id);
    .putAll(record.getMapFields());
    if (record.rawPayload != null) {
       = new byte[record.rawPayload.length];
      System.arraycopy(record.rawPayload, 0, , 0, record.rawPayload.length);
    } else {
       = null;
    }
     = record.getVersion();
     = record.getCreationTime();
     = record.getModifiedTime();
  }

  
Set a custom org.apache.helix.manager.zk.serializer.PayloadSerializer to allow including arbitrary data

Parameters:
serializer
  @JsonIgnore(true)
  public void setPayloadSerializer(PayloadSerializer serializer) {
     = serializer;
  }

  
Get the org.apache.helix.manager.zk.serializer.PayloadSerializer that will serialize/deserialize the payload

Returns:
serializer
  @JsonIgnore(true)
    return ;
  }

  
Set the list of updates to this ZNRecord

Parameters:
deltaList
  @JsonIgnore(true)
  public void setDeltaList(List<ZNRecordDeltadeltaList) {
     = deltaList;
  }

  
Get the list of updates to this ZNRecord

Returns:
list of ZNRecordDelta
  @JsonIgnore(true)
    return ;
  }

  
Get all plain key, value fields

Returns:
Map of simple fields
  public Map<StringStringgetSimpleFields() {
    return ;
  }

  
Set all plain key, value fields

Parameters:
simpleFields
  public void setSimpleFields(Map<StringStringsimpleFields) {
    this. = simpleFields;
  }

  
Get all fields whose values are key, value properties

Returns:
all map fields
  public Map<StringMap<StringString>> getMapFields() {
    return ;
  }

  
Set all fields whose values are key, value properties

Parameters:
mapFields
  public void setMapFields(Map<StringMap<StringString>> mapFields) {
    this. = mapFields;
  }

  
Get all fields whose values are a list of values

Returns:
all list fields
  public Map<StringList<String>> getListFields() {
    return ;
  }

  
Set all fields whose values are a list of values

Parameters:
listFields
  public void setListFields(Map<StringList<String>> listFields) {
    this. = listFields;
  }

  
Set a simple key, value field

Parameters:
k
v
  public void setSimpleField(String kString v) {
    .put(kv);
  }
  public String getId() {
    return ;
  }

  
Set arbitrary data serialized as a byte array payload. Consider using setPayload(java.lang.Object) instead

Parameters:
payload
  public void setRawPayload(byte[] payload) {
     = payload;
  }

  
Get arbitrary data serialized as a byte array payload. Consider using getPayload(java.lang.Class) instead

Returns:
  public byte[] getRawPayload() {
    return ;
  }

  
Set a typed payload that will be serialized and persisted.

Parameters:
payload
  @JsonIgnore(true)
  public <T> void setPayload(T payload) {
    if ( != null && payload != null) {
       = .serialize(payload);
    } else {
       = null;
    }
  }

  
Get a typed deserialized payload

Parameters:
clazz
Returns:
  @JsonIgnore(true)
  public <T> T getPayload(Class<T> clazz) {
    if ( != null &&  != null) {
      return .deserialize(clazz);
    } else {
      return null;
    }
  }

  
Set a single String --> Map field

Parameters:
k
v
  public void setMapField(String kMap<StringStringv) {
    .put(kv);
  }

  
Set a single String --> List field

Parameters:
k
v
  public void setListField(String kList<Stringv) {
    .put(kv);
  }

  
Get a single String field

Parameters:
k
Returns:
String field
  public String getSimpleField(String k) {
    return .get(k);
  }

  
Get a single Map field

Parameters:
k
Returns:
String --> String map
  public Map<StringStringgetMapField(String k) {
    return .get(k);
  }

  
Get a single List field

Parameters:
k
Returns:
String list
  public List<StringgetListField(String k) {
    return .get(k);
  }

  
Set a single simple int field

Parameters:
k
v
  public void setIntField(String kint v) {
    setSimpleField(k, Integer.toString(v));
  }

  
Get a single int field

Parameters:
k
defaultValue
Returns:
the int value, or defaultValue if not present
  public int getIntField(String kint defaultValue) {
    int v = defaultValue;
    String valueStr = getSimpleField(k);
    if (valueStr != null) {
      try {
        v = Integer.parseInt(valueStr);
      } catch (NumberFormatException e) {
        .warn(""e);
      }
    }
    return v;
  }

  
Set a single simple long field

Parameters:
k
v
  public void setLongField(String klong v) {
    setSimpleField(k, Long.toString(v));
  }

  
Get a single long field

Parameters:
k
defaultValue
Returns:
the long value, or defaultValue if not present
  public long getLongField(String klong defaultValue) {
    long v = defaultValue;
    String valueStr = getSimpleField(k);
    if (valueStr != null) {
      try {
        v = Long.parseLong(valueStr);
      } catch (NumberFormatException e) {
        .warn(""e);
      }
    }
    return v;
  }

  
Set a single simple double field

Parameters:
k
v
  public void setDoubleField(String kdouble v) {
    setSimpleField(k, Double.toString(v));
  }

  
Get a single double field

Parameters:
k
defaultValue
Returns:
the double value, or defaultValue if not present
  public double getDoubleField(String kdouble defaultValue) {
    double v = defaultValue;
    String valueStr = getSimpleField(k);
    if (valueStr != null) {
      try {
        v = Double.parseDouble(valueStr);
      } catch (NumberFormatException e) {
        .warn(""e);
      }
    }
    return v;
  }

  
Set a single simple boolean field

Parameters:
k
v
  public void setBooleanField(String kboolean v) {
    setSimpleField(k, Boolean.toString(v));
  }

  
Get a single boolean field

Parameters:
k
defaultValue
Returns:
the boolean field, or defaultValue if not present
  public boolean getBooleanField(String kboolean defaultValue) {
    boolean v = defaultValue;
    String valueStr = getSimpleField(k);
    if (valueStr != null) {
      // Boolean.parseBoolean() doesn't throw an exception if the string isn't a valid boolean.
      // Thus, a direct comparison is necessary to make sure the value is actually "true" or
      // "false"
      if (valueStr.equalsIgnoreCase(..toString())) {
        v = true;
      } else if (valueStr.equalsIgnoreCase(..toString())) {
        v = false;
      }
    }
    return v;
  }

  
Set a single simple Enum field

Parameters:
k
v
  public <T extends Enum<T>> void setEnumField(String k, T v) {
    setSimpleField(kv.toString());
  }

  
Get a single Enum field

Parameters:
k
enumType
defaultValue
Returns:
the Enum field of enumType, or defaultValue if not present
  public <T extends Enum<T>> T getEnumField(String kClass<T> enumType, T defaultValue) {
    T v = defaultValue;
    String valueStr = getSimpleField(k);
    if (valueStr != null) {
      try {
        v = Enum.valueOf(enumTypevalueStr);
      } catch (NullPointerException e) {
        .warn(""e);
      } catch (IllegalArgumentException e) {
        .warn(""e);
      }
    }
    return v;
  }

  
Get a single String field

Parameters:
k
defaultValue
Returns:
the String value, or defaultValue if not present
  public String getStringField(String kString defaultValue) {
    String v = defaultValue;
    String valueStr = getSimpleField(k);
    if (valueStr != null) {
      v = valueStr;
    }
    return v;
  }
  public String toString() {
    StringBuffer sb = new StringBuffer();
    sb.append( + ", ");
    if ( != null) {
      sb.append();
    }
    if ( != null) {
      sb.append();
    }
    if ( != null) {
      sb.append();
    }
    return sb.toString();
  }

  
merge functionality is used to merge multiple znrecord into a single one. This will make use of the id of each ZNRecord and append it to every key thus making key unique. This is needed to optimize on the watches.

Parameters:
record
  public void merge(ZNRecord record) {
    if (record == null) {
      return;
    }
    if (record.getDeltaList().size() > 0) {
      .info("Merging with delta list, recordId = " +  + " other:" + record.getId());
      merge(record.getDeltaList());
      return;
    }
    .putAll(record.simpleFields);
    for (String key : record.mapFields.keySet()) {
      Map<StringStringmap = .get(key);
      if (map != null) {
        map.putAll(record.mapFields.get(key));
      } else {
        .put(keyrecord.mapFields.get(key));
      }
    }
    for (String key : record.listFields.keySet()) {
      List<Stringlist = .get(key);
      if (list != null) {
        list.addAll(record.listFields.get(key));
      } else {
        .put(keyrecord.listFields.get(key));
      }
    }
  }

  
Merge in a ZNRecordDelta corresponding to its merge policy

Parameters:
delta
  void merge(ZNRecordDelta delta) {
    if (delta.getMergeOperation() == .) {
      merge(delta.getRecord());
    } else if (delta.getMergeOperation() == .) {
      subtract(delta.getRecord());
    }
  }

  
Batch merge of ZNRecordDelta

Parameters:
deltaList
See also:
merge(org.apache.helix.ZNRecordDelta)
  void merge(List<ZNRecordDeltadeltaList) {
    for (ZNRecordDelta delta : deltaList) {
      merge(delta);
    }
  }
  public boolean equals(Object obj) {
    if (!(obj instanceof ZNRecord)) {
      return false;
    }
    ZNRecord that = (ZNRecordobj;
    if (this.getSimpleFields().size() != that.getSimpleFields().size()) {
      return false;
    }
    if (this.getMapFields().size() != that.getMapFields().size()) {
      return false;
    }
    if (this.getListFields().size() != that.getListFields().size()) {
      return false;
    }
    if (!this.getSimpleFields().equals(that.getSimpleFields())) {
      return false;
    }
    if (!this.getMapFields().equals(that.getMapFields())) {
      return false;
    }
    if (!this.getListFields().equals(that.getListFields())) {
      return false;
    }
    return true;
  }

  
Subtract value from this ZNRecord Note: does not support subtract in each list in list fields or map in mapFields

Parameters:
value
  public void subtract(ZNRecord value) {
    for (String key : value.getSimpleFields().keySet()) {
      if (.containsKey(key)) {
        .remove(key);
      }
    }
    for (String key : value.getListFields().keySet()) {
      if (.containsKey(key)) {
        .remove(key);
      }
    }
    for (String key : value.getMapFields().keySet()) {
      if (.containsKey(key)) {
        .remove(key);
      }
    }
  }

  
Get the version of this record

Returns:
version number
  @JsonIgnore(true)
  public int getVersion() {
    return ;
  }

  
Set the version of this record

Parameters:
version
  @JsonIgnore(true)
  public void setVersion(int version) {
     = version;
  }

  
Get the time that this record was created

Returns:
UNIX timestamp
  @JsonIgnore(true)
  public long getCreationTime() {
    return ;
  }

  
Set the time that this record was created

Parameters:
creationTime
  @JsonIgnore(true)
  public void setCreationTime(long creationTime) {
     = creationTime;
  }

  
Get the time that this record was last modified

Returns:
UNIX timestamp
  @JsonIgnore(true)
  public long getModifiedTime() {
    return ;
  }

  
Set the time that this record was last modified

Parameters:
modifiedTime
  @JsonIgnore(true)
  public void setModifiedTime(long modifiedTime) {
     = modifiedTime;
  }
New to GrepCode? Check out our FAQ X