Ok ... 

in the end I avoided the problem ... however I was lucky that the project still 
was so small.

I disabled the 2 dependencies I had and removed the code that needed it ... 
then the application worked.
So I tried to add module after module ... 

In the end I had a look at EVERY class in my modules and I found my old Enum 
base class with which I simulated Enums in Flex.

As soon as that was no longer needed, the application worked. So I started with 
an empty class and commented in code-block after code-block.

As soon as I commented in any usage of getQualifiedClassName the:
"Uncaught Error: Undefined nameToPath for org.apache.royale.utils.Language" 
Error
Came back (Even if I did add a dependency to that and I even tried forcing it 
to be included) ... 

Another thing I noticed: 
I read that private constructors are now possible, but as soon as I have a 
private constructor my "equals" method complained that the "Enum" type of the 
other was not known)

    public function equals(other:Enum):Boolean {
        return other === this || (
                other != null &&
                //getQualifiedClassName(this) == getQualifiedClassName(other) &&
                other.name == this.name
        );
    }

Have to admit tracking down this problem took me about 5-6 hours ... that 
wasn't the most enjoyable of things ... how can we make the compiler tell users 
what's going wrong better? Right now I am sort of a little worried if I should 
continue my efforts in porting my old Flex stuff because this really scared the 
hell out of me. I really hope there won't be many more issues like this.

Would really love to have my enums working correctly ... so if anyone has an 
idea how I can:
1) Make the private constructors work
2) Make the getQualifiedClassName work

I would be happy to hear.

Chris



Am 14.08.20, 13:13 schrieb "Christofer Dutz" <christofer.d...@c-ware.de>:

    Hi Harbs,

    thanks for that ... I'm currently going through the problem with Carlos.
    In the end if I removed the dependencies to my super tiny two other 
libraries the application started ... so I'm trying to narrow down the problem.

    Chris



    Am 14.08.20, 12:32 schrieb "Harbs" <harbs.li...@gmail.com>:

        I don’t use Maven, so I’m not used to declaring the swcs I need.

        A quick look seems to indicate that you’re missing Basic.

        > On Aug 14, 2020, at 1:20 PM, Christofer Dutz 
<christofer.d...@c-ware.de> wrote:
        > 
        > Hi all,
        > 
        > So I am currently doing my first steps in porting an existing 
framework to Royale. So far I have made good progress.
        > I am now able to login to my SpringBoot application using Spring 
Security using BlazeDS and am currently working on porting a loader application.
        > 
        > So as soon as a user logs in, it automatically lists the modules this 
user is allowed to use and then it should load these modules.
        > 
        > Unfortunately something seems to be not going right with this module. 
While the others worked nicely, in this case not all referenced classes are 
output in the built application. Some js files are simply missing. If I 
manually copy them there and add them to the dependencies in the index.html I 
can manage to load them, but all in all it’s not really working.
        > 
        > Not sure what I’m doing wrong :-/
        > 
        > The code of the loader application should be quite simple and 
straight forward:
        > 
        > 
        > <?xml version="1.0" encoding="utf-8"?>
        > <!--
        >  Licensed to the Apache Software Foundation (ASF) under one
        >  or more contributor license agreements.  See the NOTICE file
        >  distributed with this work for additional information
        >  regarding copyright ownership.  The ASF licenses this file
        >  to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
        > 
        >  Unless required by applicable law or agreed to in writing,
        >  software distributed under the License is distributed on an
        >  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
        >  KIND, either express or implied.  See the License for the
        >  specific language governing permissions and limitations
        >  under the License.
        >  -->
        > <j:Application xmlns:fx="http://ns.adobe.com/mxml/2009";
        >               xmlns:j="library://ns.apache.org/royale/jewel"
        >               xmlns:js="library://ns.apache.org/royale/basic"
        >               xmlns:html="library://ns.apache.org/royale/html"
        >               xmlns:mx="library://ns.apache.org/royale/mx"
        >               initialize="init(event)">
        > 
        >    <j:beads>
        >        <js:ApplicationDataBinding/>
        >        <js:ClassAliasBead/>
        >    </j:beads>
        > 
        >    <fx:Declarations>
        >        <mx:RemoteObject id="moduleService"
        >                         destination="moduleService"
        >                         fault="onError(event)">
        >            <mx:method name="listModulesForCurrentUser" 
