You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ja...@apache.org on 2014/03/06 16:36:45 UTC
svn commit: r1574924 - in /ace/trunk:
org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/
org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/
Author: jawi
Date: Thu Mar 6 15:36:45 2014
New Revision: 1574924
URL: http://svn.apache.org/r1574924
Log:
ACE-409 - specify a refresh cause:
- when a refresh event is sent by the RepositoryAdmin, add a cause property to
the event to be able to make distinction in refresh events.
Modified:
ace/trunk/org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/BaseRepositoryAdminTest.java
ace/trunk/org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/RepositoryAdminTest.java
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/ObjectRepositoryImpl.java
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositoryAdminImpl.java
Modified: ace/trunk/org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/BaseRepositoryAdminTest.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/BaseRepositoryAdminTest.java?rev=1574924&r1=1574923&r2=1574924&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/BaseRepositoryAdminTest.java (original)
+++ ace/trunk/org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/BaseRepositoryAdminTest.java Thu Mar 6 15:36:45 2014
@@ -26,6 +26,7 @@ import java.util.Arrays;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Hashtable;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.Callable;
@@ -344,6 +345,10 @@ public abstract class BaseRepositoryAdmi
}
protected <T> T runAndWaitForEvent(Callable<T> callable, final boolean debug, final String... topicList) throws Exception {
+ return runAndWaitForEvent(callable, debug, null, topicList);
+ }
+
+ protected <T> T runAndWaitForEvent(Callable<T> callable, final boolean debug, final List<Event> events, final String... topicList) throws Exception {
Dictionary<String, Object> topics = new Hashtable<String, Object>();
topics.put(EventConstants.EVENT_TOPIC, topicList);
@@ -360,6 +365,9 @@ public abstract class BaseRepositoryAdmi
System.err.println("Received event: " + event.getTopic());
}
if (waitingForTopic.remove(event.getTopic())) {
+ if (events != null) {
+ events.add(event);
+ }
if (debug) {
System.err.println("Event was expected.");
}
Modified: ace/trunk/org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/RepositoryAdminTest.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/RepositoryAdminTest.java?rev=1574924&r1=1574923&r2=1574924&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/RepositoryAdminTest.java (original)
+++ ace/trunk/org.apache.ace.client.repository.itest/src/org/apache/ace/it/repositoryadmin/RepositoryAdminTest.java Thu Mar 6 15:36:45 2014
@@ -26,7 +26,9 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.jar.Attributes;
@@ -48,6 +50,7 @@ import org.apache.ace.client.repository.
import org.apache.ace.client.repository.stateful.StatefulTargetObject;
import org.osgi.framework.Constants;
import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.service.event.Event;
import org.osgi.service.useradmin.User;
public class RepositoryAdminTest extends BaseRepositoryAdminTest {
@@ -189,14 +192,16 @@ public class RepositoryAdminTest extends
sgo.approve();
+ List<Event> events = new ArrayList<Event>();
runAndWaitForEvent(new Callable<Void>() {
public Void call() throws Exception {
m_repositoryAdmin.commit();
return null;
}
- }, false, DeploymentVersionObject.TOPIC_ADDED, TOPIC_STATUS_CHANGED);
+ }, false, events, DeploymentVersionObject.TOPIC_ADDED, TOPIC_STATUS_CHANGED, RepositoryAdmin.TOPIC_REFRESH);
assertFalse("We approved the new version by hand, so we should not need approval.", sgo.needsApprove());
+ assertContainsRefreshCause(events, "commit");
runAndWaitForEvent(new Callable<Object>() {
public Object call() throws Exception {
@@ -481,15 +486,17 @@ public class RepositoryAdminTest extends
// expected
}
+ List<Event> events = new ArrayList<Event>();
runAndWaitForEvent(new Callable<Object>() {
public Object call() throws Exception {
m_repositoryAdmin.checkout();
return null;
}
- }, false, RepositoryAdmin.TOPIC_REFRESH);
+ }, false, events, RepositoryAdmin.TOPIC_REFRESH);
assertTrue("After initial checkout, the repository is current.", m_repositoryAdmin.isCurrent());
assertFalse("Immediately after login, the repository cannot be modified.", m_repositoryAdmin.isModified());
+ assertContainsRefreshCause(events, "checkout");
ArtifactObject b1 = runAndWaitForEvent(new Callable<ArtifactObject>() {
public ArtifactObject call() throws Exception {
@@ -619,13 +626,26 @@ public class RepositoryAdminTest extends
assertEquals("We expect 2 items in the bundle repository;", 2, m_artifactRepository.get().size());
+ events.clear();
runAndWaitForEvent(new Callable<Object>() {
public Object call() throws Exception {
m_repositoryAdmin.revert();
return null;
}
- }, false, RepositoryAdmin.TOPIC_REFRESH, RepositoryAdmin.TOPIC_STATUSCHANGED);
+ }, false, events, RepositoryAdmin.TOPIC_STATUSCHANGED, RepositoryAdmin.TOPIC_REFRESH);
assertEquals("We expect 1 item in the bundle repository;", 1, m_artifactRepository.get().size());
+ assertContainsRefreshCause(events, "revert");
+ }
+
+ private void assertContainsRefreshCause(List<Event> events, String cause) {
+ boolean found = false;
+ for (Event event : events) {
+ if (RepositoryAdmin.TOPIC_REFRESH.equals(event.getTopic())) {
+ assertEquals("Refresh property does not have the correct cause property?!", event.getProperty("cause"), cause);
+ found = true;
+ }
+ }
+ assertTrue("Events did not contain expected refresh event!", found);
}
}
Modified: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/ObjectRepositoryImpl.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/ObjectRepositoryImpl.java?rev=1574924&r1=1574923&r2=1574924&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/ObjectRepositoryImpl.java (original)
+++ ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/ObjectRepositoryImpl.java Thu Mar 6 15:36:45 2014
@@ -20,7 +20,6 @@ package org.apache.ace.client.repository
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
Modified: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositoryAdminImpl.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositoryAdminImpl.java?rev=1574924&r1=1574923&r2=1574924&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositoryAdminImpl.java (original)
+++ ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositoryAdminImpl.java Thu Mar 6 15:36:45 2014
@@ -84,6 +84,11 @@ public class RepositoryAdminImpl impleme
private final static String PREFS_LOCAL_FILE_LOCATION = "FileLocation";
private final static String PREFS_LOCAL_FILE_CURRENT = "current";
private final static String PREFS_LOCAL_FILE_BACKUP = "backup";
+
+ private static final String KEY_CAUSE = "cause";
+ private static final String CAUSE_COMMIT = "commit";
+ private static final String CAUSE_REVERT = "revert";
+ private static final String CAUSE_CHECKOUT = "checkout";
/**
* Maps from interface classes of the ObjectRepositories to their implementations.
@@ -282,7 +287,10 @@ public class RepositoryAdminImpl impleme
for (RepositorySet set : m_repositorySets) {
set.checkout();
}
- m_changeNotifier.notifyChanged(TOPIC_REFRESH_SUFFIX, null);
+
+ Properties props = new Properties();
+ props.put(KEY_CAUSE, CAUSE_CHECKOUT);
+ m_changeNotifier.notifyChanged(TOPIC_REFRESH_SUFFIX, props);
}
}
@@ -295,7 +303,10 @@ public class RepositoryAdminImpl impleme
for (RepositorySet set : m_repositorySets) {
set.commit();
}
- m_changeNotifier.notifyChanged(TOPIC_REFRESH_SUFFIX, null);
+
+ Properties props = new Properties();
+ props.put(KEY_CAUSE, CAUSE_COMMIT);
+ m_changeNotifier.notifyChanged(TOPIC_REFRESH_SUFFIX, props);
}
}
@@ -320,7 +331,10 @@ public class RepositoryAdminImpl impleme
for (RepositorySet set : m_repositorySets) {
set.revert();
}
- m_changeNotifier.notifyChanged(TOPIC_REFRESH_SUFFIX, null);
+
+ Properties props = new Properties();
+ props.put(KEY_CAUSE, CAUSE_REVERT);
+ m_changeNotifier.notifyChanged(TOPIC_REFRESH_SUFFIX, props);
}
}