Giter Club home page Giter Club logo

dragome-sdk's People

Contributors

bertung avatar dragome avatar fpetrola avatar mirkosertic avatar nicolaichuk avatar nosix avatar prototype1 avatar purplezimmermann avatar scott-mcmasters avatar xpenatan avatar

dragome-sdk's Issues

org.w3c.dom.* class loading errors because of conflicting libraries

Runtime access to several classes from org.w3c.dom and sub-packages leads to java.lang.NoClassDefFoundError

java.lang.NoClassDefFoundError: org/w3c/dom/html/HTMLCanvasElement
	at com.dragome.web.config.DomHandlerApplicationConfigurator.<init>(DomHandlerApplicationConfigurator.java:81)
...

com.dragome.web.config.DomHandlerApplicationConfigurator references many of those classes during instantiation:

@DragomeConfiguratorImplementor
public class DomHandlerApplicationConfigurator extends ChainedInstrumentationDragomeConfigurator
{
protected JsDelegateGenerator jsDelegateGenerator;
protected List<Class<?>> classes= new ArrayList<>(Arrays.asList(Document.class, Element.class, Attr.class, NodeList.class, //
Node.class, NamedNodeMap.class, Text.class, HTMLCanvasElement.class, CanvasRenderingContext2D.class, EventTarget.class, //
EventListener.class, Event.class, ArrayBuffer.class, HTMLImageElementExtension.class, HTMLCanvasElementExtension.class, KeyboardEvent.class, //
WebGLActiveInfo.class, WebGLBuffer.class, WebGLContextAttributes.class, WebGLFramebuffer.class, //
WebGLObject.class, WebGLProgram.class, WebGLRenderbuffer.class, WebGLRenderingContext.class, //
WebGLShader.class, WebGLTexture.class, WebGLUniformLocation.class, WebGLRenderingContextExtension.class, //
ArrayBuffer.class, ArrayBufferView.class, Float32Array.class, Float64Array.class, Int16Array.class, //
Int32Array.class, Int8Array.class, Uint16Array.class, Uint32Array.class, Uint8Array.class, //
ArrayBufferFactory.class, TypedArraysFactory.class, XMLHttpRequest.class, Object.class, ProgressEvent.class, //
EventTarget.class, Event.class, XMLHttpRequest.class, WebSocket.class, MessageEventExtension.class, XMLHttpRequestExtension.class));

Further debugging reveals that org.w3c.dom API is parallelly provided by different linked libraries with conflicting implementations. dragome-w3c-standards should be the one to be used, but there is also xml-apis:xml-apis and the default implementation in java.xml and jdk.xml.dom

Raise org.objectweb.asm.Opcodes level for org.objectweb.asm.ClassVisitor instances

After updating asm dependencies via #11, org.objectweb.asm.ClassVisitor starts throwing UnsupportedOperationException

  public void visitNestHost(final String nestHost) {
    if (api < Opcodes.ASM7) {
      throw new UnsupportedOperationException("NestHost requires ASM7");
    }
    if (cv != null) {
      cv.visitNestHost(nestHost);
    }
  }

Which is another reason for #9

To fully support higher Java bytecode versions for compiling classes to JavaScript, the api parameter needs an update as well. It accepts the following values

