Skip to content

Commit

Permalink
Better change to FedoraObject.getDSSize(), also better type-safety in…
Browse files Browse the repository at this point in the history
… SimpleObserver
  • Loading branch information
ajs6f committed Mar 29, 2013
1 parent f86e3eb commit a8de4f9
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 33 deletions.
Expand Up @@ -15,7 +15,6 @@
import javax.inject.Inject;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
Expand All @@ -31,7 +30,6 @@
import org.fcrepo.FedoraObject;
import org.fcrepo.jaxb.responses.access.ObjectProfile;
import org.fcrepo.services.ObjectService;

import org.slf4j.Logger;

@Path("/objects")
Expand Down
11 changes: 4 additions & 7 deletions fcrepo-http-api/src/test/java/org/fcrepo/api/TestHelpers.java
@@ -1,22 +1,19 @@
package org.fcrepo.api;

import static org.mockito.Mockito.*;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.io.InputStream;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.jcr.Binary;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.PropertyIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
import javax.jcr.Workspace;
import javax.jcr.query.Query;
Expand All @@ -31,7 +28,6 @@
import org.apache.tika.io.IOUtils;
import org.jboss.resteasy.specimpl.PathSegmentImpl;
import org.jboss.resteasy.specimpl.UriInfoImpl;
import org.modeshape.jcr.query.QueryResults;

public abstract class TestHelpers {
public static UriInfo getUriInfoImpl() {
Expand All @@ -58,6 +54,7 @@ public static List<Attachment> getStringsAsAttachments(Map<String, String> conte
return results;
}

@SuppressWarnings("unchecked")
public static Query getQueryMock() {
Query mockQ = mock(Query.class);
QueryResult mockResults = mock(QueryResult.class);
Expand Down
Expand Up @@ -10,7 +10,6 @@
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.util.EntityUtils;
import org.fcrepo.FedoraObject;
import org.fcrepo.jaxb.responses.access.ObjectProfile;
import org.junit.Test;

Expand Down
31 changes: 15 additions & 16 deletions fcrepo-kernel/src/main/java/org/fcrepo/FedoraObject.java
Expand Up @@ -2,9 +2,11 @@
package org.fcrepo;

import static com.google.common.base.Joiner.on;
import static com.google.common.collect.Iterators.filter;
import static com.yammer.metrics.MetricRegistry.name;
import static org.fcrepo.services.RepositoryService.metrics;
import static org.fcrepo.services.ServiceHelpers.getNodePropertySize;
import static org.fcrepo.utils.FedoraTypesUtils.isFedoraDatastream;
import static org.fcrepo.utils.FedoraTypesUtils.isOwned;
import static org.fcrepo.utils.FedoraTypesUtils.map;
import static org.fcrepo.utils.FedoraTypesUtils.nodetype2name;
Expand All @@ -13,14 +15,15 @@

import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;

import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.RepositoryException;
import javax.jcr.Session;

import org.fcrepo.utils.FedoraJcrTypes;
import org.fcrepo.utils.FedoraNodeIterator;
import org.modeshape.jcr.api.JcrTools;

import com.yammer.metrics.Timer;
Expand Down Expand Up @@ -91,7 +94,7 @@ public void setOwnerId(String ownerId) throws RepositoryException {
node.setProperty(FEDORA_OWNERID, ownerId);
}
}

public String getLabel() throws RepositoryException {
if (node.hasProperty(DC_TITLE)) {
Property dcTitle = node.getProperty(DC_TITLE);
Expand All @@ -103,26 +106,25 @@ public String getLabel() throws RepositoryException {
}
return null;
}


public void setLabel(String label) throws RepositoryException {
node.setProperty(DC_TITLE, label);
}

public String getCreated() throws RepositoryException {
return node.getProperty("jcr:created").getString();
return node.getProperty("jcr:created").getString();
}

public String getLastModified() throws RepositoryException {
return node.getProperty("jcr:lastModified").getString();
return node.getProperty("jcr:lastModified").getString();
}

public long getSize() throws RepositoryException {
return getObjectSize(node);
return getObjectSize(node);
}

public Collection<String> getModels() throws RepositoryException {
return map(node.getMixinNodeTypes(), nodetype2name);
return map(node.getMixinNodeTypes(), nodetype2name);
}

/**
Expand All @@ -141,12 +143,9 @@ static Long getObjectSize(Node obj) throws RepositoryException {
*/
private static Long getObjectDSSize(Node obj) throws RepositoryException {
Long size = 0L;
NodeIterator i = obj.getNodes();
while (i.hasNext()) {
Datastream ds = new Datastream(i.nextNode());
size += ds.getSize();
for (final Iterator<Node> i = filter(new FedoraNodeIterator(obj.getNodes()),isFedoraDatastream); i.hasNext();) {
size += new Datastream(i.next()).getSize();
}
return size;
}

}
@@ -1,7 +1,7 @@

package org.fcrepo.observer;

import static com.google.common.collect.Collections2.filter;
import static com.google.common.collect.Iterables.filter;
import static com.yammer.metrics.MetricRegistry.name;
import static javax.jcr.observation.Event.NODE_ADDED;
import static javax.jcr.observation.Event.NODE_MOVED;
Expand All @@ -20,10 +20,10 @@
import javax.jcr.observation.EventIterator;
import javax.jcr.observation.EventListener;

import org.fcrepo.utils.FedoraEventIterator;
import org.modeshape.jcr.api.Repository;
import org.slf4j.Logger;

import com.google.common.collect.ImmutableList.Builder;
import com.google.common.eventbus.EventBus;
import com.yammer.metrics.Counter;

Expand Down Expand Up @@ -63,14 +63,10 @@ public void buildListener() throws RepositoryException {
session.logout();
}

// it's okay to suppress type-safety warning here,
// because we know that EventIterator only produces
// Events, like an Iterator<Event>
@SuppressWarnings("unchecked")
@Override
public void onEvent(EventIterator events) {

for (Event e : filter(new Builder<Event>().addAll(events).build(),
for (final Event e : filter(new FedoraEventIterator(events),
eventFilter)) {

eventCounter.inc();
Expand Down
@@ -0,0 +1,37 @@

package org.fcrepo.utils;

import java.util.Iterator;

import javax.jcr.observation.Event;
import javax.jcr.observation.EventIterator;

public class FedoraEventIterator implements Iterator<Event>, Iterable<Event> {

EventIterator i;

public FedoraEventIterator(final EventIterator i) {
this.i = i;
}

@Override
public boolean hasNext() {
return i.hasNext();
}

@Override
public Event next() {
return i.nextEvent();
}

@Override
public void remove() {
i.remove();
}

@Override
public Iterator<Event> iterator() {
return this;
}

}

0 comments on commit a8de4f9

Please sign in to comment.