/** * Copyright (c) 2000-present Liferay, Inc. 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.liferay.portal.atom; import com.liferay.portal.kernel.util.CharPool; import com.liferay.portal.kernel.util.StringPool; import org.apache.abdera.protocol.server.RequestContext; import org.apache.abdera.protocol.server.TargetBuilder; import org.apache.abdera.protocol.server.TargetType; /** * @author Igor Spasic */ public class AtomTargetBuilder implements TargetBuilder { @Override public String urlFor( RequestContext requestContext, Object key, Object param) { String url = String.valueOf(requestContext.getBaseUri()); if (url.endsWith(StringPool.SLASH)) { url = url.substring(0, url.length() - 1); } url += requestContext.getTargetPath(); String query = StringPool.BLANK; int questionIndex = url.indexOf(CharPool.QUESTION); if (questionIndex != -1) { query = url.substring(questionIndex); url = url.substring(0, questionIndex); } String keyString = key.toString(); if (keyString.equals(TargetType.SERVICE)) { return url + query; } if (!keyString.equals(TargetType.COLLECTION)) { return null; } String collectionName = CharPool.SLASH + (String)param; if (url.endsWith(collectionName)) { return url + query; } if (url.contains(collectionName + CharPool.SLASH)) { int collectionIndex = url.indexOf(collectionName); collectionIndex += collectionName.length() + 1; url = url.substring(0, collectionIndex); return url; } return url + collectionName + query; } }