/* * Copyright (c) 2010-2012 Grid Dynamics Consulting Services, Inc, All Rights Reserved * http://www.griddynamics.com * * This library is free software; you can redistribute it and/or modify it under the terms of * the Apache License; either * version 2.0 of the License, or any later version. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.griddynamics.jagger.coordinator.zookeeper; import com.griddynamics.jagger.util.SerializationUtils; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.ZooDefs; import org.apache.zookeeper.data.ACL; import java.util.Arrays; import java.util.List; /** * Parameters used when znode is creating. */ public class ZNodeParameters { private String path; private byte[] data = null; private List<ACL> acl = ZooDefs.Ids.OPEN_ACL_UNSAFE; private CreateMode createMode = CreateMode.PERSISTENT; public ZNodeParameters withPath(String path) { this.path = path; return this; } public ZNodeParameters ephemeralSequential() { this.path = ""; this.createMode = CreateMode.EPHEMERAL_SEQUENTIAL; return this; } public ZNodeParameters persistentSequential() { this.path = ""; this.createMode = CreateMode.PERSISTENT_SEQUENTIAL; return this; } public String getPath() { return path; } public byte[] getData() { return data; } public List<ACL> getAcl() { return acl; } public CreateMode getCreateMode() { return createMode; } public <C> ZNodeParameters withDataObject(C object) { this.data = SerializationUtils.serialize(object); return this; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ZNodeParameters that = (ZNodeParameters) o; if (acl != null ? !acl.equals(that.acl) : that.acl != null) return false; if (createMode != that.createMode) return false; if (!Arrays.equals(data, that.data)) return false; if (path != null ? !path.equals(that.path) : that.path != null) return false; return true; } @Override public int hashCode() { int result = path != null ? path.hashCode() : 0; result = 31 * result + (data != null ? Arrays.hashCode(data) : 0); result = 31 * result + (acl != null ? acl.hashCode() : 0); result = 31 * result + (createMode != null ? createMode.hashCode() : 0); return result; } }