result="onListModulesForCurrentUserResult(event)"/>
        >        </mx:RemoteObject>
        >    </fx:Declarations>
        > 
        >    <fx:Style>
        >        @namespace "http://www.w3.org/1999/xhtml";;
        > 
        >        .bgshape
        >        {
        >            background: #00ff00;
        >        }
        >        .fgshape
        >        {
        >            border: 1px solid #000000;
        >        }
        > 
        >    </fx:Style>
        > 
        >    <fx:Script>
        >        <![CDATA[
        >        import de.cware.cweb.server.core.types.Enum;
        >        import de.cware.cweb.server.module.model.FrontendModule;
        > 
        >        import org.apache.royale.reflection.registerClassAlias;
        > 
        >        import mx.logging.ILoggingTarget;
        >        import mx.logging.Log;
        >        import mx.logging.LogEventLevel;
        >        import mx.logging.targets.TraceTarget;
        >        import mx.messaging.ChannelSet;
        >        import mx.messaging.channels.AMFChannel;
        >        import mx.rpc.AsyncToken;
        >        import mx.rpc.Responder;
        >        import mx.rpc.events.FaultEvent;
        >        import mx.rpc.events.ResultEvent;
        > 
        >        import org.apache.royale.collections.ArrayList;
        >        import org.apache.royale.events.Event;
        > 
        >        private var channelSet:ChannelSet;
        > 
        >        private var enum:Enum;
        > 
        >        private function 
init(event:org.apache.royale.events.Event):void {
        >            // ArrayCollection has been renamed to ArrayList.
        >            registerClassAlias('flex.messaging.io.ArrayCollection', 
ArrayList);
        > 
        >            // Initialize the logging system
        >            var traceLogger:ILoggingTarget = new TraceTarget();
        >            traceLogger.filters = ["mx.rpc.*", "mx.messaging.*"];
        >            traceLogger.level = LogEventLevel.ALL;
        >            Log.addTarget(traceLogger);
        > 
        >            // Get the base url of the application
        >            var appUrl:String = getApplicationBaseUrl();
        >            trace("Application url " + appUrl);
        > 
        >            // TODO: For debugging ... remove
        >            //appUrl = "http://localhost:8080";;
        > 
        >            channelSet = new ChannelSet();
        > 
        >            // Define a short-polling-channel
        >            var shortPollingChannel:AMFChannel = new 
AMFChannel("shortPollingAmf", appUrl + "/messagebroker/short-polling-amf");
        >            shortPollingChannel.pollingEnabled = true;
        >            shortPollingChannel.pollingInterval = 500;
        >            shortPollingChannel.useSmallMessages = true;
        >            channelSet.addChannel(shortPollingChannel);
        > 
        >            moduleService.channelSet = channelSet;
        > 
        >            // Instantly log in as "guest"
        >            var loginToken:AsyncToken = channelSet.login("guest", 
"somepassword", "UTF-8");
        >            loginToken.addResponder(new Responder(onLoginSuccess, 
onLoginError));
        >        }
        > 
        >        public static function getApplicationBaseUrl():String {
        >            var appUrl:String = window.location.href;
        >            appUrl = appUrl.substring(0, appUrl.lastIndexOf("/"));
        >            return appUrl;
        >        }
        > 
        >        private function onButtonClick(event:MouseEvent):void {
        >            var token:AsyncToken = 
moduleService.listModulesForCurrentUser();
        >            // We need to manually register until the support of 
defining result hanlders
        >            // in the mx:method element is supported …
        >            token.addResponder(new 
Responder(onListModulesForCurrentUserResult, onError));
        >        }
        > 
        >        private function onLoginSuccess(event:Event):void {
        >            trace("Login Success");
        >            // After successfully logging in, we have to load the list 
of modules
        >            // the user is allowed to use.
        >            var token:AsyncToken = 
moduleService.listModulesForCurrentUser();
        >            // We need to manually register until the support of 
defining result hanlders
        >            // in the mx:method element is supported …
        >            token.addResponder(new 
Responder(onListModulesForCurrentUserResult, onError));
        >        }
        > 
        >        private function onLoginError(event:Event):void {
        >            trace("Login Error " + event);
        >        }
        > 
        >        private function 
onListModulesForCurrentUserResult(event:ResultEvent):void {
        >            trace("Got Module List:");
        >            var moduleList:ArrayList = ArrayList(event.result);
        >            for each(var frontendModule:FrontendModule in moduleList) {
        >                trace("   " + frontendModule.name);
        >            }
        > 
        >        }
        > 
        >        private function onError(event:FaultEvent):void {
        >            trace("Fault");
        >        }
        >        ]]>
        >    </fx:Script>
        > 
        >    <j:initialView>
        >        <j:View width="100%" height="100%">
        >            <j:beads>
        >                <j:HorizontalCenteredLayout/>
        >                <j:Paddings padding="50"/>
        >            </j:beads>
        > 
        >            <j:Card width="460" height="680">
        >                <j:CardHeader>
        >                    <html:H3 text="Conferences" 
className="primary-normal"/>
        >                </j:CardHeader>
        >                <j:CardPrimaryContent>
        >                    <!--j:List width="100%" height="100%" 
dataProvider="{conferences}"
        >                            
change="onConferenceSelectionChange(event)" labelField="name"/-->
        >                    <j:Button width="100%" text="Get Module List" 
click="onButtonClick(event)">
        >                        <!--j:beads>
        >                            <j:Disabled disabled="{selectedConference 
== null}"/>
        >                        </j:beads-->
        >                    </j:Button>
        >                </j:CardPrimaryContent>
        >            </j:Card>
        >        </j:View>
        >    </j:initialView>
        > 
        > </j:Application>
        > 
        > The pom also should be quite simple:
        > 
        > 
        > <?xml version="1.0" encoding="UTF-8"?>
        > <!--
        >  Licensed to the Apache Software Foundation (ASF) under one
        >  or more contributor license agreements.  See the NOTICE file
        >  distributed with this work for additional information
        >  regarding copyright ownership.  The ASF licenses this file
        >  to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
        > 
        >  Unless required by applicable law or agreed to in writing,
        >  software distributed under the License is distributed on an
        >  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
        >  KIND, either express or implied.  See the License for the
        >  specific language governing permissions and limitations
        >  under the License.
        >  -->
        > <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
        >  <modelVersion>4.0.0</modelVersion>
        > 
        >  <parent>
        >   <groupId>de.cware.cweb</groupId>
        >    <artifactId>cweb-frontend</artifactId>
        >    <version>1.0.0-SNAPSHOT</version>
        >  </parent>
        > 
        >  <artifactId>cweb-frontend-application</artifactId>
        >  <packaging>swf</packaging>
        > 
        >  <name>C-Web: Frontend: Application</name>
        > 
        >  <build>
        >    <sourceDirectory>src/main/royale</sourceDirectory>
        >    <plugins>
        >      <!--
        >        This plugin doesn't actually do anything in the build,
        >        it only makes IntelliJ turn on Flex support
        >      -->
        >      <plugin>
        >        <groupId>net.flexmojos.oss</groupId>
        >        <artifactId>flexmojos-maven-plugin</artifactId>
        >        <version>7.1.1</version>
        >      </plugin>
        >      <plugin>
        >        <groupId>org.apache.royale.compiler</groupId>
        >        <artifactId>royale-maven-plugin</artifactId>
        >        <version>${royale.version}</version>
        >        <extensions>true</extensions>
        >        <configuration>
        >          <mainClass>App.mxml</mainClass>
        >          <targets>JSRoyale</targets>
        >          <debug>true</debug>
        >          
<additionalCompilerOptions>-source-map=true;</additionalCompilerOptions>
        >        </configuration>
        >        <dependencies>
        >          <dependency>
        >            <groupId>org.apache.royale.compiler</groupId>
        >            <artifactId>compiler-jx</artifactId>
        >            <version>${royale.version}</version>
        >          </dependency>
        >        </dependencies>
        >      </plugin>
        >    </plugins>
        >  </build>
        > 
        >  <dependencies>
        >    <dependency>
        >      <groupId>de.cware.cweb</groupId>
        >      <artifactId>cweb-core-frontend-utils</artifactId>
        >      <version>1.0.0-SNAPSHOT</version>
        >      <type>swc</type>
        >      <classifier>js</classifier>
        >    </dependency>
        >    <dependency>
        >      <groupId>de.cware.cweb</groupId>
        >      <artifactId>cweb-module-frontend-utils</artifactId>
        >      <version>1.0.0-SNAPSHOT</version>
        >      <type>swc</type>
        >      <classifier>js</classifier>
        >    </dependency>
        > 
        >    <dependency>
        >      <groupId>org.apache.royale.framework</groupId>
        >      <artifactId>Core</artifactId>
        >      <version>${royale.version}</version>
        >      <type>swc</type>
        >      <classifier>js</classifier>
        >    </dependency>
        >    <dependency>
        >      <groupId>org.apache.royale.framework</groupId>
        >      <artifactId>Jewel</artifactId>
        >      <version>${royale.version}</version>
        >      <type>swc</type>
        >      <classifier>js</classifier>
        >    </dependency>
        >    <dependency>
        >      <groupId>org.apache.royale.framework</groupId>
        >      <artifactId>Language</artifactId>
        >      <version>${royale.version}</version>
        >      <type>swc</type>
        >      <classifier>js</classifier>
        >    </dependency>
        >    <dependency>
        >      <groupId>org.apache.royale.framework</groupId>
        >      <artifactId>Network</artifactId>
        >      <version>${royale.version}</version>
        >      <type>swc</type>
        >      <classifier>js</classifier>
        >    </dependency>
        >    <dependency>
        >      <groupId>org.apache.royale.framework</groupId>
        >      <artifactId>Reflection</artifactId>
        >      <version>${royale.version}</version>
        >      <type>swc</type>
        >      <classifier>js</classifier>
        >    </dependency>
        >    <dependency>
        >      <groupId>org.apache.royale.framework</groupId>
        >      <artifactId>MXRoyale</artifactId>
        >      <version>${royale.version}</version>
        >      <type>swc</type>
        >      <classifier>js</classifier>
        >    </dependency>
        > 
        >    <!-- Use the Jewel Theme -->
        >    <dependency>
        >      <groupId>org.apache.royale.framework</groupId>
        >      <artifactId>JewelTheme</artifactId>
        >      <version>${royale.version}</version>
        >      <type>swc</type>
        >      <scope>theme</scope>
        >      <classifier>js</classifier>
        >    </dependency>
        >  </dependencies>
        > 
        > </project>
        > 
        > Anyone can spot something bad happening here?
        > 
        > Chris
        > 



Reply via email to