  public ClassVisitor(final int api, final ClassVisitor classVisitor) {
    if (api != Opcodes.ASM9
        && api != Opcodes.ASM8
        && api != Opcodes.ASM7
        && api != Opcodes.ASM6
        && api != Opcodes.ASM5
        && api != Opcodes.ASM4
        && api != Opcodes.ASM10_EXPERIMENTAL) {
      throw new IllegalArgumentException("Unsupported api " + api);
    }
    if (api == Opcodes.ASM10_EXPERIMENTAL) {
      Constants.checkAsmExperimental(this);
    }
    this.api = api;
    this.cv = classVisitor;
  }

Multiple java.lang.NullPointerException on compiling classes to JavaScript

Compiling classes:
[ERROR] java.lang.NullPointerException
...

They are thrown in com.dragome.compiler.type.TypeResolver.compile() because typeDecl is not null-checked after something goes wrong with .parse()

TypeDeclaration typeDecl= null;
try
{
typeDecl= parse(classUnit);
}
catch (Exception e)
{
Log.getLogger().debug("parse error:" + e.getMessage(), e);
}
{
typeDecl.visit(generator);

Failed to collect dependencies at org.gradle:gradle-core:jar:2.6

[ERROR] Failed to execute goal on project dragome-maven-plugin: Could not resolve dependencies for project com.dragome:dragome-maven-plugin:maven-plugin:0.96-beta4: Failed to collect dependencies at org.gradle:gradle-core:jar:2.6: Failed to read artifact descriptor for org.gradle:gradle-core:jar:2.6: Could not transfer artifact org.gradle:gradle-core:pom:2.6 from/to gradle (http://repo.gradle.org/gradle/libs-releases-local/): Access denied to: http://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-core/2.6/gradle-core-2.6.pom , ReasonPhrase:Forbidden. -> [Help 1]
...

Cannot start compiler because there is no URLClassLoader available

During initialization of Dragome servlet classes in a org.springframework.web.context.WebApplicationContext

ERROR c.d.w.s.servlets.CompilerServlet - Cannot start compiler because there is no URLClassLoader available

Caused by:

private void compile() throws URISyntaxException
{
ClassLoader c= getClass().getClassLoader();
final Classpath classPath= new Classpath();
if (c instanceof URLClassLoader)
{

}
else
LOGGER.log(Level.SEVERE, "Cannot start compiler because there is no URLClassLoader available");

java.lang.NullPointerException in com.dragome.compiler.units.ClassUnit.removeSubUnit()

When called on instanceof NullClassUnit

Exception in thread "Thread-19" java.lang.RuntimeException: java.lang.NullPointerException
	at com.dragome.compiler.DragomeJsCompiler.compile(DragomeJsCompiler.java:175)
	at com.dragome.web.helpers.serverside.DragomeCompilerLauncher.compileWithMainClass(DragomeCompilerLauncher.java:74)
	at com.dragome.web.serverside.compile.watchers.DirectoryWatcher.compile(DirectoryWatcher.java:263)
	at com.dragome.web.serverside.compile.watchers.DirectoryWatcher.startWatching(DirectoryWatcher.java:249)
	at com.dragome.web.serverside.servlets.CompilerServlet$1.run(CompilerServlet.java:106)
Caused by: java.lang.NullPointerException
	at com.dragome.compiler.units.ClassUnit.removeSubUnit(ClassUnit.java:183)
	at com.dragome.compiler.units.ClassUnit.setSuperUnit(ClassUnit.java:242)
	at com.dragome.compiler.units.ClassUnit.clear(ClassUnit.java:135)
	at com.dragome.compiler.type.TypeResolver.visit(TypeResolver.java:41)
	at com.dragome.compiler.Project.visitSuperTypes(Project.java:297)
	at com.dragome.compiler.Project.resolve(Project.java:486)
	at com.dragome.compiler.writer.Assembly.resolveNoTainting(Assembly.java:340)
	at com.dragome.compiler.DragomeJsCompiler.execute(DragomeJsCompiler.java:268)
	at com.dragome.compiler.DragomeJsCompiler.compile(DragomeJsCompiler.java:170)
	... 4 more

Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:3.3:helpmojo

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:3.3:helpmojo (help-goal) on project dragome-maven-plugin: Execution help-goal of goal org.apache.maven.plugins:maven-plugin-plugin:3.3:helpmojo failed.: IllegalArgumentException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:3.3:helpmojo (help-goal) on project dragome-maven-plugin: Execution help-goal of goal org.apache.maven.plugins:maven-plugin-plugin:3.3:helpmojo failed.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution help-goal of goal org.apache.maven.plugins:maven-plugin-plugin:3.3:helpmojo failed.
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init> (Unknown Source)
    at org.objectweb.asm.ClassReader.<init> (Unknown Source)
    at org.objectweb.asm.ClassReader.<init> (Unknown Source)
    at org.apache.maven.tools.plugin.annotations.scanner.DefaultMojoAnnotationsScanner.analyzeClassStream (DefaultMojoAnnotationsScanner.java:201)
    at org.apache.maven.tools.plugin.annotations.scanner.DefaultMojoAnnotationsScanner.scanArchive (DefaultMojoAnnotationsScanner.java:139)
    at org.apache.maven.tools.plugin.annotations.scanner.DefaultMojoAnnotationsScanner.scan (DefaultMojoAnnotationsScanner.java:108)
    at org.apache.maven.tools.plugin.annotations.scanner.DefaultMojoAnnotationsScanner.scan (DefaultMojoAnnotationsScanner.java:75)
    at org.apache.maven.tools.plugin.annotations.JavaAnnotationsMojoDescriptorExtractor.scanAnnotations (JavaAnnotationsMojoDescriptorExtractor.java:119)
    at org.apache.maven.tools.plugin.annotations.JavaAnnotationsMojoDescriptorExtractor.execute (JavaAnnotationsMojoDescriptorExtractor.java:98)
    at org.apache.maven.tools.plugin.scanner.DefaultMojoScanner.populatePluginDescriptor (DefaultMojoScanner.java:96)
    at org.apache.maven.plugin.plugin.AbstractGeneratorMojo.execute (AbstractGeneratorMojo.java:243)
    at org.apache.maven.plugin.plugin.HelpGeneratorMojo.execute (HelpGeneratorMojo.java:88)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)

Update asm dependencies to support bytecode >= 53 when compiling classes to JavaScript

The outdated version 5.0.2 of org.ow2.asm:asm-all used by dragome-bytecode-js-compiler is the actual root cause for #9

org.objectweb.asm.ClassReader does not support bytecode from Java > 1.8

    public ClassReader(final byte[] b, final int off, final int len) {
        this.b = b;
        // checks the class version
        if (readShort(off + 6) > Opcodes.V1_8) {
            throw new IllegalArgumentException();
        }
        ...

Error injecting: org.apache.maven.plugin.javadoc.JavadocJar

Happening on building any sub-project:

An API incompatibility was encountered while executing org.apache.maven.plugins:maven-javadoc-plugin:2.5:jar: java.lang.ExceptionInInitializerError: null
-----------------------------------------------------
[ERROR] realm =    plugin>org.apache.maven.plugins:maven-javadoc-plugin:2.5
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/plugins/maven-javadoc-plugin/2.5/maven-javadoc-plugin-2.5.jar
[ERROR] urls[1] = file:/C:/Users/stefanz/.m2/repository/commons-cli/commons-cli/1.0/commons-cli-1.0.jar
[ERROR] urls[2] = file:/C:/Users/stefanz/.m2/repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar
[ERROR] urls[3] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.jar
[ERROR] urls[4] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/maven-archiver/2.3/maven-archiver-2.3.jar
[ERROR] urls[5] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-11/doxia-sink-api-1.0-alpha-11.jar
[ERROR] urls[6] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/doxia/doxia-site-renderer/1.0-alpha-11/doxia-site-renderer-1.0-alpha-11.jar
[ERROR] urls[7] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/doxia/doxia-core/1.0-alpha-11/doxia-core-1.0-alpha-11.jar
[ERROR] urls[8] = file:/C:/Users/stefanz/.m2/repository/org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar
[ERROR] urls[9] = file:/C:/Users/stefanz/.m2/repository/org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar
[ERROR] urls[10] = file:/C:/Users/stefanz/.m2/repository/org/apache/velocity/velocity/1.5/velocity-1.5.jar
[ERROR] urls[11] = file:/C:/Users/stefanz/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar
[ERROR] urls[12] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/doxia/doxia-decoration-model/1.0-alpha-11/doxia-decoration-model-1.0-alpha-11.jar
[ERROR] urls[13] = file:/C:/Users/stefanz/.m2/repository/commons-collections/commons-collections/3.2/commons-collections-3.2.jar
[ERROR] urls[14] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/doxia/doxia-module-apt/1.0-alpha-11/doxia-module-apt-1.0-alpha-11.jar
[ERROR] urls[15] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/doxia/doxia-module-fml/1.0-alpha-11/doxia-module-fml-1.0-alpha-11.jar
[ERROR] urls[16] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/doxia/doxia-module-xdoc/1.0-alpha-11/doxia-module-xdoc-1.0-alpha-11.jar
[ERROR] urls[17] = file:/C:/Users/stefanz/.m2/repository/org/apache/maven/doxia/doxia-module-xhtml/1.0-alpha-11/doxia-module-xhtml-1.0-alpha-11.jar
[ERROR] urls[18] = file:/C:/Users/stefanz/.m2/repository/commons-lang/commons-lang/2.1/commons-lang-2.1.jar
[ERROR] urls[19] = file:/C:/Users/stefanz/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
[ERROR] urls[20] = file:/C:/Users/stefanz/.m2/repository/org/codehaus/plexus/plexus-archiver/1.0-alpha-9/plexus-archiver-1.0-alpha-9.jar
[ERROR] urls[21] = file:/C:/Users/stefanz/.m2/repository/org/codehaus/plexus/plexus-io/1.0-alpha-1/plexus-io-1.0-alpha-1.jar
[ERROR] urls[22] = file:/C:/Users/stefanz/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]

Which might be related to https://issues.apache.org/jira/browse/MJAVADOC-488 according to oracle/opengrok#2644

Therefore solution should be updating dependency maven-javadoc-plugin to 3.0+

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.