Creation of  Immutable Object..

Hi,
How to create a immutable class which is having 'n number of Properties' .
(One way i know With the help of constructor , all properties are initialized ).
Thanks
Dileep.

mutabl objects are found only in java because its references are not final, mutable objects are shells, it is a terriable thing. james gosling said all objects should be made immutable if all possible.
Most languages presume non-final variables, as does Java. I have no idea what you are referring to when you say a shell. JavaBean? There are certainly mutable objects that do more than just provide accessors and mutators. And Gosling's advice (if he said it, fine, I know others have and for other languages) is apt. Immutable objects are easier to understand and test. However, depending on what you are doing, a mutable object might give better performance. So, it is a guideline, not a stricture.
making instance variables final is valid, data encapuslation is assumed. if your data is wide open, then there could be issues rising from there. simply making your data private but providing uncontrolled accesses via methods, such as straight getters/setters, equals to making your data public.
Data encapsulation is not assumed, in fact it is more work to do so (granted, worth doing so, but it is anything but assumed by the language). And yes, if you provide a straight getter and setter ala a JavaBean, then yes, it is equivalent to having a public variable.
please spend some time studying data encapsulation, it is one of the things that you need to understand; otherwise arnold will have to keep you simple!Now this is degenerating into gibberish.
- Saish

