Skip to content

Commit

Permalink
Added FedoraObject abstraction for use with ObjectService
Browse files Browse the repository at this point in the history
  • Loading branch information
ajs6f committed Feb 21, 2013
1 parent 22d7817 commit ecdfb5f
Show file tree
Hide file tree
Showing 9 changed files with 98 additions and 298 deletions.
4 changes: 2 additions & 2 deletions fcrepo-dc/src/test/resources/spring-test/repo.xml
Expand Up @@ -10,8 +10,7 @@

<context:annotation-config/>

<bean name="modeshapeRepofactory"
class="org.fcrepo.spring.ModeShapeRepositoryFactoryBean"/>
<bean name="modeshapeRepofactory" class="org.fcrepo.spring.ModeShapeRepositoryFactoryBean"/>

<bean class="org.modeshape.jcr.JcrRepositoryFactory"/>

Expand All @@ -20,5 +19,6 @@
<constructor-arg type="String" value="my_repository.json"/>
</bean>

<bean class="org.fcrepo.services.ObjectService"/>

</beans>
41 changes: 41 additions & 0 deletions fcrepo-kernel/src/main/java/org/fcrepo/FedoraObject.java
@@ -0,0 +1,41 @@

package org.fcrepo;

import static org.modeshape.jcr.api.JcrConstants.NT_FOLDER;

import java.util.Calendar;

import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NoSuchNodeTypeException;
import javax.jcr.version.VersionException;

import org.modeshape.jcr.api.JcrTools;

public class FedoraObject extends JcrTools {

private Node node;

public FedoraObject(Node n) {
this.node = n;
}

public FedoraObject(Session session, String path)
throws NoSuchNodeTypeException, VersionException, ConstraintViolationException, LockException, RepositoryException {
this.node = findOrCreateNode(session, path, NT_FOLDER);
node.addMixin("fedora:object");
node.addMixin("fedora:owned");
node.setProperty("fedora:ownerId", session.getUserID());
node.setProperty("jcr:lastModified", Calendar.getInstance());
node.setProperty("dc:identifier", new String[] {node.getIdentifier(),
node.getName()});
}

public Node getNode() {
return node;
}

}
43 changes: 27 additions & 16 deletions fcrepo-kernel/src/main/java/org/fcrepo/services/ObjectService.java
@@ -1,17 +1,16 @@

package org.fcrepo.services;

import static org.modeshape.jcr.api.JcrConstants.NT_FOLDER;

import java.util.Calendar;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;

import org.modeshape.jcr.api.JcrTools;
import org.fcrepo.FedoraObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -23,19 +22,31 @@ public class ObjectService {
@Inject
private Repository repo;

private JcrTools jcrTools = new JcrTools();
private static Session readOnlySession;

public static Node
createObjectNode(final Session session, final String path)
throws RepositoryException {
return new FedoraObject(session, path).getNode();
}

public Node createObjectNode(Session session, String path)
throws RepositoryException {
final Node obj = jcrTools.findOrCreateNode(session, path, NT_FOLDER);
obj.addMixin("fedora:object");
obj.addMixin("fedora:owned");
obj.setProperty("fedora:ownerId", session.getUserID());
obj.setProperty("jcr:lastModified", Calendar.getInstance());
obj.setProperty("dc:identifier", new String[] {obj.getIdentifier(),
obj.getName()});
public static Node getObjectNode(final String name)
throws PathNotFoundException, RepositoryException {
return readOnlySession.getNode("/objects/" + name);
}

@PostConstruct
public void getSession() {
try {
readOnlySession = repo.login();
} catch (RepositoryException e) {
throw new IllegalStateException(e);
}
}

return obj;
@PreDestroy
public void logoutSession() {
readOnlySession.logout();
}

}
224 changes: 0 additions & 224 deletions fcrepo-kernel/src/test/resources/foxml-example.xml

This file was deleted.

1 change: 1 addition & 0 deletions fcrepo-kernel/src/test/resources/spring-test/repo.xml
Expand Up @@ -20,5 +20,6 @@
<constructor-arg type="String" value="test_repository.json"/>
</bean>

<bean class="org.fcrepo.services.ObjectService"/>

</beans>

0 comments on commit ecdfb5f

Please sign in to comment.