001 /* 002 * JBoss, Home of Professional Open Source. 003 * Copyright 2008, Red Hat Middleware LLC, and individual contributors 004 * as indicated by the @author tags. See the copyright.txt file in the 005 * distribution for a full listing of individual contributors. 006 * 007 * This is free software; you can redistribute it and/or modify it 008 * under the terms of the GNU Lesser General Public License as 009 * published by the Free Software Foundation; either version 2.1 of 010 * the License, or (at your option) any later version. 011 * 012 * This software is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * You should have received a copy of the GNU Lesser General Public 018 * License along with this software; if not, write to the Free 019 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 020 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 021 */ 022 package org.jboss.dna.connector.federation.merge; 023 024 import java.util.UUID; 025 import org.jboss.dna.graph.Location; 026 import org.jboss.dna.graph.requests.ReadNodeRequest; 027 028 /** 029 * An in-memory (and temporary) representation of a federated node and it's merged properties and children. 030 * 031 * @author Randall Hauch 032 */ 033 public class FederatedNode extends ReadNodeRequest { 034 035 private static final long serialVersionUID = 1L; 036 037 private UUID uuid; 038 private MergePlan mergePlan; 039 040 /** 041 * Create a federated node given the path and UUID. 042 * 043 * @param location the location of the federated node; may not be null 044 * @param uuid the UUID of the federated node; may not be null 045 */ 046 public FederatedNode( Location location, 047 UUID uuid ) { 048 super(location); 049 assert uuid != null; 050 this.uuid = uuid; 051 super.setActualLocationOfNode(location); 052 } 053 054 /** 055 * Get the UUID for this federated node. 056 * 057 * @return the UUID; never null 058 */ 059 public UUID getUuid() { 060 return uuid; 061 } 062 063 /** 064 * @param uuid Sets uuid to the specified value. 065 */ 066 public void setUuid( UUID uuid ) { 067 this.uuid = uuid; 068 } 069 070 /** 071 * Get the merge plan for this federated node 072 * 073 * @return the merge plan, or null if there is no merge plan 074 */ 075 public MergePlan getMergePlan() { 076 return mergePlan; 077 } 078 079 /** 080 * Set the merge plan for this federated node 081 * 082 * @param mergePlan the new merge plan for this federated node; may be null 083 */ 084 public void setMergePlan( MergePlan mergePlan ) { 085 this.mergePlan = mergePlan; 086 } 087 088 /** 089 * {@inheritDoc} 090 * 091 * @see java.lang.Object#hashCode() 092 */ 093 @Override 094 public int hashCode() { 095 return this.at().hashCode(); 096 } 097 098 /** 099 * {@inheritDoc} 100 * 101 * @see java.lang.Object#equals(java.lang.Object) 102 */ 103 @Override 104 public boolean equals( Object obj ) { 105 if (obj == this) return true; 106 if (obj instanceof FederatedNode) { 107 FederatedNode that = (FederatedNode)obj; 108 if (this.at().equals(that.at())) return true; 109 if (this.getUuid().equals(that.getUuid())) return true; 110 } 111 return false; 112 } 113 114 /** 115 * {@inheritDoc} 116 * 117 * @see java.lang.Object#toString() 118 */ 119 @Override 120 public String toString() { 121 return at().toString(); 122 } 123 }