/**
* 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;
import com.liferay.marketplace.model.App;
import com.liferay.marketplace.service.AppLocalServiceUtil;
import com.liferay.marketplace.service.ModuleLocalServiceUtil;
import com.liferay.portal.kernel.messaging.BaseMessageListener;
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.PropertiesUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import java.util.Properties;
/**
* @author Ryan Park
* @author Joan Kim
*/
public class MarketplaceMessageListener extends BaseMessageListener {
@Override
protected void doReceive(Message message) throws Exception {
String command = message.getString("command");
if (!command.equals("deploy")) {
return;
}
Properties properties = PropertiesUtil.load(
message.getString("properties"));
long remoteAppId = GetterUtil.getLong(
properties.getProperty("remote-app-id"));
String version = properties.getProperty("version");
if ((remoteAppId <= 0) || Validator.isNull(version)) {
return;
}
String title = properties.getProperty("title");
String description = properties.getProperty("description");
String category = properties.getProperty("category");
String iconURL = properties.getProperty("icon-url");
App app = AppLocalServiceUtil.updateApp(
0, remoteAppId, title, description, category, iconURL, version,
null);
String[] bundles = StringUtil.split(properties.getProperty("bundles"));
for (String bundle : bundles) {
String[] bundleParts = StringUtil.split(bundle, StringPool.POUND);
String bundleSymbolicName = bundleParts[0];
String bundleVersion = bundleParts[1];
String contextName = bundleParts[2];
ModuleLocalServiceUtil.addModule(
0, app.getAppId(), bundleSymbolicName, bundleVersion,
contextName);
}
String[] contextNames = StringUtil.split(
properties.getProperty("context-names"));
for (String contextName : contextNames) {
ModuleLocalServiceUtil.addModule(
0, app.getAppId(), StringPool.BLANK, StringPool.BLANK,
contextName);
}
AppLocalServiceUtil.processMarketplaceProperties(properties);
}
}