Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
FedoraEvent now mints internal UUID for downstream use (FCREPO-1507)
  • Loading branch information
escowles committed Jun 4, 2015
1 parent b26bf30 commit 966a470
Show file tree
Hide file tree
Showing 15 changed files with 55 additions and 16 deletions.
1 change: 0 additions & 1 deletion fcrepo-http-api/pom.xml
Expand Up @@ -46,7 +46,6 @@
<groupId>org.fcrepo</groupId>
<artifactId>fcrepo-mint</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>

<dependency>
Expand Down
Expand Up @@ -50,7 +50,7 @@

import org.fcrepo.http.commons.api.rdf.HttpResourceConverter;
import org.fcrepo.kernel.exception.RepositoryRuntimeException;
import org.fcrepo.kernel.identifiers.PidMinter;
import org.fcrepo.mint.PidMinter;
import org.fcrepo.kernel.models.FedoraResource;
import org.fcrepo.kernel.services.NodeService;
import org.fcrepo.kernel.services.ContainerService;
Expand Down
1 change: 0 additions & 1 deletion fcrepo-http-commons/pom.xml
Expand Up @@ -31,7 +31,6 @@
<groupId>org.fcrepo</groupId>
<artifactId>fcrepo-mint</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
Expand Down
Expand Up @@ -25,7 +25,7 @@
import org.fcrepo.http.commons.session.SessionFactory;
import org.fcrepo.kernel.models.FedoraResource;
import org.fcrepo.kernel.identifiers.IdentifierConverter;
import org.fcrepo.kernel.identifiers.PidMinter;
import org.fcrepo.mint.PidMinter;
import org.fcrepo.kernel.services.BinaryService;
import org.fcrepo.kernel.services.NodeService;
import org.fcrepo.kernel.services.ContainerService;
Expand Down
Expand Up @@ -22,7 +22,7 @@
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.UriInfo;

