Changeset 5917 for ComponentRegistry


Ignore:
Timestamp:
01/15/15 15:00:00 (9 years ago)
Author:
Twan Goosen
Message:

First steps towards adapting to CCR as a replacement of ISOcat (refs #731): IsocatSerlvet? -> ConceptRegistryServlet?. Context param ...isocatRestUrl replaced with ...ccrRestUrl.
TODO: Apply transformation (both to DCIF and JSON), tweak CCR request (filtering of returned properties)

Location:
ComponentRegistry/trunk/ComponentRegistry/src
Files:
7 edited
1 moved

Legend:

Unmodified
Added
Removed
  • ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/Configuration.java

    r5549 r5917  
    1919public class Configuration {
    2020
    21     private static Logger LOG = LoggerFactory.getLogger(Configuration.class);
     21    private final static Logger LOG = LoggerFactory.getLogger(Configuration.class);
    2222    //NOTE: Default values, can be overwritten in applicationContext.xml
    2323    private String generalComponentSchema = "https://infra.clarin.eu/cmd/general-component-schema.xsd";
    2424    private String component2SchemaXsl = "https://infra.clarin.eu/cmd/xslt/comp2schema-v2/comp2schema.xsl";//"http://www.clarin.eu/cmd/comp2schema.xsl";
    25     private String isocatRestUrl = "http://www.isocat.org/rest/";
     25    private String ccrRestUrl = "https://openskos.meertens.knaw.nl/ccr/api/";
    2626    private Collection<String> adminUsers = new HashSet<String>();
    2727    private List<String> displayNameShibbolethKeys = new ArrayList<String>();
    2828
    2929    {//Default values
    30         displayNameShibbolethKeys.add("displayName");
    31         displayNameShibbolethKeys.add("commonName");
     30        displayNameShibbolethKeys.add("displayName");
     31        displayNameShibbolethKeys.add("commonName");
    3232    }
    33     private Map<String, String> schemaLocations = new HashMap<String, String>();
     33    private final Map<String, String> schemaLocations = new HashMap<String, String>();
    3434
    3535    {//Default values
    36         schemaLocations.put(CMDComponentSpec.class.getName(),
    37                 "http://www.clarin.eu/cmd/ http://infra.clarin.eu/cmd/general-component-schema.xsd");
     36        schemaLocations.put(CMDComponentSpec.class.getName(),
     37                "http://www.clarin.eu/cmd/ http://infra.clarin.eu/cmd/general-component-schema.xsd");
    3838    }
    3939    private final static Configuration INSTANCE = new Configuration();
     
    4343
    4444    public static Configuration getInstance() {
    45         return INSTANCE;
     45        return INSTANCE;
    4646    }
    4747
    4848    public String getComponent2SchemaXsl() {
    49         return component2SchemaXsl;
     49        return component2SchemaXsl;
    5050    }
    5151
    5252    public List<String> getDisplayNameShibbolethKeys() {
    53         return displayNameShibbolethKeys;
     53        return displayNameShibbolethKeys;
    5454    }
    5555
    5656    public String getGeneralComponentSchema() {
    57         return generalComponentSchema;
     57        return generalComponentSchema;
    5858    }
    5959
    60     public String getIsocatRestUrl() {
    61         return isocatRestUrl;
     60    public String getCcrRestUrl() {
     61        return ccrRestUrl;
    6262    }
    6363
    6464    public String getSchemaLocation(String key) {
    65         return schemaLocations.get(key);
     65        return schemaLocations.get(key);
    6666    }
    6767
    6868    public boolean isAdminUser(Principal principal) {
    69         if (principal != null) {
    70             return principal.getName().trim().length() > 0 // user name must be set (in case an empty entry is in admin users list)
    71                     && adminUsers.contains(principal.getName());
    72         }
    73         return false;
     69        if (principal != null) {
     70            return principal.getName().trim().length() > 0 // user name must be set (in case an empty entry is in admin users list)
     71                    && adminUsers.contains(principal.getName());
     72        }
     73        return false;
    7474    }
    7575
    7676    public boolean isAdminUser(String name) {
    77         if (name != null) {
    78             return name.trim().length() > 0 // user name must be set (in case an empty entry is in admin users list)
    79                     && adminUsers.contains(name);
    80         }
    81         return false;
     77        if (name != null) {
     78            return name.trim().length() > 0 // user name must be set (in case an empty entry is in admin users list)
     79                    && adminUsers.contains(name);
     80        }
     81        return false;
    8282    }
    83    
     83
    8484    public void setAdminUsers(Collection<String> adminUsers) {
    85         LOG.debug("Setting adminUsers to {}", Arrays.toString(adminUsers.toArray()));
    86         this.adminUsers = adminUsers;
     85        LOG.debug("Setting adminUsers to {}", Arrays.toString(adminUsers.toArray()));
     86        this.adminUsers = adminUsers;
    8787    }
    88    
    89    
     88
    9089    /**
    9190     *
     
    9392     */
    9493    public void setAdminUsersList(String adminUsersList) {
    95         String[] adminUsersArray = adminUsersList.trim().split("\\s+");
    96         if (LOG.isDebugEnabled()) {
    97             LOG.info("Setting adminUsersList to {}", Arrays.toString(adminUsersArray));
    98         }
    99         setAdminUsers(Arrays.asList(adminUsersArray));
     94        String[] adminUsersArray = adminUsersList.trim().split("\\s+");
     95        if (LOG.isDebugEnabled()) {
     96            LOG.info("Setting adminUsersList to {}", Arrays.toString(adminUsersArray));
     97        }
     98        setAdminUsers(Arrays.asList(adminUsersArray));
    10099    }
    101100
    102101    public void setComponent2SchemaXsl(String component2SchemaXsl) {
    103         LOG.info("Setting component2SchemaXsl to {}", component2SchemaXsl);
    104         this.component2SchemaXsl = component2SchemaXsl;
     102        LOG.info("Setting component2SchemaXsl to {}", component2SchemaXsl);
     103        this.component2SchemaXsl = component2SchemaXsl;
    105104    }
    106105
    107106    public void setComponentSpecSchemaLocation(String componentSpecSchemaLocation) {
    108         LOG.info("Setting componentSpecSchemaLocation to {}", componentSpecSchemaLocation);
    109         schemaLocations.put(CMDComponentSpec.class.getName(), componentSpecSchemaLocation);
     107        LOG.info("Setting componentSpecSchemaLocation to {}", componentSpecSchemaLocation);
     108        schemaLocations.put(CMDComponentSpec.class.getName(), componentSpecSchemaLocation);
    110109    }
    111110
    112111    public void setDisplayNameShibbolethKeys(List<String> displayNameShibbolethKeys) {
    113         LOG.info("Setting displayNameShibbolethKeys to {}", displayNameShibbolethKeys);
    114         this.displayNameShibbolethKeys = displayNameShibbolethKeys;
     112        LOG.info("Setting displayNameShibbolethKeys to {}", displayNameShibbolethKeys);
     113        this.displayNameShibbolethKeys = displayNameShibbolethKeys;
    115114    }
    116115
    117116    public void setGeneralComponentSchema(String generalComponentSchema) {
    118         LOG.info("Setting generalComponentSchema to {}", generalComponentSchema);
    119         this.generalComponentSchema = generalComponentSchema;
     117        LOG.info("Setting generalComponentSchema to {}", generalComponentSchema);
     118        this.generalComponentSchema = generalComponentSchema;
    120119    }
    121120
    122     public void setIsocatRestUrl(String isocatRestUrl) {
    123         LOG.info("Setting isocatRestUrl to {}", isocatRestUrl);
    124         this.isocatRestUrl = isocatRestUrl;
     121    public void setCcrRestUrl(String ccrRestUrl) {
     122        LOG.info("Setting ccrRestUrl to {}", ccrRestUrl);
     123        this.ccrRestUrl = ccrRestUrl;
    125124    }
    126125
    127126    public String[] getAdminUsersArray() {
    128         return adminUsers.toArray(new String[0]);
     127        return adminUsers.toArray(new String[0]);
    129128    }
    130129}
  • ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/servlet/ConceptRegistryServlet.java

    r5903 r5917  
    2020/**
    2121 *
    22  * Servlet responsible for providing a bridge to the isocat REST interface. Can be called by the frontend to circumvent crosscripting and
    23  * FLASH/Browser limitation in setting the headers of a request.
     22 * Servlet responsible for providing a bridge to the CLARIN Concept Registry
     23 * (CCR) REST interface. Can be called by the front end to circumvent
     24 * cross-scripting and FLASH/Browser limitation in setting the headers of a
     25 * request.
    2426 *
    2527 */
    26 public class IsocatServlet extends HttpServlet {
     28public class ConceptRegistryServlet extends HttpServlet {
    2729
    28     private final static Logger logger = LoggerFactory.getLogger(IsocatServlet.class);
     30    private final static Logger logger = LoggerFactory.getLogger(ConceptRegistryServlet.class);
    2931    private static final long serialVersionUID = 1L;
    3032    private transient WebResource service;
    31     private final static String DCIF_XML = "application/dcif+xml";
    3233
    3334    @Override
    3435    public void init(ServletConfig config) throws ServletException {
    35         super.init(config);
    36         URI uri = UriBuilder.fromUri(Configuration.getInstance().getIsocatRestUrl()).build();
    37         Client client = Client.create();
    38         service = client.resource(uri);
    39         logger.info("Instantiated ISOcat servlet on URI {}", uri);
     36        super.init(config);
     37        URI uri = UriBuilder.fromUri(Configuration.getInstance().getCcrRestUrl()).build();
     38        Client client = Client.create();
     39        service = client.resource(uri);
     40        logger.info("Instantiated CCR servlet on URI {}", uri);
    4041    }
    4142
    4243    @Override
    4344    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    44         MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
    45         queryParams.add("dcif-mode", "list");
    46         String keywords = req.getParameter("keywords");
    47         logger.debug("ISOcat request: keywords = {}", keywords);
    48         queryParams.add("keywords", keywords);
    49         String type = req.getParameter("type"); //simple, complex or no type param to search in everything
    50         logger.debug("ISOcat request: type = {}", type);
    51         if (type != null) {
    52             queryParams.add("type", type);
    53         }
    54         queryParams.add("profile", "Metadata"); //always search in metadata profile
    55         resp.setContentType(MediaType.TEXT_XML);
     45        final MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
    5646
    57         final WebResource requestResource = service.path("/user/guest/search").queryParams(queryParams);
    58         logger.info("Forwarding ISOcat request to {}", requestResource.getURI());
    59        
    60         final String result = requestResource.accept(DCIF_XML).get(String.class);
    61         logger.debug("ISOcat result: {}", result);
    62         resp.getWriter().write(result);
    63         resp.flushBuffer();
     47        // Set keywords
     48        String keywords = req.getParameter("keywords");
     49        logger.debug("ISOcat request: keywords = {}", keywords);
     50        queryParams.add("q", keywords);
     51
     52        //TODO: Scope by concept scheme?
     53        //TODO: Set fields to be returned (fl=...)
     54        final WebResource requestResource = service.path("find-concepts").queryParams(queryParams);
     55        logger.info("Forwarding CCR request to {}", requestResource.getURI());
     56
     57        // Send request to CCR
     58        final String result = requestResource.accept(MediaType.APPLICATION_XML).get(String.class);
     59        logger.debug("CCR result: {}", result);
     60
     61        final String acceptHeader = req.getHeader("Accept");
     62        if (acceptHeader.contains(MediaType.APPLICATION_JSON)) {
     63            serveJSON(resp, result);
     64        } else {
     65            serveDCIF(resp, result);
     66        }
     67    }
     68
     69    private void serveDCIF(HttpServletResponse resp, final String ccrResult) throws IOException {
     70        // Prepare response
     71        // TODO: transform to DCIF
     72        resp.setContentType(MediaType.APPLICATION_XML);
     73        resp.setCharacterEncoding("UTF-8");
     74
     75        resp.getWriter().write(ccrResult);
     76        resp.flushBuffer();
     77    }
     78
     79    private void serveJSON(HttpServletResponse resp, String result) throws IOException {
     80        //TODO: Implement JSON response
     81        resp.sendError(HttpServletResponse.SC_NOT_ACCEPTABLE, "JSON not supported yet - to be implemented in backend");
    6482    }
    6583}
  • ComponentRegistry/trunk/ComponentRegistry/src/main/resources/spring-config/applicationContext.xml

    r5549 r5917  
    5151                <property name="componentSpecSchemaLocation"
    5252                        value="${eu.clarin.cmdi.componentregistry.componentSpecSchemaLocation}" />
    53                 <property name="isocatRestUrl"
    54                         value="${eu.clarin.cmdi.componentregistry.isocatRestUrl}" />
     53                <property name="ccrRestUrl"
     54                        value="${eu.clarin.cmdi.componentregistry.ccrRestUrl}" />
    5555                <!-- Extra attribute keys that are passed in a shibboleth authenticated
    5656                        request principal. You need to configure the shhaa.xml file to enable the
  • ComponentRegistry/trunk/ComponentRegistry/src/main/webapp/META-INF/context.xml

    r5879 r5917  
    6767        Base location of the ISOcat service
    6868    -->
    69   <Parameter name="eu.clarin.cmdi.componentregistry.isocatRestUrl" value="https://catalog.clarin.eu/isocat/rest/"/>
     69  <Parameter name="eu.clarin.cmdi.componentregistry.ccrRestUrl" value="https://openskos.meertens.knaw.nl/ccr/api/"/>
    7070</Context>
  • ComponentRegistry/trunk/ComponentRegistry/src/main/webapp/WEB-INF/web-shib.xml

    r5827 r5917  
    102102
    103103    <servlet>
    104         <servlet-name>Isocat Servlet</servlet-name>
    105         <servlet-class>clarin.cmdi.componentregistry.servlet.IsocatServlet</servlet-class>
     104        <servlet-name>Concept Registry Servlet</servlet-name>
     105        <servlet-class>clarin.cmdi.componentregistry.servlet.ConceptRegistryServlet</servlet-class>
    106106        <load-on-startup>1</load-on-startup>
    107107    </servlet>
    108108    <servlet-mapping>
    109         <servlet-name>Isocat Servlet</servlet-name>
    110         <url-pattern>/isocat/*</url-pattern>
     109        <servlet-name>Concept Registry Servlet</servlet-name>
     110        <url-pattern>/ccr/*</url-pattern>
    111111    </servlet-mapping>
    112112    <servlet>
  • ComponentRegistry/trunk/ComponentRegistry/src/main/webapp/WEB-INF/web-test.xml

    r5826 r5917  
    7676        <servlet-name>ComponentRegistry Web Application</servlet-name>
    7777        <url-pattern>/rest/*</url-pattern>
    78     </servlet-mapping>
     78    </servlet-mapping>   
     79   
    7980    <servlet>
    80         <servlet-name>Isocat Servlet</servlet-name>
    81         <servlet-class>clarin.cmdi.componentregistry.servlet.IsocatServlet
    82         </servlet-class>
     81        <servlet-name>Concept Registry Servlet</servlet-name>
     82        <servlet-class>clarin.cmdi.componentregistry.servlet.ConceptRegistryServlet</servlet-class>
    8383        <load-on-startup>1</load-on-startup>
    8484    </servlet>
    8585    <servlet-mapping>
    86         <servlet-name>Isocat Servlet</servlet-name>
    87         <url-pattern>/isocat/*</url-pattern>
     86        <servlet-name>Concept Registry Servlet</servlet-name>
     87        <url-pattern>/ccr/*</url-pattern>
    8888    </servlet-mapping>
     89   
    8990    <servlet>
    9091        <servlet-name>JerseyJaxrsConfig</servlet-name>
  • ComponentRegistry/trunk/ComponentRegistry/src/main/webapp/WEB-INF/web.xml

    r5879 r5917  
    8282        <url-pattern>/rest/*</url-pattern>
    8383    </servlet-mapping>
     84   
    8485    <servlet>
    85         <servlet-name>Isocat Servlet</servlet-name>
    86         <servlet-class>clarin.cmdi.componentregistry.servlet.IsocatServlet
    87         </servlet-class>
     86        <servlet-name>Concept Registry Servlet</servlet-name>
     87        <servlet-class>clarin.cmdi.componentregistry.servlet.ConceptRegistryServlet</servlet-class>
    8888        <load-on-startup>1</load-on-startup>
    8989    </servlet>
    9090    <servlet-mapping>
    91         <servlet-name>Isocat Servlet</servlet-name>
    92         <url-pattern>/isocat/*</url-pattern>
     91        <servlet-name>Concept Registry Servlet</servlet-name>
     92        <url-pattern>/ccr/*</url-pattern>
    9393    </servlet-mapping>
     94   
    9495    <servlet>
    9596        <servlet-name>JerseyJaxrsConfig</servlet-name>
  • ComponentRegistry/trunk/ComponentRegistry/src/test/resources/spring-config/component-registry.properties

    r4680 r5917  
    33eu.clarin.cmdi.componentregistry.component2SchemaXslUrl=https://infra.clarin.eu/cmd/xslt/comp2schema-v2/comp2schema.xsl
    44eu.clarin.cmdi.componentregistry.componentSpecSchemaLocation=http://www.clarin.eu/cmd http://lux16.mpi.nl/general-component-schema.xsd
    5 eu.clarin.cmdi.componentregistry.isocatRestUrl=https://catalog.clarin.eu/isocat/rest/
     5eu.clarin.cmdi.componentregistry.ccrRestUrl=https://openskos.meertens.knaw.nl/ccr/api/
    66eu.clarin.cmdi.componentregistry.jpaDialect=org.hibernate.dialect.HSQLDialect
Note: See TracChangeset for help on using the changeset viewer.