MARMOTTA-508: correctly implemented testContentTypeHeader()

Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/8f100036
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/8f100036
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/8f100036

Branch: refs/heads/ldp
Commit: 8f1000361f1bcc323b60c556813f92e7cae6e860
Parents: 33d9d11
Author: Sergio Fernández <[email protected]>
Authored: Mon Jul 14 15:53:27 2014 +0200
Committer: Sergio Fernández <[email protected]>
Committed: Mon Jul 14 15:53:27 2014 +0200

----------------------------------------------------------------------
 .../core/filters/ModuleResourceFilter.java      | 10 ++-------
 .../core/servlet/MarmottaOptionsFilter.java     | 12 ++--------
 .../core/servlet/MarmottaResourceFilter.java    | 23 ++++++++++----------
 .../platform/ldp/services/LdpServiceImpl.java   |  4 ++--
 .../marmotta/platform/ldp/util/LdpUtils.java    |  2 +-
 .../platform/ldp/webservices/LdpWebService.java | 18 ++++++---------
 .../filters/MarmottaAuthenticationFilter.java   |  2 +-
 7 files changed, 26 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/8f100036/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/filters/ModuleResourceFilter.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/filters/ModuleResourceFilter.java
 
b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/filters/ModuleResourceFilter.java
index 36fd2f7..f15806f 100644
--- 
a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/filters/ModuleResourceFilter.java
+++ 
b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/filters/ModuleResourceFilter.java
@@ -21,6 +21,7 @@ import 
org.apache.marmotta.platform.core.api.config.ConfigurationService;
 import org.apache.marmotta.platform.core.api.modules.MarmottaHttpFilter;
 import org.apache.marmotta.platform.core.api.modules.MarmottaResourceService;
 import org.apache.marmotta.platform.core.api.modules.ResourceEntry;
+import org.jboss.resteasy.spi.BadRequestException;
 import org.slf4j.Logger;
 
 import javax.enterprise.context.ApplicationScoped;
