/** * SlingBeans - NetBeans Sling plugin https://github.com/jkan997/SlingBeans Licensed under Apache 2.0 license http://www.apache.org/licenses/LICENSE-2.0 */ package org.jkan997.slingbeans.nbactions; import java.awt.event.ActionEvent; import java.util.Map; import java.util.TreeMap; import java.util.concurrent.atomic.AtomicBoolean; import static javax.swing.Action.NAME; import org.jkan997.slingbeans.helper.LogHelper; import org.jkan997.slingbeans.nbtree.SlingNode; import org.jkan997.slingbeans.slingfs.FileObject; import org.jkan997.slingbeans.slingfs.FileSystem; import org.netbeans.api.progress.ProgressUtils; import org.openide.awt.ActionID; import org.openide.awt.ActionRegistration; @ActionID( category = "SlingFs", id = "org.jkan997.slingbeans.nbactions.ReplicateAction") @ActionRegistration(asynchronous = true, displayName = "Replicate") public class ReplicateAction extends AbstractAction { private SlingNode node; public ReplicateAction(SlingNode node) { setActionName("Replicate"); this.node = node; } @Override public void actionPerformed(ActionEvent e) { final Runnable loadWorkflowsTask = new Runnable() { @Override public void run() { try { replicateNode(); } catch (Exception ex) { LogHelper.logError(ex); } } }; ProgressUtils.runOffEventDispatchThread(loadWorkflowsTask, "Replicating node", new AtomicBoolean(false), false); } private void replicateNode() { try { FileObject fo = node.getFileObject(); FileSystem fs = fo.getFileSystem(); logInfo("Node path: %s", fo.getPath()); Map<String, String> params = new TreeMap<String, String>(); params.put("action", "replicate"); params.put("path", "/" + fo.getPath()); fs.sendSimplePost("/crx/de/replication.jsp", params); Thread.sleep(1000); params.remove("action"); params.put("path", "/" + fo.getPath()); byte[] res = null; res = fs.sendGet("/crx/de/replication.jsp", params); String buildLog = new String(res); buildLog = buildLog.replace("{", "{\n"); buildLog = buildLog.replace(",\"", ",\n\""); logHeader("REPLICATING NODE"); logInfo(buildLog); } catch (Exception ex) { throw new RuntimeException(ex); } } }