Changeset 6022
- Timestamp:
- 02/23/15 15:57:05 (9 years ago)
- Location:
- vlo/trunk/vlo-web-app/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/config/VloServicesSpringConfig.java
r6002 r6022 88 88 @Bean(name = "queryParametersConverter") 89 89 public PageParametersConverter<QueryFacetsSelection> queryParametersConverter() { 90 return new QueryFacetsSelectionParametersConverter( );90 return new QueryFacetsSelectionParametersConverter(vloConfig); 91 91 } 92 92 -
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/QueryFacetsSelectionParametersConverter.java
r4999 r6022 18 18 19 19 import com.google.common.base.Splitter; 20 import com.google.common.collect.ImmutableSet; 20 21 import com.google.common.collect.Maps; 21 22 import static eu.clarin.cmdi.vlo.VloWebAppParameters.*; 23 import eu.clarin.cmdi.vlo.config.VloConfig; 22 24 import eu.clarin.cmdi.vlo.pojo.FacetSelection; 23 25 import eu.clarin.cmdi.vlo.pojo.FacetSelectionType; … … 28 30 import java.util.List; 29 31 import java.util.Map.Entry; 32 import java.util.Set; 33 import org.apache.wicket.Session; 30 34 import org.apache.wicket.request.mapper.parameter.PageParameters; 31 35 import org.apache.wicket.util.string.StringValue; … … 48 52 public final static Splitter FILTER_SPLITTER = Splitter.on(":").limit(2); 49 53 54 private final Set<String> facetsDefined; 55 56 public QueryFacetsSelectionParametersConverter(VloConfig config) { 57 facetsDefined = ImmutableSet.copyOf(config.getAllFacetFields()); 58 } 59 50 60 @Override 51 61 public QueryFacetsSelection fromParameters(PageParameters params) { … … 64 74 final String type = fqType.get(1).toUpperCase(); 65 75 66 try { 67 final FacetSelectionType facetSelectionType = FacetSelectionType.valueOf(type); 68 selection.put(facet, new FacetSelection(facetSelectionType)); 69 } catch (IllegalArgumentException ex) { 70 logger.warn("Unknown selection type passed into query parameter {}: {}", FILTER_QUERY_TYPE, type); 76 if (facetsDefined.contains(facet)) { 77 try { 78 final FacetSelectionType facetSelectionType = FacetSelectionType.valueOf(type); 79 selection.put(facet, new FacetSelection(facetSelectionType)); 80 } catch (IllegalArgumentException ex) { 81 logger.warn("Unknown selection type passed into query parameter {}: {}", FILTER_QUERY_TYPE, type); 82 } 71 83 } 72 84 } else { … … 84 96 final String facet = fq.get(0); 85 97 final String value = fq.get(1); 86 if (selection.containsKey(facet)) { 87 selection.get(facet).getValues().add(value); 98 if (facetsDefined.contains(facet)) { 99 if (selection.containsKey(facet)) { 100 selection.get(facet).getValues().add(value); 101 } else { 102 selection.put(facet, new FacetSelection(Arrays.asList(value))); 103 } 88 104 } else { 89 selection.put(facet, new FacetSelection(Arrays.asList(value))); 105 logger.debug("Undefined facet passed into query parameter {}: {}", FILTER_QUERY, facet); 106 107 if (Session.exists()) { 108 // generate Wicket error message 109 Session.get().error("Unknown facet: " + facet); 110 } 90 111 } 91 112 } else { -
vlo/trunk/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/service/impl/QueryFacetsSelectionParametersConverterTest.java
r4999 r6022 17 17 package eu.clarin.cmdi.vlo.service.impl; 18 18 19 import com.google.common.collect.ImmutableList; 19 20 import com.google.common.collect.Maps; 21 import static eu.clarin.cmdi.vlo.FacetConstants.FIELD_COLLECTION; 22 import static eu.clarin.cmdi.vlo.FacetConstants.FIELD_COUNTRY; 23 import eu.clarin.cmdi.vlo.config.VloConfig; 20 24 import eu.clarin.cmdi.vlo.pojo.FacetSelection; 21 25 import eu.clarin.cmdi.vlo.pojo.FacetSelectionType; … … 44 48 @Before 45 49 public void setUp() { 46 instance = new QueryFacetsSelectionParametersConverter(); 50 VloConfig config = new VloConfig() { 51 52 @Override 53 public List<String> getAllFacetFields() { 54 return ImmutableList.of("facet1", "facet2", "facet3", "facet4"); 55 } 56 57 }; 58 instance = new QueryFacetsSelectionParametersConverter(config); 47 59 } 48 60 … … 60 72 params.add("fq", "facet2:value:C"); // has a colon in value 61 73 params.add("fq", "illegal-no-colon"); //should get ignored 74 params.add("fq", "facet5:valueD"); //not in list, should get ignored 62 75 params.add("fq", ""); // not a valid facet selection 63 76 params.add("fq", "invalid"); // not a valid facet selection
Note: See TracChangeset
for help on using the changeset viewer.