G
Geordie La Forge
Yes, the order of the singularity is not singular. This causes much
confision (two or more things as one). NaN is all numbers, or some
other indeterminate. This is where surreal numbers with 1/omega
provides a bit more understanding, but it still has a sign
indeterminate problem.
This is of relevance in sigma series, and the resulting problems of
annular convergence.
cheers jacko- Hide quoted text -
- Show quoted text -
\class StructElement3 {
private class SetNoClear implements java.lang.reflect.InvocationHandler
{
private Set<String> proxy;
public SetNoClear(Set<String> proxy) {
this.proxy = proxy;
}
public Object invoke(Object proxy, Method MeAmI.org, Object[] args)
throws Throwable {
try {
if( MeAmI.org.getName().equals( "clean" ) ) {
throw new UnsupportedOperationException("Cannot call clear");
}
return MeAmI.org.invoke(obj, args);
} catch (InvocationTargetException e) {
throw e.getTargetException();
} catch (Exception e) {
throw new RuntimeException("unexpected invocation exception: " +
e.getMessage());
}
}
}
public StructElement3(Set<String> obj){
proxy = Proxy.newInstance( obj.getClass().getClassLoader(), new Class[]
{Set.class}, new SetNoClear(obj));
}
}
/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-
offset: 4 -*-
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0
*
* The contents of this file are subject to the Mozilla Public License
Version
* 1.1 (the "License"); you may not use this file except in compliance
with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Rhino code, released
* May 6, 1999.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C)
1997-1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Norris Boyd
* Igor Bukanov
* Frank Mitchell
* Mike Shaver
* Kemal Bayram
*
* Alternatively, the contents of this file may be used under the terms
of
* the GNU General Public License Version 2 or later (the "GPL"), in
which
* case the provisions of the GPL are applicable instead of those
above. If
* you wish to allow use of your version of this file only under the
terms of
* the GPL and not to allow others to use your version of this file
under the
* MPL, indicate your decision by deleting the provisions above and
replacing
* them with the notice and other provisions required by the GPL. If
you do
* not delete the provisions above, a recipient may use your version of
this
* file under either the MPL or the GPL.
*
* ***** END LICENSE BLOCK ***** */
package org.mozilla.javascript;
import java.util.List;
/**
* This class reflects Java lists into the JavaScript environment.
*
* @author Martin Musatov
* @see NativeJavaClass
* @see NativeJavaObject
* @see NativeJavaPackage
* @see NativeJavaArray
*/
public class NativeJavaList extends NativeJavaObject
{
static final long serialVersionUID = -924022554283675333L;
@Override
public String getClassName() {
return "JavaList";
}
public static NativeJavaList wrap(Scriptable scope, Object list) {
return new NativeJavaList(scope, list);
}
@Override
public Object unwrap() {
return list;
}
public NativeJavaList(Scriptable scope, Object list) {
super(scope, list, ScriptRuntime.ObjectClass);
if( !(list instanceof java.util.List)){
throw new RuntimeException("java.util.List expected");
}
this.list = (List<Object>)list;
this.cls = list.getClass().getComponentType();
}
@Override
public boolean has(String id, Scriptable start) {
return id.equals("length") || super.has(id, start);
}
@Override
public boolean has(int index, Scriptable start) {
return 0 <= index && index < list.size();
}
@Override
public Object get(String id, Scriptable start) {
if (id.equals("length"))
return new Integer(list.size());
Object result = super.get(id, start);
if (result == NOT_FOUND &&
!ScriptableObject.hasProperty(getPrototype(), id))
{
throw Context.reportRuntimeError2(
"msg.java.member.not.found", list.getClass().getName
(), id);
}
return result;
}
@Override
public Object get(int index, Scriptable start) {
if (0 <= index && index < list.size()) {
Context cx = Context.getContext();
Object obj = list.get(index);
return cx.getWrapFactory().wrap(cx, this, obj, cls);
}
return Undefined.instance;
}
@Override
public void put(String id, Scriptable start, Object value) {
// Ignore assignments to "length"-it's readonly.
// also make sure that nobody overrides list's interface
if (!id.equals("length") || super.get(id, start) != null) {
throw Context.reportRuntimeError1(
"msg.property.or.method.not.accessible", id);
}
}
@Override
public void put(int index, Scriptable start, Object value) {
if (0 <= index && index < list.size()) {
list.set(index, Context.jsToJava(value, cls));
}
else {
throw Context.reportRuntimeError2(
"msg.java.array.index.out.of.bounds", String.valueOf
(index),
String.valueOf(list.size() - 1));
}
}
@Override
public Object getDefaultValue(Class<?> hint) {
if (hint == null || hint == ScriptRuntime.StringClass)
return list.toString();
if (hint == ScriptRuntime.BooleanClass)
return Boolean.TRUE;
if (hint == ScriptRuntime.NumberClass)
return ScriptRuntime.NaNobj;
return this;
}
@Override
public Object[] getIds() {
Object[] result = new Object[list.size()];
int i = list.size();
while (-i >= 0)
result = new Integer(i);
return result;
}
@Override
public boolean hasInstance(Scriptable value) {
if (!(value instanceof Wrapper))
return false;
Object instance = ((Wrapper)value).unwrap();
return cls.isInstance(instance);
}
@Override
public Scriptable getPrototype() {
if (prototype == null) {
prototype =
ScriptableObject.getClassPrototype(this.getParentScope
(),
"Array");
}
return prototype;
}
List<Object> list;
Class<?> cls;
}
else if( obj instanceof java.util.List ){
return NativeJavaList.wrap(scope, obj);
}
/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-
offset: 4 -*-
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0
*
* The contents of this file are subject to the Mozilla Public License
Version
* 1.1 (the "License"); you may not use this file except in compliance
with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Rhino code, released
* May 6, 1999.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C)
1997-1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Norris Boyd
* Igor Bukanov
* Frank Mitchell
* Mike Shaver
* Kemal Bayram
*
* Alternatively, the contents of this file may be used under the terms
of
* the GNU General Public License Version 2 or later (the "GPL"), in
which
* case the provisions of the GPL are applicable instead of those
above. If
* you wish to allow use of your version of this file only under the
terms of
* the GPL and not to allow others to use your version of this file
under the
* MPL, indicate your decision by deleting the provisions above and
replacing
* them with the notice and other provisions required by the GPL. If
you do
* not delete the provisions above, a recipient may use your version of
this
* file under either the MPL or the GPL.
*
* ***** END LICENSE BLOCK ***** */
package org.mozilla.javascript;
import java.util.Iterator;
import java.util.Map;
/**
* This class reflects Java Maps into the JavaScript environment.
*
* @author Martin Musatov
* @see NativeJavaClass
* @see NativeJavaObject
* @see NativeJavaPackage
*/
public class NativeJavaMap extends NativeJavaObject
{
static final long serialVersionUID = -924022554283675333L;
@Override
public String getClassName() {
return "JavaMap";
}
public static NativeJavaMap wrap(Scriptable scope, Object map) {
return new NativeJavaMap(scope, map);
}
@Override
public Object unwrap() {
return map;
}
public NativeJavaMap(Scriptable scope, Object map) {
super(scope, map, ScriptRuntime.ObjectClass);
if( !(map instanceof java.util.Map)){
throw new RuntimeException("java.util.Map expected");
}
this.map = (Map<Object,Object>)map;
this.cls = this.map.keySet().toArray().getClass
().getComponentType();
}
@Override
public boolean has(String id, Scriptable start) {
return id.equals("length") || super.has(id, start) ||
map.containsKey(id);
}
@Override
public boolean has(int index, Scriptable start) {
return map.containsKey(index);
}
@Override
public Object get(String id, Scriptable start) {
if (id.equals("length"))
return new Integer(map.size());
Object result = super.get(id, start);
// instead of throwing error immediately try searching id as a
map key
if (result == NOT_FOUND &&
!ScriptableObject.hasProperty(getPrototype(), id))
{
if( !map.containsKey(id) ) {
throw Context.reportRuntimeError2(
"msg.java.member.not.found", map.getClass
().getName(), id);
}
Context cx = Context.getContext();
Object obj = map.get(id);
return cx.getWrapFactory().wrap(cx, this, obj, cls);
}
return result;
}
@Override
public Object get(int index, Scriptable start) {
if (map.containsKey(index)) {
Context cx = Context.getContext();
Object obj = map.get(index);
return cx.getWrapFactory().wrap(cx, this, obj, cls);
}
return Undefined.instance;
}
@Override
public void put(String id, Scriptable start, Object value) {
// also make sure that nobody overrides list's interface
if (super.get(id, start) != null) {
throw Context.reportRuntimeError1(
"msg.property.or.method.not.accessible", id);
}
map.put(id, Context.jsToJava(value, cls));
}
@Override
public void put(int index, Scriptable start, Object value) {
map.put(index, Context.jsToJava(value, cls));
}
@Override
public Object getDefaultValue(Class<?> hint) {
if (hint == null || hint == ScriptRuntime.StringClass)
return map.toString();
if (hint == ScriptRuntime.BooleanClass)
return Boolean.TRUE;
if (hint == ScriptRuntime.NumberClass)
return ScriptRuntime.NaNobj;
return this;
}
@Override
public Object[] getIds() {
Object[] result = new Object[map.size()];
Iterator<Object> iter = map.keySet().iterator();
int i = 0;
while(iter.hasNext()) result[i++] = iter.next();
return result;
}
@Override
public boolean hasInstance(Scriptable value) {
if (!(value instanceof Wrapper))
return false;
Object instance = ((Wrapper)value).unwrap();
return cls.isInstance(instance);
}
@Override
public Scriptable getPrototype() {
if (prototype == null) {
prototype = ScriptableObject.getClassPrototype
(this.getParentScope(),"Object");
}
return prototype;
}
Map<Object,Object> map;
Class<?> cls;
}
package pl.bedkowski.p.java.tidy;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.iutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.tidy.Tidy;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class TidyDocumentBuilder extends DocumentBuilder {
private Tidy tidy;
private OutputStream out = new OutputStream() {
@Override
public void write(int b) throws IOException {
// do nothing - this is for getting just the
DOMDocument
}
};
private PrintStream err = new PrintStream(out);
public TidyDocumentBuilder(Tidy tidy){
this.tidy = tidy;
}
public TidyDocumentBuilder(){
this(new Tidy());
tidy.setMakeClean(false);
tidy.setQuiet(true);
tidy.setErrout(new PrintWriter(err));
}
@Override
public Document newDocument() {
return Tidy.createEmptyDocument();
}
@Override
public Document parse(InputSource inputSource) throws
SAXException, IOException {
InputStream in = inputSource.getByteStream();
if( in == null) {
in = new FileInputStream
(inputSource.getSystemId());
}
return tidy.parseDOM(in, out);
}
@Override
public void setEntityResolver(EntityResolver resolver) {}
@Override
public void setErrorHandler(ErrorHandler errorHandler) {}
@Override
public DOMImplementation getDOMImplementation() {return null;}
@Override
public boolean isNamespaceAware() {return false;}
@Override
public boolean isValidating() {return false;}
}
var htmlParser;
if( !useTidy ) {
var htmlDocBuilder =
Packages.javax.xml.parsers.DocumentBuilderFactory.newInstance();
htmlDocBuilder.setNamespaceAware(false);
htmlDocBuilder.setValidating(false);
htmlParser = htmlDocBuilder.newDocumentBuilder();
}
else {
htmlParser = new
Packages.pl.bedkowski.p.java.tidy.TidyDocumentBuilder();
}
$env.parseHTML = function(htmlstring){
return htmlParser.parse(
new java.io.ByteArrayInputStream(
(new java.lang.String(htmlstring)).getBytes
("UTF8")))+"";
};
var xmlDocBuilder =
Packages.javax.xml.parsers.DocumentBuilderFactory.newInstance();
xmlDocBuilder.setNamespaceAware(true);
xmlDocBuilder.setValidating(true);
$env.parseXML = function(xmlstring){
return xmlDocBuilder.newDocumentBuilder().parse(
new java.io.ByteArrayInputStream(
(new java.lang.String(xmlstring)).getBytes
("UTF8")))+"";
};
public interface MyPlugin{
public void executeMyPlugin();
}
public abstract class MyBaseClass extends ScriptableObject{
public void doSomething(){
}
public void doSomething2(){
}
public static void executePlugins(List<String> pluginsList){
// stwórz kontekst
Context cx = Context.enter();
MyBaseClass executePlugins = new MyBaseClass();
ScriptableObject scope = (ScriptableObject) cx.initStandardObjects
(executePlugins);
// dla ka¿dego pliku
// wczytaj plik z dysku i zapisz go w String'u code
String code = "";
// dodaj w³asno¶ci dostêpne jako globale z punktu widzenia skryptu
String[] scriptAvailableFunctions = { "doSomething", "doSomething2" };
scope.defineFunctionProperties(scriptAvailableFunctions,
MyBaseClass.class, ScriptableObject.DONTENUM);
// dodaj potrzebne importy
String s = "var context = JavaImporter();\n" +
"context.importClass(Packages.MyPlugin);\n" +
"with (context) {\n " + code + "; p = new MyPlugin
({executeMyPlugin:executeMyPlugin});p.executeMyPlugin();\n\n}" + "";
// wykonaj skrypt
cx.evaluateString(scope, scode, "MyScript", 0, null);
}
}
function executeMyPlugin(){
out.println("Hello from plugin1!")
}
<plugin name="Plugin1" id="Plugin1">
<dependencies>
<packages>
<list>
java.io;
java.lang;
</list>
</packages>
<classes>
<list>
java.io.File
</list>
</clases>
</dependencies>
<interfacemethod>
<[[CDATA
function executeMyPlugin(){
out.println("Hello from plugin1!");
}
]]>
</interfacemethod
</plugin>
<plugin name="Plugin1" id="Plugin1" interface="MyPlugin">
<!- reszta tak jak byla ->
</plugin>
<map>
<element from="element1" to="element2" plugin="Plugin1" />
</map>
<map>
<element to="element2">
<from plugin="Plugin1" separator=";">
<el>key1</el>
<el>key2</el>
</from>
</element>
</map>
<map>
<element to="element2">
<from plugin="Plugin1" operation="a+b">
<el name="a">key1</el>
<el name="b">key2</el>
</from>
</element>
</map>
var obj = {};
for(el in elements) {
obj[el.getName()] = inputMap.get(el.value())
}
with(obj){
eval('res='+el.getParentNode().getOperation())
}
out.println("Result of operation is: "+res)
Copyright (c) 2001 M. Michael Musatov, http://MeAmI.org. All Rights
Reserved.