Sample Javacard 2.2.1 Electronic wallet, Loyalty Points & StudentID applet

Hi All,
After nine months of researching and developing a java card applet and terminal side interface for my final year university project I was frustrated with the lack of sample code and tutorials available online.
My applet is aimed at students as an id card containing a student id, all the features of an electronic wallet, loyalty point system protected by a pin number. Pin is changeable.
The terminal interaction or host side application that communicates with this applet can be found in this forum under the heading "Sample Smartcardio (Host side) applet interaction application".
As I have no finished my project I would like to share it with anyone that would like to see it.
While I would love to write a tutorial I simply do not have the time however below is the applet I used in my project, I how for anyone that has read through java sun's tutorials this will be a help:
package account;
import javacard.framework.APDU;
import javacard.framework.APDUException;
import javacard.framework.ISO7816;
import javacard.framework.Applet;
import javacard.framework.ISOException;
import javacard.framework.OwnerPIN;
import javacard.framework.TransactionException;
import javacard.framework.Util;
* @Raymond_Garrett
* DT 354-4
*Applet ID 41 63 63 6F 75 6E 74 41 70 70 6C 65 74
public class AccountApplet extends Applet {
     // codes of CLA byte in the command APDUs
     final static byte ACCOUNT_CLA = (byte)0xA0;
     // codes of INS byte in the command APDUs
     final static byte VERIFY_INS = (byte) 0x20;
     final static byte CREDIT_INS = (byte) 0x30;
     final static byte DEBIT_INS = (byte) 0x40;
     final static byte GET_LOYALTYPOINTS_BALANCE_INS = (byte) 0x45;
     final static byte CREDIT_LOYALTYPOINTS_INS = (byte) 0x47;
     final static byte GET_BALANCE_INS = (byte) 0x50;
     final static byte UPDATE_PIN_INS = (byte) 0x60;
     final static byte ADMIN_RESET_INS = (byte) 0x70;
     final static byte PIN_TRIES_REMAINING_INS = (byte) 0x80;
     final static byte STUDENT_NUMBER_INS = (byte) 0x90;
     // maximum Account balance
     final static short MAX_BALANCE = 10000;
     // maximum transaction amount
     final static short MAX_TRANSACTION_AMOUNT = 5000;
     // maximum number of incorrect tries before the
     // PIN is blocked
     //Changed to 4, as a safe guard all. All tests, messages and checks will use 3
     final static byte PIN_TRY_LIMIT =(byte)0x04;
     // maximum size PIN
     final static byte MAX_PIN_SIZE =(byte)0x08;
     // Applet-specific status words:
     final static short SW_NO_ERROR = (short) 0x9000;
     final static short SW_VERIFICATION_FAILED = 0x6300;
     final static short SW_PIN_VERIFICATION_REQUIRED = 0x6301;
     final static short SW_INVALID_TRANSACTION_AMOUNT = 0x6E83;
     final static short SW_EXCEED_MAXIMUM_BALANCE = 0x6E84;
     final static short SW_NEGATIVE_BALANCE = 0x6E85;
     final static short SW_PIN_TO_LONG = 0x6E86;
     final static short SW_PIN_TO_SHORT = 0x6E87;
//     Student number (Ascii)d05106012 - (Hex)44 30 35 31 30 36 30 31 32
     private static byte[] STUDENT_NUMBER_ARRAY = {(byte)0x44, (byte)0x30, (byte)0x35, (byte)0x31, (byte)0x30, (byte)0x36, (byte)0x30, (byte)0x31, (byte)0x32};
     // instance variables declaration
     OwnerPIN pin;
     short balance = 1000; // Starting balance of decimal 1000 is 3E8 in hex
     short loyaltyPoints = 0; //Loyalty points
     // 1 Loyalty point awarded for every 100 cent spent.
      * install method
     public static void install(byte[] bArray, short bOffset, byte bLength) {
          // GP-compliant JavaCard applet registration
          new AccountApplet(bArray, (short) (bOffset + 1), bArray[bOffset]);
      * Constructor
      * @param bArray
      * @param bOffset
      * @param bLength
     private AccountApplet(byte[] bArray, short bOffset, byte bLength){
          pin = new OwnerPIN(PIN_TRY_LIMIT, MAX_PIN_SIZE);
          // bArray contains the default PIN initialization value (12345)
          bArray[0] = 01;
          bArray[1] = 02;
          bArray[2] = 03;
          bArray[3] = 04;
          bArray[4] = 05;
          bOffset = 0;
          bLength = 5;
          pin.update(bArray, bOffset, bLength);
          // register the applet instance with the JCRE
          register();
     } // end of the constructor
      * Boolean is selected
     public boolean select() {
          // the applet declines to be selected
          // if the pin is blocked
          if (pin.getTriesRemaining() == 0)
               return false;
          return true;
     } // end of select method
      * deselect
     public void deselect() {
          // reset the pin
          pin.reset();
      * Key method the gets the APDU reads the INS and calls the appropiate method
      * Process APDUs
      * @param apdu
     public void process(APDU apdu) {
          // APDU object carries a byte array (buffer) to
          // transfer incoming and outgoing APDU header
          // and data bytes between the card and the host
          // at this point, only the first five bytes
          // [CLA, INS, P1, P2, P3] are available in
          // the APDU buffer
          byte[] buffer = apdu.getBuffer();
          // return if the APDU is the applet SELECT command
          if (selectingApplet())
               return;
          // verify the CLA byte
          if (buffer[ISO7816.OFFSET_CLA] != ACCOUNT_CLA)
               ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
          // check the INS byte to decide which service method to call
          switch (buffer[ISO7816.OFFSET_INS]) {
          case GET_BALANCE_INS:                    getBalance(apdu);                return;
          case DEBIT_INS:                              debit(apdu);                       return;
          case CREDIT_INS:                         credit(apdu);                     return;
          case VERIFY_INS:                         verify(apdu);                    return;
          case UPDATE_PIN_INS:                    updatePin(apdu);               return;
          case ADMIN_RESET_INS:                    adminRest();                    return;
          case PIN_TRIES_REMAINING_INS:           getPinTriesRemaining(apdu); return;
          case STUDENT_NUMBER_INS:                getStudentNumber(apdu);       return;
          case GET_LOYALTYPOINTS_BALANCE_INS:     getLoyaltyPoints(apdu);      return;
          case CREDIT_LOYALTYPOINTS_INS:       creditLoyaltyPoints(apdu);      return;
          default:                    ISOException.throwIt
          (ISO7816.SW_INS_NOT_SUPPORTED);
     } // end of process method
      * verify then
      * withdraw money from the Account balance
      * @param apdu
     private void debit(APDU apdu) {
          // verify authentication
          if (!pin.isValidated()){
               ISOException.throwIt(SW_PIN_VERIFICATION_REQUIRED);
          byte[] buffer = apdu.getBuffer();
          // get the number of bytes in the
          // data field of the command APDU
          byte numBytes = buffer[ISO7816.OFFSET_LC];
          //receive data
          //data is read into apdu buffer
          //at offset ISO7816.OFFSET_CDATA
          byte byteRead = (byte)(apdu.setIncomingAndReceive());
          short shortAmount = 0;
          if (numBytes == 2){
               shortAmount = (short) Util.getShort(buffer, ISO7816.OFFSET_CDATA);
          else if (numBytes == 1) {
               shortAmount = (short) buffer[ISO7816.OFFSET_CDATA];
          // check the debit amount
          if (( shortAmount > MAX_TRANSACTION_AMOUNT)     || ( shortAmount < 0 )) {
               ISOException.throwIt(SW_INVALID_TRANSACTION_AMOUNT);
          // check the new balance
          if ((short)( balance - shortAmount)  < 0) {
               ISOException.throwIt(SW_NEGATIVE_BALANCE);
          // debit the amount
          balance = (short)(balance - shortAmount);
          //Add loyalty points
          loyaltyPoints = (short) (loyaltyPoints + (short)(shortAmount/100));
          return;
     }          // end of debit method
     

Code continued>>>>>>>>
      * Verify then
      * add money (credit) to the Account balance
      * @param apdu
     private void credit(APDU apdu) {
          // verify authentication
          if (!pin.isValidated()){
               ISOException.throwIt(SW_PIN_VERIFICATION_REQUIRED);
          byte[] buffer = apdu.getBuffer();
          // get the number of bytes in the     
          // data field of the command APDU
          byte numBytes = buffer[ISO7816.OFFSET_LC];
          //receive data
          //data is read into apdu buffer
          //at offset ISO7816.OFFSET_CDATA
          byte byteRead = (byte)(apdu.setIncomingAndReceive());
          short shortAmount = 0;
          if (numBytes == 2){
               shortAmount = (short) Util.getShort(buffer, ISO7816.OFFSET_CDATA);
          else if (numBytes == 1) {
               shortAmount = (short) buffer[ISO7816.OFFSET_CDATA];
          // check the credit amount
          if (( shortAmount > MAX_TRANSACTION_AMOUNT)     || ( shortAmount < 0 )) {
               ISOException.throwIt(SW_INVALID_TRANSACTION_AMOUNT);
          // check the new balance
          if ((short)( balance + shortAmount)  > MAX_BALANCE) {
               ISOException.throwIt(SW_EXCEED_MAXIMUM_BALANCE);
          // credit the amount
          balance = (short)(balance + shortAmount);
          return;
     }                                                       // end of deposit method
      * Verify then
      * Update/change pin
      * byte[] bArray is the pin
      * short bOffset is the position in the array the pin starts in the bArray
      * byte bLength is the lenght of the pin
      * @param apdu
     private void updatePin(APDU apdu) {
          //     byte[] bArray, short bOffset, byte bLength){
          //           First check the original pin
          //          verify authentication
          if (! pin.isValidated())
               ISOException.throwIt(SW_PIN_VERIFICATION_REQUIRED);
          byte[] buffer = apdu.getBuffer();
          // get the number of bytes in the
          // data field of the command APDU -- OFFSET_LC = positon 4
          byte numBytes = buffer[ISO7816.OFFSET_LC];
          // recieve data
          // data are read into the apdu buffer
          // at the offset ISO7816.OFFSET_CDATA
          byte byteRead = (byte)(apdu.setIncomingAndReceive());
          // error if the number of data bytes
          // read does not match the number in the Lc byte
          if (byteRead != numBytes) {
               ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
          if ( numBytes > 8 )
               ISOException.throwIt(SW_PIN_TO_LONG);
          if ( numBytes < 4 )
               ISOException.throwIt(SW_PIN_TO_SHORT);
          short offset_cdata = 05;          
          pin.update(buffer, offset_cdata, numBytes);
          pin.resetAndUnblock();
      *  Admin method
      *  Rest the pin attempts and unblock
      *  @param apdu
     private void adminRest() {
          try {
               pin.resetAndUnblock();
          } catch (RuntimeException e) {
               // TODO Auto-generated catch block
          return;
      * Credit loyatly card pints in multiples of 100
      * @param apdu
     private void creditLoyaltyPoints(APDU apdu) {
          short creditAmount = (short) ((loyaltyPoints/ 100) * 100);
          balance = (short) (balance + creditAmount);
          loyaltyPoints = (short) (loyaltyPoints - creditAmount);
          return;
      * Get number of remaining pin tries
      * @param apdu
     private void getPinTriesRemaining(APDU apdu) {
          try {
               byte[] buffer = apdu.getBuffer();
               // inform the JCRE that the applet has data to return
               short le = apdu.setOutgoing();
               // set the actual number of the outgoing data bytes
               apdu.setOutgoingLength((byte)2);
               // write the PinTriesRemaining into the APDU buffer at the offset 0
               Util.setShort(buffer, (short)0, pin.getTriesRemaining());
               // send the 2-byte balance at the offset
               // 0 in the apdu buffer
               apdu.sendBytes((short)0, (short)2);
          } catch (APDUException e) {
               // TODO Auto-generated catch block
          } catch (TransactionException e) {
               // TODO Auto-generated catch block
          } catch (ArrayIndexOutOfBoundsException e) {
               // TODO Auto-generated catch block
          } catch (NullPointerException e) {
               // TODO Auto-generated catch block
     } // end of getPinTriesRemaining method
      * No verification needed
      * the method returns the Account’s balance
      * @param apdu
     private void getBalance(APDU apdu) {
          byte[] buffer = apdu.getBuffer();
          // inform the JCRE that the applet has data to return
          short le = apdu.setOutgoing();
          // set the actual number of the outgoing data bytes
          apdu.setOutgoingLength((byte)2);
          // write the balance into the APDU buffer at the offset 0
          Util.setShort(buffer, (short)0, (balance));
          // send the 2-byte balance at the offset
          // 0 in the apdu buffer
          apdu.sendBytes((short)0, (short)2);
      * No verification needed
      * the method returns the Account’s loyaltyPoints balance
      * @param apdu
     private void getLoyaltyPoints(APDU apdu){
          byte[] buffer = apdu.getBuffer();
          // inform the JCRE that the applet has data to return
          short le = apdu.setOutgoing();
          // set the actual number of the outgoing data bytes
          apdu.setOutgoingLength((byte)2);
          // write the loyaltyPoints balance into the APDU buffer at the offset 0
          Util.setShort(buffer, (short)0, (loyaltyPoints));
          // send the 2-byte loyaltyPoints balance at the offset
          // 0 in the apdu buffer
          apdu.sendBytes((short)0, (short)2);
      * No verification needed
      * the method returns the student number
      * @param apdu
     private void getStudentNumber(APDU apdu) {
          byte[] buffer = apdu.getBuffer();
          // inform the JCRE that the applet has data to return
          short le = apdu.setOutgoing();
          // set the actual number of the outgoing data bytes
          apdu.setOutgoingLength((byte)STUDENT_NUMBER_ARRAY.length);
          // write the balance into the APDU buffer at the offset 0
          apdu.sendBytesLong(STUDENT_NUMBER_ARRAY, (short)0, (short) STUDENT_NUMBER_ARRAY.length);
          //     Util.setShort(buffer, (short)0, STUDENT_NUMBER_ARRAY);
          // send the 2-byte balance at the offset
          // 0 in the apdu buffer
          try {
               apdu.sendBytes((short)0, (short)STUDENT_NUMBER_ARRAY.length);
          } catch (APDUException e) {
               // TODO Auto-generated catch block
     } // end of getBalance method
      * Verification method to verify the PIN
      * @param apdu
     private void verify(APDU apdu) {
          byte[] buffer = apdu.getBuffer();
          // receive the PIN data for validation.
          byte byteRead = (byte)(apdu.setIncomingAndReceive());
          // check pin
          // the PIN data is read into the APDU buffer
          // starting 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);
     } // end of verify method
} // end of class AccountEdited by: Raymond.garrett-Dublin on Jun 17, 2009 11:30 PM

Similar Messages

  • Electronic wallet

    Hello,
    is there any electronic wallet application for N95 available? I need it for storing PIN codes etc. Thanks.

    The easiest way to do this on the N95 is to put them all in a text file that you can subsequently zip up (see menu > office) with password protection.
    Was this post helpful? If so, please click on the white "Kudos!" star below. Thank you!

  • Loyalty points are stored in which entity?

    Hi,
    I need to integrate Siebel's loyalty management with ATG and for That I need to know What is the data that flows from Siebel to ATG for loyalty functionality.
    So I need to know below things-
    In which entity loyalty/reward points are stored in Siebel or Where exactly is the loyalty points in Siebel?
    Regards,
    Prateek

    There are several tables that hold variant info .. you can find these in SE11 / SE16 looking for VARI*  e.g. VARID Variant directory, VARIT Variant texts -> but most of the time you should go through SAP function modules to read the contents of these e.g. RS_VARIANT_CONTENTS, as some of the data is held in INDX-type tables that you won't want to decode yourself...
    Jonathan

  • Help with Java covert 5 loyalty points into 1 credit code.

    Can u please provide the code so that:
    Loyalty points can be converted into credits (5 loyalty points = 1 credit)
    so far i have done....
    public void ConvertPoints (int cr, int loy)
    erm, these are my fields in the class
    public class Loyalty
         private static int currentId = 2000;
    private int cardId;
    private String name;
    private int rating;
    private int credits;
    private String centre;
    public int loyalty;
    my constructor:
    public Loyalty (String nam, int rat, int cred,String cen, int loyalty)
    name = nam;
    rating = rat;
    credits = 30;
    cardId = currentId++;
    centre = cen;
    loyalty = 20;
    Can u pleaseeeeee provide me the code to:
    Loyalty points can be converted into credits (5 loyalty points = 1 credit)
    thxsss help appreciated x

    public class foo {
      private int loyalty, credit;
      public foo() {}
      public int convertLoyaltyToCredits() {
        int credits = loyalty / 5;
        credit += credits;
        loyalty -= 5 * credit;
        return credit;

  • Loyalty points

    Hi ,
    I need a small inofrimation about loyalty points features in atg.do we have any loyalty points fetarures available in CRS? if not could you please tell some idea about how to implement this features?
    Thanks,
    Pveedu
    l

    Hi pveedu1      
    i think we don need any customization in OrderPriceEngine. Instead, While calling the CommitOrderFormHandler.commitOrder method write your logic there. Means assign some loyalty point for profile based on the order total. By this we can add loyalty point to the user.
    Another Task is create a PaymentGroup called loyaltyPoint like Credit Card by that the user can use this points for the next purchase.
    For Creating new http://docs.oracle.com/cd/E26180_01/Platform.94/ATGCommProgGuide/html/s1008extendingthepaymentprocesstosupp01.html refer this.
    Regards
    Kumaresh Babu A

  • Loyalty points program

    Hi ,
    How loyalty points program done in crm distributed through third party.
    Answers will be rewarded.
    Thanks & Regards,
    Nandakumar

    Loyalty points resolved.....

  • Sample Editor - Assigning a controller to the Anchor point?

    Does anyone know if it's possible to assign a rotary controller to the anchor point in the sample editor (so that you can adjust the start time of audio or a sample in the EXS on the fly - as you can on a hardware sampler)?
    Many thanks.

    Happens regularly. I'm more often second though, because of the screenshots I add...
    ...and your reply is not parrotting, since you didn't read mine before you wrote yours...

  • QM: Sample Size is 32767 if freely defined inspection point is used

    Hi,
    I am using Inspection plan with freely defined inspection point (100).
    Inspection type: 04
    I want to do 100% inspection. Material master setting is done for early lot creation.
    If I use freely defined inspection point in the plan and create an order of any quantity > 32767, I get a sample size of 32767. If create a order of 100000 qty still sample size is 32767 and I can't even change it during result recording. If I don't use freely defined inspection point I get a sample size which is equal to the order quantity.
    My Requirement:
    I want to use freely defined inspection point in the plan... and also I want to get a sample size equal to production quantity (not 32767 always when production quantity exceeds the this quantity).
    Please let me know how to control this fix sample size 32767 when my plan is with freely defined inspection point.
    Regards,
    Abir.

    Hi,
    Sample size under 'Inspect' column in result recording screen is always 32767, if order quantity >32767.
    I use EARLY lot creation (through material master setting), because I want one lot for one production order... do partial confirmation. Lot is created with production order release, before actual GR takes place.
    Say I have an order with qty 100,000 and if I open the lot after REL of order I see,
    inspection lot quantity: 100,000
    Actual Lot Qty:             0
    Sample Size:                100,000
    Even if I do confirmation and GR for say 100,000 qty and open the Lot I can see,
    inspection lot quantity: 100,000
    Actual Lot Qty:             100,000
    Sample Size:                100,000
    When I go to result recoding screen, against every MIC there is column 'Inspect' (there I get 32767), there is another entry field 'Inspected' (here system don't allow to enter more that 32767)
    Sampling procedure I have used:
    Sample Type:     200    100% Inspection
    Valuation Mode: 500    Manual Valuation
    Free Inspection Point
    May be I made mistake in pointing out the issue; the problem is with 'Inspect' quantity in result recording  - which always appearing 32767. For smaller quantity order its equal to order quantity.  How change the 'Inspect' quantity.
    Also not if I remove Inspection Point from the plan I get "Inspect' quantity equal to Production order quantity.
    Best regards,
    Abir.

  • Samples for creating a calibration grid with supplied points. Not a Grid graphic

    Hi again.
    I have a desire to create a calibration grid for my images captured with IMAQ methods from Measurement Studio.
    I already take measurements and such based on a calibrated Grid from a .jpg. But now I am interested in allowing my user to create a calibration grid on the fly based on selecting points in a template image and supplying real world values.
    The manual section 6 on grid calibration makes some reference to the CWIMAQVision.LearnCalibrationPoints method. But little information is supplied.  Does NI have a sample of a "Create your grid from points" sort of idea?
    As I would also like to be able to define this grid with points, and then put a perspective on it.
    Looks like it should be able to be achieved.
    Thanks

    it's ok, I figured it out.
    just using Flash builder 4.5 grid containers

  • POS Integration Wiki GM - Loyalty Points

    Hi ALL
    Can anybody helps me, I am going through the GM - Loyal point Wiki for POS Integration which talks about Loyal points capturing in PIPE with POSDM/CREATE_TRANSACTIONS_EXT BAPI under Retaillineitem segment. 
    I am checking the segment but shows no Loyalty fields, so can anyone helps me on this.
    Regards
    Ashok

    hi ashok,
    pls refer the following links
    https://wiki.sdn.sap.com/wiki/pages/listpages-dirview.action?key=CK&openId=66942 - 46k
    https://wiki.sdn.sap.com/wiki/pages/recentlyupdated.action?maxRecentlyUpdatedPageCount=40&key=CK - 56k
    regards
    karthik
    reward me points if usefull.

  • Loyalty Point condition 2901 inactive

    Hi Guys
        when I configuration the loyalty manangement Point to Pay
        my conditon type 2901 display inactive,the detail informatin as follow
       someone knows how to solve it ? thank you

    Hi Guys
        when I configuration the loyalty manangement Point to Pay
        my conditon type 2901 display inactive,the detail informatin as follow
       someone knows how to solve it ? thank you

  • Error while Deploying Performance Management samples in XI R3.0

    Error while Deploying Performance Management samples in XI R3.0
    I get an error when deploying the PM samples. I have set the PM repository pointing to AFDEMO database
    I have used to Java of BO dir as well as the program files\Java (1.6.03)
    I run the runPublishUtil.bat  and get the below error
    Can anyone help me to publish the PM demo's
    Regards
    Ishaq
    Edited by: ishaqbaig on May 10, 2009 1:42 PM

    Error when runPublishUtil,bat
    C:\Program Files\Business Objects\Performance Management 12.0\setup>set JARLOC=..\..\common\4.0\java\lib\
    usage : runPublishUtil.bat [dbusername] [dbuserpassword]
    C:\Program Files\Business Objects\Performance Management 12.0\setup>java -classpath publishUtil.jar;..\..\common\4.0\java\lib\cecore.jar;..\..\common\4.0\java\lib\logging.jar;..\..\common\4.0\java\lib\celib.jar;..\..\common\4.0\java\lib\ceplugins.jar;..\..\common\4.0\java\lib\cesession.jar;..\..\common\4.0\java\lib\corbaidl.jar;..\..\common\4.0\java\lib\ebus405.jar;..\..\common\4.0\java\lib\external\xercesImpl.jar;..\..\common\4.0\java\lib\external\xml-apis.jar;..\..\common\4.0\java\lib\rascore.jar;..\..\common\4.0\java\lib\serialization.jar;..\..\common\4.0\java\lib\cereports.jar com.businessobjects.util.PublishUtil ".\PublishUtil.properties" sa forms45
    caught SDKException
    com.crystaldecisions.sdk.exception.SDKServerException: Enterprise authentication
    could not log you on. Please make sure your logon information is correct. (FWB
    00008)
    cause:com.crystaldecisions.enterprise.ocaframework.idl.OCA.oca_abuse: IDL:img.seagatesoftware.com/OCA/oca_abuse:3.2
    detail:Enterprise authentication could not log you on. Please make sure your logon information is correct. (FWB 00008)
    The server supplied the following details: OCA_Abuse exception 10498 at [.\secpluginent.cpp : 826]  42040 {}
            ...Invalid password
            at com.crystaldecisions.sdk.exception.SDKServerException.map(SDKServerException.java:107)
            at com.crystaldecisions.sdk.exception.SDKException.map(SDKException.java:193)
            at com.crystaldecisions.sdk.occa.security.internal.LogonService.doUserLogon(LogonService.java:701)
            at com.crystaldecisions.sdk.occa.security.internal.LogonService.userLogon(LogonService.java:295)
            at com.crystaldecisions.sdk.occa.security.internal.SecurityMgr.userLogon(SecurityMgr.java:162)
            at com.crystaldecisions.sdk.framework.internal.SessionMgr.logon(SessionMgr.java:422)
            at com.businessobjects.util.PublishUtil.logon(Unknown Source)
            at com.businessobjects.util.PublishUtil.main(Unknown Source)
    Caused by: com.crystaldecisions.enterprise.ocaframework.idl.OCA.oca_abuse: IDL:img.seagatesoftware.com/OCA/oca_abuse:3.2
            at com.crystaldecisions.enterprise.ocaframework.idl.OCA.oca_abuseHelper.read(oca_abuseHelper.java:106)
            at com.crystaldecisions.enterprise.ocaframework.idl.OCA.OCAs._LogonEx4Stub.UserLogonEx4(_LogonEx4Stub.java:80)
            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:585)
            at com.crystaldecisions.enterprise.ocaframework.ManagedService.invoke(ManagedService.java:420)
            at com.crystaldecisions.sdk.occa.security.internal._LogonEx4Proxy.UserLogonEx4(_LogonEx4Proxy.java:222)
            at com.crystaldecisions.sdk.occa.security.internal.LogonService.doLogon(LogonService.java:347)
            at com.crystaldecisions.sdk.occa.security.internal.LogonService.doUserLogon(LogonService.java:676)
            ... 5 more
    Exception in thread "main" java.lang.NullPointerException
            at com.businessobjects.util.PublishUtil.waitForValidInputFRS(Unknown Source)
            at com.businessobjects.util.PublishUtil.main(Unknown Source)
    Edited by: ishaqbaig on May 10, 2009 12:49 PM

  • How to sample one color from gradient

    I have an object in Illustrator CC that has a gradient applied to it. I would like to use the eyedropper tool to sample just one color selected from a specific point in the gradient but when I click on the object with the eyedropper the whole gradient is picked up.
    How to I sample just one point in a gradient?
    I looked at my eyedropper preferences. Everything is checked. I didn't see an option that would let me do what I wanted.
    Any suggestions?
    Phil

    Yeah I sure did try, but unfortunately I believe it's a limitation of the operating system. Windows on Windows OS like to be contained within the window area. In this case, illustrator loses focus of the cursor when you leave the window borders. I was hoping you were on Windows and had a way around it.

  • Alt Option Key PS CC Using Mouse or Tablet drags app window instead of sampling when using Clone too

    When I open PS CC on my Mac Mini (Mavericks Latest version) or my MBPr (same OS.v)
    Here are the steps.
    MacMini and Mac:
    Open Photoshop
    Open any image
    Switch to Pen tool, stamp tool, or any tool that uses Option key as modifer
    Draw a couple points, sample, whatever
    Now, try to modify an anchor point using the convert anchor tool, or sample using the stamp tool. Just hold the option key down and drag.
    WOAH! My entire application is moving around and the modifier isn't working, instead it's modifying the XY of the application window.
    Check this out... When I do this on my girlfriends side of my MBPr, it's fine. Infact I do retouching on her sidebecuase of this. I just noticed it was doing this at work. I don't use PS a lot at work, mostly Illutsrator.
    Anyways...
    Any one else having this problem?
    Devices this is replicated with..
    M$ Mouse on MacMini
    WacomTablet Intuous4 on MBPr
    Just tried using the MBPr track pad, and it's fine.
    I'm starting to think it's the wacom drivers or something.

    I'm not seeing anything there.

  • Loyalty Management- Finance integration

    Dear All,
    At the end of the day, all loyalty points are liabilities for the companies who runs loyalty program. These liabilities in terms value (for example 10 loyalty points equal to 1 USD) has to be posted to Accounts as "Amount Payable".
    Do we have any standard integration for loyalty points posting to Accounts ECC ? 
    Regards
    Pramod 

    Hi Pramod,
    As per my knowledge, you have to develop this. Every customer will handle this scenario in a certain way and SAP has not provided a Standard solution for this topic so far.
    Regards,
    Caíque

Maybe you are looking for