001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019package org.apache.isis.viewer.restfulobjects.applib.util; 020 021import java.io.UnsupportedEncodingException; 022import java.net.URLDecoder; 023import java.net.URLEncoder; 024import java.util.Arrays; 025import java.util.List; 026 027import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation; 028import org.codehaus.jackson.JsonNode; 029 030import com.google.common.base.Charsets; 031import com.google.common.base.Function; 032import com.google.common.collect.Lists; 033 034public final class UrlEncodingUtils { 035 036 public final static Function<String, String> FUNCTION = new Function<String, String>() { 037 038 @Override 039 public String apply(final String input) { 040 try { 041 return URLDecoder.decode(input, "UTF-8"); 042 } catch (final UnsupportedEncodingException e) { 043 return ""; 044 } 045 } 046 }; 047 048 private UrlEncodingUtils() { 049 } 050 051 public static String urlDecode(final String string) { 052 return FUNCTION.apply(string); 053 } 054 055 public static List<String> urlDecode(final List<String> values) { 056 return Lists.transform(values, FUNCTION); 057 } 058 059 public static String[] urlDecode(final String[] values) { 060 final List<String> asList = Arrays.asList(values); 061 return urlDecode(asList).toArray(new String[] {}); 062 } 063 064 public static String urlEncode(final JsonNode jsonNode) { 065 return urlEncode(jsonNode.toString()); 066 } 067 068 public static String urlEncode(final JsonRepresentation jsonRepresentation ) { 069 return urlEncode(jsonRepresentation.toString()); 070 } 071 072 public static String urlEncode(final String str) { 073 try { 074 return URLEncoder.encode(str, Charsets.UTF_8.name()); 075 } catch (final UnsupportedEncodingException e) { 076 // shouldn't happen 077 throw new RuntimeException(e); 078 } 079 } 080 081}