From: <leo...@us...> - 2010-03-23 19:15:06
|
Revision: 2298 http://aperture.svn.sourceforge.net/aperture/?rev=2298&view=rev Author: leo_sauermann Date: 2010-03-23 19:14:24 +0000 (Tue, 23 Mar 2010) Log Message: ----------- aperture-webserver: added a REST servlet to upload configuration values. started with the crawlerhandler config. kind of works. Modified Paths: -------------- aperture-webserver/trunk/WebContent/WEB-INF/web.xml aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DrupalCrawlerHandler.java aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DrupalXmlRpcService.java aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/ApertureServer.java aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/STATE.java aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/impl/ServerImpl.java Added Paths: ----------- aperture-webserver/trunk/WebContent/WEB-INF/config/ aperture-webserver/trunk/WebContent/WEB-INF/config/serverconfig.trig aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DRUPALCRAWLERHANDLERCONFIG.java aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/drupalcrawlerhandler.ttl aperture-webserver/trunk/src/org/semanticdesktop/aperture/servlet/ConfigRESTServlet.java Added: aperture-webserver/trunk/WebContent/WEB-INF/config/serverconfig.trig =================================================================== --- aperture-webserver/trunk/WebContent/WEB-INF/config/serverconfig.trig (rev 0) +++ aperture-webserver/trunk/WebContent/WEB-INF/config/serverconfig.trig 2010-03-23 19:14:24 UTC (rev 2298) @@ -0,0 +1,21 @@ +# NOTE: this is an initial file. It can be deleted and it will be overwritten by the web server +# + +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix sourceformat: <http://aperture.semanticdesktop.org/ontology/sourceformat#> . +@prefix source: <http://aperture.semanticdesktop.org/ontology/2007/08/12/source#> . +@prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> . +@prefix drupalcw: <http://aperture.semanticdesktop.org/ontology/2010/03/23/drupalcrawlerhandler#> . + +<urn:aperture:server:crawlerhandlercontext> { + <urn:aperture:server:crawlerhandler> a drupalcw:DrupalCrawlerHandler; + drupalcw:configDomain "localhost"; + drupalcw:configApikey "dac5b06a2e63eed9336ce24f5e56a181"; + drupalcw:configXMLRPCServiceUrl "http://localhost/organikdrupal/?q=services/xmlrpc"; + drupalcw:configUsername "root"; + drupalcw:configPassword "root". +} + + Modified: aperture-webserver/trunk/WebContent/WEB-INF/web.xml =================================================================== --- aperture-webserver/trunk/WebContent/WEB-INF/web.xml 2010-03-16 14:05:36 UTC (rev 2297) +++ aperture-webserver/trunk/WebContent/WEB-INF/web.xml 2010-03-23 19:14:24 UTC (rev 2298) @@ -83,6 +83,15 @@ <description>Sets, whether the servlet supports vendor extensions for XML-RPC.</description> </init-param> </servlet> + <servlet> + <description> + Allows remote clients to configure this aperture-webserver via a simple HTTP protocol</description> + <display-name> + ConfigRESTServlet</display-name> + <servlet-name>ConfigRESTServlet</servlet-name> + <servlet-class> + org.semanticdesktop.aperture.servlet.ConfigRESTServlet</servlet-class> + </servlet> <servlet-mapping> <servlet-name>XmlRpcServlet</servlet-name> <url-pattern>/xmlrpc</url-pattern> @@ -115,6 +124,10 @@ <servlet-name>RefreshResourceServlet</servlet-name> <url-pattern>/config/refreshResource</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>ConfigRESTServlet</servlet-name> + <url-pattern>/config/api/*</url-pattern> + </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> Added: aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DRUPALCRAWLERHANDLERCONFIG.java =================================================================== --- aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DRUPALCRAWLERHANDLERCONFIG.java (rev 0) +++ aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DRUPALCRAWLERHANDLERCONFIG.java 2010-03-23 19:14:24 UTC (rev 2298) @@ -0,0 +1,24 @@ +/** + * + */ +package org.semanticdesktop.aperture.drupalhandler; + +import org.ontoware.rdf2go.model.node.URI; +import org.ontoware.rdf2go.model.node.impl.URIImpl; + +/** + * Configuration constants from RDF. + * This should be auto-generated, dunno how and too lazy to do it right now. + * @author sauermann + * + */ +public class DRUPALCRAWLERHANDLERCONFIG { + + public static final URI DrupalCrawlerHandler = new URIImpl("http://aperture.semanticdesktop.org/ontology/2010/03/23/drupalcrawlerhandler#DrupalCrawlerHandler"); + public static final URI configDomain = new URIImpl("http://aperture.semanticdesktop.org/ontology/2010/03/23/drupalcrawlerhandler#configDomain"); + public static final URI configApikey = new URIImpl("http://aperture.semanticdesktop.org/ontology/2010/03/23/drupalcrawlerhandler#configApikey"); + public static final URI configUsername = new URIImpl("http://aperture.semanticdesktop.org/ontology/2010/03/23/drupalcrawlerhandler#configUsername"); + public static final URI configPassword = new URIImpl("http://aperture.semanticdesktop.org/ontology/2010/03/23/drupalcrawlerhandler#configPassword"); + public static final URI configXMLRPCServiceUrl = new URIImpl("http://aperture.semanticdesktop.org/ontology/2010/03/23/drupalcrawlerhandler#configXMLRPCServiceUrl"); + +} Property changes on: aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DRUPALCRAWLERHANDLERCONFIG.java ___________________________________________________________________ Added: svn:keywords + "LastChangedDate LastChangedRevision URL" Added: svn:eol-style + native Modified: aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DrupalCrawlerHandler.java =================================================================== --- aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DrupalCrawlerHandler.java 2010-03-16 14:05:36 UTC (rev 2297) +++ aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DrupalCrawlerHandler.java 2010-03-23 19:14:24 UTC (rev 2298) @@ -6,6 +6,13 @@ import java.util.Date; import java.util.Set; +import org.ontoware.aifbcommons.collection.ClosableIterator; +import org.ontoware.rdf2go.model.Model; +import org.ontoware.rdf2go.model.Statement; +import org.ontoware.rdf2go.model.node.Resource; +import org.ontoware.rdf2go.model.node.Variable; +import org.ontoware.rdf2go.util.RDFTool; +import org.ontoware.rdf2go.vocabulary.RDF; import org.semanticdesktop.aperture.accessor.DataObject; import org.semanticdesktop.aperture.crawler.Crawler; import org.semanticdesktop.aperture.crawler.base.CrawlerHandlerBase; @@ -89,20 +96,49 @@ DrupalXmlRpcService service; - public DrupalCrawlerHandler(ApertureRegistriesAggregate registries) { + /** + * Create the crawlerhandler and read the configuration. + * Do not access the configmodel after the constructor is finished, rather copy everything you need from the model. + * @param registries the registries to use + * @param configModel the configmodel with settings. Do not access it after the constructor is finished + */ + public DrupalCrawlerHandler(ApertureRegistriesAggregate registries, Model configModel) throws Exception { super( // TODO - use something cleverer here new MagicMimeTypeIdentifier(), registries.getExtractorRegistry(), null); - this.domain = "localhost"; - this.apikey = "dac5b06a2e63eed9336ce24f5e56a181"; - this.serviceUrl = "http://localhost/organikdrupal/?q=services/xmlrpc"; - this.username = "root"; - this.password = "root"; - setExtractingContents(true); + readConfiguration(configModel); } + /** + * during construction: read the config + * @param configModel + */ + private void readConfiguration(Model configModel) throws Exception { + // read values from model + Resource configR; + ClosableIterator<Statement> it = configModel.findStatements(Variable.ANY, RDF.type, DRUPALCRAWLERHANDLERCONFIG.DrupalCrawlerHandler); + try { + if (!it.hasNext()) + throw new Exception("cannot find instance of RDF:type "+DRUPALCRAWLERHANDLERCONFIG.DrupalCrawlerHandler+" in configmodel"); + configR = it.next().getSubject(); + } finally { + it.close(); + } + + this.domain = RDFTool.getSingleValueString(configModel, configR, DRUPALCRAWLERHANDLERCONFIG.configDomain); + this.apikey = RDFTool.getSingleValueString(configModel, configR, DRUPALCRAWLERHANDLERCONFIG.configApikey); + this.serviceUrl = RDFTool.getSingleValueString(configModel, configR, DRUPALCRAWLERHANDLERCONFIG.configXMLRPCServiceUrl); + this.username = RDFTool.getSingleValueString(configModel, configR, DRUPALCRAWLERHANDLERCONFIG.configUsername); + this.password = RDFTool.getSingleValueString(configModel, configR, DRUPALCRAWLERHANDLERCONFIG.configPassword); + + // TODO: check config? + + setExtractingContents(true); + } + + private static MimeTypeIdentifier getMimeTypeIdentifier( ApertureRegistriesAggregate apertureRegistries) { MimeTypeIdentifierRegistry registry Modified: aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DrupalXmlRpcService.java =================================================================== --- aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DrupalXmlRpcService.java 2010-03-16 14:05:36 UTC (rev 2297) +++ aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/DrupalXmlRpcService.java 2010-03-23 19:14:24 UTC (rev 2298) @@ -115,9 +115,6 @@ return params; } - // </editor-fold> - - // <editor-fold defaultstate="collapsed" desc="Public Methods "> public String getHMAC(String message) throws Exception { Mac mac; Added: aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/drupalcrawlerhandler.ttl =================================================================== --- aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/drupalcrawlerhandler.ttl (rev 0) +++ aperture-webserver/trunk/src/org/semanticdesktop/aperture/drupalhandler/drupalcrawlerhandler.ttl 2010-03-23 19:14:24 UTC (rev 2298) @@ -0,0 +1,45 @@ +@prefix fresnel: <http://www.w3.org/2004/09/fresnel#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix sourceformat: <http://aperture.semanticdesktop.org/ontology/sourceformat#> . +@prefix source: <http://aperture.semanticdesktop.org/ontology/2007/08/12/source#> . +@prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> . +@prefix : <http://aperture.semanticdesktop.org/ontology/2010/03/23/drupalcrawlerhandler#> . + +:DrupalCrawlerHandler a rdfs:Class ; + rdfs:label "Drupal Crawler Handler" ; + rdfs:comment "Configuration Format for the Drupal Crawler Handler class of the aperture-webserver" . + + +:configDomain a rdf:Property ; + rdfs:label "Domain" ; + rdfs:comment "Domain name of the Drupal Server." ; + rdfs:domain :DrupalCrawlerHandler ; + rdfs:range xsd:string . + +:configApikey a rdf:Property ; + rdfs:label "API key" ; + rdfs:comment "XML-RPC API key of the Drupal Server." ; + rdfs:domain :DrupalCrawlerHandler ; + rdfs:range xsd:string . + +:configXMLRPCServiceUrl a rdf:Property ; + rdfs:label "XML RPC Service URL" ; + rdfs:comment "Address of the XML RPC endpoint of the Drupal Server. Example: http://www.example.com/drupal/?q=services/xmlrpc" ; + rdfs:domain :DrupalCrawlerHandler ; + rdfs:range xsd:string . + +:configUsername a rdf:Property ; + rdfs:label "username" ; + rdfs:comment "Username used to log into the Drupal Server and add content." ; + rdfs:domain :DrupalCrawlerHandler ; + rdfs:range xsd:string . + +:configPassword a rdf:Property ; + rdfs:label "password" ; + rdfs:comment "Password used to log into the Drupal Server and add content. Stored as plaintext." ; + rdfs:domain :DrupalCrawlerHandler ; + rdfs:range xsd:string . + + \ No newline at end of file Modified: aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/ApertureServer.java =================================================================== --- aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/ApertureServer.java 2010-03-16 14:05:36 UTC (rev 2297) +++ aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/ApertureServer.java 2010-03-23 19:14:24 UTC (rev 2298) @@ -122,6 +122,11 @@ * The URI identifying the named graph context in the modelset which is used to store the main server */ public static final URI APERTURESERVER_CONFIGCONTEXTURI = new URIImpl(APERTURESERVER_URIPREFIX+"configurationcontext"); + + /** + * The URI identifying the named graph context in the modelset which is used to store the crawler handler config + */ + public static final URI APERTURESERVER_CRAWLERHANDLERCONTEXTURI = new URIImpl(APERTURESERVER_URIPREFIX+"crawlerhandlercontext"); /** * Configuration URI for the crawler handler in the configuration RDF model. @@ -589,7 +594,8 @@ /** * Read the current configuration of the crawler handler. * The result is returned as RDF, in the serialization format chosen in the mimetype parameter. - * The configuration is stored in a separate named graph, identified as {@link #CRAWLERHANDLER_CONFIGURI}. + * The configuration is stored in a separate named graph. + * The resource used for configuration must be {@link #CRAWLERHANDLER_CONFIGURI}. * @param mimeType the mimetype to use for serialization * @return the configuration as string. The URI is {@link #CRAWLERHANDLER_CONFIGURI} ({@value #CRAWLERHANDLER_CONFIGURI}) */ Modified: aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/STATE.java =================================================================== --- aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/STATE.java 2010-03-16 14:05:36 UTC (rev 2297) +++ aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/STATE.java 2010-03-23 19:14:24 UTC (rev 2298) @@ -88,5 +88,19 @@ /** * DatwWraper has been started */ - STARTED + STARTED; + + /** + * Check if the passed STATE is a state of not crawling. Meaning that it is either IDLE, or started. + * @param state + * @return true, if the passed state is not crawling + */ + public static boolean notCrawling(STATE state) { + return (state==STARTED) + ||(state==DONE) + ||(state==DONE_WITH_ERRORS) + ||(state==STOPPED_WITH_ERRORS) + ||(state==IDLE) + ||(state==STOPPED); + } } \ No newline at end of file Modified: aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/impl/ServerImpl.java =================================================================== --- aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/impl/ServerImpl.java 2010-03-16 14:05:36 UTC (rev 2297) +++ aperture-webserver/trunk/src/org/semanticdesktop/aperture/server/impl/ServerImpl.java 2010-03-23 19:14:24 UTC (rev 2298) @@ -48,8 +48,11 @@ import java.util.logging.Level; import java.util.logging.Logger; +import junit.runner.ReloadingTestSuiteLoader; + import org.ontoware.aifbcommons.collection.ClosableIterator; import org.ontoware.rdf2go.ModelFactory; +import org.ontoware.rdf2go.RDF2Go; import org.ontoware.rdf2go.exception.ModelException; import org.ontoware.rdf2go.exception.ModelRuntimeException; import org.ontoware.rdf2go.model.Model; @@ -113,6 +116,11 @@ public static final String CFG_ADMINISTRATOR_PASSWORD = "administrator.password"; /** + * Filename of the datasource config file in the configuration directory + */ + public static final String SERVERCONFIG_FILENAME = "serverconfig.trig"; + + /** * Configuration parameters passed to the server. * They are partly read from a properties file. * @author sauermann @@ -215,6 +223,7 @@ /** * Actual model that stores the configuration data. + * Call {@link #saveConfigurationFile()} after changing it **/ private Model configurationModel; @@ -289,7 +298,7 @@ // Initialize the configuration model // using a file-backed config modelset { - configurationFile = new File(parameters.configurationDirectory, "dsconfig.trig"); + configurationFile = new File(parameters.configurationDirectory, SERVERCONFIG_FILENAME); configurationModelSet = factory.createModelSet(); configurationModelSet.open(); if (configurationFile.exists()) { @@ -318,7 +327,7 @@ // apertureServerCrawlerHandler = new ServerCrawlerHandler( // apertureRegistries, // this); - apertureServerCrawlerHandler = new DrupalCrawlerHandler(registries); + loadCrawlerHandler(); // initialize the data source collection try { @@ -353,7 +362,9 @@ log.exiting(ServerImpl.class.getName(),"init"); } - /** + + + /** * The configuration file was changed in the model, save it */ private synchronized void saveConfigurationFile() { @@ -1387,16 +1398,53 @@ } public String getCrawlerHandlerConfig(String mimeType) { - // TODO Auto-generated method stub - return null; + Model crawlerhandlerconfig = configurationModelSet.getModel(APERTURESERVER_CRAWLERHANDLERCONTEXTURI); + String result = RDFTool.modelToString(crawlerhandlerconfig, Syntax.forMimeType(mimeType)); + return result; } public void setCrawlerHandlerConfig(String newRDFConfiguration, String mimeType) { - // TODO Auto-generated method stub + // Parse, that will cause most errors, if any + Model newModel = RDFTool.stringToModel(newRDFConfiguration, Syntax.forMimeType(mimeType)); + try { + // replace the existing rdf, that should work smoothly + Model crawlerhandlerconfig = configurationModelSet.getModel(APERTURESERVER_CRAWLERHANDLERCONTEXTURI); + crawlerhandlerconfig.removeAll(); + crawlerhandlerconfig.addModel(newModel); + } finally { + newModel.close(); + } + saveConfigurationFile(); + reloadCrawlerHandler(); } + /** + * The crawler handler config was changed, reload the crawler handler + */ + private void reloadCrawlerHandler() { + stop(); + if (apertureServerCrawlerHandler != null) { + apertureServerCrawlerHandler.dispose(); + apertureServerCrawlerHandler = null; + } + loadCrawlerHandler(); + start(); + } + + /** + * Load the crawlerHandler + */ + private void loadCrawlerHandler() { + try { + apertureServerCrawlerHandler = new DrupalCrawlerHandler(this.apertureRegistries, + configurationModelSet.getModel(APERTURESERVER_CRAWLERHANDLERCONTEXTURI)); + } catch (Exception x) { + log.log(Level.WARNING, "Cannot initialize Crawler Handler: "+x, x); + } + } + public DataSourceLog getDataSourceLog(String dataSourceUri) throws ApertureServerException { return getDataSourcePool().getDataSourceLog(dataSourceUri); Added: aperture-webserver/trunk/src/org/semanticdesktop/aperture/servlet/ConfigRESTServlet.java =================================================================== --- aperture-webserver/trunk/src/org/semanticdesktop/aperture/servlet/ConfigRESTServlet.java (rev 0) +++ aperture-webserver/trunk/src/org/semanticdesktop/aperture/servlet/ConfigRESTServlet.java 2010-03-23 19:14:24 UTC (rev 2298) @@ -0,0 +1,127 @@ +package org.semanticdesktop.aperture.servlet; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.io.IOUtils; +import org.ontoware.rdf2go.model.Model; +import org.ontoware.rdf2go.model.Syntax; +import org.ontoware.rdf2go.util.RDFTool; +import org.semanticdesktop.aperture.server.ApertureServer; + +/** + * Configuration via REST. + * + * The interface is similar to the constants defined in {@link ApertureServer} + * + * This intentionally does not use any REST frameworks, as they seem to add a lot of weight. + * <h3>Content negotiation</h3> + * This hack does only support plain and simple single accept headers. Go away with your fancy weights and stuff. Use this: + * <pre> +Accept: application/rdf+xml +</pre> + * + * <h3>Crawlerhandler</h3> + * Supports GET and PUT for the crawlerhandler. + * The address to GET/PUT is /config/api/crawlerhandler/ + * Servlet implementation class for Servlet: ConfigRESTServlet + * + */ + public class ConfigRESTServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { + static final long serialVersionUID = 1L; + + /** + * REST path for crawlerhandler + */ + static final String CRAWLERHANDLER = "crawlerhandler"; + + /* (non-Java-doc) + * @see javax.servlet.http.HttpServlet#HttpServlet() + */ + public ConfigRESTServlet() { + super(); + } + + /* (non-Java-doc) + * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) + */ + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // authorize + ApertureServerServlet.authenticateAdministrator(request, response, getServletContext()); + + // the part after /api that indicates what we need to do + String pathinfo = request.getPathInfo(); + if (("/"+CRAWLERHANDLER).equals(pathinfo)) { + // get Crawlerhandler config + Syntax syntax = Syntax.RdfXml; + String accept = request.getHeader("Accept"); + try { + syntax = Syntax.forMimeType(accept); + if (syntax == null) + { + syntax = Syntax.RdfXml; + log("Cannot find RDF Syntax for Accept-Header '"+accept+"'. Falling back to "+syntax.getMimeType()); + } + } catch (Exception x) { + log("Cannot parse Accept-Header '"+accept+"': "+x, x); + } + // return the config + String result = ApertureServerServlet.getApertureServer(getServletContext()).getCrawlerHandlerConfig(syntax.getMimeType()); + response.setContentType(syntax.getMimeType()); + PrintWriter writer = response.getWriter(); + writer.print(result); + } else { + throw new ServletException("Cannot answer "+pathinfo); + } + } + + /* (non-Java-doc) + * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) + */ + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + } + + + @Override + protected void doPut(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // authorize + if (!ApertureServerServlet.authenticateAdministrator(request, response, getServletContext())) + return; + + String pathinfo = request.getPathInfo(); + String url = request.getRequestURL().toString(); + System.out.println(url); + if (("/"+CRAWLERHANDLER).equals(pathinfo)) { + // PUT Crawlerhandler config + BufferedReader inputReader = request.getReader(); + String input = IOUtils.toString(inputReader); + // Syntax? + String contenttype = request.getContentType(); + Syntax syntax = Syntax.forMimeType(contenttype); + if (syntax == null) { + syntax = Syntax.RdfXml; + log("Content-Type unknown: "+contenttype+". Falling back to "+syntax.getMimeType()); + } + // set it. It will throw exceptions if something goes wrong + ApertureServerServlet.getApertureServer(getServletContext()). + setCrawlerHandlerConfig(input, syntax.getMimeType()); + } else { + throw new ServletException("Cannot answer "+pathinfo); + } + } + + /* (non-Javadoc) + * @see javax.servlet.GenericServlet#init() + */ + public void init() throws ServletException { + // TODO Auto-generated method stub + super.init(); + } +} \ No newline at end of file Property changes on: aperture-webserver/trunk/src/org/semanticdesktop/aperture/servlet/ConfigRESTServlet.java ___________________________________________________________________ Added: svn:keywords + "LastChangedDate LastChangedRevision URL" Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |