vrl-studio / vrl Goto Github PK
View Code? Open in Web Editor NEWVisual Reflection Library
Home Page: http://vrl.mihosoft.eu
Visual Reflection Library
Home Page: http://vrl.mihosoft.eu
Currently, there is only a VJarUtil.getClassNamesFromStream()
method. However, the typical use case is VJarUtil.getClassNamesFromJar()
.
Whenever a method with the annotation "initalizer=true" is added in the visual representation of an object the addition of further methods with the same annotation is blocked. So far, so good.
If you accidentally try to add the same initializer method twice, however, then remove the method and try to add it again, this does not work. The init method is then effectively in-addable.
(1) Create an instance.
(2) Click on the "add" button twice.
(3) Remove the constructor method.
(4) Try to add it again using the "add" button --> failure.
Instead of a Groovy based transform we need a model based instrumentation in the future to ensure that instrumentation also works for other (potential) language bindings. Instead of a special utility method the idea is to directly insert pre/post events into the source.
Example 1:
int a;
a=2;
will be transformed to something like:
preEvent("declare a");
int a;
postEvent("declare a");
preEvent("assign a");
a=2;
postEvent("assign a");
For chained invocations and operators we need to introduce additional tmp-variables:
Example 2:
if(a < b) {
//
}
will be transformed to something like:
preEvent("LESS Operator");
boolean __vrl__tmpVar_1 = a < b;
postEvent("LESS Operator");
preEvent("if");
if(__vrl__tmpVar_1) {
//
}
postEvent("if");
We will also need to introduce a mapping between events and visual nodes to use the instrumentation from the ui.
Loops:
Loops need special treatment:
while(a<b){
//
}
will be transformed to:
boolean __vrl_tmpVar_1 = true;
while(true) {
preEvent("LESS Operator");
__vrl_tmpVar_1 = a < b;
postEvent("LESS Operator");
if(!__vrl_tmpVar_1) break;
//
}
For complex condition arguments we need to extract the whole invocation chain and move it into the while loop.
VJarUtil does not find classes in jar files that contain characters that are usually escaped in URLS (%23 etc.).
if you install new plugins and a circular plugin dependencies is detected you should know which plugins are responsable for this error message
By now, when you have a exception in your groovy code (like String bla=nil; int i=bla.length()) , the standard message shown below is not very descriptive: it shows the type of exception, but not its location. Location can be shown by enabling err log output from the settings. So here's my suggestion: If it is known that the code is in the project class (that is possible see VisualObjectInspector.java : 921), print "deepest" project code position the error occured, like
At MyGroovyCode.groovy:54 : java.lang.NullPointerException: Cannot invoke method length() on null object
It would be really nice if - in such cases - it is possible to go to the code location. That would be also nice for compilation errors.
I guess this should be avoided because it is really confusing when you are searching for a code window.
Currently, static method calls are only possible if the invocation and the method definition are inside of the same compilation unit:
class A {
public static void staticMethod() {}
public void method() {
staticMethod();
}
}
Invocations like Math.abs(a-b)
are not possible since the Groovy AST visitor assumes a non-static method invocation. But that can actually be resolved by checking whether the ObjectExpression
is a class.
The ++ operator works in for loops. But for assigning and incrementing variables outside of loops, ++ is silently ignored.
Selecting Input Object and trying to use the auto-connect controlflow functionality causes a ui freeze which seems to be caused by a NPE in the getAbsPos() of the Connector class.
The VTextField class cannot be used in the NetBeans UI designer since VTextField does not provide a default constructor.
in vrl studio under Plugin > Uninstall Plugin
the vrl-tutorial-plugin is shown twice
With the current development version on the master branch (java8) the console app feature does not work on os x since the run script still forces java 6 instead of 8:
Michaels-MacBook-Pro:2d-static-console-app miho$ ./run.sh
>> detected x86 (64 bit) os
>> integrated jre not found!
--> executing installed java version
Exception in thread "main" java.lang.UnsupportedClassVersionError: groovy/lang/GroovyObject : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
When a message appears in a message box at the bottom of the canvas and I then take the focus from the VRL-Studio window until the message box disappears, then put the focus on VRL-Studio again and try to reopen the message box by clicking on the notification item: the message box only appears for a frame or two and then disappears again. If I repeat the clicking often (or fast?) enough, it eventually stays visible.
Accessing elements is currently not supported.
int[] array = // ...
int v = array[0]; // causes parse error
Choosing a custom update repository causes verification errors since the repository.xml.asc file is not updated to the new location.
Exported console apps do not correctly use the plugin loading mechanism. Different classloaders are used to load the same class (plugin classloader and system classloader). Therefore, it may happen that singletons exist twice.
Exact error message:
java.io.FileNotFoundException: /System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/Resources/Java/JavaRuntimeSupport.jar (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at eu.mihosoft.vrl.lang.visual.JarClassCompletionList.<init>(CompletionUtil.java:133)
at eu.mihosoft.vrl.lang.visual.CompletionUtil.registerClassesFromJar(CompletionUtil.java:109)
at eu.mihosoft.vrl.lang.visual.CompletionUtil.<clinit>(CompletionUtil.java:81)
at eu.mihosoft.vrl.system.VRLPlugin.init(VRLPlugin.java:300)
at eu.mihosoft.vrl.system.VRL.initPlugins(VRL.java:587)
at eu.mihosoft.vrl.system.VRL.initAll(VRL.java:330)
at eu.mihosoft.vrlstudio.main.Studio.main(Studio.java:2504)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at apple.launcher.LaunchRunner.run(LaunchRunner.java:116)
at apple.launcher.LaunchRunner.callMain(LaunchRunner.java:51)
at apple.launcher.JavaApplicationLauncher.launch(JavaApplicationLauncher.java:52)
Problem:
Error while loading project, all connections missing.
VRL-0.4.2.8.4
How to reproduce:
The following exception will be thrown:
>> serialization error: ContentProvider missing! Window-Name: Value. Ignoring window.
>> serialization error: ContentProvider missing! Window-Name: Value. Ignoring window.
java.lang.IllegalArgumentException: illegal component position 9 should be less then 9
at java.awt.Container.checkAdding(Container.java:454)
at java.awt.Container.setComponentZOrder(Container.java:701)
at eu.mihosoft.vrl.io.vrlx.AbstractWindows.addToCanvas(AbstractWindows.java:130)
at eu.mihosoft.vrl.io.vrlx.VRLXVisual$WindowTask.load(VRLXVisual.java:214)
at eu.mihosoft.vrl.io.vrlx.VRLXReflection$WindowTask.load(VRLXReflection.java:375)
...
Note use of "instanciate" as property in some classes.
Correct English spelling = "instantiate".
Creating large videos causes a java.lang.OutOfMemoryError: Java heap space
error
Currently, only existing invocations (defined via code) can be changed. Selecting an overloaded version of the same method or any other method is not possible. We should add model/reflecion based combobox like in VRL < 0.5.
With multimethods support we willt get problems with methods that must only be visualized once. To prevent that, @MethodInfo
should support a 'maxNumberOfVisualizations' field.
indentation is not working as expected:
@ComponentInfo(name="CMPNAME", category="Custom") public class CLSNAME implements java.io.Serializable { private static final long serialVersionUID=1L; void bla( int a){ // from here // indentation 7 spaces } void bla(int a) { // from here // indentation 4 spaces } // add your code here }
NPE in GroovyCodeEditorComponent if class from another plugin is referenced that is not loaded.
It seems that change events are not always fired (see mainwithchained*.groovy)
MacOS 10.8.5, VRL 0.4.5.5
In the VRL-Lang package static type checking only works for the first class in the file. Therefore, method return types cannot be checked correctly.
Should a menu item be provided to allow jars to be added without a plugin?
Creating a plugin simply to provide access to a third-party library, particularly a 'standard' library such as some Apache and w3c libraries, creates extra labour and runs the risk (has the benefit?) that not all packages will be made available by the developer.
If this goes against the grain, could it be done for those libraries that are excluded in the VRL-Studio Ant-build but present in the standard Groovy distribution?
Trying to compile VRL with recent NetBeans versions (e.g., 7.4) results in compile error:
/Users/miho/EigeneApps/VRL/VRL/nbproject/build-impl.xml:990: The following error occurred while executing this line:
/Users/miho/EigeneApps/VRL/VRL/nbproject/build-impl.xml:834: copylibs doesn't support the "excludeFromCopy" attribute
BUILD FAILED (total time: 11 seconds)
Add conditional dependencies (i,e, use when available) to support plugins that are designed internally to fail gracefully when an optional library is not available.
If a plugin is named as a before installed plugin no error message is shown.
VRL-Tutorial-Plugin will be dublicated installed and we see a wrong error message.
The same holds for derivatived plugins.
On saving a project that contains a window representing an object that does not implement Serializable, this window disappears without any warning being displayed.
The only notice is "Window x deleted!" in the log, which is not very informative, since the user can see that for himself.
Edit: Sorry, I guess this belongs to VRL-Studio, not VRL, but I am leaving it here.
Having added an object to the canvas and using several of its methods, saving and the re-opening a project will mix up the order in which the methods are represented and subsequently called.
Native bindings have changed during the JDK transition from Apple to Oracle/Sun. Therefore, the current Java3D version does not work anymore with Oracle JDK on OS X. On Linux and Windows it still works.
To be JDK8 compatible we have to update the Java3D version and Jogl bindings.
Just kine in issue #48 Swing behavior has changed and does loose mouse events while dragging nodes (Transferable.java)
In V3DMath.java, the angle field in javax.vecmath.AxisAngle4d is accessed via a getter/setter in lines 250/251.
This is a public field without getters/setters in my copies of vecmath so, at least to compile, should this read (???)
double angle = rotation2.angle;//.getAngle();
rotation2.angle=-angle;//setAngle(-angle);
Now a notification "Source/Target not equal" appears. Sometimes you don't get it, why they are not the same. Something like Source (IGridObject) and Target (IUserMatrix) are not equal would help.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.