import org.fcrepo.kernel.identifiers.PidMinter;
import org.fcrepo.mint.PidMinter;
import org.fcrepo.kernel.services.NodeService;
import org.junit.Before;
import org.junit.Test;
Expand Down
Expand Up @@ -66,6 +66,7 @@ public class DefaultMessageFactory implements JMSEventMessageFactory {

public static final String USER_HEADER_NAME = JMS_NAMESPACE + "user";
public static final String USER_AGENT_HEADER_NAME = JMS_NAMESPACE + "userAgent";
public static final String EVENT_ID_HEADER_NAME = JMS_NAMESPACE + "eventID";

private String baseURL;
private String userAgent;
Expand Down Expand Up @@ -110,6 +111,7 @@ public Message getMessage(final FedoraEvent jcrEvent,
message.setStringProperty(USER_HEADER_NAME, jcrEvent.getUserID());
message.setStringProperty(USER_AGENT_HEADER_NAME, userAgent);
message.setStringProperty(PROPERTIES_HEADER_NAME, Joiner.on(',').join(jcrEvent.getProperties()));
message.setStringProperty(EVENT_ID_HEADER_NAME, jcrEvent.getEventID());

LOGGER.trace("getMessage() returning: {}", message);
return message;
Expand Down
Expand Up @@ -24,6 +24,7 @@
import static org.fcrepo.jms.headers.DefaultMessageFactory.TIMESTAMP_HEADER_NAME;
import static org.fcrepo.jms.headers.DefaultMessageFactory.USER_AGENT_HEADER_NAME;
import static org.fcrepo.jms.headers.DefaultMessageFactory.USER_HEADER_NAME;
import static org.fcrepo.jms.headers.DefaultMessageFactory.EVENT_ID_HEADER_NAME;
import static org.fcrepo.kernel.RdfLexicon.REPOSITORY_NAMESPACE;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
Expand Down Expand Up @@ -114,6 +115,8 @@ private Message doTestBuildMessage(final String baseUrl, final String userAgent,
when(mockEvent.getTypes()).thenReturn(testTypes);
final String prop = "test-property";
when(mockEvent.getProperties()).thenReturn(singleton(prop));
final String eventID = "abcdefg12345678";
when(mockEvent.getEventID()).thenReturn(eventID);

final Message msg = testDefaultMessageFactory.getMessage(mockEvent, mockSession);

Expand All @@ -128,6 +131,7 @@ private Message doTestBuildMessage(final String baseUrl, final String userAgent,
assertEquals("Got wrong property in message", prop, msg.getStringProperty(PROPERTIES_HEADER_NAME));
assertEquals("Got wrong userID in message", testUser, msg.getStringProperty(USER_HEADER_NAME));
assertEquals("Got wrong userAgent in message", userAgent, msg.getStringProperty(USER_AGENT_HEADER_NAME));
assertEquals("Got wrong eventID in message", eventID, msg.getStringProperty(EVENT_ID_HEADER_NAME));
return msg;
}

Expand Down
Expand Up @@ -50,7 +50,7 @@
import com.hp.hpl.jena.rdf.model.AnonId;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.Statement;
import org.fcrepo.kernel.identifiers.PidMinter;
import org.fcrepo.mint.PidMinter;
import org.fcrepo.kernel.impl.services.AbstractService;
import org.fcrepo.kernel.models.FedoraResource;
import org.fcrepo.kernel.RdfLexicon;
Expand Down
5 changes: 5 additions & 0 deletions fcrepo-kernel/pom.xml
Expand Up @@ -53,6 +53,11 @@
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.fcrepo</groupId>
<artifactId>fcrepo-mint</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
Expand Down
Expand Up @@ -34,6 +34,9 @@
import org.fcrepo.kernel.exception.RepositoryRuntimeException;
import org.fcrepo.kernel.utils.EventType;

import org.fcrepo.mint.PidMinter;
import org.fcrepo.mint.UUIDPathMinter;

import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.collect.Iterables;
Expand All @@ -48,17 +51,21 @@
public class FedoraEvent {

private Event e;
private String eventID;

private Set<Integer> eventTypes = new HashSet<>();
private Set<String> eventProperties = new HashSet<>();

private static final PidMinter pidMinter = new UUIDPathMinter();

/**
* Wrap a JCR Event with our FedoraEvent decorators
*
* @param e the JCR event
*/
public FedoraEvent(final Event e) {
checkArgument(e != null, "null cannot support a FedoraEvent!");
eventID = pidMinter.mintPid();
this.e = e;
}

Expand All @@ -70,6 +77,7 @@ public FedoraEvent(final Event e) {
*/
public FedoraEvent(final FedoraEvent e) {
checkArgument(e != null, "null cannot support a FedoraEvent!");
eventID = e.getEventID();
this.e = e.e;
}

Expand Down Expand Up @@ -184,6 +192,13 @@ public long getDate() {
}
}

/**
* Get the event ID.
**/
public String getEventID() {
return eventID;
}

@Override
public String toString() {
return toStringHelper(this).add("Event types:",
Expand Down
Expand Up @@ -19,6 +19,7 @@
import static java.util.Collections.singleton;
import static javax.jcr.observation.Event.PROPERTY_CHANGED;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;

Expand Down Expand Up @@ -83,6 +84,13 @@ public void testGetUserID() {

}

@Test
public void testGetEventID() {

assertNotNull(e.getEventID());

}

@Test
public void testGetIdentifier() throws Exception {

Expand Down
18 changes: 14 additions & 4 deletions fcrepo-mint/pom.xml
Expand Up @@ -13,13 +13,23 @@
<dependencies>
<dependency>
<groupId>org.fcrepo</groupId>
<artifactId>fcrepo-kernel</artifactId>
<artifactId>fcrepo-metrics</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>org.fcrepo</groupId>
<artifactId>fcrepo-metrics</artifactId>
<version>${project.version}</version>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>

<dependency>
Expand Down
6 changes: 2 additions & 4 deletions fcrepo-mint/src/main/java/org/fcrepo/mint/HttpPidMinter.java
Expand Up @@ -19,7 +19,6 @@
import static org.apache.commons.lang.StringUtils.isBlank;
import static com.google.common.base.Preconditions.checkArgument;

import org.fcrepo.kernel.exception.RepositoryRuntimeException;
import org.slf4j.Logger;

import com.codahale.metrics.annotation.Timed;
Expand Down Expand Up @@ -51,7 +50,6 @@
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.fcrepo.kernel.identifiers.PidMinter;
import org.xml.sax.SAXException;


Expand Down Expand Up @@ -184,10 +182,10 @@ public String mintPid() {
return responseToPid( EntityUtils.toString(resp.getEntity()) );
} catch ( IOException ex ) {
LOGGER.warn("Error minting pid from {}: {}", url, ex);
throw new RepositoryRuntimeException("Error minting pid", ex);
throw new RuntimeException("Error minting pid", ex);
} catch ( Exception ex ) {
LOGGER.warn("Error processing minter response", ex);
throw new RepositoryRuntimeException("Error processing minter response", ex);
throw new RuntimeException("Error processing minter response", ex);
}
}
}
Expand Up @@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.fcrepo.kernel.identifiers;
package org.fcrepo.mint;

/**
* Defines the behavior of a component that can accept responsibility
Expand Down
Expand Up @@ -20,7 +20,6 @@
import static com.google.common.base.Splitter.fixedLength;
import static java.util.UUID.randomUUID;

import org.fcrepo.kernel.identifiers.PidMinter;
import org.fcrepo.metrics.RegistryService;

import com.codahale.metrics.Timer;
Expand Down

0 comments on commit 966a470

Please sign in to comment.