Skip to content

Commit 5a39f84

Browse files
committed
new javascript console version with batch processor, jmx handling and solr root object
1 parent 165074a commit 5a39f84

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+2943
-330
lines changed

javascript-console-repo/.classpath

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/alfresco-remote-api-4.1.2.jar" sourcepath="/ALFRESCO_SDK_412/src/alfresco-remote-api-src.zip"/>
88
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/alfresco-repository-4.1.2.jar" sourcepath="/ALFRESCO_SDK_412/src/alfresco-repository-src.zip"/>
99
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/dependencies/commons/commons-io-1.4.jar"/>
10-
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/dependencies/commons/commons-lang-2.6.jar"/>
10+
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/dependencies/commons/commons-lang-2.6.jar" sourcepath="/ALFRESCO_SDK_412/src/commons-lang-2.6-sources.jar"/>
1111
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/dependencies/commons/commons-logging-1.1.1.jar"/>
1212
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/dependencies/j2ee/servlet.jar"/>
1313
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/dependencies/optional/log4j-1.2.15.jar"/>
@@ -19,5 +19,8 @@
1919
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/dependencies/spring-surf/spring-surf-core-1.2.0-SNAPSHOT.jar"/>
2020
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/dependencies/spring-surf/spring-webscripts-1.2.0-SNAPSHOT.jar" sourcepath="/ALFRESCO_SDK_412/src/spring-webscripts-1.2.0-SNAPSHOT-sources.jar"/>
2121
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/dependencies/spring-surf/spring-webscripts-api-1.2.0-SNAPSHOT.jar" sourcepath="/ALFRESCO_SDK_412/src/spring-webscripts-api-1.2.0-SNAPSHOT-sources.jar"/>
22+
<classpathentry kind="lib" path="lib/javassist.jar"/>
23+
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/alfresco-enterprise-repo-4.1.2.jar" sourcepath="/ALFRESCO_SDK_412/src/alfresco-enterprise-repository-src.zip"/>
24+
<classpathentry kind="var" path="ALFRESCO_SDK_412/lib/server/dependencies/acegi-security-0.8.2_patched.jar"/>
2225
<classpathentry kind="output" path="bin"/>
2326
</classpath>

javascript-console-repo/build.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<property name="build.classes.dir" value="shared/classes" />
4444
<property name="build.lib.dir" value="shared/lib" />
4545
<property name="yuicompress.warn" value="false" />
46-
<property name="javac.debug" value="off" />
46+
<property name="javac.debug" value="on" />
4747
<!-- Tomcat properties to reload web scripts or the manager webapp -->
4848
<property name="tomcat.url" value="http://localhost:8080" />
4949
<property name="tomcat.repo.url" value="${tomcat.url}" />

javascript-console-repo/config/alfresco/extension/fme-jsconsole-context.xml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,34 @@
99
<property name="postRollScriptResource" value="classpath:de/fme/jsconsole/jsconsole-post-roll-script.js" />
1010
<property name="rhinoScriptProcessor" ref="javaScriptProcessor" />
1111
</bean>
12+
<bean id="jconsole.extension.dictionaryBootstrap" parent="dictionaryModelBootstrap">
13+
<property name="models">
14+
<list>
15+
<value>alfresco/extension/model/fme-jsconsole-model.xml</value>
16+
</list>
17+
</property>
18+
</bean>
19+
20+
<bean id="jmxClientSciptFacade" parent="baseJavaScriptExtension"
21+
class="de.fme.jsconsole.jmx.JmxClientScriptFacade">
22+
<property name="extensionName" value="jmx" />
23+
<property name="alfrescoMBeanServer" ref="alfrescoMBeanServer" />
24+
</bean>
25+
26+
<bean id="solrScriptFacade" parent="baseJavaScriptExtension"
27+
class="de.fme.jsconsole.jmx.SolrScriptFacade">
28+
<property name="extensionName" value="solr" />
29+
<property name="solrIndexCheckService" ref="search.solrIndexCheckService" />
30+
</bean>
31+
32+
<bean id="batchScriptFacade" parent="baseJavaScriptExtension"
33+
class="de.fme.jsconsole.batch.BatchScriptFacade">
34+
<property name="extensionName" value="batch" />
35+
<property name="transactionService" ref="transactionService" />
36+
<property name="searchService" ref="searchService" />
37+
<property name="scriptService" ref="scriptService" />
38+
<property name="serviceRegistry" ref="ServiceRegistry" />
39+
</bean>
1240

