All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.psu.swe.scim.server.utility.EndpointUtil Maven / Gradle / Ivy

There is a newer version: 2.22.4
Show newest version
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
 
* http://www.apache.org/licenses/LICENSE-2.0

* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/

package edu.psu.swe.scim.server.utility;

import java.net.URI;

import javax.enterprise.context.RequestScoped;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;

import edu.psu.swe.scim.spec.annotation.ScimResourceType;
import edu.psu.swe.scim.spec.exception.InvalidScimResourceException;
import edu.psu.swe.scim.spec.resources.ScimResource;

@RequestScoped
public class EndpointUtil {
  private URI baseUri;
  
  public UriBuilder getBaseUriBuilder() {
    return UriBuilder.fromUri(baseUri);
  }
  
  public UriBuilder getEndpointUriBuilder(Class resource) {
    ScimResourceType[] sr = resource.getAnnotationsByType(ScimResourceType.class);
    
    if (baseUri == null) {
      throw new IllegalStateException("BaseUri for Resource "+resource+" was null");
    }

    if (sr.length == 0 || sr.length > 1) {
      throw new InvalidScimResourceException("ScimResource class must have a ScimResourceType annotation");
    }

    // yuck! TODO where to get REST endpoint from?
    String resourceName = sr[0].name() + "s";  
    
    return UriBuilder.fromUri(baseUri).path(resourceName);
  }
  
  public void process(UriInfo uriInfo) {
    baseUri = uriInfo.getBaseUri();
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy