ABAP ECLIPSE Plugin from CEON

Hello everyone,
I am a big admirer of the Eclipse IDE and so was pretty excited when I came to know that a plugin for ABAP has been developed by CEON http://ceon.nl/abapeclipse/. I would like to know about your views on this product and whether anyone has used it before.
A pdf is available at the site explaining all its features but I want first hand reviews to persuade my Project Manager to use it in our project.
Also could anyone please tell me about similar third party tools which one can use to enhance productivity.
Thanks in advance.

I too am a fan of Eclipse.  And it would be great if the workbench were fully integrated into Eclipse.  I've had a look at this product, and although it has some great points, there are a few points that I'd be careful about.
1. Code is read from the SAP system into Eclipse.  It is edited and then written back.  This could cause complications when more than one person is working on an object.
2. The claims for code-completion giving enormous productivity hikes would certainly have been so before the new editor was available as part of SAPGui, but now we have code-completion there as well. ( Not as nice as I'd like - autocompletion of method names when we already know about the class, or fieldnames from a table would be good ).
I'd need to be really convinced that it would be faster to make the switch.
matt

Similar Messages

  • Installing the Android Eclipse plugin: AUR vs Eclipse built-in install

    The wiki suggests that you install the Android Developer Tools Eclipse plugin from the AUR. I had this running earlier in the year but, due to being away, mothballed my system for several months (I do this too often!) and found that after the update-orgy that followed, the Android plugins weren't showing up in any sense in my Eclipse interface. Since I wasn't mid-project, I decided it was easier just to entirely remove Eclipse and install it all from scratch. Then I noticed that Eclipse has a built in mechanism for installing plugins. My setup now works as before.
    Of course "I did something wrong so it didn't work" is not the same as "it's a bad method", but what is the advantage of installing from the AUR as opposed to straight from Google? Should I add a comment to the wiki on this?

    There are a couple of things we've found that can interfere with using a CS5 Suite SN with FB4 Plug-in:
    - if you have multiple copies of FB4 Plug-in installed on your machine, only the first one will be able to use a Suite SN
    - with some configurations, you need to have the qualifying CS5 Suite (Web Premium or Master Collection) installed on the same machine where you're running FB4 Plug-in.
    To remedy the first problem, here's an approach we've found to work:
    - uninstall all copies of FB4 Plug-in
    - run the CS5 Clean Script, and if it finds additional copies of FB4 Plug-in, allow it to remove them. You can find the CS5 Clean Script here: http://www.adobe.com/support/contact/cs5clean.html
    - reboot before re-installing FB4 Plug-in.
    After re-installing FB4 Plug-in, if you want to plug into multiple copies of eclipse on your system, you don't need to install it multiple times. Instead, just copy the link file from the dropins folder in the copy of eclipse (eclipse-host-distro) bundled with FB4 Plug-in, and paste that link file into the dropins folder of your own copy of eclipse. You can repeat this multiple times if you have more than one custom copy of eclipse to plug into.
    -Chris

  • Flex eclipse plugin installation problem

    Hi All,
    I have eclipse 3.x Europa edition. I am trying to install
    Flex builder 3 plugin for eclipse for some time now.
    It is frustrating that the installation always hangs when it
    tries to install "Merge module".
    I downloaded the eclipse plugin from the adobe site:
    http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3email
    Please help so that i can do some quality flex coding.
    Thanks,
    Madhav
    Adobe
    Flex Eclipse Plugin Link

    I am replying to all these posts about issues with the
    install to let Adobe know that there is a compatibility issue with
    the FB2 eclispe plugin installer. This is a major issue that is
    keeping people from trying/buying this product.

  • Error when starting weblogic from forthnet eclipse plugin?

    Hi,
    I'm getting an error when trying to start my weblogic server from the forthnet eclipse plugin. (However, it works to start the server from a command prompt on the machine it is running on, and also, it works to stop the server from eclipse)
    Server and eclipse is running on Windows.
    The error reported is:
    <2004-sep-01 kl 16:13 CEST> <Warning> <EmbeddedLDAP> <BEA-171520> <Could not obtain an exclusive lock for directory: .\decisionsite81\ldap\ldapfiles. Waiting for 10 seconds and then retrying in case existing WebLogic Server is still shutting down.>
    <2004-sep-01 kl 16:13 CEST> <Warning> <EmbeddedLDAP> <BEA-171520> <Could not obtain an exclusive lock for directory: .\decisionsite81\ldap\ldapfiles. Waiting for 10 seconds and then retrying in case existing WebLogic Server is still shutting down.>
    <2004-sep-01 kl 16:13 CEST> <Warning> <EmbeddedLDAP> <BEA-171520> <Could not obtain an exclusive lock for directory: .\decisionsite81\ldap\ldapfiles. Waiting for 10 seconds and then retrying in case existing WebLogic Server is still shutting down.>
    <2004-sep-01 kl 16:13 CEST> <Warning> <EmbeddedLDAP> <BEA-171520> <Could not obtain an exclusive lock for directory: .\decisionsite81\ldap\ldapfiles. Waiting for 10 seconds and then retrying in case existing WebLogic Server is still shutting down.>
    <2004-sep-01 kl 16:13 CEST> <Error> <EmbeddedLDAP> <BEA-171519> <Could not obtain an exclusive lock to the embedded LDAP data files directory: .\decisionsite81\ldap\ldapfiles because another WebLogic Server is already using this directory. Ensure that the first WebLogic Server is completely shutdown and restart the server.>
    <2004-sep-01 kl 16:13 CEST> <Critical> <WebLogicServer> <BEA-000364> <Server failed during initialization. Exception:weblogic.server.ServiceFailureException: Could not obtain an exclusive lock to the embedded LDAP data files directory: .\decisionsite81\ldap\ldapfiles because another WebLogic Server is already using this directory. Ensure that the first WebLogic Server is completely shutdown and restart the server.
    weblogic.server.ServiceFailureException: Could not obtain an exclusive lock to the embedded LDAP data files directory: .\decisionsite81\ldap\ldapfiles because another WebLogic Server is already using this directory. Ensure that the first WebLogic Server is completely shutdown and restart the server.
         at weblogic.ldap.EmbeddedLDAP.ensureExclusiveAccess(EmbeddedLDAP.java:959)
         at weblogic.ldap.EmbeddedLDAP.initialize(EmbeddedLDAP.java:221)
         at weblogic.t3.srvr.T3Srvr.initializeHere(T3Srvr.java:814)
         at weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:664)
         at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:342)
         at weblogic.Server.main(Server.java:32)
    >
    <2004-sep-01 kl 16:13 CEST> <Emergency> <WebLogicServer> <BEA-000342> <Unable to initialize the server: weblogic.server.ServiceFailureException: Could not obtain an exclusive lock to the embedded LDAP data files directory: .\decisionsite81\ldap\ldapfiles because another WebLogic Server is already using this directory. Ensure that the first WebLogic Server is completely shutdown and restart the server.>
    I've tried removing the "EmbeddedLDAP.lok" file, but without luck.

    Which version of your eclipse? I am using eclipse 3.0 and I am able to start weblogic 8.1 from eclipse.
    I did the following steps:
    1.create a new domain through weblogic's configuration wizard --> basic weblogic server domain --> Express --> proive the user name and password --> development mode, and sun sdk (or other jdk) --> your new domain name
    2. configure weblogic setting in eclipse: preferences --> weblogic --> 8.1, C:\bea\weblogic81, your newly created domain name --> C:\bea\user_projects\domains (domain directory) --> myserver --> admin (or your user name) --> password --> localhost --> 7001
    after that, you should be able to click on "start weblogic server" button from toolbar.
    Hope my two cents solve your problem.

  • How to start weblogic in debug mode from BEA WebLogic Eclipse plugin

    I have a problem making weblogic work with eclipse3.1. I am using a BEA WebLogic plugin to handle weblogic (start/stop) from eclipse. However I want to debug my application and I am unable to figure out a way to start my weblogic in debug mode like we do in WSAD. I tried using some other plugins also but no luck. Please suggest me a plugin to handle this or any other way of debugging my application from eclipse. I am using weblogic 8.1.

    Hi,
    Dev Environment
    weblogic eclipse plugin 2.0 beta
    weblogic server 8.1
    eclipse 3.1.1
    Created a server that i would like to deploy my EJB so that i can put break points on my EJB in eclipse.
    How do i do it?
    I managed to deploy an ear (containing the ejb) directly to the weblogic installed folder and it deployed the ejb. But the breakpoint set in eclipse is not triggered. Of course in this case as weblogic server is running the .ear file deployed manually in the file system.
    Any help is appreciated.
    Mel

  • Referenced Library from an Eclipse plugin needs a .properties file

    I have a problem with reading .properties files from my Eclipse plugin.
    My plugin uses a Referenced Library .jar file. In the file a class is calling:
    new FileInputStream("xxx.properties")
    and it can't find the .properties file. I have this file. Where should I put it, or include it's path so that my library can find it when running the plugin?

    Place it in the working directory.And what would be the working directory for a plugin?Probably the same as for Eclipse since it's loaded by that process.

  • Can't download plugin from Eclipse-Marketplace

    When I try to download a plugin from the Eclipse Marketplace the error message occurs: Unexpected exception
    java.lang.reflect.InvocationTargetException. And the marketplace is not opened.
    Reproduction
    Eclipse > Help > Eclipse Marketplace ..
    Possible Causes
    There might be a problem with the proxy. Java uses the webbrowser settings: http://wpad.de.oracle.com/wpad.dat which works fine for all internet sites.
    System
    I am using Eclipse 32bit on Win7 64bit having installed the latest version 3.7 from Dec. 2011.
    Does anyone know what has to be changed?

    Please use the Can't download trial | Akamai Download Manager
    Or you can try http://prodesigntools.com/adobe-cc-direct-download-links.html, do follow the " very important instructions" prior to downloading from here.
    Regards
    Rajshree

  • Error while looking up bean from Eclipse plugin

    Hi all,
       I am developing an Eclipse plugin which calls session bean deployed in some j2ee engine. But I am facing a problem while I try to look up the bean. It gives me an error saying <i>"com.sap.engine.services.jndi.persistent.UnsatisfiedReferenceImpl"</i>.
    I tried print out the UnsatisfiedReferenceImpl stacktrace and it says
    <i>java.lang.ClassNotFoundException: com.sap.engine.services.ejb.session.stateless_sp5.SerializedHomeProxy</i>.
    Does anyone have any idea?
    Regards,
    Satyajit.
    Message was edited by:
            Satyajit Chakraborty

    I have solved the problem. The problem was with an extra classpath entry.
    Regards,
    Satyajit.

  • Oracle Eclipse Plugin 1.3.0.200909171310 - Unable to start a 10.3.1.0 Serv

    Title says it all.... Lost 3 days finding what was the problem.
    The version of Oracle Eclipse Plugin 1.3.0.200909171310
    is completelly unable to a version 10.3.1.0 Server.
    The server starts correctly on the command line.
    In Eclipse the server instance and runtime are created correctly, but when you
    try to start it from eclipse bang!
    Unable to validate WebLogic domain.Please make sure the running WebLogic instance is an Administration Server
    java.lang.Exception:
    at oracle.eclipse.tools.weblogic.server.internal.WlsJ2EEDeploymentHelper.validateRemote(WlsJ2EEDeploymentHelper.java:1670)
    at oracle.eclipse.tools.weblogic.server.internal.WeblogicServerBehaviour.validateRemote(WeblogicServerBehaviour.java:2647)
    at oracle.eclipse.tools.weblogic.server.internal.ServerWatcher.runOnce(ServerWatcher.java:574)
    at oracle.eclipse.tools.weblogic.server.internal.ServerWatcher.run(ServerWatcher.java:482)
    at java.lang.Thread.run(Thread.java:619)

    Well, the server is not running, i just try to start it.
    The message pops instantly, like in 0.5 seconds, it looks like nothing is even performed.
    - what does the <name> element look like in domain/config.xml ? Does it match the server definition?
    <name>dintiruni</name>
    <server>
    <name>intiruni0</name>
    <ssl>
    <name>intiruni0</name>
    <enabled>true</enabled>
    <listen-port>443</listen-port>
    </ssl>
    <listen-port>80</listen-port>
    <listen-address/>
    </server>
    <admin-server-name>intiruni0</admin-server-name>
    yep : C:\owls11gR1\domains\dintiruni\servers\intiruni0
    - what is your version of JDK running Eclipse?
    Sun JDK 1.6.0_17, downloaded manually.
    Same JDK i use during install to run WebLogic 10.3.2.0, I had to do that, since 10.3.2.0 JDK 1.6.0_14
    is not a recongnized JDK when you use -vm parameter in eclipse.ini (10.3.1.0 was working)
    - Try create a new domain, make sure set it as development mode.
    I think i reinstalled WebLogic more than 3 times, recreated the domain with all possible options.
    Reinstalled Eclipse (J2EE with Reporting 3.5.1) with only Oracle Plugin. Recreated my workspace
    3-4 times.
    Additional info:
    I have this message as parent item of the stacktrace in the eclipse Log tree: Another server is detected.
    I had a server version 10.3.1.0, wich i just renamed the installation directory to C:\owls11gR1_10.3.1.0 and installed the 10.3.2.0 in the same directory C:\owls11gR1
    I uninstalled everything, went in regedit, deleted all weblogic keys references.
    Always the same problem. Im starting to loose patience... i have rarelly seen something like that.
    Edit:
    I also tryed with a Server version 10.3.2.0. (I abandonned 10.3.1.0 since i cannot even create the instance in eclipse)
    Edited by: Rouche on Jan 7, 2010 11:42 AM

  • Is there a Bug in Oracle Eclipse Plugin for OSB11gR1PS2

    i have been using the Eclipse plugin for Oracle Service bus, and while desiginng the WSDL in ther design view i faced the following problem
    If you create a skeleton and then add operations, they are not mapped to WSDL:binding
    also if one changes the type of operation, ( from default input output in skeleton) the corrosponding changes are not reflected in WSDl....
    did any1 else face the same problem while designing WSDL??
    Edited by: tarang on Jun 7, 2011 4:23 PM

    Cross post in OEPE forum as well -
    Enterprise Pack for Eclipse
    Regards,
    Anuj

  • Crystal Reports for Eclipse plugin and CR XI server

    I have a software requirement in which I need to support both internal (CR Eclipse plugin using the report viewer, not sure what the real name of this is) along with external (CR XI server) reporting.  In other words, I should be able to display a report (.rpt) that exists on my local app server along with one that exists on the CR XI server.  My question is this:
    So I have both sets of jar libraries (eclipse plugin and XI server) and I see that some of the them are overlapping (some of the jars have the same name).  For the ones that overlap, should I choose the ecilipse plugin or XI server ones...?
    One example I found is that the eclipse plugin rasapp.jar contains the POJOResultSetHelper class whereas the rasapp.jar from the XI server does not.  In this case, I presume I should use the eclipse version, right?
    Thanks for your help!
    Louis

    Hello Louis,
    -If you are using latest version of CR Eclipse plugin using the report viewer,then I would recommend going for JAR files of this eclipse plugin than that of CR XI Server.
    -The only reason being Eclipse plugin will give you most updated JAR files.
    -Before using JAR files from Eclipse plugin, I would suggest you to update your present JAR files to latest available JAR files.
    This can be done through Eclipse using update option.
    And once you update them, you can use those JARs.
    Thanks,
    Chinmay

  • "Error running javac.exe compiler" when using ant to compile Eclipse plugin

    Hi
    I encounter an error "Error running C:\jdk1.5.0_06\bin\javac.exe compiler" when building my project using ant1.7.
    My project has 10 eclipse plugins, and each plugin is compiled by invoking following ant target
    <!-- ===================================================================
    Compile specified plugin
         target parameters:
              param.plugin.dir: the plugin directory
              param.plugin.targetJarFile: the name of jar file for the given plugin
              param.plugin.src.dir: the folder name of source codes. Note: it is relative path name
              param.fork: indicate if another process is forked to run javac
    =================================================================== -->
    <target name="compilePlugin">
         <!-- Prepare compile environment -->
         <!-- Delete obsolete build folder -->
         <delete dir="${param.plugin.dir}/${build.dir}" quiet="true"/>
         <!-- Delete obsolete jar file -->
         <delete file="${param.plugin.dir}/${param.plugin.targetJarFile}" quiet="true"/>
         <mkdir dir="${param.plugin.dir}/${build.dir}"/>
         <!-- Compile source codes -->
         <javac      srcdir="${param.plugin.dir}/${param.plugin.src.dir}"
                   destdir="${param.plugin.dir}/${build.dir}"
                   failonerror="${javacFailOnError}"
                   verbose="${javacVerbose}"
                   debug="${javacDebugInfo}"
                   deprecation="${javacDeprecation}"
              optimize="${javacOptimize}"
                   source="${javacSource}"
                   target="${javacTarget}"     
                   fork="${param.fork}" memoryInitialSize="256m" memoryMaximumSize="512m">
              <classpath refid="compile.classpath" />
         </javac>
         <!-- Create plugin jar file -->
         <copy todir="${param.plugin.dir}/${build.dir}" failonerror="true">
              <fileset dir="${param.plugin.dir}/${param.plugin.src.dir}" excludes="**/*.java, **/package.htm*" />
         </copy>
         <jar jarfile="${param.plugin.dir}/${param.plugin.targetJarFile}" basedir="${param.plugin.dir}/${build.dir}"/>
         <delete dir="${param.plugin.dir}/${build.dir}" quiet="true"/>
    </target>
    Since each of first 9 plugins contains less than 500 java source files, we always set "param.fork" to false when invoking this ant target.
    For the 10th plugin, it has about 1000 source files. If we set "param.fork" to false, we will get the error "Error running javac.exe compiler". So we have to set "param.fork" to true when compiling it. This week, this plugin contains about 1250 files and we get the same error again when compiling it. I tried to increase the "memoryMaximumSize" to "768", but still couldn't get through it.
    BTW, There are about 150 jar files in our classpath for compiling plugins. Do many jar files cause this problem?
    Any help is highly appreciated.
    Many thanks
    Oceanman

    I encountered a very similar error and I was able to resolve it by removing the following parameters from the javac task:
    fork="${param.fork}"
    memoryInitialSize="256m"
    memoryMaximumSize="512m"My values were not the same as yours, before I removed them, the values were set to:
    fork="true"
    memoryInitialSize="256m"
    memoryMaximumSize="256m" Not sure why this fixed my problem but it did. I was using Ant 1.7 and Java 1.6_07 hope this helps.

  • Simulation using Eclipse plugin for JCOP tools

    Dear All,
    In search for a simulation environment for java card applet development I tried to use Eclipse plugin for JCOP tools.
    The samples which comes with the JCOP tools works fine but when try to debug my applet I receive the error: Wrong Data 6A 80.
    Generic JCOP v2.4.1 is selected for Java Card Simulation.
    Following is the JCOP Shell screen:
    cm- /term "Remote|localhost:8050"
    --Opening terminal
    /card -a a000000003000000 -c com.ibm.jc.CardManagerresetCard with timeout: 0 (ms)
    --Waiting for card...
    ATR=3B F8 13 00 00 81 31 FE 45 4A 43 4F 50 76 32 34 ;.....1.EJCOPv24
    31 B7 1.
    IOCTL().
    ATR: T=1, FI=1/DI=3 (93clk/etu), N=0, IFSC=254, BWI=4/CWI=5, Hist="JCOPv241"
    => 00 A4 04 00 08 A0 00 00 00 03 00 00 00 00 ..............
    (908058 nsec)
    <= 6F 65 84 08 A0 00 00 00 03 00 00 00 A5 59 9F 65 oe...........Y.e
    01 FF 9F 6E 06 47 91 92 18 00 00 73 4A 06 07 2A ...n.G.....sJ..*
    86 48 86 FC 6B 01 60 0C 06 0A 2A 86 48 86 FC 6B .H..k.`...*.H..k
    02 02 01 01 63 09 06 07 2A 86 48 86 FC 6B 03 64 ....c...*.H..k.d
    0B 06 09 2A 86 48 86 FC 6B 04 02 15 65 0B 06 09 ...*.H..k...e...
    2B 85 10 86 48 64 02 01 03 66 0C 06 0A 2B 06 01 +...Hd...f...+..
    04 01 2A 02 6E 01 02 90 00 ..*.n....
    Status: No Error
    cm> set-key 255/1/DES-ECB/404142434445464748494a4b4c4d4e4f 255/2/DES-ECB/404142434445464748494a4b4c4d4e4f 255/3/DES-ECB/404142434445464748494a4b4c4d4e4f
    cm> init-update 255
    => 80 50 00 00 08 B1 04 15 2B 41 3F 62 AB 00 .P......+A?b..
    (2668 usec)
    <= 00 00 F9 02 71 E3 BB AD BD CD FF 02 00 00 3D 02 ....q.........=.
    9C 31 C7 89 AD 44 8E 13 17 15 2E 5A 90 00 .1...D.....Z..
    Status: No Error
    cm> ext-auth plain
    => 84 82 00 00 10 CE 6C DC D2 8C BE 5E 33 EC 58 D0 ......l....^3.X.
    57 3A 52 D2 24 W:R.$
    (2288 usec)
    <= 90 00 ..
    Status: No Error
    cm> delete -r a00000006203010c04
    => 80 E4 00 80 0B 4F 09 A0 00 00 00 62 03 01 0C 04 .....O.....b....
    00 .
    (1084 usec)
    <= 6A 88 j.
    Status: Reference data not found
    jcshell: Error code: 6a88 (Reference data not found)
    jcshell: Wrong response APDU: 6A88
    Ignoring expected error
    cm> upload -d -b 250 "D:\JCOP\eclipse\projects\DigitalTachograph\bin\digitaltachograph\javacard\digitaltachograph.cap"
    => 80 E6 02 00 16 09 A0 00 00 00 62 03 01 0C 04 08 ..........b.....
    A0 00 00 00 03 00 00 00 00 00 00 00 ............
    (2100 usec)
    <= 00 90 00 ...
    Status: No Error
    => 80 E8 00 00 FA C4 82 84 42 01 00 25 DE CA FF ED ........B..%....
    02 02 04 00 01 09 A0 00 00 00 62 03 01 0C 04 11 ..........b.....
    64 69 67 69 74 61 6C 74 61 63 68 6F 67 72 61 70 digitaltachograp
    68 02 00 21 00 25 00 21 00 0E 00 29 03 3E 00 CD h..!.%.!...).>..
    23 D2 01 BB 04 44 00 00 09 E3 4B E5 00 11 00 05 #....D....K.....
    01 A2 04 01 00 04 00 29 04 00 01 07 A0 00 00 00 .......)........
    62 00 01 02 01 07 A0 00 00 00 62 01 01 02 01 07 b.........b.....
    A0 00 00 00 62 01 02 02 01 07 A0 00 00 00 62 02 ....b.........b.
    01 03 00 0E 01 0A A0 00 00 00 62 03 01 0C 04 01 ..........b.....
    01 DF 06 00 CD 00 00 00 80 00 00 FF 00 01 00 00 ................
    00 01 81 03 13 00 12 07 03 00 00 02 01 03 06 0B ................
    8C 81 00 00 00 80 00 0B 00 0B 01 01 00 00 0B F9 ................
    00 80 00 11 00 0F 01 01 00 10 0E A9 0D D4 0D F7 ................
    0E 07 0E 18 0E 26 0E 35 0E 44 0E 50 0E 72 0E 81 .....&.5.D.P.r..
    0E 90 0E 9B 0E F5 11 05 11 1A 11 50 00 80 00 05 ...........P....
    00 04 01 04 00 01 13 AF 13 B5 13 BA 14 0C 13 00 ................
    (6775 usec)
    <= 6A 80 j.
    Status: Wrong data
    jcshell: Error code: 6a80 (Wrong data)
    jcshell: Wrong response APDU: 6A80
    Unexpected error; aborting execution
    I will be very happy if you can help me. I am desperately in need of a working debugging environment.
    Thanks in advance!
    Kind regards,
    Mehmet

         * Processes incoming READ_BINARY APDUs. Returns data of the currently
         * selected file.
         * @param apdu   where the offset is carried in header bytes p1 and p2.
         * @param le  expected length by terminal
         * @return length of the response APDU
        private short processReadBinary(APDU apdu, boolean protectedApdu,  short leUnprotected) {
            if (!hasFileSelected()) {
                ISOException.throwIt(SW_CONDITIONS_NOT_SATISFIED);
            byte[] buffer = apdu.getBuffer();
            // retrieve p1p2 from apdu buffer
            byte p1 = buffer[OFFSET_P1];
            byte p2 = buffer[OFFSET_P2];
            short offset = Util.makeShort(p1, p2);     // offset encoded in P1/P2, 15 lowest bit
            // offset encoded in P1/P2, 15 lowest bit
            // check if le != 0 <-- no response expected
            if (leUnprotected == 0) {
                ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
            if (selectedFile == null) {
                ISOException.throwIt(ISO7816.SW_FILE_NOT_FOUND);
            if ((selectedFile.getAccessConditions() & READ_REQUIRES_SM) == READ_REQUIRES_SM) {
                if(!protectedApdu)
                   ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);
            short fileSize = (short) selectedFile.getFileLength();
            // check offset
            if (offset >= fileSize) {
                ISOException.throwIt(ISO7816.SW_INCORRECT_P1P2);
            // check expected length
            if ((short) (offset + leUnprotected) > fileSize) {
                ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
                //ISOException.throwIt(SW_TAMAM);
            short bufferOffset = 0;
            crypto.setEncryptionStatus(isSelectedFileEncrypted());
            if (protectedApdu) {
                bufferOffset = crypto.getApduBufferOffsetDT(leUnprotected);
                if(isSelectedFileEncrypted())
                   bufferOffset = crypto.getApduBufferOffset(leUnprotected);
                apdu.setOutgoing();
            Util.arrayCopyNonAtomic(selectedFile.getData(), offset, buffer, bufferOffset, leUnprotected);
            return leUnprotected;
         * Processes and UPDATE_BINARY apdu. Writes data in the currently selected
         * file.
         * @param apdu
         *            carries the offset where to write date in header bytes p1 and
         *            p2.
        private void processUpdateBinary(APDU apdu, boolean protectedApdu) {
            if (!hasFileSelected() || isLocked()) {
                ISOException.throwIt(ISO7816.SW_COMMAND_NOT_ALLOWED);
            if ((selectedFile.getAccessConditions() & DigitalTachograph.UPDATE_ALW) != DigitalTachograph.UPDATE_ALW) {
                if ((selectedFile.getAccessConditions() & DigitalTachograph.UPDATE_REQUIRES_SM) != DigitalTachograph.UPDATE_REQUIRES_SM) {
                    ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);
                    return;
                }else if(!protectedApdu){
                        ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);
            byte[] buffer = apdu.getBuffer();
            byte p1 = buffer[OFFSET_P1];
            byte p2 = buffer[OFFSET_P2];
            short offset = Util.makeShort(p1, p2);
            short readCount = (short) (buffer[ISO7816.OFFSET_LC] & 0xff);
            //if (!protectedApdu){
                readCount = apdu.setIncomingAndReceive();
            while (readCount > 0) {
                selectedFile.writeData(offset, buffer, OFFSET_CDATA, readCount);
                offset += readCount;
                readCount = apdu.receiveBytes(ISO7816.OFFSET_CDATA);
        private short processInternalAuthenticate(APDU apdu , boolean protectedApdu) throws CryptoException {
            byte[] buffer = apdu.getBuffer();
            short lc = (short) (buffer[OFFSET_LC] & 0xFF);
            if (lc != (short) (KID_LENGTH * 2)) {
                ISOException.throwIt(SW_WRONG_LENGTH);
            if (apdu.setIncomingAndReceive() != lc) {
                ISOException.throwIt(ISO7816.SW_WRONG_DATA);
            // Check if VU.CHR maches the one of the selected certificate on the card
            if (Util.arrayCompare(buffer, (short) (OFFSET_CDATA + KID_LENGTH), keyStore.selected_KID, (short) 0, KID_LENGTH) != 0) {
                ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
            if (Util.arrayCopyNonAtomic(buffer, OFFSET_CDATA, Rnd1, (short) 0, (short) 8) != (short) 8) { // Receive Rnd1
                ISOException.throwIt(ISO7816.SW_WRONG_DATA);
            // Hash(PRnd2||K1||Rnd1||VU.CHR)
            random.generateData(PRnd2, (short) 0, (short) 90);
            random.generateData(K1, (short) 0, (short) 16);
            crypto.shaDigest.update(PRnd2, (short) 0, (short) 90); // PRnd2
            crypto.shaDigest.update(K1, (short) 0, (short) 16); // PRnd2||K1
            crypto.shaDigest.doFinal(buffer, OFFSET_CDATA, lc, digest, (short) 0); //Rnd1||VU.CHR
            BigNumber mod = new BigNumber((short) 128);
            mod.init(keyStore.Card_PubMod, (short) 0, (short) keyStore.Card_PubMod.length, BigNumber.FORMAT_HEX);
            mod.subtract(signed, (short) 0, (short) 128, BigNumber.FORMAT_HEX);
            if (mod.compareTo(signed, (short) 0, (short) 128, BigNumber.FORMAT_HEX) == -1) {
                mod.toBytes(signed, (short) 0, (short) 128, BigNumber.FORMAT_HEX);
            // To be added: if the selected private key is considered corrupted, the processing state returned is '6400' or '6581'.
            signed[0] = (byte) 0x6A;
            Util.arrayCopyNonAtomic(PRnd2, (short) 0, signed, (short) 1, (short) 90);
            Util.arrayCopyNonAtomic(K1, (short) 0, signed, (short) 91, (short) 16);
            Util.arrayCopyNonAtomic(digest, (short) 0, signed, (short) 107, (short) 20);
            signed[127] = (byte) 0xBC;
            if (!keyStore.cardPrivateKey.isInitialized()) {
                CryptoException.throwIt(CryptoException.ILLEGAL_VALUE);
            try {
                crypto.rsaSigner.init(keyStore.cardPrivateKey, Signature.MODE_SIGN);
                crypto.rsaSigner.doFinal(signed, (short) 0, (short) 128, signed, (short) 0);
            } catch (Exception e) {
                ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
            if (!keyStore.selectedPublicKey.isInitialized()) {
                CryptoException.throwIt(CryptoException.ILLEGAL_VALUE);
            try {
                crypto.rsaCipher.init(keyStore.selectedPublicKey, Cipher.MODE_ENCRYPT);
                crypto.rsaCipher.doFinal(signed, (short) 0, (short) 128, signed, (short) 0);
            } catch (Exception e) {
                ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
            apdu.setOutgoing();
            Util.arrayCopyNonAtomic(signed, (short) 0, buffer, (short) 0, (short) 128);
            return (short) signed.length;
        private void processExternalAuthenticate(APDU apdu) {
            short equipmentType = 0;
            if (keyStore.Selected_Cert != null) {
                equipmentType = (short) keyStore.Selected_Cert.CHA[6]; // check equipment type
            if (equipmentType != (short) 1 && equipmentType != (short) 2 && equipmentType != (short) 3 && equipmentType != (short) 4 && equipmentType != (short) 6) {
                ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED); // Instead of 6F00 throw a more meaningfull SW in case CHA is not valid.
            if (Util.arrayCompare(keyStore.Selected_Cert.CHA, (short) 0, TACHOGRAPH_AID, (short) 0, (short) 6) != 0) {
                ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED);
            byte[] buffer = apdu.getBuffer();
            byte p1 = (byte) (buffer[OFFSET_P1] & 0xff);
            byte p2 = (byte) (buffer[OFFSET_P2] & 0xff);
            if (p1 != 0 || p2 != 0) {
                ISOException.throwIt(SW_WRONG_P1P2);
            short lc = (short) (buffer[OFFSET_LC] & 0xFF);
            if (lc != (short) (128)) {
                ISOException.throwIt(SW_WRONG_LENGTH);
            if (apdu.setIncomingAndReceive() != lc) {
                ISOException.throwIt(ISO7816.SW_WRONG_DATA);
            Util.arrayCopyNonAtomic(buffer, OFFSET_CDATA, signed, (short) 0, (short) 128); // receive the cryptogram from the VU
            // decrypt the encrypted message with the card private key
            try {
                crypto.rsaCipher.init(keyStore.cardPrivateKey, Cipher.MODE_DECRYPT);
                crypto.rsaCipher.doFinal(signed, (short) 0, (short) 128, signed, (short) 0);
            } catch (Exception e) {
                ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
            // verify the signature with the VU public key
            try {
                crypto.rsaCipher.init(keyStore.selectedPublicKey, Signature.MODE_VERIFY); // Cipher.MODE_ENCRYPT
                crypto.rsaCipher.doFinal(signed, (short) 0, (short) 128, signed, (short) 0);
            } catch (Exception e) {
                ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
            if (signed[0] != (byte) 0x6A || signed[127] != (byte) 0xBC) {
                ISOException.throwIt(Util.makeShort(signed[0], signed[127]));
            try {
                verifyCardCertificates();
                Util.arrayCopyNonAtomic(signed, (short) 1, preDigest, (short) 0, (short) 106); // accumulate preDigest
                Util.arrayCopyNonAtomic(Rnd3, (short) 0, preDigest, (short) 106, (short) 8); // accumulate preDigest
                Util.arrayCopyNonAtomic(keyStore.Card_Cert.CHR, (short) 0, preDigest, (short) 114, (short) 8); // accumulate preDigest
                Util.arrayCopyNonAtomic(signed, (short) 91, K2, (short) 0, (short) 16); // receive K2 value
                crypto.shaDigest.update(signed, (short) 1, (short) 106); // PRnd4||K2
                crypto.shaDigest.update(Rnd3, (short) 0, (short) 8); // Rnd3
                crypto.shaDigest.doFinal(keyStore.Card_Cert.CHR, (short) 0, (short) 8, digest, (short) 0); //||Card.CHR
            } catch (Exception e) {
                ISOException.throwIt(SW_TAMAM);
            if (Util.arrayCompare(signed, (short) 107, digest, (short) 0, (short) 20) != 0) {
                ISOException.throwIt(SW_TAMAM);
            volatileState[0] |= MUTUAL_AUTHENTICATED;
            try {
                DTUtil.xor(K1, (short) 0, K2, (short) 0, KaKb, (short) 0, (short) 16);
                Util.arrayCopyNonAtomic(Rnd3, (short) 4, SSC, (short) 0, (short) 4); // tail of Rnd3
                Util.arrayCopyNonAtomic(Rnd1, (short) 4, SSC, (short) 4, (short) 4); // tail of Rnd1
            } catch (Exception e) {
                ISOException.throwIt(SW_TAMAM);
            try {
                keyStore.setKey_Ka(KaKb, (short) 0);
                keyStore.setKey_Kb(KaKb, (short) 8);
                keyStore.setSecureMessagingKeys(KaKb, (short) 0, KaKb, (short) 0);
            } catch (Exception e) {
                ISOException.throwIt(SW_TAMAM_DEGIL);
            return;
        private short returnPreDigest(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            apdu.setOutgoing();
            Util.arrayCopyNonAtomic(preDigest, (short) 0, buffer, (short) 0, (short) 122);
            return (short)preDigest.length;
        private short returnDigest(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            apdu.setOutgoing();
            Util.arrayCopyNonAtomic(digest, (short) 0, buffer, (short) 0, (short) 20);
            return (short)digest.length;
        private short returnOriginalText(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            apdu.setOutgoing();
            Util.arrayCopyNonAtomic(signed, (short) 0, buffer, (short) 0, (short) 128);
            return (short)signed.length;
        private void processVerify(APDU apdu) { // Verify_CHV(Pin_Ws)
            byte[] buffer = apdu.getBuffer();
            // retrieve the PIN data for validation.
            byte byteRead = (byte) (apdu.setIncomingAndReceive());
            // the PIN data is read into the APDU buffer
            // at the offset ISO7816.OFFSET_CDATA the PIN data length = byteRead
            if (pin.check(buffer, ISO7816.OFFSET_CDATA, byteRead) == false) {
                ISOException.throwIt(SW_VERIFICATION_FAILED);
            return;
        private void processPSO(APDU apdu) { // verify certificate
            byte[] buffer = apdu.getBuffer();
            byte p1 = (byte) (buffer[OFFSET_P1] & 0xff);
            byte p2 = (byte) (buffer[OFFSET_P2] & 0xff);
            short lc = (short) (buffer[ISO7816.OFFSET_LC] & 0xFF);
            if (p1 == (byte) 0x00 && p2 == P2_VERIFYCERT) {
                if (lc != TACHO_CERT_LENGTH) {
                    ISOException.throwIt(SW_WRONG_LENGTH);
                if (apdu.setIncomingAndReceive() != lc) {
                    ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
                try { // copy the certificate to be verified from APDU buffer to cert object
                    Util.arrayCopyNonAtomic(buffer, OFFSET_CDATA, cert, (short) 0, lc);
                } catch (Exception e) {
                    ISOException.throwIt(SW_TAMAM);
                if (Util.arrayCompare(keyStore.selected_KID, (short) 0, keyStore.ERCA_KID, (short) 0, KID_LENGTH) == 0) {
                    keyStore.VUCA_Cert.verifyCert(cert, keyStore.selectedPublicKey, keyStore.selected_KID);
                } else if (Util.arrayCompare(keyStore.selected_KID, (short) 0, keyStore.VUCA_Cert.CHR, (short) 0, KID_LENGTH) == 0) {
                    keyStore.VU_Cert.verifyCert(cert, keyStore.selectedPublicKey, keyStore.selected_KID);
                } else {
                    ISOException.throwIt(SW_CERT_VERIFICATION_FAILED); // Selected keyId, with MSE, is neither ERCA_KID nor VUCA_KID
            } else {
                ISOException.throwIt(SW_CERT_VERIFICATION_FAILED);
            return;
        private short processGetChallenge(APDU apdu, boolean protectedApdu) {
            byte[] buffer = apdu.getBuffer();
            byte p1 = (byte) (buffer[OFFSET_P1] & 0xff);
            byte p2 = (byte) (buffer[OFFSET_P2] & 0xff);
            if (p1 != 0 || p2 != 0) {
                ISOException.throwIt(SW_WRONG_P1P2);
            random.generateData(Rnd3, (short) 0, (short) 8);
            short Le = apdu.setOutgoing();
            if (Le != (short) 8) {
                ISOException.throwIt(SW_WRONG_LENGTH);
            Util.arrayCopyNonAtomic(Rnd3, (short) 0, buffer, (short) 0, (short) 8);
            return Le;
        private void processMSE(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            if (buffer[OFFSET_P1] == (byte) 0xC1 && buffer[OFFSET_P2] == P2_DST) {
                short lc = (short) (buffer[OFFSET_LC] & 0xFF);
                if (lc != (short) (KID_LENGTH + 2)) {
                    ISOException.throwIt(SW_WRONG_LENGTH);
                if (apdu.setIncomingAndReceive() != lc) {
                    ISOException.throwIt(ISO7816.SW_WRONG_DATA);
                if (buffer[OFFSET_CDATA] != (byte) 0x83) {//check the tag of the data
                    ISOException.throwIt(SW_SECURE_MESSAGING_DATA_OBJECTS_MISSING);
                } else if (buffer[OFFSET_CDATA + 1] != (byte) 0x08) {
                    ISOException.throwIt(SW_INCORRECT_DATA_OBJECT); // check if the key is already selected one
                } else if (Util.arrayCompare(buffer, (short) (OFFSET_CDATA + 2), keyStore.selected_KID, (short) 0, KID_LENGTH) != 0) {
                    if (Util.arrayCompare(buffer, (short) (OFFSET_CDATA + 2), keyStore.ERCA_KID, (short) 0, KID_LENGTH) == 0) {// KID is EUR_KID
                        keyStore.selected_KID = keyStore.ERCA_KID;
                        keyStore.selectedPublicKey = keyStore.eurPublicKey;
                        keyStore.Selected_Cert = null; // ERCA public key is selected
                        return;
                    } else if (Util.arrayCompare(buffer, (short) (OFFSET_CDATA + 2), keyStore.VUCA_Cert.CHR, (short) 0, KID_LENGTH) == 0) {// KID is MSCA_KID
                        keyStore.Selected_Cert = keyStore.VUCA_Cert;
                    } else if (Util.arrayCompare(buffer, (short) (OFFSET_CDATA + 2), keyStore.VU_Cert.CHR, (short) 0, KID_LENGTH) == 0) { // KID is VU_KID
                        keyStore.Selected_Cert = keyStore.VU_Cert;
                    } else {
                        ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
                    }// KID not found
                    keyStore.selectedPublicKey = keyStore.Selected_Cert.publicKey;
                    keyStore.selected_KID = keyStore.Selected_Cert.CHR;
                } else { // if the KID is already set, just return
                    return;
            } else {
                ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
        private void processSelectFile(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            short lc = (short) (buffer[OFFSET_LC] & 0x00FF);
            // retrieve p1p2 from apdu buffer
            byte p1 = buffer[OFFSET_P1];
            byte p2 = buffer[OFFSET_P2];
            short p1p2 = Util.makeShort(p1, p2);
            apdu.setIncomingAndReceive();
            if (p1 == 4) {
                if (lc == (short) TACHO_AID_LENGTH) {
                    if (Util.arrayCompare(buffer, (short) OFFSET_CDATA, TACHOGRAPH_AID, (short) 0, (short) TACHO_AID_LENGTH) == 0) {
                        selectedFile = fileSystem.getDT();
                        fileSystem.selectDT();
                        volatileState[0] |= FILE_SELECTED;
                        return;
                    } else {
                        ISOException.throwIt(ISO7816.SW_WRONG_DATA);
                } else if (lc != 2) {
                    ISOException.throwIt(SW_WRONG_LENGTH);
                short fid = Util.getShort(buffer, OFFSET_CDATA);
                if (fileSystem.getFile(fid) != null) {
                    selectedFile = fileSystem.getDT();
                    fileSystem.selectDT();
                    volatileState[0] |= FILE_SELECTED;
                    return;
            } else if (p1 == 2) {
                if (lc != 2) {
                    ISOException.throwIt(SW_WRONG_LENGTH);
                short fid = Util.getShort(buffer, OFFSET_CDATA);
                if (fileSystem.getFile(fid) != null) {
                    selectedFile = fileSystem.getFile(fid);
                    volatileState[0] |= FILE_SELECTED;
                    return;
            } else {
                ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
            setNoFileSelected();
            ISOException.throwIt(ISO7816.SW_FILE_NOT_FOUND);
        public static void setNoFileSelected() {
            if (hasFileSelected()) {
                volatileState[0] ^= FILE_SELECTED;
        public static boolean hasFileSelected() {
            return (volatileState[0] & FILE_SELECTED) == FILE_SELECTED;
        public static boolean hasMutuallyAuthenticated() {
            return (volatileState[0] & MUTUAL_AUTHENTICATED) == MUTUAL_AUTHENTICATED;
        static boolean isLocked() {
            return (persistentState & LOCKED) == LOCKED;
        public boolean isSelectedFileEncrypted() {
            return ((selectedFile.getAccessConditions() & DigitalTachograph.ENCRYPTED) == DigitalTachograph.ENCRYPTED);
    }

  • Flex Builder 3 Eclipse Plugin

    Flex Builder 3 Eclipse Pluginのダウンロードができません。サポートが終了したのでしょか?

    I'm not quite sure what has gone wrong here, but can you
    please try launching with the "-clean" command line option? E.g.
    from the command line:
    eclipse -clean
    or
    flexbuilder -clean
    Some background, in case it helps: Although I don't know why
    this has happened, it appears that a DLL is missing. Almost all of
    Flex Builder is written in Java, but there are a few bits of native
    code. In your "plugins" directory (e.g. "C:\Program
    Files\Adobe\Flex Builder 3\plugins", or ""C:\Program
    Files\Adobe\Flex Builder 3 Plug-in\eclipse\plugins", something like
    that) should be either a file or a directory called
    com.adobe.flexbuilder.utils.osnative_3.0.*.jar (where "*" is a
    six-digit number). Inside that jar file, among other things, should
    be a file called os/win32/x86/JNIToNativeBridge.dll. Please note,
    there are two plugins with similar names:
    com.adobe.flexbuilder.utils.osnative, and
    com.adobe.flexbuilder.utils.osnative.win. The one I am referring to
    here is the one that does *not* have "win" in the name.
    Eclipse caches lots of stuff; one thing it does is, if it
    finds a DLL in a plugin, it sometimes copies that DLL to another
    place, called the configuration directory. The "-clean" option
    tells Eclipse to discard its cache.
    Please let me know whether this resolves the problem.

  • Developing Flex outside of Eclipse plugin environment?

    I'm curious to know how many of those doing actual Flex development are working with the SDK directly and not using the Flash Builder Eclipse platform?
    While the design view aspect of the plugin is nice, I'm finding that I'm spending most of my time directly in the code and less in the design view. In fact, I'm getting somewhat frustrated by the design mode since there are feature that I would have expected that are simply not provided.

    I'm not quite sure what has gone wrong here, but can you
    please try launching with the "-clean" command line option? E.g.
    from the command line:
    eclipse -clean
    or
    flexbuilder -clean
    Some background, in case it helps: Although I don't know why
    this has happened, it appears that a DLL is missing. Almost all of
    Flex Builder is written in Java, but there are a few bits of native
    code. In your "plugins" directory (e.g. "C:\Program
    Files\Adobe\Flex Builder 3\plugins", or ""C:\Program
    Files\Adobe\Flex Builder 3 Plug-in\eclipse\plugins", something like
    that) should be either a file or a directory called
    com.adobe.flexbuilder.utils.osnative_3.0.*.jar (where "*" is a
    six-digit number). Inside that jar file, among other things, should
    be a file called os/win32/x86/JNIToNativeBridge.dll. Please note,
    there are two plugins with similar names:
    com.adobe.flexbuilder.utils.osnative, and
    com.adobe.flexbuilder.utils.osnative.win. The one I am referring to
    here is the one that does *not* have "win" in the name.
    Eclipse caches lots of stuff; one thing it does is, if it
    finds a DLL in a plugin, it sometimes copies that DLL to another
    place, called the configuration directory. The "-clean" option
    tells Eclipse to discard its cache.
    Please let me know whether this resolves the problem.

Maybe you are looking for

  • I am unable to receive texts on my new LG G2 when sent from some other iPhones

    I had an iPhone 4 and switched to LG G2 android.  I am unable to receive texts on my new LG G2 when sent from some other iPhones.  I've done everything Sprint and Apple have suggested - turned off imessaging, made sure the contact info on the other i

  • What version has search results in same window?

    I currently have version 8.2.4 The full reader search opens in a new window. I don't like this. There was a version where one could see search results in the same window as the document was displayed in. What version was that, please, and do you know

  • Old Illustrator file, revised to new, saved to pdf, reverting back to old Illustrator file

    After making a new Illustrator file from an old one, then saving it as a pdf, the new Illustrator file reverts back to old one. I have been using the pdf to make the Illustrator file again (luckily I've saved it as editable) but I don't always want t

  • JavaScript for English to Spanish?

    I have a document that consists of 10 forms. The first page is in English and contains fields that our workers complete. These fields consist of names, phone numbers, dates, etc. What is inputted on this first page then populates to corresponding fie

  • Start timestamp - dynamic signal - waweform chart

    Hi, I have an issue with the start timestamp of an dynamic signal. I'm simulating a sine with the express signal generation. The thing is I can't reset it start timestamp (set it to NOW). The only way I found to do it is to stop my app... and then wh