1341
</beans>
1442

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<model name="jsc:jsconsole-model" xmlns="http://www.alfresco.org/model/dictionary/1.0">
4+
5+
<description>Javascript Console Model </description>
6+
<version>1.0</version>
7+
8+
<imports>
9+
<!-- Import Alfresco Dictionary Definitions -->
10+
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
11+
<!-- Import Alfresco Content Domain Model Definitions -->
12+
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm" />
13+
</imports>
14+
15+
<namespaces>
16+
<!-- namespace for visible aspects -->
17+
<namespace uri="http://www.fme.de/alfresco/models/jsconsole" prefix="jsc"/>
18+
</namespaces>
19+
20+
<aspects>
21+
<aspect name="jsc:scriptContext">
22+
<properties>
23+
<property name="jsc:freemarkerScript">
24+
<type>d:content</type>
25+
</property>
26+
</properties>
27+
</aspect>
28+
</aspects>
29+
30+
</model>
Lines changed: 85 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,88 @@
1-
21
(function(global, model) {
3-
4-
var hiddenMethods =
5-
" setServiceRegistry getServiceRegistry serviceRegistry exec setPreferenceService setAuthenticationService" +
6-
" setTenantService setAuthorityService setPersonService setNodeDAO equals hashCode class"+
7-
" getClass getExtensionName setExtensionName extensionName notify update wait setScope getScope scope "+
8-
" setProcessor ";
9-
10-
var isValidMethodName = function(name) {
11-
return name != undefined && (name) && hiddenMethods.indexOf(name) == -1;
12-
}
13-
14-
var isValidObjectName = function(name) {
15-
return true;
16-
}
17-
18-
var sort_unique = function (arr) {
19-
arr = arr.sort(function (a, b) { return a*1 - b*1; });
20-
var ret = [arr[0]];
21-
for (var i = 1; i < arr.length; i++) { // start loop at 1 as element 0 can never be a duplicate
22-
if (arr[i-1] !== arr[i]) {
23-
ret.push(arr[i]);
24-
}
25-
}
26-
return ret;
27-
}
28-
29-
result = { "global":[], "methods":{}, "node":[] };
30-
31-
for (var objectName in global) {
32-
33-
if (isValidObjectName(objectName)) {
34-
result["global"].push(objectName);
35-
result["methods"][objectName] = [];
36-
37-
for (var methodName in global[objectName]) {
38-
if(isValidMethodName(methodName)) {
39-
result["methods"][objectName].push(methodName);
40-
}
41-
}
42-
result["methods"][objectName].sort();
43-
}
44-
result["global"].sort();
45-
}
46-
47-
48-
// add global scriptNodes document and space modelled by the companyhome
49-
result["global"].push("document");
50-
result["global"].push("space");
51-
result["methods"]["document"] = result["methods"]["companyhome"];
52-
result["methods"]["space"] = result["methods"]["companyhome"];
53-
54-
// copy commands for all scriptnodes to a specific "node" property
55-
result["node"] = result["methods"]["companyhome"];
56-
57-
// Javascript Console specific commands
58-
result["global"].push("print");
59-
result["global"].push("recurse");
60-
result["methods"]["logger"].push("setLevel");
61-
62-
model.json = jsonUtils.toJSONString(result);
2+
3+
var hiddenMethods = " setServiceRegistry getServiceRegistry serviceRegistry exec setPreferenceService setAuthenticationService"
4+
+ " setTenantService setAuthorityService setPersonService setNodeDAO equals hashCode class"
5+
+ " getClass getExtensionName setExtensionName extensionName notify update wait setScope getScope scope "
6+
+ " setProcessor ";
7+
8+
var isValidMethodName = function(name) {
9+
return name != undefined && (name) && hiddenMethods.indexOf(name) == -1;
10+
}
11+
12+
var isValidObjectName = function(name) {
13+
return true;
14+
}
15+
16+
var sort_unique = function(arr) {
17+
arr = arr.sort(function(a, b) {
18+
return a * 1 - b * 1;
19+
});
20+
var ret = [ arr[0] ];
21+
for ( var i = 1; i < arr.length; i++) { // start loop at 1 as element 0
22+
// can never be a duplicate
23+
if (arr[i - 1] !== arr[i]) {
24+
ret.push(arr[i]);
25+
}
26+
}
27+
return ret;
28+
}
29+
30+
result = {
31+
"global" : [],
32+
"methods" : {},
33+
"node" : []
34+
};
35+
36+
for ( var objectName in global) {
37+
38+
if (isValidObjectName(objectName)) {
39+
result["global"].push(objectName);
40+
result["methods"][objectName] = [];
41+
42+
for ( var methodName in global[objectName]) {
43+
if (isValidMethodName(methodName)) {
44+
result["methods"][objectName].push(methodName);
45+
}
46+
}
47+
48+
if (objectName === "jmx") {
49+
result["global"].push("jmxProps");
50+
var properties = jmx.getAllPropertyNames();
51+
for ( var i = 0; i < properties.length; i++) {
52+
result["methods"]["jmxProps"].push(properties[i]);
53+
}
54+
}
55+
56+
result["methods"][objectName].sort();
57+
}
58+
result["global"].sort();
59+
}
60+
61+
// add global scriptNodes document and space modelled by the companyhome
62+
result["global"].push("document");
63+
result["global"].push("space");
64+
result["methods"]["document"] = result["methods"]["companyhome"];
65+
result["methods"]["space"] = result["methods"]["companyhome"];
66+
67+
// add json for json based webscripts
68+
// (http://wiki.alfresco.com/wiki/Web_Scripts#json)
69+
result["global"].push("json");
70+
result["methods"]["json"] = [];
71+
result["methods"]["json"].push("length()");
72+
result["methods"]["json"].push("getJSONObject(index)");
73+
result["methods"]["json"].push("get(fieldName)");
74+
result["methods"]["json"].push("has(fieldName)");
75+
result["methods"]["json"].push("isNull(fieldName)");
76+
result["methods"]["json"].push("getJSONArray(fieldName)");
77+
78+
// copy commands for all scriptnodes to a specific "node" property
79+
result["node"] = result["methods"]["companyhome"];
80+
81+
// Javascript Console specific commands
82+
result["global"].push("print");
83+
result["global"].push("recurse");
84+
result["methods"]["logger"].push("setLevel");
85+
86+
model.json = jsonUtils.toJSONString(result);
6387

6488
})(this, model);