@@ -52,7 +53,6 @@ public class ModuleResourceFilter implements 
MarmottaHttpFilter {
     @Inject
     private ConfigurationService configurationService;
 
-
     /**
      * Return the pattern (regular expression) that a request URI (relative to 
the LMF base URI) has to match
      * before triggering this filter.
@@ -125,11 +125,9 @@ public class ModuleResourceFilter implements 
MarmottaHttpFilter {
 
             ResourceEntry data = resourceService.getResource(path);
 
-
             // if no: proceed with the chain by calling chain.doFilter()
             if(data != null && data.getLength() > 0) {
 
-
                 HttpServletResponse hresponse = (HttpServletResponse) response;
 
                 
if(configurationService.getBooleanConfiguration("resources.browsercache.enabled",true))
 {
@@ -152,15 +150,11 @@ public class ModuleResourceFilter implements 
MarmottaHttpFilter {
                 if (log.isDebugEnabled()) {
                     log.debug("request for {} took {}ms", url, 
System.currentTimeMillis() - starttime);
                 }
-
                 return;
             }
-
-
-
         }
 
-        chain.doFilter(request,response);
+        chain.doFilter(request, response);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/8f100036/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/servlet/MarmottaOptionsFilter.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/servlet/MarmottaOptionsFilter.java
 
b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/servlet/MarmottaOptionsFilter.java
index 192ad7b..21ef781 100644
--- 
a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/servlet/MarmottaOptionsFilter.java
+++ 
b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/servlet/MarmottaOptionsFilter.java
@@ -17,6 +17,7 @@
  */
 package org.apache.marmotta.platform.core.servlet;
 
+import org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure;
 import org.jboss.resteasy.spi.DefaultOptionsMethodException;
 import org.jboss.resteasy.spi.ResteasyProviderFactory;
 
@@ -76,27 +77,18 @@ public class MarmottaOptionsFilter implements Filter {
      */
     @Override
     public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException {
-
-
         try {
-
             chain.doFilter(request,response);
-
-        } catch (DefaultOptionsMethodException ex) {
+        } catch (DefaultOptionsMethodException | 
NoMessageBodyWriterFoundFailure ex) {
             if(response instanceof HttpServletResponse) {
                 HttpServletResponse resp = (HttpServletResponse)response;
                 HttpServletRequest req  = (HttpServletRequest)request;
-
                 if(req.getMethod().equalsIgnoreCase("OPTIONS")) {
                     resp.setStatus(200);
                     resp.resetBuffer();
-
                 }
             }
         }
-
-
-
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/8f100036/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/servlet/MarmottaResourceFilter.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/servlet/MarmottaResourceFilter.java
 
b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/servlet/MarmottaResourceFilter.java
index 2fb635c..7e0d81b 100644
--- 
a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/servlet/MarmottaResourceFilter.java
+++ 
b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/servlet/MarmottaResourceFilter.java
@@ -20,6 +20,7 @@ package org.apache.marmotta.platform.core.servlet;
 import org.apache.marmotta.platform.core.api.config.ConfigurationService;
 import org.apache.marmotta.platform.core.api.modules.MarmottaHttpFilter;
 import org.apache.marmotta.platform.core.api.modules.ModuleService;
+import org.jboss.resteasy.spi.BadRequestException;
 import org.slf4j.Logger;
 
 import javax.enterprise.inject.Any;
@@ -32,6 +33,7 @@ import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.Serializable;
 import java.net.URL;
@@ -80,7 +82,6 @@ public class MarmottaResourceFilter implements Filter {
     public void init(FilterConfig filterConfig) throws ServletException {
         log.info("Apache Marmotta Resource Filter {} starting up ... ", 
configurationService.getConfiguration("kiwi.version"));
 
-
         // initialise filter chain and sort it according to priority
         this.filterList  = new ArrayList<MarmottaHttpFilter>();
 
@@ -96,7 +97,6 @@ public class MarmottaResourceFilter implements Filter {
         }
 
         Collections.sort(filterList,new FilterComparator());
-
     }
 
 
@@ -120,22 +120,22 @@ public class MarmottaResourceFilter implements Filter {
     @Override
     public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException {
         URL url = null;
-        String prefix = null, path = null;
+        String prefix, path = null;
         if (request instanceof HttpServletRequest) {
-            url    = new 
URL(((HttpServletRequest)request).getRequestURL().toString());
+            url = new 
URL(((HttpServletRequest)request).getRequestURL().toString());
             prefix = ((HttpServletRequest)request).getContextPath();
             if(url.getPath().startsWith(prefix)) {
                 path = url.getPath().substring(prefix.length());
             }
         }
 
-        new LMFFilterChain(path,chain).doFilter(request,response);
-
+        try {
+            new MarmottaFilterChain(path, chain).doFilter(request, response);
+        } catch (BadRequestException e) {
+            ((HttpServletResponse)response).sendError(400, e.getMessage());
+        }
     }
 
-
-
-
     /**
      * Called by the web container to indicate to a filter that it is being 
taken out of service. This
      * method is only called once all threads within the filter's doFilter 
method have exited or after
@@ -153,11 +153,10 @@ public class MarmottaResourceFilter implements Filter {
         }
     }
 
-
     /**
      * A special filter chain that implements the LMFHttpFilter calls
      */
-    private class LMFFilterChain implements FilterChain {
+    private class MarmottaFilterChain implements FilterChain {
 
         private Iterator<MarmottaHttpFilter> filters;
 
@@ -165,7 +164,7 @@ public class MarmottaResourceFilter implements Filter {
 
         private FilterChain originalChain;
 
-        LMFFilterChain(String path, FilterChain originalChain) {
+        MarmottaFilterChain(String path, FilterChain originalChain) {
             this.path     = path;
             this.filters = filterList.iterator();
             this.originalChain = originalChain;

http://git-wip-us.apache.org/repos/asf/marmotta/blob/8f100036/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java
 
b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java
index 9a51791..09dcc69 100644
--- 
a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java
+++ 
b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java
@@ -281,7 +281,6 @@ public class LdpServiceImpl implements LdpService {
         connection.add(container, DCTERMS.modified, now, ldpContext);
 
         connection.add(resource, RDF.TYPE, LDP.Resource, ldpContext);
-        connection.add(resource, RDF.TYPE, LDP.RDFSource, ldpContext);
         connection.add(resource, ldpInteractionModelProperty, 
interactionModel.getUri(), ldpContext);
         connection.add(resource, DCTERMS.created, now, ldpContext);
         connection.add(resource, DCTERMS.modified, now, ldpContext);
@@ -313,7 +312,8 @@ public class LdpServiceImpl implements LdpService {
 
             return binaryResource.stringValue();
         } else {
-            log.debug("POST creates new LDP-SR, data provided as {}", 
rdfFormat.getName());
+            log.debug("POST creates new LDP-RS, data provided as {}", 
rdfFormat.getName());
+            connection.add(resource, RDF.TYPE, LDP.RDFSource, ldpContext);
             connection.add(container, LDP.contains, resource, ldpContext);
 
             // FIXME: We are (are we?) allowed to filter out server-managed 
properties here

http://git-wip-us.apache.org/repos/asf/marmotta/blob/8f100036/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/util/LdpUtils.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/util/LdpUtils.java
 
b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/util/LdpUtils.java
index 039c923..4d50162 100644
--- 
a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/util/LdpUtils.java
+++ 
b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/util/LdpUtils.java
@@ -87,7 +87,7 @@ public class LdpUtils {
      * @return the mimeType
      */
     public static String getMimeType(MediaType mediaType) {
-        return String.format("%s/%s", mediaType.getType(), 
mediaType.getSubtype());
+        return (mediaType != null ? String.format("%s/%s", 
mediaType.getType(), mediaType.getSubtype()) : "");
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/8f100036/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpWebService.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpWebService.java
 
b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpWebService.java
index 60c21cf..9a01c94 100644
--- 
a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpWebService.java
+++ 
b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpWebService.java
@@ -119,21 +119,17 @@ public class LdpWebService {
             }
 
             final RDFFormat format;
-            if ("text/plain".equals(LdpUtils.getMimeType(type))) {
+            final RDFFormat fallback = 
(ldpService.isNonRdfSourceResource(conn, resource) ? null : RDFFormat.TURTLE);
+            final String mimeType = LdpUtils.getMimeType(type);
+            if (StringUtils.isBlank(mimeType) || 
"text/plain".equals(mimeType)) {
                 // TODO: find a better way to support n-triples (text/plain)
                 //       while still supporting regular text files
                 format = null;
+            } else if (type.isWildcardSubtype() && 
"text".equals(type.getType())) {
+                format = RDFFormat.TURTLE;
             } else {
-                if (type.isWildcardSubtype()) {
-                    if (type.isWildcardType() || 
"text".equals(type.getType())) {
-                        format = RDFFormat.TURTLE;
-                    } else {
-                        ContentType contentType = 
MarmottaHttpUtils.performContentNegotiation(LdpUtils.getMimeType(type), 
exportService.getProducedTypes());
-                        format = (contentType != null ? 
Rio.getWriterFormatForMIMEType(contentType.getMime(), RDFFormat.TURTLE) : null);
-                    }
-                } else {
-                    format = 
Rio.getWriterFormatForMIMEType(LdpUtils.getMimeType(type), RDFFormat.TURTLE);
-                }
+                ContentType contentType = 
MarmottaHttpUtils.performContentNegotiation(mimeType, 
exportService.getProducedTypes());
+                format = (contentType != null ? 
Rio.getWriterFormatForMIMEType(contentType.getMime(), fallback) : fallback);
             }
 
             if (format == null) {

http://git-wip-us.apache.org/repos/asf/marmotta/blob/8f100036/platform/marmotta-user/src/main/java/org/apache/marmotta/platform/user/filters/MarmottaAuthenticationFilter.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-user/src/main/java/org/apache/marmotta/platform/user/filters/MarmottaAuthenticationFilter.java
 
b/platform/marmotta-user/src/main/java/org/apache/marmotta/platform/user/filters/MarmottaAuthenticationFilter.java
index 1706178..6bde0d4 100644
--- 
a/platform/marmotta-user/src/main/java/org/apache/marmotta/platform/user/filters/MarmottaAuthenticationFilter.java
+++ 
b/platform/marmotta-user/src/main/java/org/apache/marmotta/platform/user/filters/MarmottaAuthenticationFilter.java
@@ -87,7 +87,7 @@ public class MarmottaAuthenticationFilter implements 
MarmottaHttpFilter {
      */
     @Override
     public void init(FilterConfig filterConfig) throws ServletException {
-        log.info("LMF Authentication Filter starting up; user authentication 
is 
{}",configurationService.getBooleanConfiguration("security.enabled",true)?"enabled":"disabled");
+        log.info("armotta Authentication Filter starting up; user 
authentication is {}", 
configurationService.getBooleanConfiguration("security.enabled", 
true)?"enabled":"disabled");
     }
 
 

Reply via email to