You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2012/07/25 12:12:28 UTC
svn commit: r1365511 - in /incubator/stanbol/trunk:
enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/reader/
enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/
integration-tests/src/test/java/org/apache/stanbol/e...
Author: rwesten
Date: Wed Jul 25 10:12:28 2012
New Revision: 1365511
URL: http://svn.apache.org/viewvc?rev=1365511&view=rev
Log:
fixes STANBOL-702: The Stanbol Enhancer now correctly uses parsed content item URIs ('uri' query parameter). Also added an integration-test for this.
Modified:
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/reader/ContentItemReader.java
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerResource.java
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerUiResource.java
incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java
Modified: incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/reader/ContentItemReader.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/reader/ContentItemReader.java?rev=1365511&r1=1365510&r2=1365511&view=diff
==============================================================================
--- incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/reader/ContentItemReader.java (original)
+++ incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/reader/ContentItemReader.java Wed Jul 25 10:12:28 2012
@@ -36,6 +36,7 @@ import java.util.Map;
import java.util.Set;
import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
@@ -73,7 +74,12 @@ public class ContentItemReader implement
private Parser __parser;
private ServletContext context;
private ContentItemFactory __ciFactory;
-
+ /**
+ * Used to read the queryParameter with the ContentItem ID
+ */
+ @Context
+ private HttpServletRequest request;
+
public static final MediaType MULTIPART = MediaType.valueOf(MediaType.MULTIPART_FORM_DATA_TYPE.getType()+"/*");
public ContentItemReader(@Context ServletContext context) {
@@ -132,12 +138,12 @@ public class ContentItemReader implement
InputStream entityStream) throws IOException, WebApplicationException {
//boolean withMetadata = withMetadata(httpHeaders);
ContentItem contentItem = null;
+ UriRef contentItemId = getContentItemId();
Set<String> parsedContentIds = new HashSet<String>();
if(mediaType.isCompatible(MULTIPART)){
//try to read ContentItem from "multipart/from-data"
MGraph metadata = null;
FileItemIterator fileItemIterator;
- String contentItemId = null;
try {
fileItemIterator = fu.getItemIterator(new MessageBodyReaderContext(entityStream, mediaType));
while(fileItemIterator.hasNext()){
@@ -151,8 +157,9 @@ public class ContentItemReader implement
"'content'!").build());
}
//the metadata may define the ID for the contentItem
- if(fis.getName() != null && !fis.getName().isEmpty()){
- contentItemId = fis.getName();
+ //only used if not parsed as query param
+ if(contentItemId == null && fis.getName() != null && !fis.getName().isEmpty()){
+ contentItemId = new UriRef(fis.getName());
}
metadata = new IndexedMGraph();
try {
@@ -251,7 +258,7 @@ public class ContentItemReader implement
}
} else { //normal content
ContentItemFactory ciFactory = getContentItemFactory();
- contentItem = ciFactory.createContentItem(
+ contentItem = ciFactory.createContentItem(contentItemId,
new StreamSource(entityStream, mediaType.toString()));
//add the URI of the main content
parsedContentIds.add(contentItem.getPartUri(0).getUnicodeString());
@@ -262,6 +269,16 @@ public class ContentItemReader implement
return contentItem;
}
/**
+ * tries to retrieve the ContentItem from the 'uri' query parameter of the
+ * {@link #request}.
+ * @return the parsed URI or <code>null</code> if none
+ */
+ private UriRef getContentItemId() {
+ //NOTE: check for request NULL is needed because of unit tests
+ String ciUri = request == null ? null : request.getParameter("uri");
+ return ciUri == null ? null : new UriRef(ciUri);
+ }
+ /**
* Creates a ContentItem
* @param id the ID or <code>null</code> if not known
* @param metadata the metadata or <code>null</code> if not parsed. NOTE that
@@ -280,7 +297,7 @@ public class ContentItemReader implement
* @throws FileUploadException if the parsed contents are not correctly
* encoded Multipoart MIME
*/
- private ContentItem createContentItem(String id, MGraph metadata, FileItemStream content,Set<String> parsedContentParts) throws IOException, FileUploadException {
+ private ContentItem createContentItem(UriRef id, MGraph metadata, FileItemStream content,Set<String> parsedContentParts) throws IOException, FileUploadException {
MediaType partContentType = MediaType.valueOf(content.getContentType());
ContentItem contentItem = null;
ContentItemFactory ciFactory = getContentItemFactory();
@@ -294,7 +311,7 @@ public class ContentItemReader implement
if(contentItem == null){
log.debug("create ContentItem {} for content (type:{})",
id,content.getContentType());
- contentItem = ciFactory.createContentItem(id != null ? new UriRef(id) : (UriRef)null,
+ contentItem = ciFactory.createContentItem(id,
new StreamSource(fis.openStream(),fis.getContentType()),
metadata);
} else {
@@ -316,7 +333,7 @@ public class ContentItemReader implement
} else {
log.debug("create ContentItem {} for content (type:{})",
id,content.getContentType());
- contentItem = ciFactory.createContentItem(new UriRef(id),
+ contentItem = ciFactory.createContentItem(id,
new StreamSource(content.openStream(),content.getContentType()),
metadata);
}
Modified: incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerResource.java?rev=1365511&r1=1365510&r2=1365511&view=diff
==============================================================================
--- incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerResource.java (original)
+++ incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerResource.java Wed Jul 25 10:12:28 2012
@@ -172,7 +172,8 @@ public abstract class AbstractEnhancerRe
@POST
@Consumes(WILDCARD)
public Response enhanceFromData(ContentItem ci,
- @QueryParam(value = "uri") String uri,
+ //NOTE: The 'uri' parameter is already consumed by the ContentItemReader
+ //@QueryParam(value = "uri") String uri,
@QueryParam(value = "executionmetadata") boolean inclExecMetadata,
@QueryParam(value = "outputContent") Set<String> mediaTypes,
@QueryParam(value = "omitParsed") boolean omitParsed,
Modified: incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerUiResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerUiResource.java?rev=1365511&r1=1365510&r2=1365511&view=diff
==============================================================================
--- incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerUiResource.java (original)
+++ incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerUiResource.java Wed Jul 25 10:12:28 2012
@@ -119,7 +119,7 @@ public abstract class AbstractEnhancerUi
log.info("enhance from From: " + content);
ContentItem ci = ciFactory.createContentItem(new StringSource(content));
if(!buildAjaxview){ //rewrite to a normal EnhancementRequest
- return enhanceFromData(ci, null, false, null, false, null, false, null, headers);
+ return enhanceFromData(ci, false, null, false, null, false, null, headers);
} else { //enhance and build the AJAX response
EnhancementException enhancementException;
try {
Modified: incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java?rev=1365511&r1=1365510&r2=1365511&view=diff
==============================================================================
--- incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java (original)
+++ incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java Wed Jul 25 10:12:28 2012
@@ -91,6 +91,25 @@ public class DefaultChainTest extends En
+ " of the POSTed text. Output format is defined by the Accept header."
);
}
+ /**
+ * Validates that parsed contentItem URIs are used by the Stanbol Enhancer
+ * (STANBOL-702)
+ * @throws Exception
+ */
+ @Test
+ public void testParsedContentItemUri() throws Exception {
+ String uri = "http://test.stanbol.org/uriTest/"
+ + Math.round(Math.random()*1000.0);
+ executor.execute(
+ builder.buildPostRequest(getEndpoint()+"?uri="+uri)
+ .withHeader("Accept","text/rdf+nt")
+ .withContent("The Stanbol enhancer can detect famous cities such as Paris and people such as Bob Marley.")
+ )
+ .assertStatus(200)
+ .assertContentRegexp(
+ "<http://fise.iks-project.eu/ontology/extracted-from> <"+uri+"> ."
+ );
+ }
@Test
public void testOutputFormats() throws Exception {