package org.exoplatform.services.wcm.friendly;
/*
* Copyright (C) 2003-2009 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
import java.util.Map;
import org.exoplatform.services.wcm.friendly.impl.FriendlyPlugin;
/**
* Provides support for friendly URL in Content.
* <p></p>
* For example:
* If URL is
* http://mysite.com/portal/public/acme/detail?path=/repository/collaboration/sites content/live/acme/web contents/news/news1
* where the friendly key could be: acme
* with unfriendly value as: /public/acme/detail?path=/repository/collaboration/sites content/live/acme/web contents,
* the friendly URL becomes: http://mysite.com/portal/content/acme/news/news1.
*
* @LevelAPI Experimental
*
*/
public interface FriendlyService {
/**
* Uses a servlet in the portal app to forward the friendly URL to its corresponding unfriendly one.
* By default, the servelt name is "content".
*
* @return The servlet name.
*/
public String getServletName();
/**
* Checks if the Friendly Service is active.
*
* @return "True" if the Friendly Service is active. Otherwise, it returns "false".
*/
public boolean isEnabled();
/**
* Allows to add configuration to the Friendly Service.
*
* @param plugin The Friendly plugin.
*/
public void addConfiguration(FriendlyPlugin plugin);
/**
* Gets the friendly URI corresponding to an unfriendly URI.
* <p></p>
* For example:<br>
*
* friendly = acme<br>
* unfriendly = /public/acme/detail?path=/repository/collaboration/sites content/live/acme/web contents<br>
*
* @param unfriendlyUri The current unfriendly URI.
* @return The friendly URI.
*/
public String getFriendlyUri(String unfriendlyUri);
/**
* Gets the unfriendly URI corresponding to a friendly URI.
* <br>
* For example:<br>
*
* friendly = acme<br>
* unfriendly = /public/acme/detail?path=/repository/collaboration/sites content/live/acme/web contents<br>
*
* @param friendlyUri The current friendly URI.
* @return The unfriendly URI.
*/
public String getUnfriendlyUri(String friendlyUri);
/**
* Adds a new {friendly, unfriendly} couple.
*
* @param friendlyUri The friendly URI.
* @param unfriendlyUri The unfriendly URI.
*/
public void addFriendly(String friendlyUri, String unfriendlyUri);
/**
* Removes a friendly entry based on the friendly key.
*
* @param friendlyUri The friendly URI.
*/
public void removeFriendly(String friendlyUri);
/**
* Gets all {friendly, unfriendly} entries.
*
* @return The map of entries.
*/
public Map<String, String> getFriendlies();
}