Skip to content

Commit

Permalink
Added new HTTP API module to fcrepo-webapp
Browse files Browse the repository at this point in the history
  • Loading branch information
ajs6f committed Feb 26, 2013
1 parent 299afef commit 80dcb7e
Show file tree
Hide file tree
Showing 12 changed files with 109 additions and 37 deletions.
21 changes: 17 additions & 4 deletions fcrepo-http-api/pom.xml
Expand Up @@ -8,12 +8,12 @@
<version>4.0-SNAPSHOT</version>
</parent>

<artifactId>fcrepo-legacy-api</artifactId>
<artifactId>fcrepo-http-api</artifactId>
<packaging>bundle</packaging>

<description>Fedora 3.x legacy API</description>
<description>Fedora 4.x HTTP API</description>

<name>fcrepo 3.x compatible REST API</name>
<name>fcrepo 4.x HTTP API</name>

<dependencies>
<dependency>
Expand All @@ -28,7 +28,12 @@
<version>${project.version}</version>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>com.googlecode.htmleasy</groupId>
<artifactId>htmleasy</artifactId>
<version>0.7</version>
</dependency>

<dependency>
<groupId>org.codehaus.enunciate</groupId>
<artifactId>enunciate-cxf-rt</artifactId>
Expand Down Expand Up @@ -112,4 +117,12 @@
</plugin>
</plugins>
</build>

<repositories>
<repository>
<id>htmleasy</id>
<url>http://htmleasy-maven.googlecode.com/svn/trunk/</url>
</repository>
</repositories>

</project>
@@ -1,5 +1,5 @@

package org.fcrepo.api.legacy;
package org.fcrepo.api;

import static com.google.common.collect.ImmutableSet.builder;
import static java.util.Collections.singletonList;
Expand All @@ -8,7 +8,7 @@
import static javax.ws.rs.core.MediaType.TEXT_XML;
import static javax.ws.rs.core.Response.created;
import static javax.ws.rs.core.Response.ok;
import static org.fcrepo.api.legacy.FedoraObjects.getObjectSize;
import static org.fcrepo.api.FedoraObjects.getObjectSize;
import static org.fcrepo.jaxb.responses.DatastreamProfile.DatastreamStates.A;
import static org.fcrepo.services.DatastreamService.createDatastreamNode;
import static org.fcrepo.services.ObjectService.getObjectNode;
Expand All @@ -31,7 +31,6 @@
import javax.jcr.Session;
import javax.jcr.ValueFormatException;
import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
Expand Down
@@ -1,5 +1,5 @@

package org.fcrepo.api.legacy;
package org.fcrepo.api;

import static com.google.common.collect.Collections2.transform;
import static com.google.common.collect.DiscreteDomains.integers;
Expand Down
@@ -1,5 +1,5 @@

package org.fcrepo.api.legacy;
package org.fcrepo.api;

import static com.google.common.collect.ImmutableSet.builder;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
Expand Down
@@ -1,12 +1,13 @@

package org.fcrepo.api.legacy;
package org.fcrepo.api;

import static com.google.common.base.Joiner.on;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
import static javax.ws.rs.core.MediaType.TEXT_HTML;
import static javax.ws.rs.core.MediaType.TEXT_XML;
import static javax.ws.rs.core.Response.created;
import static javax.ws.rs.core.Response.ok;
import static org.fcrepo.api.legacy.FedoraDatastreams.getContentSize;
import static org.fcrepo.api.FedoraDatastreams.getContentSize;
import static org.fcrepo.jaxb.responses.ObjectProfile.ObjectStates.A;
import static org.fcrepo.services.ObjectService.createObjectNode;
import static org.fcrepo.services.ObjectService.getObjectNames;
Expand All @@ -32,13 +33,16 @@
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.fcrepo.AbstractResource;
import org.fcrepo.jaxb.responses.ObjectProfile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.googlecode.htmleasy.ViewWith;

