Changeset 5231
- Timestamp:
- 05/19/14 12:40:49 (10 years ago)
- Location:
- vlo/trunk/vlo-web-app/src
- Files:
-
- 4 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/config/VloSpringConfig.java
r5093 r5231 17 17 package eu.clarin.cmdi.vlo.config; 18 18 19 import com.google.common.collect.ImmutableList;20 import com.google.common.collect.Sets;21 import eu.clarin.cmdi.vlo.FacetConstants;22 import eu.clarin.cmdi.vlo.VloWicketApplication;23 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;24 import eu.clarin.cmdi.vlo.pojo.SearchContext;25 import eu.clarin.cmdi.vlo.service.FieldFilter;26 import eu.clarin.cmdi.vlo.service.handle.HandleClient;27 import eu.clarin.cmdi.vlo.service.PageParametersConverter;28 import eu.clarin.cmdi.vlo.service.ResourceStringConverter;29 import eu.clarin.cmdi.vlo.service.ResourceTypeCountingService;30 import eu.clarin.cmdi.vlo.service.UriResolver;31 import eu.clarin.cmdi.vlo.service.XmlTransformationService;32 import eu.clarin.cmdi.vlo.service.impl.ExclusiveFieldFilter;33 import eu.clarin.cmdi.vlo.service.handle.impl.HandleRestApiClient;34 import eu.clarin.cmdi.vlo.service.impl.DocumentParametersConverter;35 import eu.clarin.cmdi.vlo.service.impl.UriResolverImpl;36 import eu.clarin.cmdi.vlo.service.impl.InclusiveFieldFilter;37 import eu.clarin.cmdi.vlo.service.impl.ResourceStringConverterImpl;38 import eu.clarin.cmdi.vlo.service.impl.ResourceTypeCountingServiceImpl;39 import eu.clarin.cmdi.vlo.service.impl.XmlTransformationServiceImpl;40 import eu.clarin.cmdi.vlo.service.solr.AutoCompleteService;41 import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;42 import eu.clarin.cmdi.vlo.service.solr.SearchResultsDao;43 import eu.clarin.cmdi.vlo.service.solr.SolrDocumentService;44 import eu.clarin.cmdi.vlo.service.solr.SolrFacetQueryFactory;45 import eu.clarin.cmdi.vlo.service.solr.impl.AutoCompleteServiceImpl;46 import eu.clarin.cmdi.vlo.service.impl.QueryFacetsSelectionParametersConverter;47 import eu.clarin.cmdi.vlo.service.impl.SearchContextParametersConverter;48 import eu.clarin.cmdi.vlo.service.solr.impl.SearchResultsDaoImpl;49 import eu.clarin.cmdi.vlo.service.solr.impl.SolrDocumentQueryFactoryImpl;50 import eu.clarin.cmdi.vlo.service.solr.impl.SolrDocumentServiceImpl;51 import eu.clarin.cmdi.vlo.service.solr.impl.SolrFacetFieldsService;52 import eu.clarin.cmdi.vlo.service.solr.impl.SolrFacetQueryFactoryImpl;53 import java.io.IOException;54 import java.util.List;55 import java.util.Properties;56 import javax.xml.transform.OutputKeys;57 import javax.xml.transform.Source;58 import javax.xml.transform.TransformerConfigurationException;59 import javax.xml.transform.stream.StreamSource;60 import org.apache.solr.client.solrj.SolrServer;61 import org.apache.solr.client.solrj.impl.HttpSolrServer;62 import org.apache.solr.common.SolrDocument;63 import org.springframework.context.annotation.Bean;64 19 import org.springframework.context.annotation.Configuration; 20 import org.springframework.context.annotation.Import; 65 21 66 22 /** 67 * Annotation based Spring configuration for the VLO web application. 23 * Annotation based Spring configuration for the VLO web application. Note: this 24 * class imports a number of configuration modules. 68 25 * 69 * Note: this works because26 * Note: All of this works because 70 27 * {@link org.apache.wicket.spring.SpringWebApplicationFactory} is used in place 71 28 * of the standard Wicket application factory and annotation driven … … 75 32 */ 76 33 @Configuration 34 @Import({VloApplicationSpringConfig.class, VloServicesSpringConfig.class, VloSolrSpringConfig.class}) 77 35 public class VloSpringConfig { 78 79 /**80 *81 * @return the web application object that represents the Wicket application82 */83 @Bean84 public VloWicketApplication webApplication() {85 return new VloWicketApplication();86 }87 88 @Bean89 public VloConfig vloConfig() {90 try {91 return vloConfigFactory().newConfig();92 } catch (IOException ex) {93 throw new RuntimeException("Could not read VLO configuration", ex);94 }95 }96 97 @Bean98 public VloConfigFactory vloConfigFactory() {99 return new ServletVloConfigFactory();100 }101 102 @Bean103 public FacetFieldsService facetFieldsService() {104 return new SolrFacetFieldsService(searchResultsDao(), facetQueryFactory());105 }106 107 @Bean108 public SolrFacetQueryFactory facetQueryFactory() {109 return new SolrFacetQueryFactoryImpl();110 }111 112 @Bean113 public SolrDocumentService documentService() {114 return new SolrDocumentServiceImpl(searchResultsDao(), documentQueryFactory());115 }116 117 @Bean118 public SearchResultsDao searchResultsDao() {119 return new SearchResultsDaoImpl(solrServer(), vloConfig());120 }121 122 @Bean123 public SolrDocumentQueryFactoryImpl documentQueryFactory() {124 return new SolrDocumentQueryFactoryImpl(DOCUMENT_FIELDS);125 }126 127 @Bean128 public AutoCompleteService autoCompleteService() {129 return new AutoCompleteServiceImpl(solrServer(), vloConfig());130 }131 132 @Bean133 public ResourceTypeCountingService resourceTypeCountingService() {134 return new ResourceTypeCountingServiceImpl(resourceStringConverter());135 }136 137 @Bean(name = "resourceStringConverter")138 public ResourceStringConverter resourceStringConverter() {139 return new ResourceStringConverterImpl();140 }141 142 @Bean(name = "resolvingResourceStringConverter")143 public ResourceStringConverter resolvingResourceStringConverter() {144 return new ResourceStringConverterImpl(uriResolver());145 }146 147 @Bean148 public UriResolver uriResolver() {149 return new UriResolverImpl(handleClient());150 }151 152 public HandleClient handleClient() {153 return new HandleRestApiClient();154 }155 156 @Bean(name = "queryParametersConverter")157 public PageParametersConverter<QueryFacetsSelection> queryParametersConverter() {158 return new QueryFacetsSelectionParametersConverter();159 }160 161 @Bean(name = "documentParamsConverter")162 public PageParametersConverter<SolrDocument> documentParamsConverter() {163 return new DocumentParametersConverter();164 }165 166 @Bean(name = "searchContextParamsConverter")167 public PageParametersConverter<SearchContext> searchContextParamsConverter() {168 return new SearchContextParametersConverter(queryParametersConverter());169 }170 171 @Bean172 public SolrServer solrServer() {173 return new HttpSolrServer(vloConfig().getSolrUrl());174 }175 176 @Bean177 public XmlTransformationService cmdiTransformationService() throws TransformerConfigurationException {178 final Source xsltSource = new StreamSource(getClass().getResourceAsStream("/cmdi2xhtml.xsl"));179 //TODO: Read properties from file??180 final Properties transformationProperties = new Properties();181 transformationProperties.setProperty(OutputKeys.METHOD, "html");182 transformationProperties.setProperty(OutputKeys.INDENT, "yes");183 transformationProperties.setProperty(OutputKeys.ENCODING, "UTF-8");184 return new XmlTransformationServiceImpl(xsltSource, transformationProperties);185 }186 187 @Bean(name = "basicPropertiesFilter")188 public FieldFilter basicPropertiesFieldFilter() {189 return new ExclusiveFieldFilter(Sets.union(190 vloConfig().getIgnoredFields(),191 vloConfig().getTechnicalFields()));192 }193 194 @Bean(name = "searchResultPropertiesFilter")195 public FieldFilter searchResultPropertiesFilter() {196 return new InclusiveFieldFilter(vloConfig().getSearchResultFields());197 }198 199 @Bean(name = "technicalPropertiesFilter")200 public FieldFilter technicalPropertiesFieldFilter() {201 return new InclusiveFieldFilter(202 vloConfig().getTechnicalFields());203 }204 205 @Bean(name = "documentFieldOrder")206 public List<String> documentFieldOrder() {207 return DOCUMENT_FIELDS;208 }209 210 /**211 * Fields to request for documents. TODO: Make configurable?212 *213 */214 public static final List<String> DOCUMENT_FIELDS = ImmutableList.of(215 FacetConstants.FIELD_NAME,216 FacetConstants.FIELD_DESCRIPTION,217 FacetConstants.FIELD_COLLECTION,218 FacetConstants.FIELD_LANGUAGES,219 FacetConstants.FIELD_MODALITY,220 FacetConstants.FIELD_CONTINENT,221 FacetConstants.FIELD_COUNTRY,222 FacetConstants.FIELD_GENRE,223 FacetConstants.FIELD_SUBJECT,224 FacetConstants.FIELD_ORGANISATION,225 FacetConstants.FIELD_KEYWORDS,226 FacetConstants.FIELD_NATIONAL_PROJECT,227 FacetConstants.FIELD_RESOURCE_CLASS,228 FacetConstants.FIELD_RESOURCE,229 FacetConstants.FIELD_SELF_LINK,230 FacetConstants.FIELD_ID,231 FacetConstants.FIELD_DATA_PROVIDER,232 FacetConstants.FIELD_FILENAME,233 FacetConstants.FIELD_FORMAT,234 FacetConstants.FIELD_LANDINGPAGE,235 FacetConstants.FIELD_SEARCHPAGE,236 FacetConstants.FIELD_SEARCH_SERVICE,237 FacetConstants.FIELD_LAST_SEEN,238 FacetConstants.FIELD_CLARIN_PROFILE,239 FacetConstants.FIELD_COMPLETE_METADATA240 );241 36 } -
vlo/trunk/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/pages/TestFacetedSearchPage.java
r5227 r5231 1 1 package eu.clarin.cmdi.vlo.wicket.pages; 2 2 3 import eu.clarin.cmdi.vlo.VloApplicationTestConfig; 3 4 import eu.clarin.cmdi.vlo.VloWicketApplication; 4 import eu.clarin.cmdi.vlo.config.DefaultVloConfigFactory; 5 import eu.clarin.cmdi.vlo.config.VloConfigFactory; 6 import eu.clarin.cmdi.vlo.config.VloSpringConfig; 5 import eu.clarin.cmdi.vlo.config.VloServicesSpringConfig; 6 import eu.clarin.cmdi.vlo.config.VloSolrSpringConfig; 7 7 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 8 8 import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService; … … 22 22 import org.springframework.context.annotation.Bean; 23 23 import org.springframework.context.annotation.Configuration; 24 import org.springframework.context.annotation.Import; 24 25 import org.springframework.test.context.ContextConfiguration; 25 26 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; … … 34 35 public class TestFacetedSearchPage { 35 36 36 @Configuration37 static class ContextConfiguration extends VloSpringConfig {38 39 @Bean40 public Mockery mockery() {41 return new JUnit4Mockery();42 }43 44 @Override45 public FacetFieldsService facetFieldsService() {46 return mockery().mock(FacetFieldsService.class, "facetFieldsService");47 }48 49 @Override50 public SolrDocumentService documentService() {51 return mockery().mock(SolrDocumentService.class);52 }53 54 @Override55 public VloConfigFactory vloConfigFactory() {56 //TODO: Separate test config? -> override vloConfig() instead57 return new DefaultVloConfigFactory();58 }59 60 }61 62 private WicketTester tester;63 37 @Inject 64 38 private VloWicketApplication application; 65 39 @Inject 66 40 private Mockery mockery; 67 68 41 @Inject 69 42 private FacetFieldsService facetFieldsService; 70 71 43 @Inject 72 44 private SolrDocumentService documentService; 45 46 private WicketTester tester; 73 47 74 48 @Before … … 102 76 tester.assertRenderedPage(FacetedSearchPage.class); 103 77 } 78 79 /** 80 * Custom configuration injected into web app for testing 81 */ 82 @Configuration 83 @Import({ 84 VloSolrTestConfig.class, 85 VloApplicationTestConfig.class, 86 VloServicesSpringConfig.class}) 87 static class ContextConfiguration { 88 89 @Bean 90 public Mockery mockery() { 91 // shared mockery context 92 return new JUnit4Mockery(); 93 } 94 } 95 96 /** 97 * Provides some mock Solr services 98 */ 99 @Configuration 100 static class VloSolrTestConfig extends VloSolrSpringConfig { 101 102 @Inject 103 private Mockery mockery; 104 105 @Override 106 public SolrDocumentService documentService() { 107 return mockery.mock(SolrDocumentService.class); 108 } 109 110 @Override 111 public FacetFieldsService facetFieldsService() { 112 return mockery.mock(FacetFieldsService.class, "facetFieldsService"); 113 } 114 } 104 115 } -
vlo/trunk/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/pages/TestRecordPage.java
r5227 r5231 2 2 3 3 import eu.clarin.cmdi.vlo.FacetConstants; 4 import eu.clarin.cmdi.vlo.VloApplicationTestConfig; 4 5 import eu.clarin.cmdi.vlo.VloWebAppParameters; 5 6 import eu.clarin.cmdi.vlo.VloWicketApplication; 6 import eu.clarin.cmdi.vlo.config.DefaultVloConfigFactory; 7 import eu.clarin.cmdi.vlo.config.VloConfigFactory; 8 import eu.clarin.cmdi.vlo.config.VloSpringConfig; 7 import eu.clarin.cmdi.vlo.config.VloServicesSpringConfig; 8 import eu.clarin.cmdi.vlo.config.VloSolrSpringConfig; 9 9 import eu.clarin.cmdi.vlo.service.solr.SolrDocumentService; 10 10 import javax.inject.Inject; … … 21 21 import org.springframework.context.annotation.Bean; 22 22 import org.springframework.context.annotation.Configuration; 23 import org.springframework.context.annotation.Import; 23 24 import org.springframework.test.annotation.DirtiesContext; 24 25 import org.springframework.test.annotation.DirtiesContext.ClassMode; … … 36 37 public class TestRecordPage { 37 38 38 @Configuration39 static class ContextConfiguration extends VloSpringConfig {40 41 @Bean42 public Mockery mockery() {43 return new JUnit4Mockery();44 }45 46 @Override47 public SolrDocumentService documentService() {48 return mockery().mock(SolrDocumentService.class);49 }50 51 @Override52 public VloConfigFactory vloConfigFactory() {53 //TODO: Separate test config? -> override vloConfig() instead54 return new DefaultVloConfigFactory();55 }56 57 }58 59 private WicketTester tester;60 39 @Inject 61 40 private VloWicketApplication application; … … 65 44 private SolrDocumentService documentService; 66 45 46 private WicketTester tester; 67 47 private SolrDocument document; 68 48 private PageParameters params; … … 118 98 119 99 //TODO: Add test for display of resources 100 /** 101 * Custom configuration injected into web app for testing 102 */ 103 @Configuration 104 @Import({ 105 VloSolrSpringTestConfig.class, 106 VloApplicationTestConfig.class, 107 VloServicesSpringConfig.class}) 108 static class ContextConfiguration { 109 110 @Bean 111 public Mockery mockery() { 112 return new JUnit4Mockery(); 113 } 114 } 115 116 /** 117 * Provides some mock Solr services 118 */ 119 @Configuration 120 static class VloSolrSpringTestConfig extends VloSolrSpringConfig { 121 122 @Inject 123 private Mockery mockery; 124 125 @Override 126 public SolrDocumentService documentService() { 127 return mockery.mock(SolrDocumentService.class); 128 } 129 } 130 120 131 } -
vlo/trunk/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/panels/ContentSearchFormPanelTest.java
r5227 r5231 20 20 import eu.clarin.cmdi.vlo.VloWicketApplication; 21 21 import eu.clarin.cmdi.vlo.config.DefaultVloConfigFactory; 22 import eu.clarin.cmdi.vlo.config.VloApplicationSpringConfig; 22 23 import eu.clarin.cmdi.vlo.config.VloConfig; 23 import eu.clarin.cmdi.vlo.config.VloSpringConfig; 24 import eu.clarin.cmdi.vlo.config.VloServicesSpringConfig; 25 import eu.clarin.cmdi.vlo.config.VloSolrSpringConfig; 24 26 import java.io.IOException; 25 27 import java.util.regex.Pattern; … … 32 34 import org.junit.runner.RunWith; 33 35 import org.springframework.context.annotation.Configuration; 36 import org.springframework.context.annotation.Import; 34 37 import org.springframework.test.context.ContextConfiguration; 35 38 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; … … 45 48 @ContextConfiguration(loader = AnnotationConfigContextLoader.class) 46 49 public class ContentSearchFormPanelTest { 47 48 /**49 * custom configuration injected into web app for testing50 */51 @Configuration52 static class ContextConfiguration extends VloSpringConfig {53 54 @Override55 public VloConfig vloConfig() {56 try {57 final VloConfig config = new DefaultVloConfigFactory().newConfig();58 // this globally configured URL should be the action target of the form59 config.setFederatedContentSearchUrl("http://fcs.org/aggregator");60 return config;61 } catch (IOException ex) {62 throw new RuntimeException(ex);63 }64 }65 66 }67 50 68 51 @Inject … … 82 65 final ContentSearchFormPanel panel = new ContentSearchFormPanel("panel", Model.of(document), Model.of("http://cqlEndPoint/")); 83 66 tester.startComponentInPage(panel); 84 67 85 68 // form action should be aggregator search page 86 69 tester.assertContains("action=\"http://fcs.org/aggregator\""); … … 90 73 } 91 74 75 /** 76 * Custom configuration injected into web app for testing 77 */ 78 @Configuration 79 @Import({ 80 VloApplicationTestConfig.class, 81 VloSolrSpringConfig.class, 82 VloServicesSpringConfig.class}) 83 static class ContextConfiguration { 84 } 85 86 /** 87 * Overrides returned application configuration 88 */ 89 @Configuration 90 static class VloApplicationTestConfig extends VloApplicationSpringConfig { 91 92 @Override 93 public VloConfig vloConfig() { 94 try { 95 // override default config 96 final VloConfig config = new DefaultVloConfigFactory().newConfig(); 97 // this globally configured URL should be the action target of the form 98 config.setFederatedContentSearchUrl("http://fcs.org/aggregator"); 99 return config; 100 } catch (IOException ex) { 101 throw new RuntimeException(ex); 102 } 103 } 104 } 105 92 106 }
Note: See TracChangeset
for help on using the changeset viewer.