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

com.agiletec.aps.system.services.url.AbstractURLManager Maven / Gradle / Ivy

Go to download

Entando Engine: an agile, modern and user-centric open source Portal platform.

There is a newer version: 6.2.27
Show newest version
/*
 * Copyright 2015-Present Entando Inc. (http://www.entando.com) All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */
package com.agiletec.aps.system.services.url;

import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.agiletec.aps.system.RequestContext;
import com.agiletec.aps.system.common.AbstractService;

/**
 * Servizio di creazione di URL alle risorse del sistema. Per ora è previsto
 * solo l'URL da utilizzare come link ad una pagina del portale.
* Costituisce anche la factory per gli oggetti PageURL. * La classe è astratta in quanto la mappatura tra url e risorse può * essere differente a seconda delle esigenze. Ad esempio, in un portale * multilingua può essere utile introdurre il codice lingua come parte * dell'URL delle pagine. Alcuni metodi di validità generale sono implementati. * @author M.Diana */ public abstract class AbstractURLManager extends AbstractService implements IURLManager { private static final Logger _logger = LoggerFactory.getLogger(AbstractURLManager.class); /** * Crea e restituisce un oggetto PageURL.
* N.B.: l'oggetto restituito deve essere utilizzato nell'ambito * della richiesta corrente (non memorizzarlo in modo più persistente, ad * esempio in sessione) in quanto contiene riferimenti ad altri servizi. * @param reqCtx Il contesto della richiesta. * @return L'oggetto creato. */ @Override public PageURL createURL(RequestContext reqCtx) { return new PageURL(this, reqCtx); } /** * Costruisce la query string a partire dai parametri passati. * @param params Una mappa di parametri, indicizzata in base al nome. * @return La query string; se la mappa passata è nulla o vuota restituisce * una stringa vuota, se la mappa non è vuota la stringa restituita comprende * il carattere ? di introduzione e il separatore & se ci sono più parametri. */ protected String createQueryString(Map params) { return this.createQueryString(params, true); } protected String createQueryString(Map params, boolean escapeAmp) { String queryString = ""; if (params != null && !params.isEmpty()) { StringBuilder buf = new StringBuilder(); buf.append("?"); Iterator keyIter = params.keySet().iterator(); int index = 1; String paramSeparator = escapeAmp ? "&" : "&"; while (keyIter.hasNext()) { String name = keyIter.next(); buf.append(this.encodeParam(name)).append("=").append(this.encodeParam(params.get(name))); if (index != params.size()) { buf.append(paramSeparator); index++; } } queryString = buf.toString(); } return queryString; } protected String encodeParam(String param) { String value = null; try { value = URLEncoder.encode(param, ENCODING_CHARSET); } catch (Throwable t) { _logger.error("Error encoding param value: " + param); value = "";// Parametro vuoto } return value; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy