Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » geometry.software.dynamic.independent

Topic: JavaLists and JavaMaps (jspbook)
Replies: 0  

Advanced Search

Back to Topic List Back to Topic List  


Posts: 821
Registered: 9/1/10
JavaLists and JavaMaps (jspbook)
Posted: Oct 15, 2012 8:12 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

package com.jspbook;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
\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( =E2=80=9Cclean=E2=80=9D ) ) {

throw new UnsupportedOperationException(=E2=80=9DCannot call clear=E2=80=9D=
);

}
return MeAmI.org.invoke(obj, args);
} catch (InvocationTargetException e) {
throw e.getTargetException();
} catch (Exception e) {
throw new RuntimeException(=E2=80=9Dunexpected invocation exception: =E2=80=
=9D +
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"=E2=80=93it=E2=80=99s readonly.
// also make sure that nobody overrides list=E2=80=99s 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 (=E2=80=93i >= 0)
result[i] = 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=E2=80=99s 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.meami.p.java.tidy;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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.meami.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=C3=B3rz kontekst
Context cx = Context.enter();
MyBaseClass executePlugins = new MyBaseClass();
ScriptableObject scope = (ScriptableObject) cx.initStandardObjects
(executePlugins);
// dla ka=C5=BCdego pliku
// wczytaj plik z dysku i zapisz go w String=E2=80=99u code
String code = "";
// dodaj w=C5=82asno=C5=9Bci dost=C4=99pne jako globale z punktu widzenia s=
kryptu
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">
<!=E2=80=93 reszta tak jak byla =E2=80=93>
</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(=E2=80=98res==E2=80=99+el.getParentNode().getOperation())
}

out.println("Result of operation is: "+res)
Copyright =A9 2001 M. Michael Musatov, http://MeAmI.org. All Rights
Reserved.



Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.