/*
* Copyright 2012 NGDATA nv
*
* Licensed 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.
*/
package org.lilyproject.repository.impl;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.node.ArrayNode;
import org.codehaus.jackson.node.JsonNodeFactory;
import org.codehaus.jackson.node.ObjectNode;
import org.lilyproject.util.ArgumentValidator;
import org.lilyproject.util.json.JsonFormat;
import org.lilyproject.util.json.JsonUtil;
public class BlobStoreAccessConfig {
private String defaultAccess = null;
private Map<String, Long> limits = new HashMap<String, Long>();
public BlobStoreAccessConfig(byte[] encodedConfig) {
JsonNode node = JsonFormat.deserializeSoft(encodedConfig, "BlobStoreAccessConfig");
defaultAccess = JsonUtil.getString(node, "default");
ArrayNode limitsNode = JsonUtil.getArray(node, "limits");
for (int i = 0; i < limitsNode.size(); i++) {
JsonNode limitNode = limitsNode.get(i);
String store = JsonUtil.getString(limitNode, "store");
long limit = JsonUtil.getLong(limitNode, "limit");
limits.put(store, limit);
}
}
public byte[] toBytes() {
ObjectNode node = JsonNodeFactory.instance.objectNode();
node.put("default", defaultAccess);
ArrayNode limitsNode = node.putArray("limits");
for (Entry<String, Long> limit : limits.entrySet()) {
ObjectNode limitNode = limitsNode.addObject();
limitNode.put("store", limit.getKey());
limitNode.put("limit", limit.getValue());
}
return JsonFormat.serializeAsBytesSoft(node, "BlobStoreAccessConfig");
}
public BlobStoreAccessConfig(String defaultAccess) {
ArgumentValidator.notNull(defaultAccess, "defaultAccess");
this.defaultAccess = defaultAccess;
}
public void setDefault(String defaultAccess) {
ArgumentValidator.notNull(defaultAccess, "defaultAccess");
this.defaultAccess = defaultAccess;
}
public String getDefault() {
return this.defaultAccess;
}
public void setLimit(String access, long limit) {
limits.put(access, limit);
}
public Map<String, Long> getLimits() {
return limits;
}
}