Similar Messages

  • Creation of login object failed

    Hi all,
    I've got a problem with the mobile client development.
    We are using the mobile client for many years and we even develop a lot with it, but now i have a problem never seen.
    After extending a bDoc and start testing the application, after the generation and login, system states "Creation of login object failed".
    So i did a full generation. Result the same.
    I debugged the ValidateLogin class and found out, that in the following statement is failing
           BOLOGIN = BusinessRootObject.BusinessFactory.LoadBusinessObject("LOGIN", determineUser)
    BOLOGIN is Nothing at the end. I tried out to create the Object via        BOLOGIN = BusinessRootObject.BusinessFactory.CreateBusinessObject("LOGIN")
    same result. Next i tried to create the BOACTIVITY and it failed as well. One day before everything was fine, even with changing business documents.
    The error in the VB.ERR object says:
    -     err     {Microsoft.VisualBasic.ErrObject}     Microsoft.VisualBasic.ErrObject
         Description     "In der Methode BusinessFactoryCore.LoadBusinessObject ist eine System-Exception aufgetreten"     String
         Erl     0     Integer
         HelpContext     0     Integer
         HelpFile     ""     String
         LastDllError     3     Integer
         Number     5     Integer
         Source     "MTBLLFW"     String
    Can anybody please give a hint.
    We are using CRM 5.0 SP7 and MSA SP7 on MS 2003 Server with local repository. DB is SQL2000.
    Yesterday i was releasing a changelist and now its no longer working at all, what a mess.
    Thanks to all,
    Andreas Rose

    Hi Andreas,
    The problem may be incorrect or corrupt ARSREP.DAT file.
    The reason may be that the BDOCs are not synched from MAS. Once you sync this through MAS you will find the *.bdoc files at the location
    mentioned under the registry key HKLM\SOFTWARE\SAP\MSA\MW\TL\BDocPath
    Usually this would be default as C:\Program Files\SAP\Mobile\tpsfiles.
    After this when you generate the BusinessLibrary the Arsrep.dat file
    will have the *.bdocs incorporated in the Arsrep.dat file.
    Hope this helps.
    Regards, Gervase
    ps. For synching the BDocs refer to SAP Note 942942

  • Getting ORA-20001: Creation of new object is not allowed: !!

    Hi Am getting ORA-20001: Creation of new object is not allowed while enabling constraints after importing the dumps from source to target datbase,can anyone assist me to fix this issue.

    Hi Osama/Mustafa,Thanks for your quick response,can you please explain me the following things-
    1)As i don't have privilege to run the DBA_XX views,am not able to run those queries-
    SELECT OWNER, TRIGGER_NAME, TRIGGER_BODY FROM DBA_TRIGGERS WHERE TRIGGER_TYPE IN ('AFTER EVENT', 'BEFORE EVETN') AND TRIGGERING_EVENT LIKE '%CREATE%';
    can you tell me what output it'll throw,based on this output how will we fix the issue.
    2)SELECT * FROM dba_sys_privs WHERE privilege = 'UNLIMITED TABLESPACE';
    why we need to check this privilege?as i don't have privilege to run this one in my db.
    3)select * from dba_source where upper(text) like upper('%Creation of new object is not allowed%');
    as i don't have privilege to run this one in my db,already i got the object name from my logfile
    and more you have quoted"This is an error of someone that coded purposely on your database, probably dba or a developer who has privilege and again it is in a database event trigger"
    4)can you explain me much more deeper about the root cause and as already sent note to my DBA,can you explain me the solution to fix this issue ?

  • Creation of new object link for DMS

    i have searched a lot  about Creation of new object link for DMS on internet .
    and all replies  focus on that documentation :
    1.     Program two screens for the following module pools for the SAP object that is to be linked additionally:
    u2013 SAPLCV00
    u2013 SAPLCVIN
    The process logic must be according to that of screen 0204 in program SAPLCV00 and must not be changed.
    2.     Create the function module OBJECT_CHECK_XXXX (XXXX = name of the SAP object).
    i need  to know how to implement that  in more detailed step by step
    as  i know DMS and  abap also.

    Hi Reda,
    Hope the below URL will help to understand how the Process of adding a object link works.
    Enhancement Without Modification of the Object Links - Engineering Change Management (LO-ECH) - SAP Library
    Thanks & Regards,
    Seshadri.

  • Error while Debugging MSA  'Creation of Login Object Failed'

    Dear Friends,
    I am working on CRM Mobile Sales 5.0 SP 5.
    I have setup my Mobile Client and Mobile Application Studion On the same machine.
    I have perform the initial generation of the application from Mobile Repository server to my machine.
    it gave me 6 errors and 12 warnings  and took about 4 hrs for generation.
    Now when i tried to debug the generated application,
    i get my login screen and once I enter username and password.
    Error popups up stating "Creation of login object failed".
    and then another error
    "Starting MPPFailed" (MPP is my project name).
    Please suggest me how should i go about to debug the application solving the above errors.
    Awaiting Reply,
    Best Regards,
    Pratik Patel

    Am not sure if you were able to resolve the issue but below are some points:
    a. I think the dlls sfabol and msa are not any more registerable, since they are more of VB.NET components and here assembly is registered and not the dll.
    b. For logging into the application just ensure that you have user id in table SMOUSER and the employee for that user in SMOMITABT table.
    c. If this is fine, then ensure that you have the latest BDOC metadata information on your laptop. I think in 5.0 also you need to use Clientconsole to download this information.
    d. If this is all okay, then try running SQL profiler and check if the query to the ides db is being executed by the framework. If the query is fired then it means application seems to behave properly but the query is not retrieving relevant details.
    For further details feel free to contact me..
    thanks,
    Piyush

  • "Creation of login object failed" after MAS generation

    Hi everybody,
    I am working on CRM Mobile Sales 5.0 SP6. I have performed the initial generation with the .NET Application Studio. It gave me 6 errors and some warnings. Now when I tried to logon my mobile client I 've got following error:
    "Creation of login object failed".
    Visual Studio is installed on partition "C:\Program Files\" and Mobile Sales on "D:\SAP\"
    Has someone any ideas? Thanks in advance,
    Mirko

    Hi Mirko!
    In your app you're calling unknown data structures. While generating the "compiler" read the names and want to create the relevant structures but the necessary data to do this are missing. You have to start fist the client console doing a complete meta data generation. If this runs without error your generation inside the studio will succeed, too.
    BTW: In your first posting you've written "D:SAP..." and in your last the error-message was "D:ProgrammeSAP..."...
    Perhaps different settings?
    Do you have made already a successful generation with the actual installation?
    Good luck,
    Ingo
    Message was edited by:
            Ingo Schmökel

  • BAPI for creation of Authorization Objects in BI 7.0

    Hi BW Gurus,
    Greetings!!!
    Is there any BAPI Available for creation of Authorization Objects in BI 7.0.
    The data will be transferred through flatfiles.
    Kindly provide me the info as earliest as possible.
    Best Regards,
    Priya

    Got the Workaround...
    Priya

  • " Automatic creation of Cost object owners"

    Hello Experts,
    I am working on a rollout project, for "Inter Company Service Invoicing (ICSI)"
    Presently my client requirement is " Automatic creation of Cost object owners"
    First of all i will explain the process
    In ICSI there are two parties one is Service Requestor(SREQ) and other one is Service Provider(SPROV)
    Depending on SREQ requirement SPROV will create a SO and send it to SPROV
    It will reach SREQ contact person, he will updates Cost objects, and send it to SREQ reviewer person, he will check the cost objects and send it to Cost object owner of the SREQ.
    He will approve the SO, once all approvals hasbeen done, then system automatically converts SO to IV, and post entries on both sides automatically ata the same time.
    Here my requirement is on SREQ side the Cost Object Owner should find automatically.
    And we done this proces in Portal itself.
    Your suggestions will be great help to me, and are appreciated.
    Thanks in advance
    Any inputs please...............
    Regards,
    Satya.

    Hello Ajay,
    Thank you for the response.
    But my requirement is not to populate cost objest.
    It is the approval flow. The reviewer person will check and add the cost objects to the service order and send that Service Order for the final approval i.e.. Cost Object Owner.
    So here my requirement is the System has to create that Cost Object Owners Automaticlly
    How can i achieve this?
    Regards,
    Satya

  • Immutable Objects in multi threaded application - how does it works?

    Hi
    I have this code will work in multithreaded application.
    I know that immutable object is thread safe because its state cannot be changed. And if we have volatile reference, if is changed with e.g.
    MyImmutableObject state = MyImmutableObject.newInstance(oldState, newArgs); i.e. if a thread wants to update the state it must create new immutable object initializing it with the old state and some new state arguments) and this will be visible to all other threads.
    But the question is, if a thread2 starts long operation with the state, in the middle of which thread1 updates the state with new instance, what will happen? Thread2 will use reference to the old object state i.e. it will use inconsistent state? Or thread2 will see the change made by thread1 because the reference to state is volatile, and in this case thread1 can use in the first part of its long operation the old state and in the second part the new state, which is incorrect?
    Therad1:                                                  Thead2:
    State state = cache.get();     //t1                  
    Result result1 = DoSomethingWithState(state);     //t1    
                               State state = cache.get(); //t2
       ->longOperation1(state); //t1
                               Result result2 = DoSomethingWithState(state); //t2
                                   ->longOperation1(state); //t2
       ->longOperation2(state);//t1
    cache.update(result1);    //t1             
                                   ->longOperation2(state);//t2
                               cache.update(result2);//t2
    Result DoSomethingWithState(State state) {
       longOperation1(state);
       //Imaging Thread1 finish here and update state, when Thread2 is going to execute next method
       longOperation2(state);
    return result;
    class cache {
    private volatile State state = State.newInstance(null, null);
    cache.update(result) {
       this.state = State.newInstance(result.getState, result.getNewFactors);
    get(){
    return state;
    }

    Please don't cross post
    http://stackoverflow.com/questions/6803487/immutable-objects-in-multi-threaded-application-how-does-it-work

  • [disc]Design pattern - immutable objects.

    I`m working more often with immutable object because it doesn`t cost as much work to keep object consistent. But sometimes an object has to be build or a reference to his child objects has to be set.
    eg
    class A{
        private ArrayList bList = new ArrayList();  
        public A(){}
        public void addB(B b){
            bList.add(b);
    class B{
        private A a;
        public B(A a){
             this.a = a;
    }It`s now more complicated to make a immutable version of A.
    My question is how this problem could be solved. One solution is to add an immutable flag that could be set to true if the last B is added. But this couldn`t be checked compile time.
    Maybe there is a design pattern for this problem.
    I would like to discuss about this problem, so every thought is welcome.

    I have an Immutable Collection wrapper class that I use when I want to have a Collection be read-only.
    If you look at the JavaDoc for AbstractCollection you'll see that the add and remove methods throw UnsuportedOperationException.
    So all you have to do is implement the iterator() and size() methods. i.e.
    public class ImmutableCollection extends AbstractCollection {     
         private Collection collection;
          * only constructor
         public ImmutableCollection(Collection collection) {
              this.collection = collection;
          * returns the size of the collection
         public int size() {
              return collection.size();
          * returns a non-modifiable iterator over the elements of the collection
         public Iterator iterator() {
              return new Iterator() {
                   Iterator iterator = collection.iterator();
                   public boolean hasNext() {
                        return iterator.hasNext();
                   public Object next() {
                        return iterator.next();
                   public void remove() {
                        throw new UnsupportedOperationException();
    }

  • XML log: Error during temp file creation for LOB Objects

    Hi All,
    I got this exception in the concurrent log file:
    [122010_100220171][][EXCEPTION] !!Error during temp file creation for LOB Objects
    [122010_100220172][][EXCEPTION] java.io.FileNotFoundException: null/xdo-dt-lob-1292864540169.tmp (No such file or directory (errno:2))
         at java.io.RandomAccessFile.open(Native Method)
         at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
         at java.io.RandomAccessFile.<init>(RandomAccessFile.java:98)
         at oracle.apps.xdo.dataengine.LOBList.initLOB(LOBList.java:39)
         at oracle.apps.xdo.dataengine.LOBList.<init>(LOBList.java:30)
         at oracle.apps.xdo.dataengine.XMLPGEN.updateMetaData(XMLPGEN.java:1051)
         at oracle.apps.xdo.dataengine.XMLPGEN.processSQLDataSource(XMLPGEN.java:511)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeData(XMLPGEN.java:445)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeGroup(XMLPGEN.java:1121)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeGroup(XMLPGEN.java:1144)
         at oracle.apps.xdo.dataengine.XMLPGEN.processSQLDataSource(XMLPGEN.java:558)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeData(XMLPGEN.java:445)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeGroupStructure(XMLPGEN.java:308)
         at oracle.apps.xdo.dataengine.XMLPGEN.processData(XMLPGEN.java:273)
         at oracle.apps.xdo.dataengine.XMLPGEN.processXML(XMLPGEN.java:215)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeXML(XMLPGEN.java:254)
         at oracle.apps.xdo.dataengine.DataProcessor.processDataStructre(DataProcessor.java:390)
         at oracle.apps.xdo.dataengine.DataProcessor.processData(DataProcessor.java:355)
         at oracle.apps.xdo.oa.util.DataTemplate.processData(DataTemplate.java:348)
         at oracle.apps.xdo.oa.cp.JCP4XDODataEngine.runProgram(JCP4XDODataEngine.java:293)
         at oracle.apps.fnd.cp.request.Run.main(Run.java:161)
    I have this query defined in my data template:
    <![CDATA[
    SELECT lt.long_text inv_comment
    FROM apps.fnd_attached_docs_form_vl ad,
    apps.fnd_documents_long_text lt
    WHERE ad.media_id = lt.media_id
    AND ad.category_description = 'Draft Invoice Comments'
    AND ad.pk1_value = :project_id
    AND ad.pk2_value = :draft_invoice_num
    ]]>
    Issue: The inv_comment is not printing on the PDF output.
    I had the temp directory defined under the Admin tab.
    I'm guessing if it's the LONG datatype of the long_text field that's causing the issue.
    Anybody knows how this can be fixed? any help or advice is appreciated.
    Thanks.
    SW
    Edited by: user12152845 on Dec 20, 2010 11:48 AM

    Hi All,
    I got this exception in the concurrent log file:
    [122010_100220171][][EXCEPTION] !!Error during temp file creation for LOB Objects
    [122010_100220172][][EXCEPTION] java.io.FileNotFoundException: null/xdo-dt-lob-1292864540169.tmp (No such file or directory (errno:2))
         at java.io.RandomAccessFile.open(Native Method)
         at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
         at java.io.RandomAccessFile.<init>(RandomAccessFile.java:98)
         at oracle.apps.xdo.dataengine.LOBList.initLOB(LOBList.java:39)
         at oracle.apps.xdo.dataengine.LOBList.<init>(LOBList.java:30)
         at oracle.apps.xdo.dataengine.XMLPGEN.updateMetaData(XMLPGEN.java:1051)
         at oracle.apps.xdo.dataengine.XMLPGEN.processSQLDataSource(XMLPGEN.java:511)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeData(XMLPGEN.java:445)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeGroup(XMLPGEN.java:1121)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeGroup(XMLPGEN.java:1144)
         at oracle.apps.xdo.dataengine.XMLPGEN.processSQLDataSource(XMLPGEN.java:558)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeData(XMLPGEN.java:445)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeGroupStructure(XMLPGEN.java:308)
         at oracle.apps.xdo.dataengine.XMLPGEN.processData(XMLPGEN.java:273)
         at oracle.apps.xdo.dataengine.XMLPGEN.processXML(XMLPGEN.java:215)
         at oracle.apps.xdo.dataengine.XMLPGEN.writeXML(XMLPGEN.java:254)
         at oracle.apps.xdo.dataengine.DataProcessor.processDataStructre(DataProcessor.java:390)
         at oracle.apps.xdo.dataengine.DataProcessor.processData(DataProcessor.java:355)
         at oracle.apps.xdo.oa.util.DataTemplate.processData(DataTemplate.java:348)
         at oracle.apps.xdo.oa.cp.JCP4XDODataEngine.runProgram(JCP4XDODataEngine.java:293)
         at oracle.apps.fnd.cp.request.Run.main(Run.java:161)
    I have this query defined in my data template:
    <![CDATA[
    SELECT lt.long_text inv_comment
    FROM apps.fnd_attached_docs_form_vl ad,
    apps.fnd_documents_long_text lt
    WHERE ad.media_id = lt.media_id
    AND ad.category_description = 'Draft Invoice Comments'
    AND ad.pk1_value = :project_id
    AND ad.pk2_value = :draft_invoice_num
    ]]>
    Issue: The inv_comment is not printing on the PDF output.
    I had the temp directory defined under the Admin tab.
    I'm guessing if it's the LONG datatype of the long_text field that's causing the issue.
    Anybody knows how this can be fixed? any help or advice is appreciated.
    Thanks.
    SW
    Edited by: user12152845 on Dec 20, 2010 11:48 AM

  • Are immutable objects thread safe

    I am having a debate with legosa as to if immutable objects are thread safe @
    http://forum.java.sun.com/thread.jsp?forum=37&thread=525250
    I would like the java gurus to put in their thoughts over here.

    I am having a debate with legosa as to if immutable
    objects are thread safe @
    http://forum.java.sun.com/thread.jsp?forum=37&thread=52
    250
    I would like the java gurus to put in their thoughts
    over here.There are some problems with the java memory model that can cause immutable objects to not be thread safe. This is discussed in the section Problem#1 in the following article from IBM:
    http://www-106.ibm.com/developerworks/library/j-jtp02244.html
    According to this article, some of the problems have been fixed in jdk1.4, while other fixes will have to wait until jdk1.5.

  • Problem in creation of Accrual Object

    Hello Gurus...
    Am unable to do the recording for transaction ACACTREE01.
    Basically, we have a tabstrip and these tab are getting recorded but in each tab we need to add a record and in that record, data should be given.
    Say, in this tcode, we can see tabs like Item data, Parameters and Account Assigmnet. In Item data tab, we need to click on Create button to create a record and once this record is created then only we need to give the data in that record. The same applies to other 2 tabs also.
    Main problem is recording is unable to capture the creation of record and the data which is inputed.
    So, could you let me know how to do this recording or is there any alternative method for it.

    Hi,
      I think you should check if the authorty object that you are using has been created you can try to use transaction su21, i think the authority object that you are trying to use does not exist.
    Check the below link for more info
    LINK[ Auth Objects |http://help.sap.com/saphelp_nw04/helpdata/EN/80/1a6859e07211d2acb80000e829fbfe/content.htm]
    Regards,
    Himanshu

  • How to prevent creation of view object rows when using browser refresh butt

    HI i have the following problem:
    I have a creation form using a partial submition. The problem is that if i have entered some value by using autosubmit , this value will be setted as attribute in the ViewObject . After that if i click refresh button of the browser then the new Row of the view object will be created and i will have a pending row with setted attribute. So if execute commit then the both rows will be tried to commit. How can i prevent this?
    Krasi

    Hi,
    If i've understood you have a invokeAction that create a new row, right? If yes put on condition that it invokeAction won't invoke if is a postback.
    Let me know if i miss understand your doubt.
    Best Regards

  • Creation of system object for customized workflow

    Hi Experts,
    I am required to define a System Object with system alias, for creation of UWL to trigger Customized work flow's.
    What WAS properties and Connection Properties and ITS Properties i should maintain in newly created System Object?
    how do create UWL so that it triggers Customized workflow instead of standard workflow in R/3?
    I have similarly total 3 Customized workflow so do i need to create three UWL's for each one?
    Please help me out!
    Regards,
    Siva

    Hi Shabir,
    I am new to EP can you please let me know how to create custom connector? that triggers three custom developed workflow?
    and Please let me know what parameters to pass to create system object(like WAS Properties,  ITS Properties etc)
    Thanks in advance!
    Regards,
    Siva

Maybe you are looking for

  • Japanese mojibake in email created from Mac OS X Mail.  Help?

    Since Tiger I am having more and more Japanese friends of mine say that my email is turning up in their inbox as mojibake (junk characters.) I have found Article ID: 301986, "Mac OS X 10.4: Japanese message doesn't appear correctly in web mail or on

  • Is there a concept of an uninstaller on a Mac?

    Or perhaps a way to take an action if your program dragged to the trash can or being deleted? The reason I ask this is that my app installer puts files in a few places in the system and I would like to cleanup if my app is being deleted / thrown in t

  • Exporting Portal to a different machine

    We are having to move our Portal from an installation on one machine to another - I gather this is covered by an 'Export/Import' processes by Oracle - although I can find some documentation about doing this for just a database, I can't find any docum

  • I can't turn my wifi on with the new iOS software

    I can't turn my wifi on with the new iOS software. I've tried resetting the network settings, resetting all settings, and a hard reset.

  • Music and videos stopped showing up

    ok so i plugged in my ipt(16gb) today to dl new podcasts, i disconnect it and go to podcasts and nothings there. i go to music and all my music is gone, same with videos. however i plugged it back into my mac and it still says all the music and video