Author: rhauch
Date: 2008-08-19 11:04:03 -0400 (Tue, 19 Aug 2008)
New Revision: 446
Modified:
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/merge/FederatedNode.java
trunk/extensions/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/merge/FederatedNodeTest.java
Log:
DNA-188 - Complete the federating command executor
http://jira.jboss.com/jira/browse/DNA-188
Added more unit tests for the FederatedNode class.
Modified:
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/merge/FederatedNode.java
===================================================================
---
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/merge/FederatedNode.java 2008-08-19
14:46:40 UTC (rev 445)
+++
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/merge/FederatedNode.java 2008-08-19
15:04:03 UTC (rev 446)
@@ -34,11 +34,13 @@
*/
public class FederatedNode extends BasicGetNodeCommand implements CreateNodeCommand {
+ protected static final NodeConflictBehavior DEFAULT_CONFLICT_BEHAVIOR =
NodeConflictBehavior.UPDATE;
+
private static final long serialVersionUID = 1L;
private final UUID uuid;
private MergePlan mergePlan;
- private NodeConflictBehavior nodeConflictBehavior = NodeConflictBehavior.UPDATE;
+ private NodeConflictBehavior nodeConflictBehavior = DEFAULT_CONFLICT_BEHAVIOR;
/**
* Create a federated node given the path and UUID.
@@ -136,10 +138,12 @@
}
/**
- * @param nodeConflictBehavior Sets nodeConflictBehavior to the specified value.
+ * Set the behavior when node conflicts arise.
+ *
+ * @param nodeConflictBehavior the conflict behavior, or null if the default should
be used
*/
- public void setNodeConflictBehavior( NodeConflictBehavior nodeConflictBehavior ) {
- this.nodeConflictBehavior = nodeConflictBehavior;
+ public void setConflictBehavior( NodeConflictBehavior nodeConflictBehavior ) {
+ this.nodeConflictBehavior = nodeConflictBehavior != null ? nodeConflictBehavior :
DEFAULT_CONFLICT_BEHAVIOR;
}
}
Modified:
trunk/extensions/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/merge/FederatedNodeTest.java
===================================================================
---
trunk/extensions/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/merge/FederatedNodeTest.java 2008-08-19
14:46:40 UTC (rev 445)
+++
trunk/extensions/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/merge/FederatedNodeTest.java 2008-08-19
15:04:03 UTC (rev 446)
@@ -21,21 +21,101 @@
*/
package org.jboss.dna.connector.federation.merge;
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsNot.not;
+import static org.hamcrest.core.IsNull.nullValue;
+import static org.hamcrest.core.IsSame.sameInstance;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.stub;
+import java.util.UUID;
+import org.jboss.dna.spi.graph.Path;
+import org.jboss.dna.spi.graph.commands.NodeConflictBehavior;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoAnnotations.Mock;
/**
* @author Randall Hauch
*/
public class FederatedNodeTest {
+ private FederatedNode node;
+ private UUID uuid;
+ @Mock
+ private Path path;
+
@Before
public void beforeEach() {
+ MockitoAnnotations.initMocks(this);
+ uuid = UUID.randomUUID();
+ node = new FederatedNode(path, uuid);
}
@Test
- public void shouldDoSomething() {
+ public void shouldHaveSameUuidSuppliedToConstructor() {
+ assertThat(node.getUuid(), is(sameInstance(uuid)));
+ }
+ @Test
+ public void shouldHaveSamePathSuppliedToConstructor() {
+ assertThat(node.getPath(), is(sameInstance(path)));
}
+ @Test
+ public void shouldNotHaveMergePlanUponConstruction() {
+ assertThat(node.getMergePlan(), is(nullValue()));
+ }
+
+ @Test
+ public void shouldAllowSettingMergePlan() {
+ MergePlan mergePlan = mock(MergePlan.class);
+ node.setMergePlan(mergePlan);
+ assertThat(node.getMergePlan(), is(sameInstance(mergePlan)));
+ }
+
+ @Test
+ public void shouldHaveDefaultConflictBehaviorUponConstruction() {
+ assertThat(node.getConflictBehavior(),
is(FederatedNode.DEFAULT_CONFLICT_BEHAVIOR));
+ }
+
+ @Test
+ public void shouldAllowSettingConflictBehavior() {
+ NodeConflictBehavior behavior = NodeConflictBehavior.REPLACE;
+ assertThat(node.getConflictBehavior(), is(not(behavior)));
+ node.setConflictBehavior(behavior);
+ assertThat(node.getConflictBehavior(), is(behavior));
+ }
+
+ @Test
+ public void shouldAllowSettingConflictBehaviorToNull() {
+ node.setConflictBehavior(null);
+ assertThat(node.getConflictBehavior(),
is(FederatedNode.DEFAULT_CONFLICT_BEHAVIOR));
+
+ // Set to something that is not the default, then set to null
+ NodeConflictBehavior behavior = NodeConflictBehavior.REPLACE;
+ assertThat(node.getConflictBehavior(), is(not(behavior)));
+ node.setConflictBehavior(behavior);
+ assertThat(node.getConflictBehavior(), is(behavior));
+ node.setConflictBehavior(null);
+ assertThat(node.getConflictBehavior(),
is(FederatedNode.DEFAULT_CONFLICT_BEHAVIOR));
+ }
+
+ @Test
+ public void shouldCompareFederatedNodesBasedUponPaths() {
+ Path path2 = mock(Path.class);
+ stub(path2.compareTo(path)).toReturn(1);
+ stub(path.compareTo(path2)).toReturn(-1);
+ FederatedNode node2 = new FederatedNode(path2, UUID.randomUUID());
+ assertThat(node.compareTo(node2), is(-1));
+ assertThat(node2.compareTo(node), is(1));
+ }
+
+ @Test
+ public void shouldHaveHashCodeThatIsTheHashCodeOfTheUuid() {
+ node = new FederatedNode(path, uuid);
+ assertThat(node.hashCode(), is(uuid.hashCode()));
+ }
+
}