Творение с помощью Solr ScriptUpdateProcessor, поэтому у меня есть файл javascript, который выполняется без браузера. Я достаточно новичок в этом, что не знаю, как запустить это в отладчике, и ограничено системным протоколированием.Как я могу создать объект javascript, который имеет тип Java.util.Arraylist?
В этом файле javascript у меня есть объект, который, как я думал, был массивом, но странно пропускал основные свойства массивов javascript.
Так я свалил объект, используя эту функцию:
function log_object(object) {
var output = '';
for (var property in object) {
output += property + ': ' + object[property]+'; \n';
}
logger.info(output);
}
И результат, который вернулся выглядит как «реальный» Java. В частности:
class: class java.util.ArrayList;
Больше это было:
clone: function clone() {/*
java.lang.Object clone()
*/}
;
toArray: function toArray() {/*
java.lang.Object[] toArray()
java.lang.Object[] toArray(java.lang.Object[])
*/}
;
iterator: function iterator() {/*
java.util.Iterator iterator()
*/}
;
addAll: function addAll() {/*
boolean addAll(int,java.util.Collection)
boolean addAll(java.util.Collection)
*/}
;
get: function get() {/*
java.lang.Object get(int)
*/}
;
equals: function equals() {/*
boolean equals(java.lang.Object)
*/}
т.д. Ум взорван.
Как я закончил с базовым java-объектом внутри javascript-функции? Что здесь происходит?
Update
Существует некоторая серая область Java-к-и-из-JavaScript, что я не был ранее известно. Окончательный «рабочий код» в тест-ДОПОЛНЕНО script.js выглядит следующим образом:
doc = cmd.solrDoc; // org.apache.solr.common.SolrInputDocument <- note this is also java?
var contents = []; <-- 'normal' js Array.
vals = doc.getFieldValues(my_multivalued_field); // <--- vals is now java.util.arraylist
jsFriendlyAry = vals.toArray(); // <-- jsFriendlyAry is String[]
for (j = 0; j < jsFriendlyAry.length; j++) {
contents.push(jsFriendlyAry[j]);
}
Так что можно смешивать Серверный JavaScript и Java. Фрагменты в Oracle's guide to using Java from Scripts , похоже, нужно включить. Я еще не понял (в частности, Java.to и Java.from), но подтвердил поведение.
Никогда не слышал о 'ScriptingUpdateRequestHandler', и Google тоже этого не делал. Можете ли вы предоставить ссылку? Тем не менее, единственный способ добиться этого - кто-то определил класс, который вы используете, и сделал его похожим на Java. – Amadan
Это кажется маловероятным. Неправильное имя утилиты - исправление OP. http://wiki.apache.org/solr/ScriptUpdateProcessor – LizH
Это, похоже, компилируется из javascript в фактическую java. – chapinkapa