@Path("/objects")
public class FedoraObjects extends AbstractResource {

Expand Down Expand Up @@ -141,7 +145,8 @@ public Response ingest(@PathParam("pid")
*/
@GET
@Path("/{pid}")
@Produces({TEXT_XML, APPLICATION_JSON})
@Produces({TEXT_XML, APPLICATION_JSON, TEXT_HTML})
@ViewWith("/views/objectProfile")
public ObjectProfile getObject(@PathParam("pid")
final String pid) throws RepositoryException, IOException {

Expand Down
@@ -1,5 +1,5 @@

package org.fcrepo.api.legacy;
package org.fcrepo.api;

import static com.google.common.collect.ImmutableMap.builder;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
Expand Down
19 changes: 19 additions & 0 deletions fcrepo-http-api/src/main/resources/views/objectProfile
@@ -0,0 +1,19 @@
<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$objLabel}</title>
</head>
<body> You are examining the Fedora object with identifier: {$pid}. Would you like to kill it?
<button onmousedown="purgeObject();">DIE!</button>
<script type="application/javascript">
function purgeObject () {
var form = document.createElement('form');
form.setAttribute('method', 'delete');
form.setAttribute('action', '');
form.style.display = 'hidden';
document.body.appendChild(form)
form.submit();
}
</script>
</body>
</html>
10 changes: 5 additions & 5 deletions fcrepo-http-api/src/test/resources/spring-test/rest.xml
Expand Up @@ -21,11 +21,11 @@

<jaxrs:server address="http://localhost:${test.port:8080}/rest">
<jaxrs:serviceBeans>
<bean class="org.fcrepo.api.legacy.FedoraRepository"/>
<bean class="org.fcrepo.api.legacy.FedoraDatastreams"/>
<bean class="org.fcrepo.api.legacy.FedoraIdentifiers"/>
<bean class="org.fcrepo.api.legacy.FedoraNamespaces"/>
<bean class="org.fcrepo.api.legacy.FedoraObjects"/>
<bean class="org.fcrepo.api.FedoraRepository"/>
<bean class="org.fcrepo.api.FedoraDatastreams"/>
<bean class="org.fcrepo.api.FedoraIdentifiers"/>
<bean class="org.fcrepo.api.FedoraNamespaces"/>
<bean class="org.fcrepo.api.FedoraObjects"/>
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<entry key="json" value="application/json"/>
Expand Down
Expand Up @@ -31,7 +31,6 @@
import javax.jcr.Session;
import javax.jcr.ValueFormatException;
import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
Expand Down
6 changes: 6 additions & 0 deletions fcrepo-webapp/pom.xml
Expand Up @@ -36,6 +36,12 @@
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.fcrepo</groupId>
<artifactId>fcrepo-http-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.fcrepo</groupId>
<artifactId>fcrepo-legacy-api</artifactId>
Expand Down
66 changes: 48 additions & 18 deletions fcrepo-webapp/src/main/resources/spring/rest.xml
Expand Up @@ -20,7 +20,7 @@
<!-- Mints PIDs-->
<bean class="org.fcrepo.identifiers.UUIDPidMinter"/>

<jaxrs:server address="/rest">
<jaxrs:server address="/v3">
<jaxrs:serviceBeans>
<bean class="org.fcrepo.api.legacy.FedoraRepository"/>
<bean class="org.fcrepo.api.legacy.FedoraDatastreams"/>
Expand All @@ -34,23 +34,33 @@
<entry key="xml" value="application/xml"/>
</jaxrs:extensionMappings>
<jaxrs:providers>
<bean class="org.fcrepo.exceptionhandlers.PathNotFoundExceptionMapper"/>
<bean class="org.fcrepo.exceptionhandlers.AccessControlExceptionMapper"/>
<bean class="org.fcrepo.exceptionhandlers.WildcardExceptionMapper">
<property name="showStackTrace" value="true"/>
</bean>
<bean class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="marshallerProperties">
<util:map>
<entry key="jaxb.formatted.output">
<value type="java.lang.Boolean">true</value>
</entry>
</util:map>
</property>
</bean>
<bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="ignoreNamespaces" value="true"/>
</bean>
<ref bean="pathNotFoundExceptionMapper"/>
<ref bean="accessControlExceptionMapper"/>
<ref bean="wildcardExceptionMapper"/>
<ref bean="jaxbElementProvider"/>
<ref bean="jsonProvider"/>
</jaxrs:providers>
</jaxrs:server>

<jaxrs:server address="/rest">
<jaxrs:serviceBeans>
<bean class="org.fcrepo.api.FedoraRepository"/>
<bean class="org.fcrepo.api.FedoraDatastreams"/>
<bean class="org.fcrepo.api.FedoraIdentifiers"/>
<bean class="org.fcrepo.api.FedoraNamespaces"/>
<bean class="org.fcrepo.api.FedoraObjects"/>
<bean class="org.fcrepo.generator.DublinCore"/>
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<entry key="json" value="application/json"/>
<entry key="xml" value="application/xml"/>
</jaxrs:extensionMappings>
<jaxrs:providers>
<ref bean="pathNotFoundExceptionMapper"/>
<ref bean="accessControlExceptionMapper"/>
<ref bean="wildcardExceptionMapper"/>
<ref bean="jaxbElementProvider"/>
<ref bean="jsonProvider"/>
</jaxrs:providers>
</jaxrs:server>

Expand All @@ -65,4 +75,24 @@
</jaxrs:providers>
</jaxrs:server>

<bean name="pathNotFoundExceptionMapper"
class="org.fcrepo.exceptionhandlers.PathNotFoundExceptionMapper"/>
<bean name="accessControlExceptionMapper"
class="org.fcrepo.exceptionhandlers.AccessControlExceptionMapper"/>
<bean name="wildcardExceptionMapper"
class="org.fcrepo.exceptionhandlers.WildcardExceptionMapper">
<property name="showStackTrace" value="true"/>
</bean>
<bean name="jaxbElementProvider" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="marshallerProperties">
<util:map>
<entry key="jaxb.formatted.output">
<value type="java.lang.Boolean">true</value>
</entry>
</util:map>
</property>
</bean>
<bean name="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="ignoreNamespaces" value="true"/>
</bean>
</beans>
1 change: 1 addition & 0 deletions pom.xml
Expand Up @@ -43,6 +43,7 @@
<module>fcrepo-legacy-api</module>
<module>fcrepo-http-commons</module>
<module>fcrepo-rss</module>
<module>fcrepo-http-api</module>
</modules>

<dependencyManagement>
Expand Down

0 comments on commit 80dcb7e

Please sign in to comment.