// Path: netty-codecs/src/main/java/com/kalixia/grapi/codecs/jaxrs/UriTemplateUtils.java
// @SuppressWarnings("PMD.UseConcurrentHashMap")
// public class UriTemplateUtils {
//     private static final Map<String, UriTemplate> uriTemplatesCache = new ConcurrentHashMap<>();
// 
//     public static boolean hasParameters(String uriTemplate) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         return template.getNumberOfTemplateVariables() > 0;
//     }
// 
//     public static Map<String, String> extractParameters(String uriTemplate, String uri) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         Map<String, String> parametersMap = new ConcurrentHashMap<>();
//         uri = sanitizeUri(uri);
//         boolean match = template.match(uri, parametersMap);
//         return match ? parametersMap : Collections.<String, String>emptyMap();
//     }
// 
//     public static List<String> extractParametersNames(String uriTemplate) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         return template.getTemplateVariables();
//     }
// 
//     public static int getNumberOfExplicitRegexes(String uriTemplate) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         return template.getNumberOfExplicitRegexes();
//     }
// 
//     public static String createURI(String uriTemplate, Map<String, String> parameters) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         return template.createURI(parameters);
//     }
// 
//     public static String createURI(String uriTemplate, String... parameters) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         return template.createURI(parameters);
//     }
// 
//     private static UriTemplate createUriTemplateOrGetFromCache(String uriTemplate) {
//         UriTemplate template = uriTemplatesCache.get(uriTemplate);
//         if (template == null) {
//             template = new UriTemplate(uriTemplate);
//             uriTemplatesCache.put(uriTemplate, template);
//         }
//         return template;
//     }
// 
//     private static String sanitizeUri(String uri) {
//         if (uri.endsWith("/")) {
//             uri = uri.substring(0, uri.length() - 1);
//         }
//         return uri.replaceAll("//", "/");
//     }
// }


import com.kalixia.grapi.codecs.jaxrs.UriTemplateUtils;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
    @SuppressWarnings({"PMD.OnlyOneReturn", "PMD.IfStmtsMustUseBraces"})
    public static class Test {
        @NotNull
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            final StringBuilder sb = new StringBuilder("Test{");
            sb.append("name='").append(name).append('\'');
            sb.append('}');
            return sb.toString();
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (!(o instanceof Test)) return false;

            Test test = (Test) o;

            if (name != null ? !name.equals(test.name) : test.name != null) return false;

// Path: netty-codecs/src/main/java/com/kalixia/grapi/codecs/jaxrs/UriTemplateUtils.java
// @SuppressWarnings("PMD.UseConcurrentHashMap")
// public class UriTemplateUtils {
//     private static final Map<String, UriTemplate> uriTemplatesCache = new ConcurrentHashMap<>();
// 
//     public static boolean hasParameters(String uriTemplate) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         return template.getNumberOfTemplateVariables() > 0;
//     }
// 
//     public static Map<String, String> extractParameters(String uriTemplate, String uri) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         Map<String, String> parametersMap = new ConcurrentHashMap<>();
//         uri = sanitizeUri(uri);
//         boolean match = template.match(uri, parametersMap);
//         return match ? parametersMap : Collections.<String, String>emptyMap();
//     }
// 
//     public static List<String> extractParametersNames(String uriTemplate) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         return template.getTemplateVariables();
//     }
// 
//     public static int getNumberOfExplicitRegexes(String uriTemplate) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         return template.getNumberOfExplicitRegexes();
//     }
// 
//     public static String createURI(String uriTemplate, Map<String, String> parameters) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         return template.createURI(parameters);
//     }
// 
//     public static String createURI(String uriTemplate, String... parameters) {
//         UriTemplate template = createUriTemplateOrGetFromCache(uriTemplate);
//         return template.createURI(parameters);
//     }
// 
//     private static UriTemplate createUriTemplateOrGetFromCache(String uriTemplate) {
//         UriTemplate template = uriTemplatesCache.get(uriTemplate);
//         if (template == null) {
//             template = new UriTemplate(uriTemplate);
//             uriTemplatesCache.put(uriTemplate, template);
//         }
//         return template;
//     }
// 
//     private static String sanitizeUri(String uri) {
//         if (uri.endsWith("/")) {
//             uri = uri.substring(0, uri.length() - 1);
//         }
//         return uri.replaceAll("//", "/");
//     }
// }


// Path: integration-tests/src/main/java/com/kalixia/grapi/ObjectsResource.java
import com.kalixia.grapi.codecs.jaxrs.UriTemplateUtils;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;

    @SuppressWarnings({"PMD.OnlyOneReturn", "PMD.IfStmtsMustUseBraces"})
    public static class Test {
        @NotNull
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            final StringBuilder sb = new StringBuilder("Test{");
            sb.append("name='").append(name).append('\'');
            sb.append('}');
            return sb.toString();
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (!(o instanceof Test)) return false;

            Test test = (Test) o;

            if (name != null ? !name.equals(test.name) : test.name != null) return false;

            return true;