Skip to content

Commit 50f43ce

Browse files
committed
fixed rename/move/copy/paste script issue
1 parent 21f84ae commit 50f43ce

File tree

2 files changed

+42
-30
lines changed

2 files changed

+42
-30
lines changed

app/aem/core/src/main/java/com/cognifide/apm/core/scripts/ScriptManagerImpl.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,7 @@ public Progress process(Script script, ExecutionMode mode, Map<String, String> c
160160
}
161161

162162
updateScriptProperties(script, mode, progress.isSuccess());
163-
if (progress.isSuccess()) {
164-
versionService.updateVersionIfNeeded(resolver, script);
165-
}
163+
versionService.updateVersionIfNeeded(resolver, script);
166164
saveHistory(script, mode, progress);
167165
eventManager.trigger(new ScriptExecutedEvent(script, mode, progress.isSuccess()));
168166

app/aem/core/src/main/java/com/cognifide/apm/core/services/ScriptsResourceChangeListener.java

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
import com.cognifide.apm.core.Apm;
3030
import com.cognifide.apm.core.Property;
3131
import com.cognifide.apm.core.launchers.ApmInstallService;
32+
import com.cognifide.apm.core.ui.models.ScriptsRowModel;
3233
import com.cognifide.apm.core.utils.sling.SlingHelper;
34+
import com.day.cq.commons.jcr.JcrConstants;
3335
import java.text.SimpleDateFormat;
3436
import java.util.Dictionary;
3537
import java.util.HashMap;
@@ -38,6 +40,8 @@
3840
import java.util.Map;
3941
import java.util.Objects;
4042
import org.apache.commons.lang3.StringUtils;
43+
import org.apache.sling.api.resource.ModifiableValueMap;
44+
import org.apache.sling.api.resource.ValueMap;
4145
import org.apache.sling.api.resource.observation.ResourceChange;
4246
import org.apache.sling.api.resource.observation.ResourceChangeListener;
4347
import org.osgi.framework.Bundle;
@@ -96,38 +100,48 @@ public void onChange(List<ResourceChange> changes) {
96100
Bundle currentBundle = FrameworkUtil.getBundle(ScriptsResourceChangeListener.class);
97101
BundleContext bundleContext = currentBundle.getBundleContext();
98102

99-
SlingHelper.operateTraced(resolverProvider, resolver ->
100-
changes.stream()
101-
.filter(change -> StringUtils.endsWith(change.getPath(), Apm.FILE_EXT))
102-
.forEach(change -> {
103-
if (change.getType() == ResourceChange.ChangeType.ADDED) {
104-
Script script = scriptFinder.find(change.getPath(), resolver);
103+
SlingHelper.operateTraced(resolverProvider, resolver -> {
104+
// rename copy/paste folders
105+
changes.stream()
106+
.filter(change -> change.getType() == ResourceChange.ChangeType.ADDED)
107+
.map(change -> resolver.getResource(change.getPath()))
108+
.filter(ScriptsRowModel::isFolder)
109+
.forEach(resource -> {
110+
ValueMap valueMap = resource.adaptTo(ModifiableValueMap.class);
111+
valueMap.put(JcrConstants.JCR_TITLE, resource.getName());
112+
});
113+
//register schedule or cron expression scripts
114+
changes.stream()
115+
.filter(change -> StringUtils.endsWith(change.getPath(), Apm.FILE_EXT))
116+
.forEach(change -> {
117+
if (change.getType() == ResourceChange.ChangeType.ADDED) {
118+
Script script = scriptFinder.find(change.getPath(), resolver);
119+
if (onScheduleOrCronExpression(runModesProvider).test(script)) {
120+
registerScript(script, bundleContext);
121+
}
122+
} else if (change.getType() == ResourceChange.ChangeType.REMOVED) {
123+
RegisterScript registeredScript = registeredScripts.get(change.getPath());
124+
if (registeredScript != null) {
125+
registeredScript.registration.unregister();
126+
registeredScripts.remove(change.getPath());
127+
}
128+
} else if (change.getType() == ResourceChange.ChangeType.CHANGED) {
129+
Script script = scriptFinder.find(change.getPath(), resolver);
130+
RegisterScript registeredScript = registeredScripts.get(change.getPath());
131+
if (registeredScript == null) {
105132
if (onScheduleOrCronExpression(runModesProvider).test(script)) {
106133
registerScript(script, bundleContext);
107134
}
108-
} else if (change.getType() == ResourceChange.ChangeType.REMOVED) {
109-
RegisterScript registeredScript = registeredScripts.get(change.getPath());
110-
if (registeredScript != null) {
111-
registeredScript.registration.unregister();
112-
registeredScripts.remove(change.getPath());
113-
}
114-
} else if (change.getType() == ResourceChange.ChangeType.CHANGED) {
115-
Script script = scriptFinder.find(change.getPath(), resolver);
116-
RegisterScript registeredScript = registeredScripts.get(change.getPath());
117-
if (registeredScript == null) {
118-
if (onScheduleOrCronExpression(runModesProvider).test(script)) {
119-
registerScript(script, bundleContext);
120-
}
121-
} else if (!Objects.equals(script, registeredScript.script)) {
122-
registeredScript.registration.unregister();
123-
registeredScripts.remove(change.getPath());
124-
if (onScheduleOrCronExpression(runModesProvider).test(script)) {
125-
registerScript(script, bundleContext);
126-
}
135+
} else if (!Objects.equals(script, registeredScript.script)) {
136+
registeredScript.registration.unregister();
137+
registeredScripts.remove(change.getPath());
138+
if (onScheduleOrCronExpression(runModesProvider).test(script)) {
139+
registerScript(script, bundleContext);
127140
}
128141
}
129-
})
130-
);
142+
}
143+
});
144+
});
131145
}
132146

133147
private void registerScript(Script script, BundleContext bundleContext) {

0 commit comments

Comments
 (0)