mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Created channels.get Rest Api webscript.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28459 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2010 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco 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.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.alfresco.repo.web.scripts.publishing;
|
||||
|
||||
/**
|
||||
* @author Nick Smith
|
||||
* @since 4.0
|
||||
*
|
||||
*/
|
||||
public class AbstractPublishingWebscript
|
||||
{
|
||||
|
||||
}
|
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2010 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco 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.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.alfresco.repo.web.scripts.publishing;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.alfresco.service.cmr.publishing.channels.Channel;
|
||||
import org.alfresco.service.cmr.publishing.channels.ChannelService;
|
||||
import org.springframework.extensions.webscripts.Cache;
|
||||
import org.springframework.extensions.webscripts.DeclarativeWebScript;
|
||||
import org.springframework.extensions.webscripts.Status;
|
||||
import org.springframework.extensions.webscripts.WebScriptException;
|
||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||
|
||||
/**
|
||||
* @author Nick Smith
|
||||
* @since 4.0
|
||||
*
|
||||
*/
|
||||
public class ChannelsGet extends DeclarativeWebScript
|
||||
{
|
||||
public static final String DATA_KEY = "data";
|
||||
public static final String SITE_ID = "site_id";
|
||||
|
||||
private ChannelService channelService;
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache)
|
||||
{
|
||||
|
||||
PublishingModelBuilder builder = new PublishingModelBuilder();
|
||||
return buildModel(builder, req, status, cache);
|
||||
}
|
||||
|
||||
private Map<String, Object> buildModel(PublishingModelBuilder builder,
|
||||
WebScriptRequest req, Status status, Cache cache)
|
||||
{
|
||||
Map<String, String> params = req.getServiceMatch().getTemplateVars();
|
||||
String siteId = params.get(SITE_ID);
|
||||
if (siteId== null)
|
||||
{
|
||||
throw new WebScriptException(HttpServletResponse.SC_BAD_REQUEST, "A Site ID must be specified!");
|
||||
}
|
||||
|
||||
List<Channel> channels = channelService.getChannels(siteId);
|
||||
List<Map<String, Object>> results = builder.buildChannels(channels);
|
||||
return createBaseModel(results);
|
||||
}
|
||||
|
||||
protected Map<String, Object> createBaseModel(Map<String, Object> result)
|
||||
{
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
model.put(DATA_KEY, result);
|
||||
return model;
|
||||
}
|
||||
|
||||
protected Map<String, Object> createBaseModel(List<Map<String, Object>> results)
|
||||
{
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
model.put(DATA_KEY, results);
|
||||
return model;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param channelService the channelService to set
|
||||
*/
|
||||
public void setChannelService(ChannelService channelService)
|
||||
{
|
||||
this.channelService = channelService;
|
||||
}
|
||||
}
|
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2010 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco 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.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.alfresco.repo.web.scripts.publishing;
|
||||
|
||||
import static org.alfresco.util.collections.CollectionUtils.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.service.cmr.publishing.channels.Channel;
|
||||
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
import org.alfresco.util.collections.Function;
|
||||
import org.springframework.extensions.surf.util.URLEncoder;
|
||||
|
||||
/**
|
||||
* @author Nick Smith
|
||||
* @since 4.0
|
||||
*
|
||||
*/
|
||||
public class PublishingModelBuilder
|
||||
{
|
||||
// General Keys
|
||||
public static final String ID = "id";
|
||||
public static final String URL = "url";
|
||||
|
||||
// Channel Type Keys
|
||||
public static final String CHANNEL_NODE_TYP = "channelNodeType";
|
||||
public static final String CONTENT_ROOT_NODE_TYP = "contentRootNodeType";
|
||||
public static final String SUPPORTED_CONTENT_TYPES = "supportedContentTypes";
|
||||
public static final String SUPPORTED_MIME_TYPES = "supportedMimeTypes";
|
||||
public static final String CAN_PUBLISH = "canPublish";
|
||||
public static final String CAN_PUBLISH_STATUS_UPDATES = "canPublishStatusUpdates";
|
||||
public static final String CAN_UNPUBLISH = "canUnpublish";
|
||||
|
||||
// Channel Keys
|
||||
public static final String CHANNEL_TYPE = "channelType";
|
||||
public static final String NAME = "name";
|
||||
|
||||
public Map<String, Object> buildChannel(Channel channel)
|
||||
{
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
|
||||
model.put(NAME, channel.getName());
|
||||
model.put(URL, getUrl(channel));
|
||||
model.put(CHANNEL_TYPE, buildChannelType(channel.getChannelType()));
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> buildChannels(List<Channel> channels)
|
||||
{
|
||||
return transform(channels, new Function<Channel, Map<String, Object>>()
|
||||
{
|
||||
public Map<String, Object> apply(Channel value)
|
||||
{
|
||||
return buildChannel(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public Map<String, Object> buildChannelType(ChannelType type)
|
||||
{
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
model.put(ID, type.getId());
|
||||
model.put(URL, getUrl(type));
|
||||
|
||||
model.put(CHANNEL_NODE_TYP, type.getChannelNodeType().toString());
|
||||
model.put(CONTENT_ROOT_NODE_TYP, type.getContentRootNodeType().toString());
|
||||
model.put(SUPPORTED_CONTENT_TYPES, toListOfStrings(type.getSupportedContentTypes()));
|
||||
model.put(SUPPORTED_MIME_TYPES, type.getSupportedMimetypes());
|
||||
model.put(CAN_PUBLISH, toString(type.canPublish()));
|
||||
model.put(CAN_PUBLISH_STATUS_UPDATES, toString(type.canPublishStatusUpdates()));
|
||||
model.put(CAN_UNPUBLISH, toString(type.canUnpublish()));
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
public static String getUrl(ChannelType type)
|
||||
{
|
||||
return "api/publishing/channelTypes/"+URLEncoder.encode(type.getId());
|
||||
}
|
||||
|
||||
public static String getUrl(Channel channel)
|
||||
{
|
||||
NodeRef node = channel.getNodeRef();
|
||||
StoreRef storeRef = node.getStoreRef();
|
||||
|
||||
StringBuilder sb = new StringBuilder("api/publishing/channels/");
|
||||
sb.append(storeRef.getProtocol()).append("/")
|
||||
.append(storeRef.getIdentifier()).append("/")
|
||||
.append(node.getId());
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private String toString(boolean b)
|
||||
{
|
||||
return Boolean.toString(b);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user