javascript-console-repo/config/alfresco/extension/templates/webscripts/de/fme/jsconsole/createscript.put.js

Lines changed: 0 additions & 6 deletions
This file was deleted.

javascript-console-repo/config/alfresco/extension/templates/webscripts/de/fme/jsconsole/createscript.put.json.ftl

Lines changed: 0 additions & 3 deletions
This file was deleted.
Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
2-
3-
function findScripts(folder) {
1+
var prepareOutput= function prepareOutput(folder) {
42
var scriptlist = [];
53

64
var children = folder.children;
@@ -13,7 +11,7 @@ function findScripts(folder) {
1311

1412
if (node.isContainer) {
1513
scriptlist.push({text : node.name, submenu : {
16-
id: node.properties["sys:node-uuid"], itemdata : findScripts(node)
14+
id: node.properties["sys:node-uuid"], itemdata : prepareOutput(node)
1715
}});
1816
}
1917
else {
@@ -24,10 +22,14 @@ function findScripts(folder) {
2422
return scriptlist;
2523
}
2624

27-
var scriptFolder = search.xpathSearch("/app:company_home/app:dictionary/app:scripts")[0];
28-
if (scriptFolder) {
29-
model.scripts = jsonUtils.toJSONString(findScripts(scriptFolder));
30-
}
31-
else {
32-
model.scripts = "[]";
25+
var findAvailableScripts = function findAvailableScripts(){
26+
var scriptFolder = search.xpathSearch("/app:company_home/app:dictionary/app:scripts")[0];
27+
if (scriptFolder) {
28+
model.scripts = jsonUtils.toJSONString(prepareOutput(scriptFolder));
29+
}
30+
else {
31+
model.scripts = "[]";
32+
}
3333
}
34+
35+
findAvailableScripts();
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<webscript>
2+
<shortname>fme JSConsole read existing javascript and freemarker</shortname>
3+
<url>/de/fme/jsconsole/readScript?nodeRef={nodeRef}</url>
4+
<authentication>admin</authentication>
5+
<format default="json">extension</format>
6+
</webscript>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"scripts" : ${scripts}
3+
}

0 commit comments

Comments
 (0)